particleswarm
, Основанный на проблемеВ этом примере показано, как минимизировать функцию с помощью роя частицы в подходе, основанном на проблеме, когда цель является файлом функции, возможно неизвестного содержимого (функция "черного квадрата"). Функция, чтобы минимизировать, 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;
Решите задачу, задав particleswarm
решатель.
rng default % For reproducibility [sol,fval] = solve(prob,"Solver","particleswarm")
Solving problem using particleswarm. Optimization ended: relative change in the objective value over the last OPTIONS.MaxStallIterations iterations is less than OPTIONS.FunctionTolerance.
sol = struct with fields:
x: [-31.9751 -31.9719]
fval = 0.9980
particleswarm
| fcn2optimexpr
| solve