load4.gms : GDX 파일에 대한 다양한 파일 열기 옵션을 테스트

설명

이것은 실행 중 gdx 파일 이름을 재설정하여 발생했습니다.
잘못된 파일 이름을 가진 Execute_loadpoint를 사용합니다.
#7403으로 수정됨

기여자: Alex, Steve

소형 모델 유형 :크레이지 슬롯


카테고리 : 크레이지 슬롯 테스트 라이브러리


메인 파일 : load4.gms

$title GDX 파일에 대한 다양한 파일 열기 옵션을 테스트합니다.

$onText

실행 중에 gdx 파일 이름을 재설정하여 발생했습니다.
잘못된 파일 이름을 가진 Execute_loadpoint를 사용합니다.
#7403으로 수정됨

기여자: Alex, Steve

$offText

  세트
       i 통조림 공장 / 시애틀, 샌디에고 /
       j 마켓 / 뉴욕, 시카고, 토피카 / ;

  매개변수

       a(i) 경우에 따라 공장 i의 생산 능력
         /시애틀 350
              샌디에이고 600 /

       b(j) 다음과 같은 경우 시장 j의 수요
         / 뉴욕 325
              시카고 300
              토피카 275 / ;

  테이블 d(i,j) 거리(천 마일)
                    뉴욕 시카고 토피카
      시애틀 2.5 1.7 1.8
      샌디에고 2.5 1.8 1.4 ;

  스칼라 f 운임(1,000마일당 케이스당 달러) /90/ ;

  매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;

            c(i,j) = f * d(i,j) / 1000 ;

  변수
       x(i,j) 케이스의 배송 수량
       z 총 운송 비용(단위: 수천 달러);

  양수 변수 x ;

  방정식
       비용 정의 목적 함수
       공급(i) 공장 i의 공급 제한을 준수합니다.
       수요(j)는 시장 j의 수요를 충족시킵니다.

  비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ;

  공급(i) .. sum(j, x(i,j)) =l= a(i) ;

  수요(j) .. sum(i, x(i,j)) =g= b(j) ;

  모델 전송 /all/ ;

z 를 최소화하는 lp를 사용하여 전송을 해결합니다.

Execute_unload 'sol.gdx';

* 아래에서는 아무 작업도 수행하지 않습니다. Execute_load는 명시적인 목록을 원합니다.
z.l=na; Execute_load 'sol.gdx';
abort$(z.l<>na) '%system.line% 라인에서';

* 아래는 z를 대체합니다.
z.l=na; Execute_load 'sol.gdx', z;
abort$(z.l=na) '%system.line% 라인에서';

* 아래는 모든 equs 및 vars를 로드하고 병합합니다.
z.l=na; Execute_loadpoint 'sol.gdx';
abort$(z.l=na) '%system.line% 라인에서';

* 아래에서는 지정된 기호만 로드하지만 병합하므로 할당된 na가 고정됩니다.
z.l=na; Execute_loadpoint 'sol.gdx', x;
abort$(z.l<>na) '%system.line% 라인에서';

* 이것은 실패할 것이다
abort$(execerror<>0) '%system.line% 라인에서';
z.l=na; Execute_loadhandle 전송;
abort$(execerror=0) '%system.line% 라인에서';
실행오류=0;

* -----------------------------------------------------------------
* 이제 동일한 테스트를 모두 다시 시도하되 GDX 이름을 재설정하세요.
파일 FX; put_utility fx 'gdxin' / 'sol.gdx';
* -----------------------------------------------------------------

* 아래에서는 아무 작업도 수행하지 않습니다. Execute_load는 명시적인 목록을 원합니다.
z.l=na; 실행_로드;
abort$(z.l<>na) '%system.line% 라인에서';

* 아래는 z를 대체합니다.
z.l=na; excute_load z;
abort$(z.l=na) '%system.line% 라인에서';

* 아래는 모든 equs 및 vars를 로드하고 병합합니다.
z.l=na; 실행_로드포인트;
abort$(z.l=na) '%system.line% 라인에서';

* 아래에서는 지정된 기호만 로드하지만 병합하므로 할당된 na가 고정됩니다.
z.l=na; Execute_loadpoint x;
abort$(z.l<>na) '%system.line% 라인에서';

* 이것은 실패할 것이다
abort$(execerror<>0) '%system.line% 라인에서';
z.l=na; Execute_loadhandle 전송;
abort$(execerror=0) '%system.line% 라인에서';
실행 오류=0;