Зафиксируйте переменные в surrogateopt

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

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

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

Похожие темы