The problem-based approach to optimization involves creating optimization variables and expressing the objective and constraints in terms of those variables.
A rational function is a quotient of polynomials. When the objective function is a rational function of optimization variables, you can create the objective function expression directly from the variables. (In contrast, when your objective function is not a rational function, you must create a MATLAB® function that represents the objective and then convert the function to an expression by using
For example, write the objective function
in terms of two optimization variables
x = optimvar('x'); y = optimvar('y'); f = (x-y)^2/(4+(x+y)^4)*(x+y^2)/(1+y^2);
To find the minimum of this objective function, create an optimization problem with
f as the objective, set an initial point, and call
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.7026e-06 lssteplength: 1 firstorderopt: 1.1921e-07 algorithm: 'quasi-newton' message: '...' solver: 'fminunc'
The exit flag shows that the reported solution is a local minimum. The output structure shows that the solver took just 30 function evaluations to reach the minimum.