이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

fmincon 솔버를 사용하는 최적화 앱

이 예제에서는 fmincon 솔버와 함께 최적화 앱을 사용하여 선형 및 비선형 제약 조건과 범위가 적용된 2차 함수를 최소화하는 방법을 보여줍니다.

참고

최적화 앱은 향후 릴리스에서 제거될 예정입니다.

다음 식의 해가 되는 [x1, x2]를 구하는 문제가 있다고 가정하겠습니다.

minxf(x)=x12+x22

여기에는 다음 제약 조건이 적용됩니다.

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

이 문제의 시작 추측값은 x1 = 3 및 x2 = 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. 목적 함수(Objective function) 필드에 @objecfun을 입력하여 objecfun.m 파일을 호출합니다.

  4. 시작점(Start point) 필드에 [3;1]을 입력합니다.

  5. 제약 조건을 정의합니다.

    • 하한(Lower limit) 필드에 [0.5,-Inf]를 입력하여 범위 0.5 ≤ x1을 설정합니다. -Inf 항목은 x2에 하한이 없음을 의미합니다.

    • A 필드에 [-1 -1]을 입력하여 선형 부등식 제약 조건을 설정하고 b 필드에 -1을 입력합니다.

    • 비선형 제약 조건 함수(Nonlinear constraint function) 필드에 @nonlconstr을 입력하여 비선형 제약 조건을 설정합니다.

  6. 옵션(Options) 창에서, 필요한 경우 명령 창에 표시(Display to Command Window) 옵션을 확장하고 모든 반복(Iterations)을 선택하여 각 반복에 대해 명령 창에 알고리즘 정보를 표시합니다.

  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.

관련 항목