aircraft.gms : 수요가 불확실한 항공기 할당

설명

이 모델의 목적은 항공기를 경로에 할당하여 최대화하는 것입니다.
교통수요가 불확실할 때 예상되는 이익. 두 가지 다른
델타 및 람다 공식이 사용됩니다.

소형 모델 유형 :LP


카테고리 : 메가 슬롯 모델 라이브러리


메인 파일 : aircraft.gms

$title 수요가 불확실한 항공기 할당(AIRCRAF,SEQ=8)

$onText
이 모델의 목적은 항공기를 경로에 할당하여 최대화하는 것입니다.
교통수요가 불확실할 때 예상되는 이익. 두 가지 다른
공식에는 델타 및 람다 공식이 사용됩니다.

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

키워드: 선형 계획법, 항공기 관리, 할당 문제
$offText

세트
   i '항공기 유형 및 미지정 승객' / a*d /
   j '할당된 경로와 할당되지 않은 경로' / Route-1*route-5 /
   h '수요 상태' / 1*5 /;

별칭(h,hp);

테이블 dd(j,h) '경로 j의 수요 분포'
               1 2 3 4 5
   노선-1 200 220 250 270 300
   루트-2 50 150
   루트-3 140 160 180 200 220
   경로-4 10 50 80 100 340
   경로-5 580 600 620 ;

테이블 람다(j,h) '경로 j의 수요 상태 h 확률'
              1 2 3 4 5
   루트-1 .2 .05 .35 .2 .2
   루트-2 .3 .7
   루트-3 .1 .2 .4 .2 .1
   루트-4 .2 .2 .3 .2 .1
   경로-5 .1 .8 .1 ;

표 c(i,j) '항공기당 비용(1000대)'
       경로-1 경로-2 경로-3 경로-4 경로-5
   18 21 18 16 10
   ㄴ 15 16 14 9
   c 10 9 6
   d 17 16 17 15 10;

테이블 p(i,j) '경로 j에 있는 항공기 i의 승객 수용력'
       경로-1 경로-2 경로-3 경로-4 경로-5
   16 15 28 23 81
   b 10 14 15 57
   c 5 7 29
   d 9 11 22 17 55;

매개변수
   aa(i) '항공기 가용성' / a 10, b 19, c 25, d 15 /
   k(j) '수익 손실(100당 1000 충돌)' / (route-1,route-2) 13
                                                     (경로-3,경로-4) 7
                                                      루트-5 1 /
   ed(j) '예상 수요'
   gamma(j,h) '경로 j에서 수요 증가분 h를 초과할 확률'
   deltb(j,h) '수요 상태의 승객 탑승 증가';

ed(j) = sum(h, 람다(j,h)*dd(j,h));
감마(j,h) = sum(hp$(ord(hp) >= ord(h)), 람다(j,hp));
deltb(j,h) = (dd(j,h) - dd(j,h-1))$dd(j,h);

디스플레이 ed, 감마, deltb;

양수 변수
   x(i,j) '경로 j에 할당된 항공기 유형 i의 수'
   y(j,h) '실제로 탑승한 승객'
   b(j,h) '승객들이 부딪혔어요'
   oc '운영 비용'
   bc '범핑 비용';

무료 변수 phi '총 예상 비용';

방정식
   ab(i) '항공기 균형'
   db(j) '수요잔고'
   yd(j,h) '탑승 승객 정의'
   bd(j,h) '충돌된 승객의 정의'
   ocd '운영 비용 정의'
   bcd1 '범핑 비용 정의: 버전 1'
   bcd2 '범핑 비용 정의: 버전 2'
   obj '목적 함수';

ab(i)..sum(j, x(i,j)) =l= aa(i);

db(j).. sum(i, p(i,j)*x(i,j)) =g= sum(h$deltb(j,h), y(j,h));

yd(j,h).. y(j,h) =l= sum(i, p(i,j)*x(i,j));

bd(j,h).. b(j,h) =e= dd(j,h) - y(j,h);

ocd..oc =e= sum((i,j), c(i,j)*x(i,j));

bcd1.. bc =e= sum(j, k(j)*(ed(j)-sum(h, gamma(j,h)*y(j,h))));

bcd2.. bc =e= sum((j,h), k(j)*lambda(j,h)*b(j,h));

obj..phi =e= oc + bc;

모델
   alloc1 '항공기 할당 버전 1' / ab, db, ocd, bcd1, obj /
   alloc2 '항공기 할당 버전 2' / ab, yd, bd, ocd, bcd2, obj /;

y.up(j,h) = deltb(j,h);

lp를 사용하여 phi를 최소화하는 alloc1을 해결합니다.

y.l을 표시;

y.up(j,h) = +inf;

lp를 사용하여 phi를 최소화하는 alloc2를 해결합니다.

y.l을 표시;