Интерпретируйте surrogateoptplot

surrogateoptplot функция построения графика предоставляет большую информацию о суррогатных шагах оптимизации.

Минимизируйте ограниченную функцию

Например, считайте график шагов surrogateopt берет встроенную тестовую функцию rastriginsfcn. Эта функция имеет глобальное минимальное значение 0 в точке [0,0].

Создайте объемную поверхностную диаграмму rastriginsfcn.

ezsurf(@(x,y)rastriginsfcn([x(:),y(:)]));

Постройте процесс минимизации

Путем предоставления асимметричных границ вы поощряете surrogateopt искать далеко от глобального минимума. Установите асимметричные границы [-3,-3] и [9,10]. Установите опции использовать surrogateoptplot функция построения графика, и затем вызывает surrogateopt.

lb = [-3,-3];
ub = [9,10];
options = optimoptions('surrogateopt','PlotFcn','surrogateoptplot');
rng default
[x,fval] = surrogateopt(@rastriginsfcn,lb,ub,options);

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.

Интерпретируйте график

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

  • Первые точки являются черными треугольниками, указывая на квазислучайные выборки функции в проблемных границах. Эти моменты наступают от фазы Construct Surrogate.

  • Затем черные точки, указывающие на адаптивные точки, точки, созданные в Поиске фазы Minimum.

  • Толстая зеленая линия представляет лучшее (самое низкое) найденное значение целевой функции. Вскоре после оценки номер 30, surrogateopt застревает в локальном минимуме со значением целевой функции около 5. Увеличьте масштаб, чтобы видеть это поведение более ясно.

xlim([20 100])
ylim([0 10])

  • Около оценки номер 120 вертикальная линия указывает на суррогатный сброс. На данном этапе алгоритм возвращается к фазе Construct Surrogate.

  • Темно-синие точки x представляют должностное лицо, которое является лучшей точкой, найденной начиная с предыдущего суррогатного сброса.

  • Около оценки номер 160 должностное лицо улучшается относительно предыдущей лучшей точки путем достижения значения приблизительно 4. После этого номера оценки лучшая точка медленно падает в цене. Увеличьте масштаб, чтобы видеть это поведение более ясно.

xlim([140 200])
ylim([0 6])

  • Оптимизация останавливается при оценке номер 200, потому что это - предел вычисления функции по умолчанию для 2D проблемы.

Проблема с нелинейными ограничениями

surrogateoptplot отобразите изменения, когда у вас будут нелинейные ограничения. Наложите ограничение что x(1) с целочисленным знаком, и нелинейное ограничение это x2x12-2. Для функции, которая реализует это ограничение, смотрите rasfcn в конце этого примера.

fun = @rasfcn;

Установите целочисленные ограничения установкой intcon = 1, и запуск минимизация.

intcon = 1;
[x,fval] = surrogateopt(fun,lb,ub,intcon,options);

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.

График теперь показывает красные маркеры где surrogateopt оценивает неосуществимую точку. Конечная точка близко к истинной минимальной точке [0,0].

disp(x)
   1.0e-03 *

         0   -0.3913

Целочисленное ограничение, вероятно, помогает surrogateopt найдите истинный минимум путем сокращения пространства поиска.

function F = rasfcn(x)
F.Fval = rastriginsfcn(x);
F.Ineq = x(1)^2 - 2 - x(2);
end

Смотрите также

Похожие темы