많은 경우 모델러는 특정 제약 조건을 완화하기를 원합니다. 이러한 제약 조건을 위반하는 것은 허용되지만 잘 정의된 페널티와 연관됩니다. 위반이 허용되는 제약 조건을 호출합니다.슬롯 제약조건그리고 계속해서 유지되는 제약 조건이 호출됩니다.하드 제약조건.
이 섹션에서 우리는 다음을 제시합니다.수학적 공식슬롯 조건의 경우예GAMS EMP를 사용하여 슬롯 조건을 모델링하고 다음을 소개하는 방법슬롯 조건과 관련된 EMP 주석.
연성 제약 조건: 수학적 공식
제약된 최소화 문제의 일반적인 공식은 다음과 같습니다:
\begin방정식
여기서 \(f\) 및 함수 \(c_i\)는 \(\mathbbR^n\)의 하위 집합에 대한 매끄러운 실수 값 함수이고 \(\mathcalI\)는 유한 인덱스 집합입니다. 이 문제에서 모든 가능한 해는 모든 제약 조건 \(c_i\)을 충족해야 합니다.
이제 일부 제약 조건은 위반이 허용되지만(즉, 소프트화) 나머지 제약 조건은 가능한 모든 솔루션에 대해 계속 유지된다고 가정합니다. 슬롯 조건은 다음과 연결됩니다.페널티 함수목적 함수에 추가됩니다. 최소화 문제가 있기 때문에 그 효과는 목표 최소화와 페널티 기능 최소화라는 경쟁 목표 간의 균형 또는 절충이 될 것입니다.
- 참고
- 슬롯 조건에 대한 페널티 조건은 다음과 같습니다.추가최소화 문제의 목적 함수에 대한빼기최대화 문제에 있습니다.
\(\mathcalL \in \mathcalI\)를 슬롯 조건에 대한 인덱스 집합으로 둡니다. 이는 \(\mathcalM := \mathcalI \setminus를 의미합니다. \mathcalL\)은 하드 제약 조건에 대한 인덱스 집합입니다. 문제 (2)는 다음과 같습니다.
\begin방정식
여기서 페널티 함수 \(g_i\)는 \(c_i(x)\), \(i \in \mathcalL\)의 실수 값 함수입니다. 나중에 살펴보겠지만 EMP에는 절대값, 최소 제곱, 항의 최대값 및 0과 같은 페널티 함수가 구현되어 있습니다. 또한, \(w_i\)는 각 페널티 기간과 연관된 승수이며,무게. 가중치는 슬롯 조건의 우선순위 지정을 용이하게 합니다. 더 중요한 제약 조건의 가중치는 더 작은 제약 조건의 가중치보다 큽니다.
EMP를 사용한 연성 제약: 간단한 예
다음의 간단한 예는 JAMS 솔버 매뉴얼에서 수정되었습니다:
\begin방정식
이 문제는 GAMS에서 다음과 같이 공식화될 수 있습니다:
양수 변수 x1, x2;
변수 obj;
방정식 f0 "목적 함수", f1, f2, f3;
f0..obj =e= -sqr(x1);
f1..log(x1) =e= 1;
f2..sqr(x2) =g= 2;
f3..3*x1 + x2 =l= 5;
모델 m /all/;
x1.l = 1; x2.l = 1;
NLP min obj를 사용하여 m을 해결합니다.
이 문제에는 실행 가능한 해결책이 없다는 점에 유의하십시오. 따라서 우리는 목적 함수에 위반에 대한 페널티를 추가하여 처음 두 제약 조건을 완화하기로 결정했습니다. 또한 이러한 페널티 함수에 가중치를 도입하여 목표의 상대적 중요성 또는 우선순위와 이러한 두 제약 조건의 위반에 가중치를 부여합니다. 결과 문제는 다음과 같습니다.
\begin방정식
첫 번째 제약 조건은 가중치 5의 최소 제곱 페널티 \((log(x_1)-1)\)로 대체되고 두 번째 제약 조건은 가중치 2의 페널티 항 \(\textrmmax(x_2^2 - 2,0)\)으로 대체됩니다. 그러나 "최대" 페널티는 목적 함수를 매끄럽지 않게 만듭니다. 이를 수정하기 위해 경계와 최적화 방향으로 인해 솔루션에서 \(\textrmmax(x_2^2 - 2,0)\) 값을 취하는 새 변수 \(v\)를 도입하여 "최대" 페널티를 구현합니다. 결과는 다음과 같습니다.
\begin방정식
이 재구성은 물론 표준 GAMS 구문을 사용하여 GAMS에서 직접 구현될 수 있지만 EMP 솔루션은 생성 및 유지 관리, 읽기 및 이해가 더 쉽고 문제 규모와 복잡성이 증가함에 따라 확장하기가 더 쉽습니다. 후자의 경우 간단히 다음을 추가하면 됩니다.EMP 주석그리고 해결 문을 업데이트했습니다(해결책을 다음과 같이 지정하기 위해EMP)을 GAMS 코드로위:
슬롯 파일 / '%emp.info%' /;
부드럽게 두십시오;
$onput
조정하다
f1 평방 5
f2 maxz 2
$offput
닫다;
EMP min obj를 사용하여 m을 해결합니다.
참고하세요EMP 주석세 줄 포함: 첫 번째 줄, 다음을 포함함EMP 키워드 adjustequ은 다음 줄이 슬롯 조건, 즉 페널티 항으로 변환되는 방정식을 지정함을 나타냅니다. 두 번째 줄은 첫 번째 슬롯 조건의 이름을 지정합니다.f1, 사용할 페널티 함수 및 - 선택적으로 - 가중치; 마찬가지로 세 번째 줄은 두 번째 슬롯 조건의 이름을 지정합니다.f2, 사용할 페널티 함수 및 가중치.
해석기 JAMS는 EMP 주석의 정보를 사용하여 문제를 자동으로 다시 구성합니다.(4)문제로(6)그리고 이를 NLP 하위 해결사에 전달합니다.EMP 요약JAMS에서 생성된 내용에는 다음 줄이 포함됩니다:
--- EMP 요약
...
조정된 제약조건 = 2
...이 출력은 실제로 두 개의 제약 조건이 "조정"되었음을 반영합니다. 즉, 목적 함수에서 페널티 항으로 변환되었습니다.
슬롯 조건에 대한 EMP 구문
EMP 프레임워크는 슬롯 조건으로 변환되는 제약 조건을 지정하기 위해 다음과 같은 일반 구문을 제공합니다.
AdjustEqu equ abs|sqr|maxz 무게
equ abs|sqr|maxz 무게그EMP 키워드 adjustequ다음 행은 "조정된" 방정식을 지정함을 나타냅니다. 즉, 목적 함수의 제약 조건에서 페널티 항으로 이동됩니다.Equ은 페널티를 적용할 방정식의 이름이고, 3EMP 키워드30197_30319위또는 모델[SIMPENLP]GAMS EMP 모델 라이브러리에 있습니다.