2014-11-13 9 views
1

Я пытаюсь найти минимум, используя fmincon в MATLAB, и я столкнулся следующая проблема:оптимизации MATLAB: целевая функция с «шагов»

Оптимизация завершена, так как размер градиента в начальной точке меньше значения по умолчанию для допуска функции.

поверхность моей целевой функции показывает «шаги», и, следовательно, он имеет то же значение, более определенные диапазоны входные переменные (размер градиента равен нуль, если я правильно):

enter image description here

при переходе от начальной точки, решатель не видит каких-либо изменений в стоимости целевой функции, а завершает оптимизацию:

Iteration Func-count  f(x)  Step-size  optimality 

0   3   581.542        0 

Initial point is a local minimum. 

Optimization completed because the size of the gradient at the initial point 
is less than the default value of the function tolerance. 

есть ли способ сделать решатель шаг вперед, когда целевая функция сохраняет свое значение неизменным (пока целевая функция не начнет увеличиваться)?

Благодарим за помощь.

+2

Возможно, вы получите разумные результаты с помощью решения без градиента, например. [ga] (http://www.mathworks.com/help/gads/ga.html), если оценка целевой функции не является дорогостоящей. [как выбрать решатель] (http://www.mathworks.com/help/gads/choosing-a-solver.html) – Arpi

+3

Спасибо, ребята. Я следовал твоему совету и использовал га - проблема ушла! Я также изучил вашу ссылку, как выбрать решателя, и я понял, что я не должен использовать fmincon, потому что моя целевая функция негладкая. –

+0

Отлично! Я рад, что смог помочь. – Arpi

ответ

0

Я пост мой расширенный комментарий как ответ в надежде, что это будет проще для будущих искателей ответов, чтобы найти решение:

Вероятно, вы бы получить приемлемые результаты с непостоянным градиентом на основе решателя, например, ga, если оценка целевой функции не является дорогостоящей. Они не зависят от градиента и хорошо работают на негладких функциях. Также стоит прочитать следующее руководство перед выбором алгоритма решателя: How to choose solver.

-1

Ответ прямо здесь:

Initial point is a local minimum.

Точка вы даете в качестве начальной точки уже локальный минимум. Таким образом, алгоритм находит, что минимальный и придерживается там. Для того, чтобы найти другие местные минимумы или, может быть, глобально one, измените начальные точки на что-то еще вдали от местного минимума. Для того, чтобы найти глобальный минимум , используйте глобальную технику оптимизации.

+0

Спасибо за вашу помощь, однако я вижу, что из поверхностного графика, что начальная точка не является локальным минимумом (я использовал [0,0] в качестве начальной точки - я должен был написать ее при описании моей проблемы). Как писал Арпи, мне кажется, что я должен использовать другой решатель, поскольку моя целевая функция негладкая: она сохраняет одно и то же значение вблизи начальной точки (почти в любой точке) (и решатель там затухает), а затем меняет ее значение как функция шага Heisiside. –

+0

Да, GA (Генетический алгоритм) - глобальный метод оптимизации. – NKN

Смежные вопросы