exponenta event banner

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

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

Рациональная функция - это частное от многочленов. Если целевая функция является рациональной функцией переменных оптимизации или другой поддерживаемой функции, выражение целевой функции можно создать непосредственно из переменных. Напротив, когда целевая функция не поддерживается, необходимо создать функцию 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'

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

См. также

Связанные темы