Main Content

라그랑주 승수 구조체

제약 조건이 있는 최적화에는 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입니다.

관련 항목