Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Función de objetivo racional, basada en problemas

El enfoque basado en el problema de la optimización implica crear variables de optimización y expresar el objetivo y las restricciones en términos de esas variables.

Una función racional es un cociente de polinomios. Cuando la función objetiva es una función racional de las variables de optimización, puede crear la expresión de función objetiva directamente a partir de las variables. (En cambio, cuando la función objetiva no es una función racional, debe crear una función MATLAB® que represente el objetivo y, a continuación, convertir la función a una expresión mediante.)fcn2optimexpr

Por ejemplo, escriba la función objetiva

<math display="block">
<mrow>
<mi>f</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>-</mo>
<mi>y</mi>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
<mrow>
<mn>4</mn>
<mo>+</mo>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mn>4</mn>
</mrow>
</msup>
</mrow>
</mfrac>
<mfrac>
<mrow>
<mi>x</mi>
<mo>+</mo>
<msup>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
<mrow>
<mn>1</mn>
<mo>+</mo>
<msup>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mfrac>
</mrow>
</math>

en términos de dos variables de optimización y.xy

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

Para encontrar el mínimo de esta función objetiva, crea un problema de optimización con el objetivo, establece un punto inicial y llama.fsolve

prob = optimproblem('Objective',f); x0.x = -1; x0.y = 1; [sol,fval,exitflag,output] = solve(prob,x0)
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'

El indicador de salida muestra que la solución notificada es un mínimo local. La estructura de salida muestra que el solucionador tardó sólo 30 evaluaciones de función para alcanzar el mínimo.

Consulte también

Temas relacionados