설명
슬롯와 "평형"을 사용하여 간단한 LP를 재구성합니다. 키워드/전략을 검토하고 다음과 같은 경우 솔루션이 변경되지 않았는지 확인하세요. a) 방정식을 수동으로 뒤집습니다. 즉, f(x) =L= b는 -f(x) =G= -b가 됩니다. b) 정보 파일에서 -equName 구문을 사용하여 방정식 뒤집기 c) a와 b 모두 또한 생성된 결과 MCP에는 다음과 같은 속성이 있습니다. 수동으로 뒤집으면 뒤집기로 뒤집는 것과 동일한 MCP가 제공됩니다. 연산자를 사용하고 두 번 뒤집습니다(수동 및 뒤집기를 사용하여 모두) 연산자)는 전혀 뒤집지 않는 것과 동일한 MCP를 제공합니다. 확인하는 방법 그런데 이거? 기고자: Steven Dirkse, 2010년 9월
소형 모델 유형 :슬롯
카테고리 : 슬롯 테스트 라이브러리
메인 파일 : emp10.gms
$title 슬롯 평형 모델 및 반전 연산자 테스트 (EMP10,SEQ=499)
$onText
슬롯와 "평형"을 사용하여 간단한 LP를 재구성합니다.
키워드/전략을 검토하고 다음과 같은 경우 솔루션이 변경되지 않았는지 확인하세요.
a) 방정식을 수동으로 뒤집습니다. 즉, f(x) =L= b는 -f(x) =G= -b가 됩니다.
b) 정보 파일에서 -equName 구문을 사용하여 방정식 뒤집기
c) a와 b 모두
또한 생성된 결과 MCP에는 다음과 같은 속성이 있습니다.
수동으로 뒤집으면 뒤집기로 뒤집는 것과 동일한 MCP가 제공됩니다.
연산자를 사용하고 두 번 뒤집습니다(수동 및 뒤집기를 사용하여 모두)
연산자)는 전혀 뒤집지 않는 것과 동일한 MCP를 제공합니다. 확인하는 방법
그런데 이거?
기고자: Steven Dirkse, 2010년 9월
$offText
세트
나는 '소스' / i1 * i3 /
j '싱크' / j1 * j3 /
;
매개변수
sup(i) '공급원의 공급 한도' /
i1 300
i2 400
i3 500
/,
dem(j) '싱크대 수요' /
j1 400
j2 350
j3 300
/
;
표 c(i,j) '비용'
j1 j2 j3
i1 2 2.8125 4.5
i2 2.8125 2 2.8125
i3 4.5 2.8125 2 ;
양수 변수 x(i,j);
변수 z;
방정식
비용
공급(i) '전통적인 지향'
SupplyX(i) '뒤집힌'
수요(j) '전통적 지향'
DemandX(j) '뒤집어짐'
;
비용 .. z =E= 합계 (i,j), c(i,j)*x(i,j);
공급(i) .. sum j, x(i,j) =L= sup(i);
SupplyX(i)..sup(i) =G= sum j, x(i,j);
수요(j) .. sum i, x(i,j) =G= dem(j);
수요X(j).. dem(j) =L= 합계 i, x(i,j);
모델 m '원래 지향' / 비용, 공급, 수요 /;
모델 mX '역방향' / 비용, 공급X, 수요X /;
* 먼저 (고유한?) 솔루션을 로드하기 위해 해결합니다.
lp min z를 사용하여 m을 푼다;
SupplyX.m(i) = -supply.m(i);
수요X.m(j) = -demand.m(j);
파일 fInfo / '%슬롯info%' /;
파일 fOpt / 'jams.opt' /;
fInfo '평형' 입력 /;
putclose 'min z * 비용 공급 수요' /;
m.iterlim = 0;
mX.iterlim = 0;
m.optfile = 1;
mX.optfile = 1;
* 원래 방향의 모델, 뒤집기 연산자 없음
putclose fOpt '파일 이름 mcp__.gms';
슬롯를 사용하여 m을 해결합니다.
abort$[m.modelstat > 2] '잘못된 모델 상태', m.modelstat;
abort$[m.solvestat <> 1] '잘못된 해결 상태', m.solvestat;
fInfo '평형' 입력 /;
putclose 'min z * 비용 -공급 -수요' /;
* 원래 방향의 모델, 반전 연산자
putclose fOpt '파일 이름 mcp_F.gms';
슬롯를 사용하여 m을 해결합니다.
abort$[m.modelstat > 2] '잘못된 모델 상태', m.modelstat;
abort$[m.solvestat <> 1] '잘못된 해결 상태', m.solvestat;
fInfo '평형' 입력 /;
putclose 'min z * 비용 -공급X -수요X' /;
* 방향이 반전된 모델, 반전 연산자
putclose fOpt '파일 이름 mcpXF.gms';
슬롯를 사용하여 mX를 푼다.
abort$[mX.modelstat > 2] '잘못된 모델 상태', mX.modelstat;
abort$[mX.solvestat <> 1] '잘못된 해결 상태', mX.solvestat;
fInfo '평형' 입력 /;
putclose 'min z * 비용 공급X 수요X' /;
* 방향이 반전된 모델, 반전 연산자 없음
putclose fOpt '파일 이름 mcpX_.gms';
슬롯를 사용하여 mX를 푼다.
abort$[mX.modelstat > 2] '잘못된 모델 상태', mX.modelstat;
abort$[mX.solvestat <> 1] '잘못된 해결 상태', mX.solvestat;
* 네 가지 모델 모두에 대한 솔루션은 동일해야 합니다 -
* 여기까지 오면 동일한 점을 성공적으로 테스트한 것입니다.
* 네 가지를 모두 해결
* 또한, mcp__ 및 mcpXF 모델은 동일해야 하며,
* 모델 mcpX_와 mcp_F는 동일해야 합니다.