savep1.gms :execute_loadpoint: 저장 지점 - 지우기 - 로드 지점 - 재최적화

설명



소형 모델 유형 :슬롯 나라


카테고리 : 슬롯 나라 테스트 라이브러리


메인 파일 : savep1.gms

$titleexecute_loadpoint: 포인트 저장 - 지우기 - 로드 포인트 - 재최적화 (SAVEP1,SEQ=65)

  세트
       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/ ;

$onEchoV > sptest.gms
운송.저장점=%1;

옵션 lp=soplex,limrow=0,limcol=0;

x.up(i,j) = 300;

운송.번호 = 0;
z 를 최소화하는 lp를 사용하여 전송을 해결합니다.

옵션 클리어=z, 클리어=비용, 클리어=공급, 클리어=수요; x.l(i,j) = 0; x.m(i,j) = 0;

Execute_loadpoint '%2';
운송.저장점=0;

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

abort$(transport.solvestat <> %solveStat.normalCompletion% 또는
       Transport.modelstat <> %modelStat.optimal% 또는
       Transport.iterusd <> 0 ) '뭔가 정말 잘못됐어요';
$offEcho
$batInclude sptest 1 'transport_p.gdx'
$batInclude sptest 2 'transport_p1.gdx'
$batInclude sptest 3 '%슬롯 나라scrdir%transport_p.gdx'
$batInclude sptest 4 '%슬롯 나라scrdir%transport_p1.gdx'

Execute.checkErrorLevel 'rm "%슬롯 나라scrdir%transport_p.gdx"';
Execute.checkErrorLevel 'rm "%슬롯 나라scrdir%transport_p1.gdx"';