JAMS 및 LogMIP

소개

피망 슬롯(확장 수학 프로그래밍)는 해결사가 아니라 자동화된 수학 프로그래밍 재구성을 위한 (실험적) 프레임워크입니다. 피망 슬롯의 기본 아이디어는 성숙한 솔버 기술을 사용하기 위해 현재 안정적으로 풀 수 없는 새로운 유형의 모델을 기존 수학 프로그래밍 클래스의 모델로 재구성하는 것입니다. 이 단계에서 피망 슬롯는 이중 레벨 프로그램, 변형 불평등, 분리 프로그램, 확장 비선형 프로그램 및 임베디드 상보성 시스템의 모델링을 지원합니다.

확장 수학 프로그램은 특정 최적화 및 상보성 기본 요소를 사용하여 결합된 함수 및 변수의 모음입니다. 피망 슬롯는 모델 내의 기존 관계에 주석을 달아 더 높은 수준의 구조 식별을 용이하게 합니다. 'empinfo' 파일에 포함된 지시문을 사용하여 원래 GAMS 모델을 기존 GAMS 솔버를 사용하여 해결할 수 있는 동등한 모델로 자동으로 재구성하는 이 프레임워크의 구체적인 구현이 설명되어 있습니다.

재공식화는 현재 피망 슬롯 모델을 처리할 수 있는 유일한 솔버인 솔버 JAMS에 의해 수행됩니다. 피망 슬롯 프레임워크 및 솔버 JAMS를 사용하는 방법을 보여주는 예는 GAMS 배포판에 포함된 GAMS 피망 슬롯 라이브러리를 통해 제공됩니다. EMPLIB 모델의 복사본을 생성하려면 GAMS Studio의 라이브러리 기능을 사용하거나 명령줄 지시문을 실행할 수 있습니다.emplib <피망 슬롯 이름>, 여기서 modelname은 피망 슬롯이 포함된 파일(어간)입니다.

피망 슬롯는 UW-Madison의 Michael Ferris, Carnegie Mellon University의 Ignacio Grossmann 및 GAMS Development Corporation이 공동으로 개발했습니다. 피망 슬롯 및 JAMS는 라이선스가 부여된 모든 GAMS 시스템과 함께 무료로 제공되지만 생성된 모델을 해결하려면 하위 솔버가 필요합니다.

JAMS: 재구성 도구

피망 슬롯 모델은 현재 JAMS 솔버에 의해 처리됩니다. 솔버 JAMS는 주어진 GAMS 모델의 스칼라 버전을 생성합니다. 그런 다음 모델의 이 스칼라 버전은 적절한 하위 해결사에 의해 해결됩니다. 기본적으로 재공식화는 수행되지 않으므로 생성된 모델은 실제 하위 해결 프로그램이 처리할 모델의 GAMS 스칼라 형식일 뿐입니다. 사용되는 하위 솔버는 기본적으로 주어진 모델 유형에 대해 현재 지정된 솔버입니다.

JAMS 옵션 파일

모든 GAMS 솔버와 마찬가지로 JAMS에는 일반적으로 다음과 같은 옵션 파일이 있습니다.jams.opt. JAMS 옵션서브솔버하위 솔버 옵션 파일을 활용하는 옵션과 함께 재구성된 피망 슬롯에 사용되는 하위 솔버를 변경할 수 있습니다(subsolverop).

피망 슬롯의 실제 스칼라 버전은 옵션을 사용하여 피망 슬롯러가 볼 수도 있습니다.파일 이름. 예를 들어 옵션 파일

하위 해결사 경로
서브솔버옵트 1
파일 이름 mcpmod.gms

상보성 문제가 있는 피망 슬롯 모델에 적용하면 다음과 같은 파일이 생성됩니다.mcpmod.gms현재 디렉토리에서 지정된 PATH에 대한 옵션을 활용하는 솔버 PATH를 사용하여 해당 피망 슬롯을 해결합니다.경로.opt. 스칼라화된 피망 슬롯은 모든 원래 변수의 이름이 스칼라 형식으로 바뀌었기 때문에 살펴보는 데 특별히 유용하지 않습니다. 원래 변수와 피망 슬롯의 스칼라 버전에 사용된 변수 간의 매핑은 피망 슬롯러가 다음을 사용하여 볼 수도 있는 사전 파일에 제공됩니다.dict 옵션. 사용자가 단순히 이 스칼라 피망 슬롯을 생성하려는 경우 옵션은 다음과 같습니다.종료생성된 피망 슬롯을 해석하지 않습니다.

피망 슬롯의 스칼라 버전이 해결된 후 솔루션 값은 원래 네임스페이스로 다시 매핑되고 목록 파일에서 평소와 같이 피망 슬롯러에 반환됩니다. JAMS 옵션마르톨피망 슬롯러는 이 허용오차보다 작은 (절대) 값을 갖는 보고 한계를 억제할 수 있습니다.

분명히 위의 모든 기능은 큰 가치가 없습니다. JAMS의 핵심 부분은 추가 지시어를 해석하여 원래 피망 슬롯을 취하고 다음을 생성하는 것입니다.재공식화스칼라 피망 슬롯. 이는 "empinfo" 파일을 사용하여 수행됩니다. 이 파일의 구문과 사용은 이 문서의 나머지 섹션의 내용입니다.

옵션피망 슬롯정보파일사용자는 추가 피망 슬롯 정보가 포함된 파일의 경로와 이름을 지정할 수 있습니다. 이 파일의 구문은 이 문서의 다른 부분과 섹션에 예시로 설명되어 있습니다.Empinfo 파일 세부정보. 사용자가 다음을 사용하여 gams 파일에 지정된 현재 실행의 GAMS 스크래치 디렉터리에 있는 기본 위치에 이 파일을 작성할 때 언급해야 할 미묘함이 있습니다.

파일 empinfo / '%피망 슬롯info%' /;

여기서 특정 추가 형식 지정 지침이 제공됩니다. 대신 파일 핸들은 다음과 같이 제공됩니다.

파일 empinfo / 'empinfo.txt' /;

예를 들어, 동일한 파일을 생성하려면 gams 소스 파일에 다음 줄을 추가해야 합니다:

empinfo.pc = 8;
empinfo.pw = 255;

다음 표에는 사용 가능한 모든 옵션이 나열되어 있습니다.

재공식화 옵션

옵션설명기본값
KeepObj생성된 MCP 피망 슬롯에서 원래 목적 함수 및 변수를 유지합니다.
이 옵션은 상보성 시스템으로 재구성하는 경우에만 유효합니다. KeepObj가 설정되면 생성된 MCP 프로그램은 원래 목적 함수와 원래 목적 변수의 Karush-Kuhn-Tucker 조건을 통합합니다.
0
마그톨절대값이 허용오차보다 높은 한계값만 보고1e-6
ObjVarName생성된 피망 슬롯의 목적 변수 이름.objvar

일반 옵션

옵션설명기본값
CompModel평형 문제를 생성하기 위한 상보성 피망 슬롯(MCP 또는 VI).mcp
딕셔너리원본 변수 및 방정식 이름을 스칼라 JAMS 피망 슬롯의 이름에 매핑하는 사전 파일을 생성합니다.dict.txt
DisjBinRelax접합 변수가 바이너리라는 요구 사항을 완화합니다.0
피망 슬롯정보파일접합, 수직, 이중 레벨 특성화 등의 추가 피망 슬롯 정보를 포함하는 파일의 경로 및 이름
기본적으로 파일은 현재 실행의 GAMS 스크래치 디렉토리에 있을 것으로 예상됩니다. (gams.scrdir). 이 옵션을 사용하면 피망 슬롯는 제공된 상대 또는 절대 경로를 기반으로 파일을 검색합니다. 주어진 상대 경로의 경우 작업 디렉터리를 기준으로 하는 것으로 가정됩니다.
파일 이름생성된 스칼라 재구성된 GAMS 피망 슬롯의 파일 이름.피망 슬롯gms
ImplVarModel암시적 변수에 대해 생성할 재공식 피망 슬롯.
복제: 공유 변수는 각 에이전트마다 복제됩니다.
대체: 공유 승수가 대체됩니다. 암시적 기능을 가정합니다.
전환: 복제를 피하기 위해 함수-변수 일치를 전환
전환
NLConsToFunc평형 문제에 대한 VI 피망 슬롯을 생성할 때 기능 부분에 비선형 제약 조건 추가0
SharedEqu평형 문제에서 공유 방정식 허용0
SubSolvePar하위 해결을 위한 사용자 정의 GAMS 매개변수
하위 해결자재공식화된 피망 슬롯을 해결하는 데 사용되는 하위 솔버입니다.
선택한 하위 해결 프로그램은 선택한 재구성 유형에 적합해야 합니다. 사용자는 솔버 관련 옵션 파일을 제공할 수도 있습니다. 참조SubSolverOpt.
SubSolverOpt하위 솔버에 전달할 Optfile 값
범위:1, ...,999}
1
종료재구성된 피망 슬롯의 GAMS 소스 코드를 파일로 생성하고 피망 슬롯을 해결하지 않고 종료합니다.0
사용자PF파일재구성된 GAMS 피망 슬롯을 실행할 때 추가 GAMS 옵션의 파일 이름.
ZipDebug내부 GAMS 피망 슬롯이 실패할 경우 생성할 Zip 파일 이름없음

최적 조건 형성: NLP2MCP

JAMS 솔버의 첫 번째 중요한 용도는 선형 또는 비선형 프로그램의 1차 조건을 자동으로 생성하는 것입니다. 본질적으로 우리는재공식화혼합 상보성 문제(MCP)로서의 최적화 문제. 이를 수행하기 위한 "empinfo" 파일에는 다음 줄이 포함되어 있습니다.

피망 슬롯 유형 mcp

뒤에서 JAMS는 비선형 프로그램의 라그랑지안을 형성한 다음 Karush-Kuhn-Tucker 최적 조건을 형성합니다. 명확하게 말하면 원래의 비선형 프로그램이 주어졌을 때

\begin방정식 \tagNLP \min_x f(x) \text s.t. g(x) \leq 0, \; h(x) = 0, \end방정식

라그랑지안은:

\[ \mathcalL(x,\lambda,\mu) = f(x) - \langle\lambda,g(x)\rangle - \langle\mu,h(x)\rangle . \]

첫 번째 주문 조건은 다음 MCP입니다:

\[ \begin정렬 0 & = \nabla_x \mathcalL(x,\lambda,\mu) & \quad \perp \quad x & \text 무료 \\ 0 & \geq -\nabla_\lambda \mathcalL(x,\lambda,\mu) & \quad \perp \쿼드 \lambda & \leq 0 \\ 0 & = -\nabla_\mu \mathcalL(x,\lambda,\mu) & \quad \perp \쿼드 \mu & \text 무료 \end정렬됨

구체적인 예는 다음과 같습니다:

\[ \begin배열lll \displaystyle \min_x,y,z & -3x + y \\ \texts.t. & x + y \leq 1,\; x + y - z = 2,\; x, y \geq 0 \end배열 \]

EMPLIB 피망 슬롯에서 발견됨nlp2mcp:

양수 변수 x, y;
변수 f, z;
방정식 g, h, defobj;
g.. x + y =l= 1;
h.. x + y - z =e= 2;
defobj.. f =e= -3*x + y;
피망 슬롯 구성 요소 / defobj, g, h /;
파일 정보 / '%피망 슬롯info%' /;
putclose 정보 / '피망 슬롯 유형 mcp';
피망 슬롯 최소화 f를 사용하여 comp를 해결합니다.

putclose 라인은 시스템 문자열에 위치가 제공되는 기본 "empinfo" 파일을 작성합니다.%피망 슬롯info%. 이 추가 정보를 바탕으로 피망 슬롯 도구는 자동으로 다음 MCP를 생성합니다.

\[ \begin정렬 0 & \leq -3 - \lambda - \mu & \quad \perp \quad x & \geq 0 \\ 0 & \leq 1 - \lambda - \mu & \quad \perp \쿼드 y & \geq 0 \\ 0 & = \mu & \quad \perp \쿼드 z & \text무료 \\ 0 & \geq x + y - 1 & \quad \perp \quad \lambda & \leq 0 \\ 0 & = x + y - z - 2 & \quad \perp \quad \mu & \text 무료. \end정렬됨

소프트 제약 조건

많은 경우에 우리는 해결 과정에서 피망 슬롯의 특정 제약 조건을 완화하고자 합니다(예: 타당성 문제를 식별하는 데 도움이 됨). 예를 들어 문제를 생각해 보세요.

\beginalign*

GAMS에서 다음과 같이 공식화될 수 있습니다.

$title ENLP의 간단한 예
변수 obj, x1, x2, x3;
방정식 f0, f1, f2, f3, f4;
f0..obj =e= exp(x1);
f1..log(x1) =e= 1;
f2..sqr(x2) =g= 2;
f3.. x1/x2 =e= 로그(x3);
f4..3*x1 + x2 =l= 5;
x1.lo = 0; x2.lo = 0;
피망 슬롯 enlpemp /all/;
x1.l = 1; x2.l = 1; x3.l = 1;
nlp min obj를 사용하여 enlpemp를 해결합니다.

고전적인 NLP로서의 재공식화

연성 제약 조건을 사용하면 제약 조건을 제거하고 목적 함수에 페널티 항을 추가하여 피망 슬롯의 특정 방정식을 "소프트"로 처리할 수 있습니다. 명시적으로 위의 문제를 다음으로 대체합니다.

\beginalign*

이 문제에서 우리는 여전히 \(x_1/x_2 = \log(x_3)\)를 강제하지만 \(\log(x_1) - 1\)에는 최소 제곱 페널티를 적용하고 \(x_2^2 - 2\)에는 더 작은 일방적 페널티를 적용합니다.

위 공식은 목적 함수의 "최대" 항으로 인해 매끄럽지 않습니다. 실제로는 이를 다음으로 대체합니다.

\beginalign*

그리고 표준 형식 NLP를 복구합니다.

"empinfo" 파일:

피망 슬롯 유형 NLP
조정하다
f1 평방 5
f2 최대 2

마지막 줄을 다음으로 바꾸는 것과 결합됨

피망 슬롯 min obj를 사용하여 enlpemp를 해결합니다.

이 목표를 달성합니다. 매개변수 값은 위의 페널티 계수를 제공합니다.

MCP로 재구성

대안으로 문제를 MCP로 다시 작성하고 부드러움을 명시적으로 처리할 수도 있습니다. "empinfo" 파일은 다음과 같이 제공됩니다.

피망 슬롯 유형 NLP
조정하다
f1 평방 5
f2 최대 2

이것은 다음 MCP를 생성합니다:

\[ \begin정렬 0 & = \log(x_1) - 1 + y_1/10 & \quad \perp \quad y_1 & \text 무료, \\ 0 & \leq x_2^2 - 2 & \quad \perp \quad y_2 & \geq 0, \\ 0 & = x_1/x_2 - \log(x_3) & \quad \perp \quad y_3 & \text 무료, \\ 0 & \geq 3x_1 + x_2 - 5 & \quad \perp \quad y_4 & \leq 0, \\ 0 & \leq exp(x_1) - y_1/x_1 - y_3/x_2 - 3y_4 & \quad \perp \quad x_1 & \geq 0, \\ 0 & \leq - 2y_2 x_2 + x_1y_3/x_2^2 - y_4 & \quad \perp \quad x_2 & \geq 0, \\ 0 & = y_3/x_3 & \quad \perp \quad x_3 & \text 무료, \end정렬됨

어디에서y승수를 나타냅니다.

이 MCP를 파생시키는 프로세스에 대한 전체 설명은 나중에 섹션에서 제공됩니다.확장 비선형 프로그램 .

이중 프로그램

제약조건에 최적화 문제가 있는 수학 프로그램은 [를 포함하여 운영 연구에서 오랜 역사를 가지고 있습니다.14, 28, 70] . 최소한 단순한 계층 구조에 대해 이 구조를 활용하고 해당 솔루션에 대한 알고리즘을 정의하고 구현하려고 시도하는 새로운 코드가 개발되고 있습니다.

가장 간단한 경우는 이중 수준 프로그래밍의 경우로, 상위 수준 문제는 하위 수준 최적화의 솔루션에 따라 달라집니다. 예를 들면:

\[ \begin정렬 \min_x,y\; & f(x,y) \\ \texts.t. & g(x,y) \leq 0, \\ & y \text 해결 \begin정렬[t] \min_y\; & v(x,y) \text s.t. & h(x,y) \geq 0 . \end정렬됨

종종 상위 레벨은 "리더"로 불리며, 하위 레벨은 "추종자"로 지칭됩니다.

이 문제는 낮은 수준의 최적화 문제를 1차 최적성 조건으로 대체하여 MPCC(상보성 제약이 있는 수학적 프로그램)로 다시 공식화될 수 있습니다.

\[ \begin정렬 \min_x,y\; & f(x,y) \\ \texts.t. & g(x,y) \leq 0, \\ & 0 = \nabla_y v(x,y) - \lambda^T \nabla_y h(x,y) \perp x \text free \\ & 0 \leq h(x,y) \perp \lambda \geq 0 . \end정렬됨 \]

우리는 이중 레벨 프로그램이 아닌 MPCC의 솔루션을 찾습니다. 이 접근법을 사용하면 예를 들어 NLPEC 코드를 사용하여 MPCC를 해결할 수 있습니다. 이 재구성은 잠재적으로 문제가 있을 수 있습니다. 1차 조건에는 필요하고 충분하다는 이론적 가정이 필요합니다.지역 최적성. 하위 수준 문제에 여러 로컬 솔루션이 있는 경우가 있을 수 있지만 피망 슬롯러는 실제로 다음 사항에 관심이 있었습니다.글로벌해결책. NLPEC 내에서 전역 솔버가 사용되더라도 여기서의 접근 방식은 이 솔루션을 생성하지 못할 수 있습니다.

다음 예는 [의 197페이지, 예 5.1.1입니다.14] . 수학적으로 문제는 다음과 같습니다.

\[ \begin정렬 \min_x,y\; & x - 4년 \\ \texts.t. & y \text 해결 \begin정렬[t] \min_y\; & y & \\ \text 성.t. & x+y \geq 3 \\ & 2x - y \geq 0\\ & -2x - y \geq -12\\ & -3x + 2y \geq -4 \end정렬됨

및 EMPLIB 피망 슬롯bard511다음 코드를 포함합니다:

양수 변수 x, y;
변수 objout, objin;
방정식 defout, 정의, e1, e2, e3, e4;
defout.. objout =e= x - 4*y;
정의.. objin =e= y;
e1.. x + y =g= 3;
e2.. 2*x - y =g= 0;
e3.. -2*x - y =g= -12;
e4.. -3*x + 2*y =g= -4;
피망 슬롯 음유시인 / 모두 /;
$echo 이중 레벨 x 최소 objin y 정의 e1 e2 e3 e4 > "%피망 슬롯info%"
피망 슬롯 최소화 objout을 사용하여 음유시인을 해결합니다.

먼저 피망 슬롯의 목표와 제약 조건을 구성하는 기능이 정의되고 피망 슬롯이 조립된다는 점에 유의하세요.$echo라인은 "empinfo" 파일을 작성하고 낮은 수준의 문제가 목표와 관련되어 있음을 나타냅니다.오브진변수를 선택하여 최소화해야 함y(에 지정된 제약 조건을 따릅니다.정의), e1, e2, e3e4.

변수 \(x\)는 상위 수준 문제의 변수로 선언되었으며 이 예에는 상위 수준 제약 조건 \(g\)이 없습니다. 이런 방식으로 문제를 작성하면 MPCC가 자동으로 생성되어 솔버에 전달됩니다. 해당 솔버가 NLPEC인 경우 MPCC를 동등한 NLP 또는 NLP의 파라메트릭 시퀀스로 변환하기 위해 피망 슬롯의 추가 재구성이 수행됩니다.

이중 피망 슬롯의 추가 예EMPLIB이름은 다음과 같습니다:음유시인*, ccmg74, ccmg153, 플드*, jointc1, jointc2, 미러리스, transbp.

피망 슬롯 모델 유형을 사용하면 이중 수준 형식 내에서 여러 하위 수준 문제를 지정할 수 있습니다. 이에 대한 예는 EMPLIB에 다음과 같이 제공됩니다.ccmg71. 방정식과 목표는 일반적인 방식으로 지정됩니다. 유일한 변경 사항은 아래와 같이 "empinfo" 파일의 정의입니다.

...
defh1..h1 =e= sqr(u1-x1) + sqr(u2-x2) + sqr(u3-x3) + sqr(u4-x4);
e1..3*u1 + u2 + 2*u3 + u4 =e= 6;
...
$onecho > "%피망 슬롯info%"
이중 레벨 x1 x2 x3 x4
분 h1 u1 u2 u3 u4 defh1 e1
분 h2 v1 v2 v3 v4 defh2 e2
$offecho

이것은 최소화 문제를 해결하는 두 개의 팔로워가 있는 이중 레벨 프로그램에 해당합니다. 첫 번째 추종자는 목적 함수를 최소화합니다.h1(에 정의됨defh153261_53284u1, u2, u3u4다음에 주어진 제약 조건에 따라e1. 두 번째 추종자 문제는 다음에 유사하게 정의됩니다. 참고하세요h1변수와 관련됨x1, x2, x3x4리더의 최적화 변수입니다. 제약 조건e1또한 이러한 변수를 포함할 수 있으며 변수도 포함할 수 있습니다.v1, v2, v3또는v4두 번째 추종자의 것이지만 이들 모두는 첫 번째 추종자에 의해 매개변수로 처리됩니다.

실제 피망 슬롯 (ccmg7153987_54027

...
defh1.. h1 =e= sqr(u1-x1) + sqr(u2-x2) + sqr(u3-x3) + sqr(u4-x4);
e1..3*u1 + u2 + 2*u3 + u4 =e= 6;
...
$onecho > "%피망 슬롯info%"
이중 레벨 x1 x2 x3 x4
분 h1 * defh1 e1
분 h2 * defh2 e2
$offecho

팔로워 문제에서 '*' 표기는 이 에이전트가 사용된 모든 변수에 대해 최적화할 것임을 나타냅니다.defh1그리고e1다른 추종자나 리더의 통제를 받지 않습니다. 이 경우 이는 다음을 의미합니다.u1, u2, u3u4. 혼동을 피하기 위해 피망 슬롯러는 이전에 표시된 대로 각 추종자 문제의 모든 변수에 명시적으로 이름을 지정하는 것이 좋습니다.

변형 부등식

변분 불평등 \(VI(F,X)\)은 \(x \in X\)를 찾는 것입니다.

\[ \langleF(x),(z - x)\rangle \geq 0, \text 모든 z \in X 에 대해. \]

여기서 \(X\)는 닫힌(흔히 볼록하다고 가정되는) 집합이며, 예를 들어 다음과 같이 정의됩니다.

\[ X = \왼쪽\ x \;|\; x \geq 0, h(x) \geq 0 \right\. \]

비선형 프로그램의 1차(최소 원리) 조건에 유의하세요.

\[ \min_z \in X f(z) \]

정확히 \(F(x) = \nabla f(x)\) 형식입니다.

세트 \(X\)가 표현 \(\left\ x \;|\; x \geq 0, h(x) \geq 0 \right\\)을 가질 때 제약 조건 \(h(x)\geq0\)에 승수 λ를 도입하여 이러한 문제를 상보성 문제로 재구성할 수 있다는 것은 잘 알려져 있습니다.

\[ \begin정렬

만약 \(X\)가 다른 표현을 가지고 있다면, 이 구성은 적절하게 수정될 것입니다.

간단한 2차원 예는 이해를 높이는 데 유용할 수 있습니다. 하자

\[ F(x) = \beginbmatrix x_1 + 2 \\ x_1 + x_2 - 3 \endbmatrix,\; X = \왼쪽\x \geq 0\오른쪽\x_1 + x_2 \leq 1, \]

그래서 \(F\)는 아핀 함수이지만 \(F\)는 어떤 함수의 기울기도 아닙니다 \( f: \mathbfR^2 \to \mathbfR \). 이 특정 데이터에 대해 \(VI(F,X)\)는 고유한 해 \(x = (0,1)\)를 갖습니다.

J / 1, 2 / 설정;
양수 변수 x(J) 'vars, perp to f(J)';
방정식 F(J), h;
F(J).. (x('1') + 2)$sameas(J,'1') + (x('1') + x('2') - 3)$sameas(J,'2') =n= 0 ;
h.. x('1') + x('2') =l= 1;
피망 슬롯 simpleVI / F, h/;
파일 FX /"%피망 슬롯info%"/;
putclose fx 'vi F x h';
피망 슬롯를 사용하여 simpleVI를 해결합니다.

이 파일의 첫 번째 줄은 표준 GAMS 구문을 사용하여 \(F\) 및 \(h\)를 정의하고 피망 슬롯에 정의 방정식을 포함한다는 점에 유의하세요.단순VI. 확장자는 특정 방정식이 피망 슬롯 도구에 의해 다르게 처리됨을 나타내는 주석 "empinfo" 파일입니다. 주석에는 단순히 모델이 VI(vi) 쌍F함께x그리고 나머지(쌍이 아닌) 방정식은 제약 세트 \(X\)를 형성합니다. (대체 표기법은 키워드를 허용합니다.vi다음으로 대체됨vifunc.) 따라서 피망 슬롯 방정식F변분 부등식의 일부가 될 함수 \(F\)를 정의하고 방정식h\(X\)의 제약 조건을 정의합니다. 이 설정에서는 다음으로 정의된 "empinfo" 파일을 사용하는 것도 허용됩니다.

putclose fx 'vi F x';

이 경우 기본적으로 피망 슬롯 명령문에 제공되었지만 쌍으로 포함되지 않은 모든 방정식은vi문은 \(X\)를 형성하는 데 자동으로 사용됩니다. 다음을 사용하지 않고 이 피망 슬롯을 작성하는 또 다른 방법입니다.sameasEMPLIB에 다음과 같이 제공됩니다.affinevi.

VI와 관련된 일부 미묘함은 EMPLIB 피망 슬롯에서 시연됩니다.zerofunc. 이 피망 슬롯에서 집합 \(X\)는 변수 \(y\) 및 \(z\)를 사용하여 정의되며, \(z\)는 \(F \equiv F_y\)의 정의에 나타나지 않습니다. 이 경우 변수 \(z\)는 "0" 함수와 일치됩니다. "empinfo" 파일은 다양한 방법으로 작성할 수 있습니다.

putclose fx 'vi F_y y';

또는

putclose fx 'vi z F_y y';

또는

putclose fx 'vi z F_y y gCons';

또는

putclose fx 'vi F_z z F_y y gCons';

어디에서F_z단순히 0 기능을 정의합니다. 어느 정도 우리가 선호하는 표기법은 세 번째로 나열된 표기법입니다. 이는 피망 슬롯에 존재하는 모든 변수와 제약 조건을 명시적으로 포함하며 피망 슬롯러가 정의할 필요가 없습니다.F_z전혀요.

EMPLIB의 추가 예시 피망 슬롯은 다음과 같습니다.simplevi, simplevi2, simplevi3, 대상, 교통, 교통2트랜스비.

또한 이중 레벨 프로그램의 하위 레벨 문제는 최적화 문제 대신 VI의 문제일 수 있습니다. 이러한 문제는 문헌에서 평형 제약 조건이 있는 수학적 프로그램(MPEC)이라고 합니다. MPCC는 MPEC의 특별한 경우이므로 GAMS 피망 슬롯 유형 MPEC는 두 가지를 모두 포괄합니다. 이 설정을 보여주는 예는 EMPLIB에 다음과 같이 제공됩니다.멀티mpec. 해결해야 할 실제 피망 슬롯은 다음과 같습니다.

\beginalign*

두 개의 VI(정의 세트로 인해)는 각각 상보성 문제에 해당합니다.

\[ \begin정렬

및 선형 방정식:

\[ w + z + 3 = 0 \]

실제 GAMS 코드는 다음과 같습니다:

양수 변수 u;
변수 v, w, z;
방정식 f1, f2, f3, h;
f1..v + w + z =n= 1;
f2.. u =n= log(v);
f3.. w + z =n= -3;
h..exp(z) + w =e= 2;
v.lo = 0; v.1 = 1; z.lo = 1;
피망 슬롯 mpecmod /all/;
$onecho > %피망 슬롯info%
이중 레벨
vi f1 u
f2 v
vi f3 w
$offecho
피망 슬롯 min z를 사용하여 mpecmod를 해결합니다.

초기 레벨 값v (v.l = 1)는 \(\log(v)\)의 평가를 보호하는 데 필요합니다. 두 가지 상보성 문제는 empinfo 파일에 지정되어 있습니다(이러한 VI를 분리할 필요는 없지만 활용 가능한 솔버에 정보를 제공할 수 있습니다). 물론 피망 슬롯 대신 모델 유형 MPEC를 사용하여 GAMS에서 직접 MPCC를 작성하는 것도 가능합니다.

내장된 상보성 시스템

애플리케이션에서 자주 발생하는 다른 유형의 내장 최적화 피망 슬롯은 다음과 같습니다.

\[ \begin배열lll \displaystyle \max_x & f(x,y) & \\ \texts.t. & g(x,y) \leq 0 & (\perp p \geq 0) \\[1em] & H(x,y,p) = 0 & (\perp y \text 자유) \end배열 \]

여기서 차이점에 주목하십시오: 최적화 문제는 변수 \(x\)에 관한 것이며 변수 \(y\)에 의해 매개변수화됩니다. \(y\)의 선택은 여기에서 \(H\)로 묘사된 (보조) 상보 관계에 의해 고정됩니다. \(H\) 방정식은 최적화 문제의 일부가 아니지만 본질적으로 피망 슬롯의 나머지 변수를 묶는 보조 제약 조건입니다.

구체적인 예는 다음과 같습니다:

\[ \begin배열lll \displaystyle \max_x & x & \\ \texts.t. & x + y \leq 1 & \\[1em] & -3x + y = 0.5 & (\perp y \text 무료) \end배열 \]

EMPLIB 피망 슬롯에서 발견됨simpequil2:

변수 y;
양수 변수 x;
방정식 optcons, vicons;
optcons.. x + y =l= 1;
vicons.. -3*x + y =e= 0.5;
피망 슬롯 구성 요소 / optcons, vicons /;
파일 정보 / '%피망 슬롯info%' /;
정보 입력 / '평형';
put / '최대 x optcons';
putclose / 'vi vicons y';
피망 슬롯를 사용하여 구성 요소를 해결합니다.

이 모델이 피망 슬롯로 올바르게 처리될 수 있도록 모델러는 "empinfo" 파일의 방정식을 정의하는 모델에 추가 주석을 제공합니다. 구체적으로, 먼저 문제가 하나 이상의 에이전트 문제를 포함하는 평형 문제라는 것이 표시됩니다. 다음으로 첫 번째 에이전트를 옵티마이저로 정의합니다(overx). 마지막으로, 두 번째 에이전트는 다음에서 VI를 해결하는 것으로 정의됩니다.y. 이 추가 정보를 바탕으로 피망 슬롯 도구는 자동으로 다음 MCP를 생성합니다.

\[ \begin정렬 0 & \leq -1 + p & \quad \perp \quad x & \geq 0 \\ 0 & \leq 1 - x - y & \quad \perp \쿼드 p & \geq 0 \\ 0 & = -3x + y - 0.5 & \quad \perp \quad y & \text 무료, \end정렬됨

(아래에 설명된 단계에 의해 구성됨). 피망 슬롯는 모든 변수와 제약조건이 정확히 하나의 에이전트에 의해 제어된다는 규칙을 명시적으로 시행합니다. 따라서 제약 조건이나 변수는 최대 문제와 VI 문제 모두에 나타날 수 없습니다.

위의 예는 \(H\)가 최적화 문제의 제약 조건에 대한 승수인 \(x\), \(y\) 및 \(p\)의 함수인 위에 설명된 일반적인 형식보다 약간 더 간단합니다. 문제는 최적화 문제만 지정하는 경우 피망 슬롯 코드 주변에 해당 변수가 없다는 것입니다. 이는 예를 들어 Hogan으로 인해 고전적인 PIES 피망 슬롯에서 발생합니다. 이 설정에서 문제는 선형 프로그램으로 설명됩니다.

\[ \begin배열ll \min_x & c^Tx \\ \texts.t. & Ax = q(p) \\ & Bx = b \\ & x \geq 0 \end배열 \]

여기서 \(q\) 수량은 LP 제약 조건 중 하나의 승수인 \(p\)의 함수입니다. 피망 슬롯에서 이를 수행하려면 간단히 주석을 추가하면 됩니다.

피망 슬롯 Piesemp / defobj, dembal, cmbal, ombal, lmbal, hmbal, ruse /;
파일 myinfo /'%피망 슬롯info%'/;
내 정보 '평형' 입력;
'min obj co ct ot lt ht defobj dembal cmbal ombal lmbal hmbal ruse'를 입력하세요';
putclose 'dualvar p dembal';
피망 슬롯를 사용하여 Piesemp를 해결합니다.

어디에서뎀발다음에 대한 제약 조건의 이름입니다.p승수가 되어야 합니다. 전체 피망 슬롯은 EMPLIB 피망 슬롯에서 찾을 수 있습니다.파이. 두 가지 마지막 요점:dualvar지시문이 변수를 식별합니다.p승수를 사용하여뎀발제약조건, 모든 변수 및 제약조건은 단일 에이전트가 소유해야 합니다. 이 경우 에이전트(최소화기)가 하나만 있기 때문에 피망 슬롯의 모든 제약 조건은 다음을 제외한 모든 변수와 함께 명시적으로 주장됩니다.p. 그러나 다음에는p다음으로 식별됩니다.뎀발최소 에이전트가 소유하는 제약 조건, 따라서p또한 해당 에이전트의 소유입니다.

여기에는 몇 가지 단축어가 가능합니다. 첫 번째는 명시적인 변수 설명을 '*' 형식으로 대체할 수 있다는 것입니다.

피망 슬롯 Piesemp / defobj, dembal, cmbal, ombal, lmbal, hmbal, ruse /;
파일 myinfo /'%피망 슬롯info%'/;
내 정보 '평형' 입력;
'min obj * defobj dembal cmbal ombal lmbal hmbal ruse ';

또는 이 피망 슬롯에는 에이전트가 하나만 있으므로 더 짧은 버전도 가능합니다. 즉:

피망 슬롯 Piesemp / defobj, dembal, cmbal, ombal, lmbal, hmbal, ruse /;
파일 myinfo /'%피망 슬롯info%'/;
putclose myinfo 'dualvar p dembal';
피망 슬롯 최소화 obj를 사용하여 Piesemp를 해결합니다.

이 형식에서는 원래 피망 슬롯의 모든 변수와 제약 조건이 (단일) 에이전트 문제에 포함되어 있으며 원래 변수는p은 구성된 MCP에서 다음의 승수로 식별됩니다.뎀발제약.

"empinfo" 파일에 세 줄이 모두 포함되어 있는 일반적인 경우:

최소 x 옵트콘
vi 바이콘스 y
Dualvar p optcons

즉, 다음에 정의된 함수 \(H\)는비컨스변수를 보완합니다y(따라서 변수y은 최적화 문제에 대한 매개변수입니다), 또한 최적화 문제의 방정식 optcons와 연관된 이중 변수는 하나이며 변수와 동일합니다.p\(H\)를 정의하는 데 사용되며 피망 슬롯 도구는 자동으로 다음 MCP를 생성합니다.

\[ \begin정렬 0 & = \nabla_x \mathcalL(x,y,p) & \quad \perp \quad x & \text 자유 \\ 0 & \geq -\nabla_p \mathcalL(x,y,p) & \quad \perp \quad p & \leq 0 \\ 0 & = H(x,y,p) & \quad \perp \quad y & \text free, \end정렬됨 \]

여기서 라그랑주는 다음과 같이 정의됩니다.

\[ \mathcalL(x,y,p) = f(x,y) - \langlep,g(x,y)\rangle . \]

기본적으로 이 MCP는 최적화 문제의 1차 최적성 조건과 두 번째 에이전트 문제인 VI로 구성됩니다. 이 두 가지 작업을 함께 수행하는 예는 EMPLIB에서 다음과 같이 제공됩니다.scarfemp-primal.

PIES 피망 슬롯에는 \(y\) 변수가 없으므로 이는 두 번째 에이전트(VI) 문제가 존재하지 않는 일반적인 형태의 특별한 경우입니다.

예시 피망 슬롯은 다음과 같습니다.페리스43, 플리퍼 파이, scarfemp-dual, 심플퀄, 트랜섹transeql.

MOPEC

MOPEC(평형 제약 조건이 있는 다중 최적화 문제)는 앞서 언급한 내장 상보성 시스템의 간단한 개념 확장입니다. 단일 최적화 에이전트와 변형 부등식을 갖는 대신 평형 제약 조건(변동 불평등)과 결합된 여러 최적화 에이전트를 허용합니다.

아마도 이 공식의 가장 널리 사용되는 용도는 에이전트 간의 경쟁이 허용되는 경우입니다. 이러한 경우를 처리하는 표준 방법은 Nash Games의 개념을 이용하는 것입니다. 이 설정에서 \(x^*\)는 다음과 같은 경우 내쉬 균형입니다.

\[ x_i^* \in \arg \min_x_i \in X_i \ell_i(x_i, x_-i^*,q), \forall i\in \mathcalI, \]

여기서 \(x_-i\)는 다른 플레이어의 결정이고 수량 \(q\)은 외생적으로 또는 상보성을 통해 제공됩니다.

\[ 0 \leq H(x,q) \quad \perp \quad q \geq 0 .\]

이 메커니즘은 경제학에서 매우 인기가 있으며 내쉬는 이 문헌에 대한 공헌으로 노벨상을 수상한 것으로 유명합니다.

이 형식은 다시 피망 슬롯이며 두 가지 측면에서 위에 제공된 예보다 더 일반적입니다. 첫째, 내장된 상보성 시스템에 지정된 최적화 문제가 두 개 이상 있습니다. 둘째, 각 최적화 문제의 매개변수는 두 가지 유형으로 구성됩니다. 첫째, 보조 상보성 조건에 의해 묶여서 \(i\)번째 Nash 플레이어에 의해 매개변수로 처리되는 변수 \(q\)가 있습니다. 또한 \(i\)번째 Nash 플레이어에서는 매개변수로 처리되지만 다른 플레이어\(j\)에서는 변수로 처리되는 변수 \(x_-i\)도 있습니다.

여기서 이러한 문제에 대한 구문을 지정하지는 않지만,EMPLIB는 GAMS 내에서 이러한 일치를 수행하는 방법을 간략하게 설명하는 예를 제공합니다. 마지막으로 두 가지 주의 사항이 있습니다. 첫째, 결과 피망 슬롯이 상보성 문제이며 PATH 등을 사용하여 해결될 수 있다는 것이 분명합니다. 둘째, 내장된 보완성 시스템이나 Nash Game에서 자동으로 변환을 수행하는 것은 이러한 피망 슬롯을 실질적으로 유용하게 만드는 중요한 단계입니다.

우리는 이산 시간 유한 상태 확률론적 게임에 대한 대규모 문헌이 있다는 점에 주목합니다. 이는 동적 환경에서 미래를 내다보는 플레이어 간의 전략적 상호 작용을 분석하는 핵심 도구가 되었습니다. [에 제시된 과점 산업의 역동적인 경쟁 피망 슬롯54]은 위에서 설명한 형식과 정확히 일치하며 광고, 담합, 합병, 기술 채택, 국제 무역 및 금융과 같은 응용 프로그램에서 광범위하게 사용되었습니다. 현재 진행 중인 작업은 피망 슬롯 형식을 사용하여 이러한 문제를 모델링하는 것을 목표로 합니다.

확장 비선형 프로그램

최적화 피망 슬롯은 전통적으로 다음과 같은 형태였습니다.(NLP). 특수 코드를 사용하면 특정 문제 구조를 알고리즘적으로 활용할 수 있습니다(예: 변수의 단순 경계). 그러나 대부분의 솔버가 이러한 문제를 효과적으로 처리하려면 \(f\), \(g\) 및 \(h\)의 매끄러움에 대한 가정이 필요합니다. 일련의 논문에서 Rockafellar와 동료들은 [151, 152, 153]는 확장된 비선형 프로그래밍의 개념을 도입했습니다. 여기서 (원시적인) 문제는 다음과 같은 형식을 갖습니다.

\begin방정식 \tagENLP

이 설정에서 \(X\)는 비어 있지 않은 다면체 집합으로 가정되며 \(f,g_1,\dotsc,g_m\) 함수는 원활합니다. \(\theta\) 함수는 부드럽지 않을 수 있는 일반화된 페널티 함수로 생각할 수 있습니다. 그러나 \(\theta\)가 다음과 같은 형식을 가질 때

\begin방정식 \tag$\theta$ conj \theta(u) = \sup_y \in Y \ \langle y,u\rangle - k(y) \, \end방정식

계산적으로 활용 가능하고 이론적으로 강력한 프레임워크는 접합 이중성을 기반으로 개발될 수 있습니다. 계산 및 모델링의 핵심 포인트는 집합 \(Y\)와 함수 \(k\)를 정의하여 함수 \(\theta\)를 완전히 설명할 수 있다는 것입니다. 더욱이, 모델링 관점에서 볼 때, 확장된 비선형 프로그램은 단순히 \(Y\) 및 \(k\)를 정의하는 추가 문제와 함께 모델링 시스템에서 이미 제공하는 방식으로 \(f,g_1,\dotsc,g_m\) 함수를 정의함으로써 간단히 지정할 수 있습니다. 개념적으로 이것은 이미 수행된 것보다 훨씬 어렵지 않지만 사용 가능한 모델 유형이 크게 향상됩니다. 모델러가 \(k\) 및 \(Y\) 중 어떤 선택을 통해 어떤 제약 조건을 처리할지 결정하면 피망 슬롯 모델 인터페이스는 자동으로 등가 변형 불평등 또는 상보성 문제를 형성합니다. 나중에 보여주듯이, 계산적으로 더 매력적인 대체 공식이 있을 수 있습니다. 이러한 재구성은 JAMS에 대한 다양한 옵션을 사용하여 생성될 수 있습니다.

세타의 형태

피망 슬롯 모델 유형이 문제 형식을 만듭니다(ENLP)GAMS 사용자가 사용할 수 있습니다. 특별한 경우로, 부분적 선형 페널티, 최소 제곱, \(L_1\) 근사 문제는 물론 소프트 및 하드 제약 조건의 개념을 피망 슬롯링할 수 있습니다.

설명의 편의를 위해 이제 \(Y\) 및 \(k\)의 특정 선택에 의해 생성될 수 있는 함수 \(\theta\) 유형의 하위 집합을 설명합니다. 많은 경우에 \(\theta\) 함수는 분리 가능합니다. 즉,

\[ \theta(u) = \sum_i=1^m \theta_i(u_i), \]

따라서 \(\theta_i\) 또는 \(\theta\) 자체를 지정할 수 있습니다.

확장 비선형 프로그램에는 고전적인 비선형 프로그래밍 형식이 포함됩니다.(NLP)특별한 경우입니다. 이는 \(K\)가 닫힌 볼록 원뿔이고 \(\psi_K\)가 다음과 같이 정의된 \(K\)의 "지시 함수"를 나타내도록 한다는 관찰에서 따릅니다.

\[ \psi_K(u) = \begin사례 0 & \text만약 $u \in K$, \\ \infty & \textelse, \end사례

그런 다음(NLP)다음과 같이 다시 작성할 수 있습니다.

\[ \min_x f(x) + \psi_K((g(x),h(x)),\qquad K = \mathbfR^m_- \times \ 0 \^p , \]

여기서 \(m\)과 \(p\)는 각각 \(g\)와 \(h\)의 차원이고 \(\mathbfR^m_- = \left\ u\in \mathbfR^m \;|\; u \leq 0 \right\\)입니다. 기본 계산은 다음을 보여줍니다.

\[ \psi_K (u) = \sup_v \in K^\circ \langleu,v\rangle , \]

여기서 \(K^\circ = \left\ u \;|\; \langleu,v\rangle \leq 0, \forall v \in K \right\\)는 주어진 원뿔 \(K\)의 극뿔입니다. 따라서 \(\theta(u) = \psi_K(u)\)일 때 우리는 간단히 \(k \equiv 0\)과 \(Y = K^\circ\)를 취합니다. 이 예에서는 \(K^\circ = \mathbfR^m_+ \times \mathbfR^p\)입니다. 어느 정도 이것은 우리가 고전적 사례를 전문화라고 주장할 수 있게 해주는 형식주의일 뿐입니다. 그러나 위에서 사용된 다면체 원뿔보다 원뿔 \(K\)을 더 일반적으로 사용하면 예를 들어 원뿔 프로그램을 생성할 수 있습니다.

두 번째 예는 조각별 선형 함수 \(\theta\)를 포함합니다: 공식적으로 \(u \in \mathbfR\)에 대해,

\[ \theta(u) = \left\ \beginarrayll \rho u & \textif $u \geq 0$, \\ \sigma u & \textelse. \endarray \right. \]

이 경우 간단한 계산은 \(\theta\)가 다음 형식을 갖는다는 것을 증명합니다.(θ conj)선택을 위해

\[ k \equiv 0 \text 및 Y = [\sigma,\rho]. \]

\(\sigma = -\rho\)의 결과가 다음과 같은 특수한 경우

\[ \세타(u) = \rho \왼쪽| 당신은 \맞아|. \]

이를 통해 우리는 매끄럽지 않은 \(L_1\) 근사 문제를 피망 슬롯링할 수 있습니다. 또 다른 특별한 경우는 \(\sigma = -\gamma\), \(\rho = 0\)의 선택으로 인해 발생합니다.

\[ \theta(u) = \gamma \max \-u,0 \ . \]

이 공식은 부등식 제약 조건에 대한 소프트 페널티에 해당합니다. 즉, \(\theta(-g_1(x))\)가 사용된 경우 \(g_1(x) \leq 0\)인 경우 목적 함수에 아무것도 추가되지 않지만 제약 조건 \(g_1(x) \leq 0\)이 위반되면 \(\gamma g_1(x)\)가 추가됩니다. 부등식 제약 조건이 위반되면 목표에 \(\infty\)가 추가되는 위의 기존 설정과 대조됩니다. 승수 경계에 해당하는 세트 \(Y\)를 자르면 고전적 제약 조건이 선형화된 페널티로 대체된다는 점은 흥미롭습니다.

세 번째 예는 \(k\)의 더 흥미로운 선택과 관련됩니다. 위에 주어진 "절대값" 페널티를 2차 페널티(전통적인 최소 제곱 분석에서와 같이)로 대체하려면 다음과 같습니다.

\[ \세타(u) = \감마 u^2 \]

그러면 간단한 계산을 통해 우리가 취해야 한다는 것을 알 수 있습니다

\[ k(y) = \frac14\gamma y^2 \text 및 Y = \mathbfR . \]

단순히 \(k\)와 \(Y\)의 다른 선택을 지정함으로써 우리는 피망 슬롯링 시스템 내에서 그러한 피망 슬롯을 쉽고 빠르게 생성할 수 있습니다. 그러나 \(\theta(u) = \rho \left| u \right|\) 및 \(\theta(u) = \gamma u^2\)에서 사용할 재구성은 아래 간단한 예에서 설명할 것처럼 매우 다릅니다. 더욱이, 많은 응용에서 특정 간격 내에서만 2차 페널티를 사용하여 위반에 페널티를 부여한 후 선형 페널티로 전환하는 것이 인기가 있습니다(페널티 함수 \(\theta\)를 연속적으로 미분 가능하게 만들기 위해 선택됨 - [ 참조)98]). 즉:

\[ \theta(u) = \left\ \beginarrayll \gamma u -\frac12 \gamma^2 & \mbox만약 $u \geq \gamma$ \\ \frac12 u^2 & \mboxif $u \in [-\gamma,\gamma]$ \\ -\gamma u -\frac12 \gamma^2 & \mboxelse. \end배열 \right. \]

이러한 함수는 2차 \(k\) 및 단순 경계 집합 \(Y\)에서 발생합니다. 특히, 좀 더 일반적인 기능

\[ \theta(u) = \left\ \beginarrayll \gamma \beta^2 + \rho(u -\beta) & \text만약 $u \geq \beta$ \\ \gamma u^2 & \textif $u \in [\alpha,\beta]$ \\ \gamma \alpha^2 + \sigma(u -\alpha) & \textelse \endarray \right. \]

다음의 선택에서 발생합니다

\[ k(y) = \frac14\gamma y^2 \text 및 Y = [\sigma,\rho] , \]

\(\alpha = \frac\sigma2\gamma\) 및 \(\beta = \frac\rho2\gamma\)로.

우리가 제시하는 마지막 예는 \(L_\infty\) 처벌의 예입니다. 이 예는 \(\theta\)가 분리될 수 없다는 점에서 위에 제공된 예와 다릅니다. 그러나 간단한 계산을 사용하여 다음을 표시할 수 있습니다.

\[ \theta(u) = \max_i=1,\ldots,m u_i \]

선택의 결과

\[ k \equiv 0 \text 및 Y = \left\ y \in \mathbfR^m \;|\; y \geq 0, \sum_i=1^m y_i = 1 \right\, \]

즉, \(Y\)는 단체 단위입니다.

기본 이론

\(\theta\)의 기본 구조는 일련의 확장된 최적 조건과 우아한 이중성 이론으로 이어집니다. 이는 라그랑지안의 확장된 형식을 기반으로 합니다.

\[ \begin정렬

라그랑지안 \(\mathcalL\)은 매끄러움을 나타냅니다. 모든 비매끄러움은 \(\theta\) 함수에 포착됩니다. 이 이론은 \(g_i\) 및 그 도함수와 관련된 미적분학 주장과 \(\theta\)와 관련된 특징에 대한 변형 분석의 우아한 조합입니다.

그것은 [에 표시됩니다152] 표준 제약 조건 하에서 1차 조건은 다음과 같습니다.(ENLP)정확하게는 다음과 같은 변분 불평등의 형태를 취합니다.

\begin방정식 \tagENLP VI \textVI \왼쪽( \beginbmatrix \nabla_x \mathcalL(x,y) \\ -\nabla_y \mathcalL (x,y) \endbmatrix, X \times Y \right) . \end방정식

\(X\)와 \(Y\)가 단순 경계 집합인 경우 이는 단순히 상보성 문제입니다.

피망 슬롯는 이 결과를 이용한다는 점에 유의하세요. 특히, 다음 형식의 확장된 비선형 프로그램인 경우(ENLP)피망 슬롯에 부여한 후 최적 조건(ENLP VI)는 변동 불평등 문제로 형성되며 위에 설명된 대로 처리될 수 있습니다. 구체적인 예를 들어, (고전적인) 선택 \(k \equiv 0\) 및 \(Y = K^\circ\)을 사용하면 다음의 최적 조건이 성립한다는 사실을 인용합니다.(ENLP)정확히 다음과 같이 주어진 표준 상보성 문제입니다.(ENLP VI). 이것이 흥미롭기는 하지만, \(k\) 및 \(Y\)의 다른 선택이 더 유용할 수 있고 더 실용적인 의미를 갖는 피망 슬롯로 이어질 수 있다고 믿습니다.

이 라그랑주에 대한 적절한 볼록성 가정 하에서 VI의 해는 다음과 같이 표시될 수 있습니다.(ENLP VI)은 \(X \times Y\)에서 라그랑지안의 안장점입니다. 게다가 이 설정에서 안장점은 원초적인 문제에 대한 해결책을 생성합니다.(ENLP)그리고 이중 문제:

\[ \max_y \in Y d(y),\; \text 여기서

이원성 격차가 없습니다.

안타깝게도 Rockafellar 이론의 섭동\(y\)은 GAMS 시스템 전반에 걸쳐 사용된 섭동과 정확히 반대입니다. 따라서 GAMS에서 사용하는 것과 동일한 승수를 복구하려면 위 전체에서 \(y\)를 \(-y\)로 바꿔야 합니다.


간단한 예

예를 들어 문제를 생각해 보세요.

\beginalign*

이 문제에서 우리는 다음을 취할 것입니다.

\beginalign*

\(\theta\) 함수는 본질적으로 3개의 분리 가능한 조각을 처리합니다:

\beginalign*

고전적인 문제는 \(g_1(x) = 0\), \(g_2(x) \leq 0\)을 강제합니다. 그리고 \(g_3(x) = 0\), \(f(x) = \exp(x_1)\)을 최소화합니다. 우리 문제에서는 여전히 \(g_3(x) = 0\)을 강제하지만 \(g_1(x)\)에 (소프트) 최소 제곱 페널티를 적용하고 \(g_2(x)\)에 더 작은 일방적 페널티를 적용합니다. 위 공식은 목적 함수의 "최대" 항으로 인해 매끄럽지 않습니다. 실제로는 이를 다음으로 대체할 수 있습니다.

\beginalign*

그리고 표준 형식 NLP를 복구합니다. \(g_1(x)\)에 대한 페널티가 (최소 제곱 대신) 단일 표준 페널티로 대체되는 경우 \(g_1(x)\) 함수를 제약 조건으로 이동하고 추가 변수를 추가하는 비슷한 게임을 해야 합니다. 어느 정도 이것은 부자연스러워 보입니다. 피망 슬롯러는 문제를 처음부터 다시 구성할 필요 없이 페널티를 교환할 수 있어야 합니다. 제안된 확장 NLP는 피망 슬롯러에 의해 전혀 재구성되지 않지만 이러한 모든 "일반화된 제약"이 피망 슬롯링 시스템 내에서 유사한 방식으로 처리될 수 있습니다. 실제 공식화에는 다음이 소요됩니다.

\[ \theta(u) = \theta_1(u_1) + \theta_2(u_2) + \theta_3(u_3) \]

어디에서

\beginalign* \theta_1(u_1) & = 5 u_1^2, \\ \theta_2(u_2) & = 2 \max(u_2, 0), \\ \theta_3(u_3) & = \psi_\0\ (u_3) . \end정렬*

위의 토론을 통해 우리는 그것을 볼 수 있습니다.

\beginalign*

해당 라그랑지안은 부드러운 함수입니다:

\[ \mathcalL(x,y) = f(x) - \sum_i=1^3 y_i g_i(x) - k(y) . \]

해당 VI(ENLP VI)은 거의 GAMS로 공식화될 수 있습니다(단, \(X\)의 선형 제약 조건은 \(\theta_4(x)\)를 도입하는 것 외에는 현재 처리할 수 없습니다). 따라서

\[ g_4(x) = 3x_1 + x_2 - 5,\; \theta_4(u) = \psi_\mathbfR_-

\(Y\) 및 \(k\)에 대해 다음 선택이 발생합니다.

\beginalign*

\(X\)와 \(Y\)는 이제 단순 경계 집합이므로,(ENLP VI)이제는 상보성 문제이며 예를 들어 PATH를 사용하여 해결할 수 있습니다. 간단한 "empinfo" 파일은 구현된 라이브러리에서 \(Y\) 및 \(k\)의 선택을 자세히 설명합니다.

Adjustequ
e1 평방 5
e2 MaxZ 2

고전적인 NLP로서의 재공식화

가정

\[ \theta(u) = \sup_y \in Y \ \langleu,y\rangle - \frac12

다면체 집합 \(Y \in \mathbfR^m\) 및 대칭 양의 준정호 \(Q \in \mathbfR^m \times m\)(아마도 \(Q = 0\))에 대해.

더 나아가 다음을 가정해 보겠습니다.

\beginalign*

여기서 \(J\)는 대칭이고 양의 정부호입니다(예: \(J = I\)). 그런 다음 [에 설명된 대로153] , 최적의 해 \(\overlinex\) of(ENLP)는 최적의 솔루션 \((\barx,\barz,\barw)\)의 \(\barx\) 구성 요소입니다.

\[ \begin배열ll

일반적인 의미에서 등식 제약 조건의 승수는 확장된 라그랑지안에서 \(\barx\)와 관련된 승수입니다.(ENLP). (\(D\)를 결정하려면 Cholesky 인수분해가 필요할 수 있습니다.)

VI를 해결하는 것보다 재구성된 이 NLP를 해결하는 것이 더 나을 수 있습니다.(ENLP VI). 그러나 모든 유형의 매끄럽지 않은 최적화 문제를 매끄러운 최적화 문제로 솔버에 전달할 수 있는 것이 중요하므로 솔버 인터페이스에 적절한 구조를 전달하는 것이 중요합니다. 우리는 \(Y\) 및 \(k\)를 지정하는 것이 이론적으로 이를 수행하는 건전한 방법이라고 믿습니다.

분리형 프로그램(LogMIP)

특정 시스템의 모델링 기능을 추가로 확장하기 위해 피망 슬롯 모델 유형을 사용할 수 있는 방법은 여러 가지가 있습니다. 특히, [에 설명된 절차는189, 7298659_98749

이연적 프로그래밍 절차는 이산 선택 피망 슬롯링을 위한 이진 변수 및 논리합 정의와 관련된 선형 및 비선형 분리 프로그래밍 문제를 해결하기 위한 LogMIP 2.0 솔버로도 알려져 있습니다. 이러한 분리적 최적화 문제의 피망 슬롯링 및 솔루션은 아직 LP, MIP 및 NLP 피망 슬롯링만큼 성숙도와 신뢰성의 단계에 도달하지 않았지만 이러한 문제는 풍부한 응용 분야를 가지고 있습니다.

LogMIP 2.0은 INGAR(아르헨티나 산타페)의 Aldo Vecchietti 박사와 Carnegie Mellon University(미국 피츠버그)의 Ignacio E. Grossmann 교수가 개발했으며 이전 버전인 LogMIP 1.0(GAMS 릴리스 22.6(2007년 12월)에서 23.6으로 대체) (2010년 12월)). 버전 2.0의 변경 사항은 이제 피망 슬롯 구문과 모델 유형이 사용되는 언어 수준과 Big-M 및 볼록 선체 완화가 결합되는 솔버 수준에 있습니다. 자세한 내용은 홈페이지를 참고하세요http://www.logmip.ceride.gov.ar/및 문서http://www.logmip.ceride.gov.ar/files/pdfs/newUserManual.pdf.

이접적 프로그래밍 기능을 강조하는 간단한 예 중 하나는 작업 순서 개념, 즉 작업 \(j\)이 시작되기 전에 작업 \(i\)이 완료되거나 그 반대, 즉 작업이 겹칠 수 없다는 개념입니다. 이러한 분리는 다음 행을 포함하는 empinfo 파일을 사용하여 지정할 수 있습니다.

접합 * seq(i,j) else seq(j,i)

이러한 예에서는 Big-M 방법을 구현하거나 표시기 제약 조건을 사용하거나 볼록 껍질 재구성을 활용할 수 있습니다. 볼록 껍질 재구성이 기본 전략입니다. Big-M 공식을 활용하기 위한 추가 옵션

기본 빅엠 1000

이진 변수와 제약 조건을 추가하여 Big-M 값 1000을 사용하여 분리를 적용합니다. 또는 옵션 설정

기본 인덱스

솔버 CPLEX, SCIP 및 XPRESS에서 처리할 수 있는 표시기 제약 조건을 사용하여 재구성을 구현하는 피망 슬롯 및 옵션 파일을 작성합니다. EMPLIB 피망 슬롯시퀀스이 모든 옵션을 구현하는 시퀀싱 피망 슬롯입니다.

더 복잡한(비선형) 예를 통해 이 접근 방식의 유용성이 더욱 명확해집니다. [에 설명된 중간 저장소가 있는 다중 제품 배치 계획의 설계188] 및 [의 8개 프로세스가 포함된 합성 문제185]도 피망 슬롯 모델 라이브러리에 포함되어 있습니다. 마지막 예로, [에 설명된 가솔린 배출 모델이 있습니다.71]은 (비선형) 분리형 프로그래밍과 관련된 피망 슬롯의 기능을 활용할 수 있는 형태입니다.

Empinfo 파일 세부정보

우리는 "empinfo" 파일을 작성하는 표준 벡터화 방법에 대해 위에서 설명했습니다. "empinfo" 파일은 벡터화된 형식과 더 강력하지만 더 복잡한 스칼라 버전을 가지고 있습니다. 이 섹션에서는 스칼라 버전의 일부 기능을 설명합니다.

스칼라 구문 사용의 예는 다음과 같습니다

파일 정보 / '%피망 슬롯info%' /;
정보 입력 / '평형';
루프(h,
  넣다 / '최소' obj(h) /;
  루프(j, x(h,j)를 입력); 넣어 /;
  loop(k, z(h,k)를 넣음); 
  put / 비용def(h) /;
  loop(i, put nodebal(h,i)); 넣어 /;
);
loop(a, put 'vi',flowdef(a),f(a) /);

이것은 최적화 에이전트가 \(h\)로 색인화되고 각 에이전트가 변수 \(x_hj\) 및 \(z_hk\)를 제어하는 MOPEC의 예입니다. 각 \(h\)에 대한 목적 함수는 다음과 같이 정의됩니다.비용정의, 각 최소화 문제의 제약 조건은 다음에서 정의됩니다.노드발, 그리고 모든 최적화 문제를 연결하는 평형 제약 조건은 변수 \(f_a\)와 그 안에 있는 함수로 정의된 VI입니다.flowdef. 때로는 집합의 "tl" 필드를 생성하는 구문을 사용해야 하지만 이는 비정상적인 측면 조건이 필요한 경우에만 필요한 것 같습니다.

empinfo 파일의 형식은 다음과 같습니다:

분리 [chull [큰 EPS] | bigM [큰 EPS 임계값] | 인도어]
            [NOT] var|* [NOT] equ ELSEIF [NOT] var|* [NOT] equ [ELSE [NOT] equ]

기본값 [chull [큰 EPS] | bigM [큰 EPS 임계값] | 인도어]

병렬단계1 equ|*

adjustEqu equ abs|sqr|maxz|... 무게

피망 슬롯 유형 MCP|NLP|MIP|...

BiLevel var MAX|MIN obj var|* [-] equ VI var|* [-] equ var [-] equ
              DualVar var [-] equ

평형 암시적 var equ VIsol equ 
            MAX|MIN obj var|* [-] equ VI var|* [-] equ var [-] equ
            DualVar var [-] equ

VI 변수|* [-] 등가 변수 [-] 등가

DualEqu [-] 동등 var

DualVar var [-] equ

-------
[ ] 선택사항 | 독점적인  는 반복될 수 있습니다