설명
Dantzig의 독창적인 운송 모델(TRNSPORT)은 선형 상보성 문제로 재구성됩니다. 우리가 먼저 고정된 수요량과 공급량으로 모델을 해결하고, 그런 다음 우리는 양쪽에 가격 반응성을 통합합니다. 시장.
소형 모델 유형 :MCP
카테고리 : 슬롯 커뮤니티 모델 라이브러리
메인 파일 : transmcp.gms
$title 평형 문제로서의 운송 모델(TRANSMCP,SEQ=126)
$onText
Dantzig의 오리지널 운송 모델(TRNSPORT)은
선형 상보성 문제로 재구성됩니다. 우리가 먼저
고정된 수요량과 공급량으로 모델을 해결하고,
그런 다음 우리는 양쪽에 가격 반응성을 통합합니다.
시장.
Dantzig, GB, 3.3장. 선형 프로그래밍 및 확장.
프린스턴 대학 출판부, 뉴저지주 프린스턴, 1963년.
키워드: 선형 상보성 문제, 수송 문제, 평형
모델, 일정
$offText
세트
i '통조림 식물' / 시애틀, 샌디에이고 /
j 'markets' / 뉴욕, 시카고, 토피카 /;
매개변수
a(i) '경우에 따라 식물 i의 용량'
/시애틀 350
샌디에이고 600 /
b(j) '경우에 따라 시장 j의 수요'
/ 뉴욕 325
시카고 300
토피카 275 /
esub(j) '수요의 가격 탄력성(가격이 1과 동일할 때)'
/ 뉴욕 1.5
시카고 1.2
토피카 2.0 /;
테이블 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;
매개변수 pbar(j) '수요 노드 j의 기준 가격';
양수 변수
w(i) '공급 노드 i의 그림자 가격'
p(j) '수요 노드 j의 그림자 가격'
x(i,j) '케이스의 배송 수량';
방정식
Supply(i) '공장 i의 공급 제한'
fxdemand(j) '시장 j의 고정 수요'
prdemand(j) '시장 j의 가격 반응 수요'
이익(i,j) '0 이익 조건';
이익(i,j).. w(i) + c(i,j) =g= p(j);
공급(i).. a(i) =g= sum(j, x(i,j));
fxdemand(j)..sum(i, x(i,j)) =g= b(j);
prdemand(j).. sum(i, x(i,j)) =g= b(j)*(pbar(j)/p(j))**esub(j);
* 방정식-변수 연관의 사양을 포함하는 모델을 선언합니다.
모델
고정 수량 / 이익.x, 공급.w, fxdemand.p /
균형 / 이익.x, 공급.w, prdemand.p /;
* 초기 추정치:
p.l(j) = 1;
w.l(i) = 1;
매개변수 보고서(*,*,*) '요약 보고서';
mcp를 사용하여 고정 수량을 해결합니다.
보고서(i,j,"고정") = x.l(i,j);
report("가격",j,"고정") = p.l(j);
Report(i,"가격","고정") = w.l(i);
* 수요 함수를 조정합니다:
pbar(j) = p.l(j);
* 유연한 수요 기능을 사용하여 고정 수요 균형을 복제합니다.
mcp를 사용하여 평형을 해결합니다.
보고서(i,j,"flex") = x.l(i,j);
report("price",j,"flex") = p.l(j);
report(i,"price","flex") = w.l(i);
* 고정 수요 함수를 사용하여 반사실적 균형을 계산합니다.
c("시애틀","시카고") = 0.5*c("시애틀","시카고");
mcp를 사용하여 고정 수량을 해결합니다.
Report(i,j,"고정 CF") = x.l(i,j);
report("price",j,"고정 CF") = p.l(j);
report(i,"price","fixed CF") = w.l(i);
* 유연한 수요 함수를 사용하여 반사실적 균형을 계산합니다.
mcp를 사용하여 평형을 해결합니다.
report(i,j,"flex CF") = x.l(i,j);
report("price",j,"flex CF") = p.l(j);
report(i,"price","flex CF") = w.l(i);
보고서 표시;
Execute_unload 'mcpReport.gdx', 보고서;