Подход, основанный на проблеме к оптимизации включает переменные оптимизации создания и выражение цели и ограничений в терминах тех переменных.
Рациональная функция является частным полиномов. Когда целевая функция является рациональной функцией переменных оптимизации, можно создать выражение целевой функции непосредственно из переменных. (В отличие от этого, когда ваша целевая функция не является рациональной функцией, необходимо создать функцию MATLAB®, которая представляет цель, и затем преобразуйте функцию в выражение при помощи fcn2optimexpr
.)
Например, запишите целевую функцию
в терминах двух переменных 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: 30
stepsize: 1.7081e-06
lssteplength: 1
firstorderopt: 1.3411e-07
algorithm: 'quasi-newton'
message: '...'
solver: 'fminunc'
Выходной флаг показывает, что решение, о котором сообщают, является локальным минимумом. Структура output показывает, что решатель взял всего 30 вычислений функции, чтобы достигнуть минимума.