Зафиксируйте переменные в 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)

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    1.8799    3.5329    1.0157    1.0314

fval = 0.7746
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)

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

   -1.0000    1.0018    0.2553    0.0617   -0.9298    0.8764   -0.7681    0.5990   -0.0838    0.0127

fval = 12.6064
exitflag = 0

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте