설명
달러 제어 옵션 $gdxLoadAll 및 $declareAndLoad를 테스트하여 컴파일 시 GDX 파일에서 모든(선언되지 않은) 기호를 편리하게 가져오기 시간. 기고자: Lutz Westermann, 2023년 3월
소형 모델 유형 :GAMS
카테고리 : GAMS 테스트 라이브러리
메인 파일 : load17.gms
$title '$declareAndLoad 및 $gdxLoadAll 테스트' (LOAD17,SEQ=938)
$onText
$gdxLoadAll 및 $declareAndLoad를 허용하는 달러 제어 옵션을 테스트합니다.
컴파일 시 GDX 파일에서 모든(선언되지 않은) 기호를 편리하게 가져오기
시간.
기고자: Lutz Westermann, 2023년 3월
$offText
* 일부 입력 생성
$call.checkErrorLevel gamslib -q 1
$call.checkErrorLevel gams tnsport gdx=trns 슬롯 무료체험=%GAMS.슬롯 무료체험%
* $declareAndLoad는 모든 것을 가져와야 합니다.
$echo $declareAndLoad trns.gdx > test.gms
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff trns.gdx test.gdx > %system.NullFile%
* $declareAndLoad는 모든 것을 가져와야 합니다. (일치하는) 선언이 이미 있는 경우에도 마찬가지입니다.
$onEcho > test.gms
i를 설정합니다.
스칼라 f;
변수 x(*,*);
$declareAndLoad trns.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff trns.gdx test.gdx > %system.NullFile%
* $declareAndLoad는 모든 것을 가져와야 합니다. 또한 이미 (일치하는) 선언이 있는 경우에도 "잘못된" 데이터가 있더라도 $onMultiR을 사용하는 경우
$onEcho > test.gms
i / '시카고', '브런즈윅' /을 설정합니다.
스칼라 f / 89 /;
변수 x(*,*);
$onMultiR
$declareAndLoad trns.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff trns.gdx test.gdx > %system.NullFile%
* 로드할 기호에 대한 데이터가 이미 있고 $onMulti[R]이 설정되지 않은 경우 $declareAndLoad는 오류를 발생시킵니다.
$onEcho > test.gms
i / '시카고', '브런즈윅' /을 설정합니다.
스칼라 f / 89 /;
변수 x(*,*);
$declareAndLoad trns.gdx
$offEcho
$call gams test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$ifE errorLevel==0 $abort %system.IncLine% 라인에 예상된 오류가 있습니다.
* 일치하지 않는 선언이 있는 경우 $declareAndLoad에서 오류가 발생해야 합니다.
$onEcho > test.gms
i(*,*)를 설정합니다.
방정식 f;
변수 x(*);
$declareAndLoad trns.gdx
$offEcho
$call gams test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$ifE errorLevel==0 $abort %system.IncLine% 라인에 예상된 오류가 있습니다.
**************************
* $gdxLoadAll은 알려진 모든 것을 가져와야 합니다.
$onEcho > test.gms
i, j를 설정합니다.
매개변수 a(i), b(j), d(i,j), f, c(i,j);
변수 x(i,j), z;
방정식 비용, 공급(i), 수요(j);
$gdxLoadAll trns.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff trns.gdx test.gdx > %system.NullFile%
* $gdxLoadAll은 알려진 모든 것을 가져와야 합니다. 또한 이미 (일치하는) 선언이 있는 경우에도 "잘못된" 데이터가 있더라도 $onMultiR을 사용하는 경우
$onEcho > test.gms
i / '런던' /, j를 설정합니다;
매개변수 a(i), b(j), d(i,j), f/91/, c(i,j);
변수 x(i,j), z;
방정식 비용, 공급(i), 수요(j);
$onMultiR
$gdxLoadAll trns.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff trns.gdx test.gdx > %system.NullFile%
* 로드할 기호에 대한 데이터가 이미 있고 $onMulti[R]이 설정되지 않은 경우 $gdxLoadAll에서 오류가 발생합니다.
$onEcho > test.gms
i / '런던' /, j를 설정합니다;
매개변수 a(i), b(j), d(i,j), f/91/, c(i,j);
변수 x(i,j), z;
방정식 비용, 공급(i), 수요(j);
$gdxLoadAll trns.gdx
$offEcho
$call gams test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$ifE errorLevel==0 $abort %system.IncLine% 라인에 예상된 오류가 있습니다.
* 일치하지 않는 선언이 있는 경우 $declareAndLoad에서 오류가 발생해야 합니다.
$onEcho > test.gms
i(*,*)를 설정합니다.
방정식 f;
변수 x(*);
$gdxLoadAll trns.gdx
$offEcho
$call gams test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$ifE errorLevel==0 $abort %system.IncLine% 라인에 예상된 오류가 있습니다.
* 도메인 별칭은 문제를 일으키지 않아야 합니다(#5769 참조).
$onEcho > alias.gms
i / i1*i3/을 설정합니다.
별칭(i,j);
매개변수 p(j) / #j 1900 /;
$offEcho
$call gams alias.gms gdx=별칭 슬롯 무료체험=%GAMS.슬롯 무료체험%
$onEcho > test.gms
$declareAndLoad alias.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff alias.gdx test.gdx > %system.NullFile%
$onEcho > test.gms
i를 설정합니다.
별칭(i,j);
매개변수 p(j);
$gdxLoadAll 별칭.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff alias.gdx test.gdx > %system.NullFile%
* $declareAndLoad는 함수와 "새 키워드"를 식별자로 사용하는 데 적합해야 합니다(#5777 참조).
$onEcho > data.gms
스칼라 감마 /4/
그리고 /2/;
$offEcho
$call.checkErrorLevel gams data.gms gdx=데이터 슬롯 무료체험=%GAMS.슬롯 무료체험%
$onEcho > test.gms
$pregamma 스칼라 mygamma를 설정한 경우; mygamma = 감마(2);
$presand 스칼라 mysand를 설정한 경우; i /1*2/로 설정; mysand = 모래(i, 1);
$declareAndLoad data.gdx
abort$(gamma<>4 or sand<>2) '잘못된 감마 또는 모래', gamma, sand;
$postgamma 스칼라 mygamspost를 설정한 경우; mygammapost = 감마(2);
$posts와 스칼라 mysandpost를 설정한 경우; j /1*2/를 설정; mysandpost = sand(j, 1);
감마 = system.gamma(2);
$offEcho
$call.checkErrorLevel gams test.gms 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gams test.gms --presand=1 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call gams test.gms --pregamma=1 슬롯 무료체험=%GAMS.슬롯 무료체험%
$ifE errorLevel=0 --pregamma=1을 사용한 $abort 테스트는 실패해야 합니다.
$call gams test.gms --postgamma=1 슬롯 무료체험=%GAMS.슬롯 무료체험%
$ifE errorLevel=0 --postgamma=1을 사용한 $abort 테스트는 실패해야 합니다.
$call gams test.gms --presand=1 --postsand=1 슬롯 무료체험=%GAMS.슬롯 무료체험%
$ifE errorLevel=0 --presand=1 및 --postsand=1을 사용한 $abort 테스트는 실패해야 합니다.
* $declareAndLoad도 새로운 약어를 추가합니다.
$onEcho > 약어.gms
약어 a1;
스칼라 a /a1/;
$offEcho
$call.checkErrorLevel gams acronym.gms gdx=acronym 슬롯 무료체험=%GAMS.슬롯 무료체험%
$onEcho > test.gms
약어 a2;
$declareAndLoad 약어.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff 약어.gdx test.gdx > %system.NullFile%
* $declareAndLoad는 새로운 별칭도 추가합니다.
$onEcho > alias.gms
별칭(*,u,u2);
$offEcho
$call.checkErrorLevel 게임 alias.gms gdx=별칭 슬롯 무료체험=%GAMS.슬롯 무료체험%
$onEcho > test.gms
$declareAndLoad alias.gdx
$offEcho
$call.checkErrorLevel 게임 test.gms gdx=테스트 슬롯 무료체험=%GAMS.슬롯 무료체험%
$call.checkErrorLevel gdxdiff alias.gdx test.gdx > %system.NullFile%