Приложение оптимизации с fmincon Решателем

Этот пример показывает, как использовать приложение Оптимизации с решателем fmincon, чтобы минимизировать квадратичный предмет к линейным и нелинейным ограничениям и границам.

Примечание

Приложение Оптимизации предупреждает, что будет удалено в будущем релизе.

Считайте проблему нахождения [x 1, x 2], который решает

minxf(x)=x12+x22

подвергните ограничениям

0.5x1(связанный)x1x2+10(линейное неравенство)x12x22+109x12x22+90x12+x20x22+x10}(нелинейное неравенство)

Стартовым предположением для этой проблемы является x 1 = 3 и x 2 = 1.

Шаг 1: Запишите файл objecfun.m для целевой функции.

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

Шаг 2: Запишите файл nonlconstr.m для нелинейных ограничений.

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 = [];

Шаг 3: Настройте и запустите проблему с приложением Оптимизации.

  1. Введите optimtool в Командном окне, чтобы открыть приложение Оптимизации.

  2. Выберите fmincon из выбора решателей и измените поле Algorithm на Active set.

  3. Введите @objecfun в поле Objective function, чтобы вызвать файл objecfun.m.

  4. Введите [3;1] в поле Start point.

  5. Задайте ограничения.

    • Установите связанный 0.5x 1 путем ввода [0.5,-Inf] в поле Lower. Запись -Inf означает, что нет никакой нижней границы на x 2.

    • Установите линейное ограничение неравенства путем ввода [-1 -1] в поле A и введите -1 в поле b.

    • Установите нелинейные ограничения путем ввода @nonlconstr в поле Nonlinear constraint function.

  6. В панели Options расширьте опцию Display to command window при необходимости и выберите Iterative, чтобы показать информацию об алгоритме в Командном окне для каждой итерации.

  7. Нажмите кнопку Start как показано в следующей фигуре.

  8. Когда алгоритм останавливается под Run solver and view results, следующая информация отображена:

    • Значение Current iteration, когда отключенный алгоритм, который для этого примера является 7.

    • Окончательное значение целевой функции, когда отключенный алгоритм:

      Objective function value: 2.0000000268595803
    • Сообщение завершения алгоритма:

      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.
    • Конечный пункт, который для этого примера является

          1
          1	
  9. В Командном окне информация об алгоритме отображена для каждой итерации:

                                    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.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте