Исправьте переменные в surrogateopt

В этом примере показано, как исправить значения некоторых переменных управления, удалив их из оптимизации. Хотя самый легкий способ исправить значения - задать равные верхние и нижние границы, некоторые решатели не допускают одинаковых границ. Однако surrogateopt хорошо обрабатывает равные ограничения путем внутреннего удаления фиксированных переменных из задачи перед попыткой оптимизации.

The multirosenbrock функция принимает любое четное количество переменных управления. Его минимальное значение 0 достигается в точке [1,1,...,1,1]. Установите нижние границы -1 и верхние границы 5 для десяти переменных, а затем установите первые шесть верхние и нижние границы равными 1. Этот параметр удаляет шесть переменных из задачи, оставляя задачу с четырьмя переменными.

lb = -1*ones(1,10);
ub = 5*ones(1,10);
lb(1:6) = 1;
ub(1:6) = 1;

Решите проблему.

fun = @multirosenbrock;
rng default % For reproducibility
[x,fval,exitflag] = surrogateopt(fun,lb,ub)

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: 0.42178 contains an object of type line. This object represents Best function value.

surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×10

    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    0.4334    0.1786    0.7177    0.5263

fval = 0.4218
exitflag = 0

Решатель возвращает точку, близкую к глобальному минимуму. Заметьте, что решатель принимает 500 вычислений функции, что является значением по умолчанию для задачи с 10 переменными. Решатель не изменяет это значение по умолчанию, даже когда вы исправляете некоторые переменные.

Когда вы не фиксируете никаких переменных, решатель не достигает точки около глобального минимума.

lb = -1*ones(1,10);
ub = 5*ones(1,10);
rng default % For reproducibility
[x,fval,exitflag] = surrogateopt(fun,lb,ub)

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: 0.62091 contains an object of type line. This object represents Best function value.

surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×10

    1.3840    1.9253    1.1837    1.4091    0.9075    0.8123    1.3796    1.8995    1.4982    2.2355

fval = 0.6209
exitflag = 0

См. также

Похожие темы