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