transbp.gms : 이중수준 프로그래밍을 이용한 가변수요함수를 이용한 교통모델

설명

Dantzig의 독창적인 운송 모델 TRNSPORT(슬롯 커뮤니티 모델 라이브러리에 있음)는
EMP의 이중 레벨 프로그래밍을 사용하여 재구성되었습니다.

Dantzig, GB, 3.3장. 선형 프로그래밍 및 확장.
프린스턴 대학 출판부, 뉴저지주 프린스턴, 1963년.

추가 기능:
  고정 수요 b(j)는 다음 함수로 대체됩니다.
    g(j) = 최대(b(j),y(j))
  y가 a에 가까워지도록 강제하는 외부 목적 함수를 사용합니다.
  목표값(400). max 함수는 Variational Inequalties를 사용하여 모델링됩니다.

  원래 trnsport 모델은 낮은 수준의 문제입니다.

기고자: Michael Ferris, 2009년 12월

소형 모델 유형 :BP


카테고리 : 슬롯 커뮤니티 EMP 라이브러리


메인 파일 : transbp.gms

$title 이중 수준 프로그래밍을 사용한 가변 수요 함수를 사용한 운송 모델(TRANSBP,SEQ=26)

$onText
Dantzig의 원래 운송 모델인 TRNSPORT(슬롯 커뮤니티 모델 라이브러리에 있음)는 다음과 같습니다.
EMP의 이중 레벨 프로그래밍을 사용하여 재구성되었습니다.

Dantzig, GB, 3.3장. 선형 프로그래밍 및 확장.
프린스턴 대학 출판부, 뉴저지주 프린스턴, 1963년.

추가 기능:
  고정 수요 b(j)는 다음 함수로 대체됩니다.
    g(j) = 최대(b(j),y(j))
  y가 a에 가까워지도록 강제하는 외부 목적 함수를 사용합니다.
  목표값(400). max 함수는 Variational Inequalties를 사용하여 모델링됩니다.

  원래 trnsport 모델은 낮은 수준의 문제입니다.

기고자: Michael Ferris, 2009년 12월
$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 총 운송 비용(단위: 수천 달러)
     g(j) 수요 창출;

양수 변수 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) ;

* --- 참고: 고정 수요 b(j)는 가변 수요 g(j)로 대체되었습니다.
수요(j) .. sum(i, x(i,j)) =g= g(j) ;

모델 전송 /all/ ;

* --- 이제 원래 고정 가격 trnsport 모델을 해결합니다.
g.fx(j) = b(j);
z 를 최소화하는 lp를 사용하여 전송을 해결합니다.
보고서(i,j,'고정') = x.l(i,j);

변수
     obj,
     y(j) '외부 수요함수';

방정식
     외부 개체,
     extdem(j);

externalobj..obj =e= sum(j, sqr((y(j) - 400)/b(j)));

extdem(j)..g(j) =g= y(j);

모델 emp 이중 레벨 trnsport 모델 / 모두 /;

g.up(j) = inf;  g.lo(j) = b(j);

* EMP 정보 파일을 사용하여 모델 정의
파일 FX / '%emp.info%' /;
fx 'bilevel y'를 입력하세요. /;
'최소 z x 비용 공급 수요'를 입력합니다. /;
putclose 'vi extdem g' /;

* --- 이제 EMP를 사용하여 2단계 trnsport 모델을 해결합니다.
emp us emp min obj를 해결하세요.
Report(i,j,"bilevel") = x.l(i,j);

보고서 표시;