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

The 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'.

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

Начните интерпретацию графика с его левой стороны. Для получения дополнительной информации о шагах алгоритма, см. Surrogate Optimization Algorithm.

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

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

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

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

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

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

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

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

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

Задача с нелинейными ограничениями

The 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

См. также

Похожие темы