Рациональная целевая функция, основанная на проблеме

Основанный на проблеме подход к оптимизации включает в себя создание переменных оптимизации и выражение цели и ограничений с точки зрения этих переменных.

Рациональная функция является частным числом полиномов. Когда целевая функция является рациональной функцией переменных оптимизации или другой поддерживаемой функции, можно создать выражение целевой функции непосредственно из переменных. Напротив, когда ваша целевая функция не является поддерживаемой функцией, вы должны создать функцию MATLAB ®, которая представляет цель, и затем преобразовать функцию в выражение при помощи fcn2optimexpr. Смотрите Поддерживаемые Операции над Переменными Оптимизации и Выражениями и Преобразование Нелинейной Функции в Выражение Оптимизации.

Для примера запишите целевую функцию

f=(x-y)24+(x+y)4x+y21+y2

в терминах двух переменных оптимизации x и y.

x = optimvar('x');
y = optimvar('y');
f = (x-y)^2/(4+(x+y)^4)*(x+y^2)/(1+y^2);

Чтобы найти минимум этой целевой функции, создайте задачу оптимизации с f в качестве цели установите начальную точку и вызовите solve.

prob = optimproblem('Objective',f);
x0.x = -1;
x0.y = 1;
[sol,fval,exitflag,output] = solve(prob,x0)
Solving problem using fminunc.

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.
sol = struct with fields:
    x: -2.1423
    y: 0.7937

fval = -1.0945
exitflag = 
    OptimalSolution

output = struct with fields:
             iterations: 9
              funcCount: 10
               stepsize: 1.7073e-06
           lssteplength: 1
          firstorderopt: 1.4999e-07
              algorithm: 'quasi-newton'
                message: '...'
    objectivederivative: "reverse-AD"
                 solver: 'fminunc'

Выходной флаг показывает, что сообщаемое решение является локальным минимумом. Структура output показывает, что решатель взял всего 30 вычислений функции, чтобы достичь минимума.

См. также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте