Оптимизируйте функцию Используя particleswarm, Основанный на проблеме

В этом примере показано, как минимизировать функцию с помощью роя частицы в подходе, основанном на проблеме, когда цель является файлом функции, возможно неизвестного содержимого (функция "черного квадрата"). Функция, чтобы минимизировать, dejong5fcn(x), включен с Global Optimization Toolbox. Постройте функцию.

dejong5fcn

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Создайте 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

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

| |

Похожие темы