simulannealbnd
, Основанный на проблемеВ этом примере показано, как минимизировать функцию с помощью симулированного отжига в подходе, основанном на проблеме, когда цель является файлом функции, возможно неизвестного содержимого (функция "черного квадрата"). Функция, чтобы минимизировать, dejong5fcn(x)
, включен с Global Optimization Toolbox. Постройте функцию.
dejong5fcn
Создайте 2D переменную x
оптимизации.
dejong5fcn
функция ожидает, что переменная будет вектором-строкой, поэтому задайте x
как вектор-строка с 2 элементами.
x = optimvar("x",1,2);
Использовать dejong5fcn
как целевая функция, преобразуйте функцию в выражение оптимизации с помощью fcn2optimexpr
.
fun = fcn2optimexpr(@dejong5fcn,x);
Создайте задачу оптимизации с целевой функцией fun
.
prob = optimproblem("Objective",fun);
Установите переменные границы от –50 до 50 во всех компонентах. Когда вы задаете скалярные границы, программное обеспечение расширяет границы до всех переменных.
x.LowerBound = -50; x.UpperBound = 50;
Установите псевдослучайную начальную точку в границах. Начальная точка является структурой с полем x
.
rng default % For reproducibility x0.x = x.LowerBound + rand(size(x.LowerBound)).*x.UpperBound;
Решите задачу, задав simulannealbnd
решатель.
[sol,fval] = solve(prob,x0,"Solver","simulannealbnd")
Solving problem using simulannealbnd. Optimization terminated: change in best function value less than options.FunctionTolerance.
sol = struct with fields:
x: [-32.0371 -31.8792]
fval = 0.9980
simulannealbnd
| fcn2optimexpr
| solve