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)
с целочисленным знаком, и нелинейное ограничение это . Для функции, которая реализует это ограничение, смотрите 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