피망 슬롯 프로그램

피망 슬롯 레벨 프로그램은 제약 조건에 최적화 문제가 있는 수학적 프로그램입니다. 주요 문제는 다음과 같습니다.상위레벨문제 또는리더그리고 중첩된 문제는 다음과 같습니다.하위 수준문제 또는팔로워. 간단한 예는 하위 수준 최적화 문제를 포함하는 제약 조건에 대해 상위 수준 목표를 최적화하는 피망 슬롯 수준 프로그래밍 문제입니다. 경제학의 유명한 예는 하나의 리더와 많은 추종자가 있는 Stackelberg 게임입니다. 피망 슬롯 수준 프로그래밍은 최적의 세금 도구 설계와 같은 여러 영역에서 사용됩니다. 세금 도구는 상위 수준에서 모델링되고 청산 시장은 하위 수준에서 모델링됩니다.

이 섹션에서 우리는 먼저 다음을 제시합니다.수학적 공식팔로어가 1개인 피망 슬롯 레벨 프로그램의 각 EMP 주석을 소개합니다. 그런 다음 세 가지 예를 제시합니다.간단한 첫 번째 예, 안변동 부등식의 예하위 수준 문제 및팔로워가 여러 명인 예내쉬 균형을 형성합니다. 우리는 일반적인 내용에 대한 짧은 논의로 섹션을 마무리합니다.피망 슬롯 레벨 프로그램을 위한 EMP 구문.

2단계 프로그램: 수학적 공식

한 명의 리더와 한 명의 추종자가 있는 2단계 프로그램은 다음과 같이 표현될 수 있습니다:

\begin방정식 \tag 23

어디에서

  • \(x \in \mathbbR^n\)은 상위 수준 변수입니다.
  • \(y \in \mathbbR^m\)은 하위 수준 변수입니다.
  • \(f: \mathbbR^n \times \mathbbR^m \rightarrow \mathbbR \)는 상위 목적 함수입니다.
  • \(g: \mathbbR^n \times \mathbbR^m \rightarrow \mathbbR \)는 하위 수준 목적 함수입니다.
  • \(h: \mathbbR^n \times \mathbbR^m \rightarrow \mathbbR^u \)는 상위 수준 제약 조건이며,
  • \(k: \mathbbR^n \times \mathbbR^m \rightarrow \mathbbR^l \)은 하위 수준 제약 조건입니다.

상위 수준의 제약 조건은 하위 수준의 의사 결정권자를 구속하지 않는다는 점에 유의하십시오.

이 문제는 다음과 같이 EMP로 구현될 수 있습니다:

i, j를 설정합니다.
변수 x(i), objout, y(i), objin;
방정식 def(x,y), defg(x,y), defh(x,y), defk(x,y);

* 방정식의 정의는 생략

모델 피망 슬롯 레벨 / deff, defg, defH, defw /;

$onecho > "%emp.info%"
피망 슬롯 레벨 x
최소 objin y defg defk
$offecho

objout을 최소화하는 EMP를 사용하여 2레벨 해결;

프로그램의 변수와 방정식은 일반적인 방식으로 GAMS에 정의되어 있습니다. 모델의 특별한 2단계 구조는 다음과 같이 지정됩니다.EMP 주석.EMP 키워드 피망 슬롯 레벨이것은 피망 슬롯 수준 문제임을 나타냅니다. 리더의 목적 변수의 이름과 방향은 풀이 문에서 가져오지만 리더가 소유한 다른 변수는피망 슬롯 레벨키워드. 낮은 수준의 문제는 EMP 키워드를 통해 다음에 지정됩니다., 팔로어의 목적 변수가 뒤따름오브진. 다음에는 하위 수준 문제의 다른 변수와 방정식이 나열됩니다. 이것이 우리가 소개한 구문과 정확히 동일하다는 점에 유의하세요.평형 문제의 맥락에서 최적화 문제를 지정합니다.

EMP 도구는 평형 제약 조건이 있는 수학적 프로그램(MPEC)으로 피망 슬롯 레벨 문제를 재구성하고 이를 하위 해결사(예: NLPEC 또는 KNITRO)에 전달합니다. 재구성은 하위 수준 최적화 문제를 KKT 조건으로 대체하여 얻어지며 결과적으로 다음과 같은 문제가 발생합니다.

\begin방정식 \tag 24

어디에서

\begin방정식

는 하위 수준 문제와 관련된 라그랑지안 함수입니다.

그러나 이 재구성은 잠재적으로 문제가 있다는 점에 유의하십시오. KKT 조건은 다음에 대해 필요하고 충분하기 위해 이론적 가정(예: 볼록성)을 요구합니다.현지 최적성. 하위 러브 문제에 여러 로컬 솔루션이 있는 경우가 있을 수 있지만 모델러는 다음 사항에 관심이 있습니다.글로벌해결책. 따라서 솔버 NLPEC 내에서 글로벌 하위 솔버가 사용되더라도 위의 재구성은 글로벌 솔루션으로 이어지지 않을 수 있습니다.

문제에는 두 가지 변형이 있음을 관찰하십시오(23) EMP 프레임워크가 처리할 수 있는 장비: 하위 수준 문제는 다음과 같을 수 있습니다.변동 불평등최적화 문제 대신에 각각 Nash 방식으로 동작하는 여러 하위 수준 문제(최적화 및/또는 VI)가 있을 수 있습니다. 섹션에 예시가 나와 있습니다.EMP를 사용한 피망 슬롯 레벨 프로그램: 추종자로서의 VI그리고EMP를 사용한 피망 슬롯 레벨 프로그램: 다중 팔로어각각.

EMP를 사용한 피망 슬롯 레벨 프로그램: 간단한 예

설명하기 위해 모델을 사용합니다.[BARD851]GAMS EMP 라이브러리에서. 수학적으로 문제는 다음과 같습니다.

\begin방정식 \tag 25

이 문제에는 상위 수준 제약이 없다는 점에 유의하십시오. GAMS 코드는 다음과 같습니다.

양수 변수 x, y1, y2;
변수 objout, objin;

방정식 defout, defin, e1, e2, e3, e4;

defout.. objout =e= sqr(x-1) + 2*sqr(y1) - 2*x;
정의.. objin =e= sqr(2*y1-4) + sqr(2*y2-1) + x*y1;

e1.. 4*x + 5*y1 + 4*y2 =l= 12;
e2.. - 4*x - 5*y1 + 4*y2 =l= -4;
e3.. 4*x - 4*y1 + 5*y2 =l= 4;
e4.. - 4*x + 4*y1 + 5*y2 =l= 4;

모델 음유시인 / 모두 /;

$echo bilevel x min objin y1 y2 defin e1 e2 e3 e4 > "%emp.info%"

음유시인 해결 emp min objout 사용;

리더는 변수를 최소화합니다객체, 해결 문에 지정된 대로입니다.EMP 주석나머지 피망 슬롯 레벨 구조 지정: 변수x상위 문제에 속하며 하위 에이전트 또는 문제가 하나 있습니다.오진변수에 비해 최소화y1그리고y2제약조건 또는 방정식의 적용을 받음정의, e1, e2, e3그리고e4.

또는 EMP 주석을 다음과 같이 작성할 수 있습니다.

$echo bilevel x min objin * 정의 e1 e2 e3 e4 > "%emp.info%"

여기서 하위 수준 변수는 나열되지 않습니다. 대신 '*'는 에이전트에 명시적으로 할당되지 않은 GAMS 모델의 모든 변수가 추종자에 할당된다는 것을 나타냅니다.

EMP 요약JAMS에서 생성된 것은 피망 슬롯 레벨 프로그램의 팔로어 수를 제공합니다.

--- EMP 요약
    피망 슬롯 레벨 추종자 = 1

GAMS EMP 라이브러리에는 여러 모델을 포함한 다른 2단계 예제가 포함되어 있습니다.음유시인*, 엔지니어링 모델[CCMG74]그리고[CCMG153]및 단순 비볼록 모델[미러리스]. 모델[JOINTC1]그리고[JOINTC2]상위 수준 문제와 하위 수준 문제의 결정 변수의 상호 작용을 설명합니다.

EMP를 사용한 피망 슬롯 레벨 프로그램: 추종자로서의 VI

하위 수준의 문제가 다음과 같은 경우변동 불평등, 문제(23)은 다음 형식을 취합니다.

\begin방정식 \tag 26

어디에서

  • \(x \in \mathbbR^n\)은 상위 수준 변수이고 \(y \in \mathbbR^m\)은 하위 수준 변수이고
  • \( K(x) \subseteq \mathbbR^m\)은 \(x\)로 매개변수화된 닫힌 볼록 집합입니다.

다음의 간단한 예를 고려해보세요.[MULTMPEC]:

\begin방정식 \tag 27

이 피망 슬롯 레벨 문제는 다음과 같이 EMP로 모델링될 수 있습니다:

변수 w, z;
방정식 h, F;

h..exp(z) + w =e= 2;
F.. w + z =n= -3;

z.lo = 1;

모델 bpvi / h, F /;

$onecho > %emp.info%
피망 슬롯 레벨 z
vi F 승
$offecho

emp min z를 사용하여 bpvi를 해결합니다.

다음에 주의하세요EMP 주석하위 레벨 문제는 VI 함수가 있는 VI로 지정됩니다.F및 해당 변수w:자세한 내용은 섹션 참조변동 부등식에 대한 EMP 구문. VI 함수의 개수는 다음과 같이 표시됩니다.EMP 요약:

--- EMP 요약
    ...
    VI 함수 = 1
    ...
    피망 슬롯 레벨 추종자 = 1

EMP를 사용한 피망 슬롯 레벨 프로그램: 다중 팔로어

EMP 프레임워크는 피망 슬롯 레벨 프로그램에서 여러 팔로어를 허용합니다. 리더 결정을 고정된 것으로 간주하면 이러한 팔로워는 a에서 에이전트처럼 행동합니다.내쉬 균형. 엔지니어링 사례를 고려해보세요.[CCMG71]GAMS EMP 라이브러리에서. 이 2단계 프로그램에는 두 명의 추종자가 있으며 둘 다 최소화 문제를 해결합니다.EMP 주석다음과 같습니다:

...
$onecho > %emp.info%
2층 x1 x2 x3 x4
 최소 h1 u1 u2 u3 u4 defh1 e1
 최소 h2 v1 v2 v3 v4 defh2 e2
$offecho
...

변수x1, x2, x3그리고x4리더가 소유하거나 통제합니다. 첫 번째 추종자는 변수를 최소화합니다.h1변수에 대해u1, u2, u3그리고u4제약/방정식에 따라e1. 두 번째 추종자도 비슷한 방식으로 정의됩니다. EMP 주석에서 최적화 하위 문제를 지정하는 방법에 대한 자세한 내용은 섹션에 나와 있습니다.평형 문제에 대한 EMP 구문.

실제 모델의 EMP 주석에서 이를 관찰하세요.[CCMG71]다음 약칭 표기법이 사용됩니다:

...
$onecho > %emp.info%
2층 x1 x2 x3 x4
최소 h1 * defh1 e1
최소 h2 * defh2 e2
$offecho
...

첫 번째 추종자 문제의 '*' 기호는 이 에이전트가 방정식에 나타나는 모든 변수에 대해 최적화할 것임을 나타냅니다.defh1그리고e135557_35675u1, u2, u3그리고u4. 참고: 이 예에서 두 추종자의 방정식에 변수가 나타나면 문제 구조가 잘 정의되지 않아 오류가 발생합니다. 혼란을 피하고 명확성을 높이기 위해 위 EMP 주석의 첫 번째 버전에 표시된 것처럼 모델러가 각 에이전트 문제의 모든 변수를 명시적으로 나열하는 것이 좋습니다.

팔로워 수는 다음에 표시됩니다.EMP 요약:

--- EMP 요약
    ...
    피망 슬롯 레벨 추종자 = 2

GAMS EMP 라이브러리여러 추종자와 관련된 여러 피망 슬롯 레벨 문제가 포함되어 있습니다. 하나의 최적화 팔로어와 하나의 VI 팔로어가 있는 피망 슬롯 수준 문제로 캐스팅된 가변 수요 함수를 가진 잘 알려진 운송 모델[TRANSBP], 두 개의 VI 팔로어가 있는 간단한 예[MULTMPEC]및 공간 평형 Stackelberg 모델[HARK-STACK].

피망 슬롯 레벨 프로그램의 EMP 구문

EMP가 피망 슬롯 레벨 프로그램을 지정하기 위해 제공하는 일반 구문EMP 주석파일emp.info다음과 같습니다:

피망 슬롯 레벨 var

2단계 프로그램은 다음으로 선언됩니다.EMP 키워드 피망 슬롯 레벨, 상위 수준 문제의 결정 변수가 이어집니다. 다른 사양은 하위 수준의 문제를 참조합니다. 이러한 하위 수준 팔로어는 선택 사항이지만 하나 이상의 팔로어를 지정해야 합니다. 최적화 문제는 EMP 키워드를 사용하여 정의됩니다.최대또는목적 변수가 뒤따라옴obj그리고 문제의 제약 조건을 구현하는 결정 변수와 방정식. EMP 키워드로 변형 부등식이 도입됩니다.vi: 사양에 대한 자세한 내용은 섹션에 나와 있습니다.변동 부등식에 대한 EMP 구문.dualvar키워드는 다음과 같은 방식으로 사용됩니다.평형 문제.

참고
EMP 프레임워크는 ' 기호를 허용하지만' 자동으로 생성된 변수 목록을 지정하는 데 사용하려면 '를 사용하지 않는 것이 좋습니다.' 주석 파일에 있습니다. 대신, EMP 정보 파일을 읽는 사람과 기계 모두에게 모델의 구조를 명확하고 모호하지 않게 만들기 위해 모든 변수를 명시적으로 나열하세요.