Этот пример использует целевую функцию, ps_example
, который включен с программным обеспечением Global Optimization Toolbox. Просмотрите код для функции путем ввода
type ps_example
Следующие данные показывают график функции.
Чтобы найти минимум ps_example
, выполните следующие шаги:
Войти
optimtool
и затем выберите решатель patternsearch
.
В поле Objective function приложения Оптимизации введите @ps_example
.
В поле Start point введите [2.1 1.7]
.
Покиньте поля в пробеле панели Constraints, потому что проблема неограничена.
Нажмите Start, чтобы запустить поиск шаблона.
Панель Run solver and view results отображает результаты поиска шаблона.
Причина, которой отключенная оптимизация состоит в том, что размер mesh стал меньшим, чем приемлемое значение допуска для размера mesh, заданного параметром Mesh tolerance в панели Stopping criteria. Минимальное значение функции - приблизительно-2. Панель Final point отображает точку, в которой происходит минимум.
Запускать эту проблему с помощью функций командной строки:
[x,fval] = patternsearch(@ps_example,[2.1 1.7])
Optimization terminated: mesh size less than options.MeshTolerance. x = -4.7124 -0.0000 fval = -2.0000
Чтобы видеть производительность поиска шаблона, отобразите графики лучшего значения функции и размера mesh в каждой итерации. Во-первых, установите следующие флажки в панели Plot functions:
Best function value
Mesh size
Затем нажмите Start, чтобы запустить поиск шаблона. Это отображает следующие графики.
Верхний график показывает значение целевой функции лучшей точки в каждой итерации. Как правило, значения целевой функции улучшаются быстро в ранних итерациях и затем выравниваются, когда они приближаются к оптимальному значению.
Более низкий график показывает размер mesh в каждой итерации. Увеличения размера mesh после каждой успешной итерации и уменьшений после каждого неудачный, объясненный, в Как Поиск Шаблона Опрос работ.
Запускать эту проблему с помощью функций командной строки:
options = optimoptions('patternsearch',... 'PlotFcn',{@psplotbestf,@psplotmeshsize}); [x,fval] = patternsearch(@ps_example,[2.1 1.7],.... [],[],[],[],[],[],[],options);