limdom01.gms : 모델의 변수에 대한 제한된 도메인 테스트

설명

슬롯 사이트 추천 31에서는 변수 영역을 제한하는 기능을 도입했습니다.
모델 선언문에서. 이 테스트에서는 trnsport 모델을 사용하여 다음을 확인합니다.
이 새로운 기능은 명시적인 달러 조건을 사용하는 것과 동일한 결과를 가져옵니다
명시적인 달러 조건은 변수와 함께 사용할 수도 있습니다.
제한된 도메인으로.

기고자: Lutz Westermann, 2020년 3월

소형 모델 유형 :슬롯 사이트 추천


카테고리 : 슬롯 사이트 추천 테스트 라이브러리


메인 파일 : limdom01.gms

$title 모델의 변수에 대한 제한된 도메인 테스트(limdom01,SEQ=812)

$onText
슬롯 사이트 추천 31에서는 변수 영역을 제한하는 기능을 도입했습니다.
모델 선언문에서. 이 테스트에서는 trnsport 모델을 사용하여 다음을 확인합니다.
이 새로운 기능은 명시적인 달러 조건을 사용하는 것과 동일한 결과를 가져옵니다
명시적인 달러 조건은 변수와 함께 사용할 수도 있습니다.
제한된 도메인으로.

기고자: Lutz Westermann, 2020년 3월
$offText

세트
   i '통조림 식물' / 시애틀, 샌디에고 /
   j 'markets' / 뉴욕, 시카고, 토피카 /;

매개변수
   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;

ij(i,j) / #i.#j /를 설정합니다.

변수
   x(i,j) '케이스의 선적 수량'
   z '총 운송 비용(천 달러)';

양수 변수 x;

방정식
   비용 '목적 함수 정의'
   costD '목적 함수 정의'
   Supply(i) '공장 i의 공급 제한을 준수합니다.'
   SupplyD(i) '플랜트 i의 공급 제한을 준수합니다.'
   수요(j) '시장 j의 수요를 충족'
   DemandD(j) '시장 j의 수요를 충족';

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

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

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

모델 TransportExplDol 명시적인 달러 조건 사용
                       / 비용D, 공급D, 수요D /;
모델 TransportImplDol 변수 x의 영역을 제한합니다.
                       / 비용, 공급, 수요, x(ij) /;
모델 TransportTwoDol 명시적 달러 조건과 x의 제한된 도메인 결합
                       / 비용D, 공급D, 수요D, x(ij) /;

옵션 lp=변환;
별칭 (i,ii), (j,jj);

루프((ii,jj),
    ij(ii, jj) = 아니요;

    z를 최소화하는 lp를 사용하여 TransportExplDol을 해결합니다.
    Execute.CheckErrorLevel 'grep -v "슬롯 사이트 추천로 작성된 LP" 슬롯 사이트 추천gms > TransportExplDol.gms';

    z를 최소화하는 lp를 사용하여 TransportImplDol을 해결합니다.
    Execute.CheckErrorLevel 'grep -v "슬롯 사이트 추천로 작성된 LP" 슬롯 사이트 추천gms > TransportImplDol.gms';

    z를 최소화하는 lp를 사용하여 TransportTwoDol을 해결합니다.
    Execute.CheckErrorLevel 'grep -v "슬롯 사이트 추천로 작성된 LP" 슬롯 사이트 추천gms > TransportTwoDol.gms';

    Execute.CheckErrorLevel '=diff -b TransportExplDol.gms TransportImplDol.gms';
    Execute.CheckErrorLevel '=diff -b TransportExplDol.gms TransportTwoDol.gms';

    ij(ii, jj) = 예;
);