simpleqvi2.gms : 단순 준변형 부등식

설명

이 예는 QVI에 대한 간단한 소개입니다.  그것은 당신이
일반적으로 EMP, 특히 VI에 익숙합니다.

VI는 다음과 같이 K에서 x를 찾는다는 것을 기억하세요:
  <F(x), (y - x)> >= 0 K의 모든 y에 대해 여기서
  K는 닫힌 볼록 집합입니다. K = y | g(y) <= 0 

이 소개에서는 (Q)VI가 다음과 같이 발생하는 특별한 경우를 고려합니다.
다중 에이전트 모델의 최적 조건.  분명히 VI는 그 이상입니다.
이보다 일반적입니다(MCP가 NLP의 KKT보다 더 일반적인 것처럼).
하지만 여기서 초점을 좁히는 것이 유용합니다.  실현 가능하다고 가정하면
각 에이전트에 설정된 것은 다른 에이전트의 행동이나 결정과 무관합니다.
위의 실행 가능 집합 K는 각 실행 가능 집합의 곱입니다.
에이전트이며, 이 상품 세트도 수정되었습니다.  F_i 함수는 다음과 같습니다.
에이전트 목적 함수에 대한 1차 최적성 조건
wrt x_i.  우리는 에이전트 i의 FOC가 에이전트 j의 영향을 받을 것으로 예상합니다.
결정을 내리지만 에이전트 i의 실행 가능 집합은 에이전트 j와 독립적입니다.

소형 모델 유형 :QVI


카테고리 : 슬롯 머신 EMP 라이브러리


메인 파일 : simpleqvi2.gms

$title 단순 준변형 부등식(SIMPLEQVI2,SEQ=102)

$onText
이 예는 QVI에 대한 간단한 소개입니다.  그것은 당신이
일반적으로 EMP, 특히 VI에 익숙합니다.

VI는 다음과 같이 K에서 x를 찾는다는 것을 기억하세요:
  <F(x), (y - x)> >= 0 K의 모든 y에 대해 여기서
  K는 닫힌 볼록 집합입니다. K = y | g(y) <= 0 

이 소개에서는 (Q)VI가 다음과 같이 발생하는 특별한 경우를 고려합니다.
다중 에이전트 모델의 최적 조건.  분명히 VI는 그 이상입니다.
이보다 일반적입니다(MCP가 NLP의 KKT보다 더 일반적인 것처럼).
하지만 여기서 초점을 좁히는 것이 유용합니다.  실현 가능하다고 가정하면
각 에이전트에 설정된 것은 다른 에이전트의 행동이나 결정과 무관합니다.
위의 실행 가능 집합 K는 각 실행 가능 집합의 곱입니다.
에이전트이며, 이 상품 세트도 수정되었습니다.  F_i 함수는 다음과 같습니다.
에이전트 목적 함수에 대한 1차 최적성 조건
wrt x_i.  우리는 에이전트 i의 FOC가 에이전트 j의 영향을 받을 것으로 예상합니다.
그러나 에이전트 i의 실행 가능 집합은 에이전트 j와 독립적입니다.

QVI는 이를 일반화하여 실현 가능한 세트 K(또는 그 이상
구체적으로, 에이전트 i 모델의 실행 가능한 세트 K_i는 다음에 따라 달라질 수 있습니다.
다른 에이전트가 소유한 변수의 값은 다음과 같습니다.
에이전트 i는 이러한 값을 고정된 것으로 간주합니다.  이는 의 공통 주제입니다.
다중 에이전트 모델링: 에이전트 관점에서 볼 때 우리가 고려하지 않는 변수
통제는 고정되어 있지 않지만 우리는 그것을 통제하지 않으므로 취하지 않습니다.
파생 상품은 "우리의" 최적성을 기록할 때 이러한 변수를 사용합니다.
조건.  실행 가능한 집합은 집합 K_i의 곱이 됩니다. 여기서
각 K_i는 다른 에이전트의 변수 값으로 정의됩니다. 
VI의 실행 가능한 집합 K는 QVI의 집합 K(x)가 됩니다.

  K(x) = y | g(y,x) <= 0 

설정된 값 매핑 K()는 다음과 같은 함수 g(y,x)를 사용합니다.
본질적으로 동일한 변수 y == x의 두 복사본을 사용합니다. 여기서 y(일명
관심 변수)는 보다 일반적인 의미로 동작합니다.
변수이고 x(매개변수 변수라고도 함)는 고정된 것으로 처리됩니다.
나타난다.  그래서 우리는 y.x에 대한 QVI를 해결하는 것으로 이동합니다(즉, y와
섀도 복사본 또는 매개변수 변수 x)는 다음과 같이 정의됩니다.

  다음과 같이 K(x)에서 y를 찾습니다.
    <F(y), (z - y)> >= K(x)의 모든 z에 대해 0입니다. 여기서
    K(x) = y | g(y,x) <= 0 

이 QVI 예제는 논문에서 가져온 것입니다.

 Jiri V. Outrata 및 Jochem Zowe: 클래스를 위한 뉴턴 방법
 준변동 불평등,
 계산 최적화 및 응용, 4, 5-21 (1995)

이 QVI가 나타내는 일반화된 내쉬 균형 문제
최적성 조건은 이 라이브러리에 SIMPEQUIL3.103으로 있습니다.

기고자: 김영대 & Steve Dirkse, 2018년 4월
$offText

$설정되지 않은 경우 CLEANUP $set CLEANUP YES
$설정되지 않은 경우 TESTTOL $set TESTTOL 1e-6
스칼라 tol / %TESTTOL% /;

i / 1*2 / 설정;
별칭(i,j);

테이블 A(i,j)
      1 2
1 2 [8/3]
2 [5/4] 2 ;

매개변수
  b(i) / 1 [100/3], 2 22.5 /
  Cy(i,j) / 1.1 1, 2.2 1 /
  Cx(i,j) / 1.2 1, 2.1 1 /
  rhs(i) / 1 15, 2 20 /
  ;
긍정적인 변수
  y(j) '관심 변수, 일명 결정 변수'
  x(j) 'y를 가리는 매개변수 변수'
  ;
방정식
  F(i) '에이전트 최적화 모델을 위한 FOC'
  g(i) 'QVI에 대해 실행 가능한 집합 K(x)를 정의합니다.'
  ;
F(i).. sumj, A(i,j)*y(j) - b(i) =N= 0;

g(i).. sumj, Cy(i,j)*y(j) + sumj, Cx(i,j)*x(j) =L= rhs(i);

모델 m / F, g /;
파일 opt / 'jams.opt' /;
파일 정보 / '%emp.info%' /;

* ----------- QVI 테스트 -----------

정보를 닫으세요
  '* 상보적인 쌍 F.y와 x로 정의된 실행 가능한 집합 K를 정의하기 위해' /
  '* QVI의 구문은 다음과 같습니다: QVI  F y x-the-shadow-of-y  F2 y2  g ' /
  'qvi F y x g'
  ;
putclose 선택
  '딕트 qviDict.txt' /
  '파일 이름 qviScalar.gms' /
  ;
y.up(j) = 11;
x.up(j) = 11;

m.optfile = 1;
emp를 사용하여 m을 해결합니다.

중단$[m.solvestat <> %solveStat.normalCompletion%]
     '잘못된 m.solvestat', m.solvestat;
중단$[m.modelstat <> %modelStat.optimal%]
     '잘못된 m.modelstat', m.modelstat;
abort$[abs(y.l('1') - 10) > tol] '해법에서 y(1)==10이 예상됩니다.', y.l;
abort$[abs(y.l('2') - 5) > tol] '해법에서 y(2)==5가 예상됩니다.', y.l;

$set KILL_LIST "jams.opt qviDict.txt qviScalar.gms qviScalar.lst qviScalarpf.pf"

$ifThen %CLEANUP% == 예
'rm -f %KILL_LIST%'를 실행합니다.

$else
파일 로그 /''/;
putclose 로그
  ' ' /
  '이 실행으로 생성된 여러 중간 파일은 사용자가 찾아볼 수 있도록 남아 있습니다.' /
  ' %KILL_LIST%' /
  '삭제하려면 --CLEANUP=NO를 사용하여 모델을 실행하지 마세요.' /
  ' ' /
  ;
$endIf