simpequil3.gms : 단순 일반화 내쉬 균형 문제

설명

QVI에서 파생된 GNEP(일반화 내쉬 균형 문제) 인스턴스
논문의 예:

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

QVI 모델은 SIMPLEQVI2.102로 이 라이브러리에 있습니다.

해 (x1*,x2*) = (10,5)를 계산합니다.

기고자: 김영대 및 Steve Dirkse, 2018년 4월

소형 모델 유형 :EQUIL


카테고리 : 피망 슬롯 EMP 라이브러리


메인 파일 : simpequil3.gms

$title 단순 일반화 내쉬 균형 문제 (SIMPEQUIL3,SEQ=103)

$onText
QVI에서 파생된 GNEP(일반화된 내쉬 균형 문제) 인스턴스
논문의 예:

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

QVI 모델은 SIMPLEQVI2.102로 이 라이브러리에 있습니다.

해 (x1*,x2*) = (10,5)를 계산합니다.

기고자: 김영대 & 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 1 [8/3]
2 [5/4] 1 ;

매개변수
  b(i) / 1 [100/3], 2 22.5 /
  rhs(i) / 1 15, 2 20 /
  ;

변수 obj(i) '에이전트 i의 목표';
양의 변수 y(i);

방정식
  defobj(i)
  단점(i)
  ;
defobj(i).. y(i) * sumj, A(i,j)*y(j) - b(i)*y(i) =E= obj(i);

단점(i) .. sumj, y(j) =L= rhs(i);

y.up(i) = 11;

모델 gnep / defobj, 단점 /;

파일 opt / 'jams.opt' /;
파일 empinfo / '%emp.info%' /;  empinfo.pc = 8;

empinfo '평형' 입력 /;
루프나,
  ' min', obj(i), y(i), defobj(i), cons(i) 넣기 /;
;
putclose empinfo;
putclose 선택
  '딕트 gnepDict.txt' /
  '파일 이름 gnepScalar.gms' /
  ;

* 시작점을 논문에 기재된 값으로 설정
y.l(i) = 0;

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

중단$[gnep.solvestat <> %solveStat.normalCompletion%]
     '잘못된 gnep.solvestat', gnep.solvestat;
중단$[gnep.modelstat > %modelStat.locallyOptimal%]
     '잘못된 gnep.modelstat', gnep.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 gnepDict.txt gnepScalar.gms gnepScalar.lst gnepScalarpf.pf"

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

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