설명
VI를 MCP로 작성하는 방법을 보여주는 예
우리는 MCP로의 수동 변환을 피하기 위해 EMP를 사용하여 VI를 작성하려고 합니다. 우리는
VI와 MCP의 정의
스티븐 P. 더크세(Steven P. Dirkse) 박사 논문
혼합 상보성 문제의 강력한 솔루션.
수학적 프로그래밍 기술 보고서 94-12, 1994년 8월.
ftp://ftp.cs.wisc.edu/math-prog/tech-reports/94-12.ps
4~6페이지
이 경우, 시작하는 VI는 F(x) = df/dx라고 가정하여 얻는 것입니다.
여기서 f는 전송 모델의 목표입니다.
우리는 0이 아닌 공급 한계를 얻도록 데이터를 조정했습니다.
기여자: Steven Dirkse 및 Jan-H. Jagla, 2009년 1월
소형 모델 유형 :VI
카테고리 : 슬롯 사이트 추천 EMP 라이브러리
메인 파일 : transvi.gms
운송 모델의 $title VI 버전(TRANSVI,SEQ=2)
$onText
VI를 MCP로 작성하는 방법을 보여주는 예
우리는 MCP로의 수동 변환을 피하기 위해 EMP를 사용하여 VI를 작성하려고 합니다. 우리는
VI와 MCP의 정의
스티븐 P. 더크세(Steven P. Dirkse) 박사 논문
혼합 상보성 문제의 강력한 솔루션.
수학적 프로그래밍 기술 보고서 94-12, 1994년 8월.
ftp://ftp.cs.wisc.edu/math-prog/tech-reports/94-12.ps
4~6페이지
이 경우, 시작하는 VI는 F(x) = df/dx라고 가정하여 얻는 것입니다.
여기서 f는 전송 모델의 목표입니다.
우리는 0이 아닌 공급 한계를 얻도록 데이터를 조정했습니다.
기여자: Steven Dirkse 및 Jan-H. 자글라, 2009년 1월
$offText
세트
i 통조림 공장 / 시애틀, 샌디에이고 /
j 마켓 / 뉴욕, 시카고, 토피카 / ;
매개변수
a(i) 경우에 따라 공장 i의 생산 능력
/시애틀 350
샌디에이고 600 /
b(j) 다음과 같은 경우 시장 j의 수요
/ 뉴욕 325
시카고 300
토피카 275 / ;
테이블 d(i,j) 거리(천 마일)
뉴욕 시카고 토피카
시애틀 2.2 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/ ;
* LP를 풀어보세요
옵션 lp = pathnlp;
z 를 최소화하는 lp를 사용하여 전송을 해결합니다.
abort$[transport.modelstat <> %modelStat.optimal%] 'LP가 해결되지 않음';
*------------------------------------------------------------------
* VI는 이렇게 생겼습니다
양의 변수
dPrice(j) '수요 가격';
음수변수
sPrice(i) '공급가격*(-1)';
방정식
ggrad(i,j) 'VI의 grad의 MCP 버전';
ggrad(i,j).. c(i,j) - sPrice(i) - dPrice(j) =N= 0;
모델 mcpTransport / ggrad.x, 공급.sPrice, 수요.dPrice /;
*LP의 솔루션을 채택하여 MCP의 솔루션인지 확인 및 해결
sPrice.l(i) = 공급.m(i);
dPrice.l(j) = 수요.m(j);
mcpTransport.iterlim = 0;
mcp를 사용하여 mcpTransport를 해결합니다.
abort$[mcpTransport.objVal > 1e-6] 'mcpTransport 모델에 대한 입력은 최적이어야 하지만 그렇지 않았습니다.';
*------------------------------------------------------------------
* 이제 이 재구성에 EMP를 사용하세요.
* VI의 경우 F(x) = c: LP 모델은 선형 VI를 생성합니다.
방정식
grad(i,j) 'dcost/dx(i,j)';
grad(i,j)..c(i,j) =N= 0;
모델 viTransport / grad, 공급, 수요 /;
파일 myinfo / '%emp.info%' /;
put myinfo '* grad.x에 대한 상보성 쌍' /;
putclose 'vi grad x 수요 공급';
*이미 보유하고 있는 솔루션을 확인하세요.
viTransport.iterlim = 0;
emp를 사용하여 viTransport를 해결합니다.
abort$[viTransport.objVal > 1e-6] 'viTransport 모델에 대한 입력은 최적이어야 하지만 그렇지 않았습니다.';