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

В этом примере показано, как минимизировать функцию с помощью симулированного отжига в подходе, основанном на проблеме, когда цель является файлом функции, возможно неизвестного содержимого (функция "черного квадрата"). Функция, чтобы минимизировать, 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;

Установите псевдослучайную начальную точку в границах. Начальная точка является структурой с полем 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

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

| |

Похожие темы