Приложение оптимизации с решателем 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.

Похожие темы

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