Main Content

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.

Aplicación de optimización con el solucionador de fmincon

En este ejemplo se muestra cómo usar la aplicación de optimización con el fmincon Solver para minimizar un sujeto cuadrático a restricciones y límites lineales y no lineales.

Nota

La aplicación Optimization advierte que se eliminará en una versión futura.

Consideremos el problema de encontrar [x1,x2] que resuelve

minxf(x)=x12+x22

sujeta a las restricciones

0.5x1(bound)x1x2+10(linear inequality)x12x22+109x12x22+90x12+x20x22+x10}(nonlinear inequality)

La suposición inicial para este problema esx1 = 3 yx2 = 1.

Paso 1: escribe un archivo objecfun. m para la función objetiva.

function f = objecfun(x) f = x(1)^2 + x(2)^2;

Paso 2: escriba un archivo nonlconstr. m para las restricciones no lineales.

function [c,ceq] = nonlconstr(x) c = [-x(1)^2 - x(2)^2 + 1;      -9*x(1)^2 - x(2)^2 + 9;      -x(1)^2 + x(2);      -x(2)^2 + x(1)]; ceq = [];

Paso 3: configurar y ejecutar el problema con la aplicación de optimización.

  1. Escriba en la ventana de comandos para abrir la aplicación de optimización.optimtool

  2. Seleccione fmincon de la selección de solucionadores y cambiar el campo a.AlgorithmActive set

  3. Escriba en el campo para llamar al archivo.@objecfunObjective functionobjecfun.m

  4. Ingrese en el campo.[3;1]Start point

  5. Defina las restricciones.

    • Establezca el límite ≤0.5x1 entrando en el campo.[0.5,-Inf]Lower La entrada significa que no hay límite inferior en-Infx2.

    • Establezca la restricción de desigualdad lineal introduciendo en el campo y entrando en el campo.[-1 -1]A-1b

    • Establezca las restricciones no lineales introduciendo en el campo.@nonlconstrNonlinear constraint function

  6. En el panel, expanda la opción si es necesario y seleccioneOptionsDisplay to command window Iterative para mostrar la información del algoritmo en la ventana de comandos para cada iteración.

  7. Haga clic en el botón como se muestra en la figura siguiente.Start

  8. Cuando el algoritmo finaliza, se muestra la siguiente información:Run solver and view results

    • El valor cuando finaliza el algoritmo, que para este ejemplo es.Current iteration7

    • El valor final de la función objetiva cuando finaliza el algoritmo:

      Objective function value: 2.0000000268595803
    • El mensaje de terminación del algoritmo:

      Local minimum found that satisfies the constraints.  Optimization completed because the objective function is non-decreasing in  feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the  value of the constraint tolerance.
    • El punto final, que para este ejemplo es

          1     1 
  9. En la ventana de comandos, se muestra la información del algoritmo para cada iteración:

                                    Max     Line search  Directional  First-order   Iter F-count        f(x)   constraint   steplength   derivative   optimality Procedure      0      3           10            2                                         Infeasible start point     1      6      4.84298      -0.1322            1        -5.22         1.74        2      9       4.0251     -0.01168            1        -4.39         4.08  Hessian modified twice       3     12      2.42704     -0.03214            1        -3.85         1.09        4     15      2.03615    -0.004728            1        -3.04        0.995  Hessian modified twice       5     18      2.00033   -5.596e-05            1        -2.82       0.0664  Hessian modified twice       6     21            2   -5.326e-09            1        -2.81     0.000522  Hessian modified twice   Active inequalities (to within options.ConstraintTolerance = 1e-06):   lower      upper     ineqlin   ineqnonlin                                      3                                      4  Local minimum found that satisfies the constraints.  Optimization completed because the objective function is non-decreasing in  feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the  value of the constraint tolerance.

Temas relacionados