주요 콘텐츠

라그랑주 승수 구조체

제약 조건이 있는 최적화에는 1차 최적성 측정값에 설명된 대로 일련의 라그랑주 승수가 수반됩니다. 솔버는 추정된 라그랑주 승수를 구조체로 반환합니다. 라그랑주 승수의 일반적인 기호가 그리스 문자 람다(λ)이므로, 이 구조체를 lambda라고 합니다. 이 구조체는 승수를 다음과 같은 유형(필드라고 함)으로 분리합니다.

  • lower – 하한과 관련

  • upper – 상한과 관련

  • eqlin – 선형 등식과 관련

  • ineqlin – 선형 부등식과 관련

  • eqnonlin – 비선형 등식과 관련

  • ineqnonlin – 비선형 부등식과 관련

  • soc – 2차 원뿔 제약 조건과 관련

예를 들어, 라그랑주 승수 구조체의 비선형 부등식 필드에 액세스하려면 lambda.inqnonlin을 입력하십시오. 하한과 관련된 라그랑주 승수의 세 번째 요소에 액세스하려면 lambda.lower(3)을 입력하십시오.

라그랑주 승수 구조체의 내용은 솔버에 따라 다릅니다. 예를 들어, 선형 계획법에는 비선형성이 없으므로 이 솔버에는 eqnonlin 또는 ineqnonlin 필드가 없습니다. 적용 가능한 각 솔버의 함수 도움말 페이지에서 “출력값” 제목 아래에 라그랑주 승수 구조체에 대한 설명이 포함되어 있습니다.

선형 및 비선형 부등식 제약 조건과 범위가 있는 비선형 문제의 해에 대한 라그랑주 승수 구조체를 살펴보겠습니다.

lb = [-3 -3]; % lower bounds
ub = [3 3]; % upper bounds
A = [1 1]; % linear inequality x(1) + x(2) <= 1
b = 1;
Aeq = [];
beq = [];
x0 = [-1 1];
fun = @(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2; % Rosenbrock function
nlcons = @(x)deal(x(1)^2 + x(2)^2 - 1,[]); % nonlinear inequality
options = optimoptions('fmincon','Display','off');
[x,fval,exitflag,output,lambda] = ...
    fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nlcons,options);

disp(lambda)
         eqlin: [0×1 double]
      eqnonlin: [0×1 double]
       ineqlin: 0.3407
         lower: [2×1 double]
         upper: [2×1 double]
    ineqnonlin: 1.7038e-07

다음은 이 라그랑주 승수 구조체에 대한 해석입니다.

  • 선형 등식 제약 조건과 비선형 등식 제약 조건이 없으므로 lambda.eqlin 필드와 lambda.eqnonlin 필드의 크기는 0입니다.

  • lambda.ineqlin 필드는 값 0.3407을 가지며, 이는 선형 부등식 제약 조건이 활성 상태임을 나타냅니다. 선형 부등식 제약 조건은 x(1) + x(2) <= 1입니다. 제약 조건이 해에서 활성 상태인지(즉, 해에서 부등식이 등식이 됨) 확인합니다.

    x(1) + x(2)
    ans =
    
        1.0000
  • lambda.lower 필드와 lambda.upper 필드의 값을 확인합니다.

    lambda.lower
    ans =
    
       1.0e-07 *
    
        0.2210
        0.2365
    lambda.upper
    ans =
    
       1.0e-07 *
    
        0.3361
        0.3056

    이들 값은 사실상 0이며, 이는 해가 경계값 가까이에 있지 않음을 나타냅니다.

  • lambda.ineqnonlin 필드의 값은 1.7038e-07이며, 이는 이 제약 조건이 활성 상태가 아님을 나타냅니다. 제약 조건 x(1)^2 + x(2)^2 <= 1을 확인합니다.

    x(1)^2 + x(2)^2
    ans =
    
        0.5282

    비선형 제약 조건 함수 값이 그 제한값 가까이에 있지 않으므로, 라그랑주 승수는 대략 0입니다.

참고 항목

도움말 항목