설명
월별 공수 작전 일정을 계획할 때 특정 경로에 대한 수요가 있습니다. 예측할 수 있습니다. 실제 요구사항은 향후에 알려질 예정이며, 예측된 요구 사항에 동의하지 않을 수도 있습니다. 상환 조치는 다음과 같습니다. 그런 다음 실제 요구 사항을 충족해야 합니다. 실제 요구 사항 톤 또는 기타 적절한 단위로 표시되며, 확률변수로 표현됩니다. 여러 가지 항공기 종류에 따라 서비스가 가능합니다. 이러한 각 유형의 항공기에는 해당 기간 동안 이용 가능한 비행 시간 수에 대한 자체 제한이 있습니다. 달. 사용 가능한 의지 조치에는 사용 가능한 비행 시간 허용이 포함됩니다. 사용하지 않고 항공기를 한 경로에서 다른 경로로 전환하고 구매합니다. 상업용 항공편. 이들 각각에는 관련 비용이 있습니다. 관련된 항공기 유형에 대해.
소형 모델 유형 :SP
카테고리 : 피망 슬롯 EMP 라이브러리
메인 파일 : airlift.gms
$title 공수작전 일정(AIRLIFT,SEQ=86)
$onText
월별 공수작업 일정을 계획할 때 특정 경로에 대한 수요
예측할 수 있습니다. 실제 요구사항은 향후에 알려질 예정이며,
예측된 요구 사항에 동의하지 않을 수도 있습니다. 상환 조치는 다음과 같습니다.
그런 다음 실제 요구 사항을 충족해야 합니다. 실제 요구 사항
톤 또는 기타 적절한 단위로 표시되며,
확률변수로 표현됩니다. 여러 가지 항공기
종류에 따라 서비스가 가능합니다. 이러한 각 유형의 항공기에는
해당 기간 동안 이용 가능한 비행 시간 수에 대한 자체 제한이 있습니다.
달.
사용 가능한 의지 조치에는 사용 가능한 비행 시간 허용이 포함됩니다.
사용하지 않고 항공기를 한 경로에서 다른 경로로 전환하고 구매합니다.
상업용 항공편. 이들 각각에는 관련 비용이 있습니다.
관련된 항공기의 유형에 관한 것입니다.
Midler, J L 및 Wollmer, R D, 확률론적 프로그래밍 모델
공수 작전용, Naval Research Logistics Quarterly 16,
315-330, 1969.
Ariyawansa, KA 및 Felt, AJ, 새로운 확률론적 컬렉션에 대해
선형 프로그래밍 테스트 문제, INFORMS Journal on Computing 16(3),
291-299, 2004
$offText
세트
i 항공기 유형 / f1*f2 /
j 경로 / r1*r2 /
별칭(j,k);
매개변수
* 펠트에는 7200이 있지만 절대 구속력이 없습니다 ...
F(i) 항공기 유형별 최대 비행 시간 / #i 7200 /
a(i,j) 왕복당 비행시간
b(i,j) 운반 능력(톤)
c(i,j) 항공편당 비용($)
d(j) 수요 / r1 1000, r2 1500 /
as(i,j,k) 왕복당 비행 시간 - 항공편 변경
cs(i,j,k) 항공편당 비용($) - 항공편 변경
pplus(j) 상업용 계약 항공편 비용($ / r1 500, r2 250 /)
pminus(j) 미사용 용량 비용($ / #j 0 /);
테이블 데이터(i,j,*,*)
a.'' b.'' c.'' as.r1 as.r2 cs.r1 cs.r2
f1.r1 24 50 7200 19 7000
f2.r1 49 20 7200 36 5500
f1.r2 14 75 6000 29 8200
f2.r2 29 20 4000 56 8700
;
a(i,j) = data(i,j,'a' ,'');
b(i,j) = data(i,j,'b' ,'');
c(i,j) = data(i,j,'c' ,'');
as(i,j,k) = 데이터(i,j,'as',k);
cs(i,j,k) = 데이터(i,j,'cs',k);
변수
목표물
x(i,j) 원래 계획된 항공편 수
xs(i,j,k) j에서 전환된 k의 항공편 수 증가
slackp(j) 계약 항공편
slackn(j) 사용되지 않은 용량
양의 변수 x, xs, slackp, slackn;
방정식
defobj 목표
defcap(i) 용량
defcaps(i,j)는 원래 할당으로 스위치 수를 제한합니다.
defdem(j) 요구 이행;
defobj.. sum((i,j), c(i,j)*x(i,j) + sum(k$(not sameas(j,k)),
(cs(i,j,k)-c(i,j)*as(i,j,k)/a(i,j))*xs(i,j,k)))
+ sum(j, (pplus(j)*slackp(j) + pminus(j)*slackn(j))) =e= obj;
defcap(i).. sum(j, a(i,j)*x(i,j)) =l= F(i);
defcaps(i,j).. sum(k$(not sameas(j,k)), as(i,j,k)*xs(i,j,k)) =l= a(i,j)*x(i,j);
defdem(j).. sum(i, b(i,j)*x(i,j) - sum(k$(동일하지 않음(j,k)),
b(i,j)*as(i,j,k)/a(i,j)*xs(i,j,k) - b(i,j)*xs(i,k,j)))
+ slackp(j) - slackn(j) =e= d(j);
모델 공수 /all/;
파일 emp / '%emp.info%' /; put emp '* 문제 %피망 슬롯i%'/;
$onPut
randvar d('r1') 로그 정규 1000 50
randvar d('r2') 로그 정규 1500 300
2단계 D xs slackp slackn defcaps defdem
$offPut
putclose emp;
s 시나리오 설정 / s1*s36 /;
매개변수
s_d(s,j) 시나리오별 수요
s_x(s,i,j), s_xs(s,i,j,k) 항공편이 계획되고 전환되었습니다.
dict/s .scenario를 설정하세요.''
d.randvar. s_d
x.레벨. s_x
xs.레벨. s_xs /;
$ifI %피망 슬롯emp%==린도
emp 시나리오 dict를 사용하여 공수 최소 obj를 해결합니다.
* 독립확률변수로서의 확률적 수요
r 실현 설정 / x1*x5 /
테이블 dRV(r,*) 확률적 수요
r1 pr1 r2 pr2
x1 988.16 0.0668 1428.94 0.0668
x2 989.98 0.2417 1439.86 0.2417
x3 994.92 0.3830 1469.54 0.3830
x4 1008.37 0.2417 1550.22 0.2417
x5 1044.92 0.0668 1769.54 0.0668;
put emp '* 문제 %피망 슬롯i%';
put / "randvar d('r1') 이산 "; loop(r, dRV(r,'pr1') dRV(r,'r1'));
put / "randvar d('r2') 이산 "; loop(r, dRV(r,'pr2') dRV(r,'r2'));
put / '2단계 d xs slackp slackn defcaps defdem'
putclose emp;
emp 시나리오 dict를 사용하여 공수 최소 obj를 해결합니다.