scensol2.gms : GUSS에서 정렬되지 않은 시나리오 UEL 처리 테스트

설명

이 테스트는 다음과 같은 경우 '데이터가 정렬되지 않음' 오류가 발생하지 않는지 확인합니다.
시나리오 세트에 '정렬되지 않음' uel이 포함되어 있습니다.

기여자: Lutz Westermann

소형 모델 유형 :피망 슬롯


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


메인 파일 : scensol2.gms

$title GUSS에서 정렬되지 않은 시나리오 UEL의 테스트 처리(SCENSOL2,SEQ=533)

$onText
이 테스트는 다음과 같은 경우 '데이터가 정렬되지 않음' 오류가 발생하지 않는지 확인합니다.
시나리오 세트에 '정렬되지 않음' uel이 포함되어 있습니다.

기여자: Lutz Westermann
$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.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), f * d(i,j) / 1000 *x(i,j)) ;

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

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

방정식 e 더미 n 행;  즉.. sum((i,j), x(i,j)) =n= 3;

모델 전송 /all/ ;

dict / s.scenario 를 설정하세요. ''
             디.   매개변수 .ds
             x.   레벨 .xx /

매개변수
    d용 ds(s,i,j) 업데이트 프로그램
    xx(s,i,j) x 레벨에 대한 수집기;

ds(s,i,j) = max(0,uniform(-5,2)) + eps;

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

* 라이센스 오류(글로벌 솔버)가 발생하면 그냥 종료하세요.
if(transport.modelstat=%modelStat.licensingProblem%,
    abort.noerror '전역 솔버에 비해 너무 큼');

디스플레이 xx;

set Error(s) 해결책을 찾을 수 없습니다.
오류(들) = sum((i,j),xx(s,i,j)) = 0;
abort$(card(error)) '일부 시나리오에 대한 솔루션이 누락되었습니다', error;