exponenta event banner

Исправить переменные в 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

См. также

Связанные темы