설명
이 모델의 목적은 항공기를 경로에 할당하여 최대화하는 것입니다.
교통수요가 불확실할 때 예상되는 이익. 세 가지 다른
공식이 제시됩니다:
원래의 람다 공식
샘플링을 사용한 확률론적 등가물
모든 시나리오에 대한 확률론적 동등성
대형 모델 유형 :LP
카테고리 : 슬롯 머신 모델 라이브러리
메인 파일 : airsp.gms
$title 항공기 할당 - 확률적 최적화(AIRSP,SEQ=189)
$onText
이 모델의 목적은 항공기를 경로에 할당하여 최대화하는 것입니다.
교통수요가 불확실할 때 예상되는 이익. 세 가지 다른
공식이 제시됩니다:
* 원래의 람다 공식
* 샘플링과 확률론적 등가물
* 모든 시나리오에 대한 확률론적 등가물
Dantzig, GB, 28장. 선형 프로그래밍 및 확장.
프린스턴 대학 출판부, 뉴저지주 프린스턴, 1963년.
키워드: 선형 계획법, 확률론적 계획법, 항공기 할당, 경로 지정
$offText
세트
i '항공기 유형 및 미지정 승객' / a, b, c, d /
j '할당된 경로와 할당되지 않은 경로' / Route-1*route-5 /
h '수요 상태' / 1*5 /
ss '노드' / s1*s1000 /
s(ss) '실제 ord 임시 노드'
ij(i,j) '가능한 할당'
jh(j,h) '가능한 수요 상태';
별칭(h,hp,h1,h2,h3,h4,h5);
테이블 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, (route-3,route-4) 7, Route-5 1 /
ed(j) '예상 수요'
deltb(j,h) '증분 수요'
gamma(j,h) '수요 세그먼트 확률'
drand(j,ss) '샘플링된 수요'
Sample(j) '표본 평균'
숫자 '임시 값'
prob(ss) '시나리오 확률'
probxx '임시 확률 값';
ij(i,j) = p(i,j);
jh(j,h) = 람다(j,h);
ed(j) = sum(h, 람다(j,h)*dd(j,h));
deltb(jh(j,h)) = dd(j,h) - dd(j,h-1);
감마(j,h) = sum(hp$(ord(hp) >= ord(h)), 람다(j,hp));
deltb, 감마, ed를 표시합니다.
양수 변수
x(i,j) '경로 j에 할당된 항공기 유형 i의 수'
z(j) '할당된 용량'
bh(j,h) '승객들이 부딪혔습니다'
bs(j,ss) '승객 충돌';
변수
파이 '총 예상 비용'
oc '운영 비용';
방정식
ab(i) '항공기 균형'
cb(j) '용량 균형'
dbh(j,h) '수요 잔고'
dbs(j,ss) '수요 잔액'
ocd '운영 비용 정의'
objh '목적 함수'
objs '목적 함수';
ab(i).. sum(ij(i,j), x(ij)) =l= aa(i);
cb(j).. z(j) =e= sum(ij(i,j), p(ij)*x(ij));
dbh(j,h)..dd(j,h) - bh(j,h) =l= z(j);
dbs(j,s)..drand(j,s) - bs(j,s) =l= z(j);
ocd..oc =e= sum((i,j), c(i,j)*x(i,j));
objh .. phi =e= oc + sum(j, k(j)*sum(jh(j,h), 람다(j,h)*bh(j,h)));
objs..phi =e= oc + sum(j, k(j)*sum(s, prob(s)*bs(j,s)));
모델
alloch '항공기 할당' / ab, cb, dbh, ocd, objh /
allocs '항공기 할당' / ab, cb, dbs, ocd, objs /;
옵션 limCol = 0, limRow = 0, solPrint = off;
매개변수 담당자 '빠른 보고서';
lp를 사용하여 phi를 최소화하는 alloch를 해결합니다.
rep(i,j,'alloch') = x.l(i,j);
담당자('ev',' ','alloch') = phi.l;
* 일정 크기의 샘플 설정
s(ss) = (ord(ss) <= 100);
루프((j,s),
숫자 = 균일(0,1);
drand(j,s) = sum(jh(j,h)$(num < gamma(jh)), deltb(j,h));
);
확률 = 1/카드;
샘플(j) = 합계(s, drand(j,s))/카드(들);
디스플레이 샘플;
lp를 사용하여 phi를 최소화하는 할당을 해결합니다.
담당자(i,j,'allocs') = x.l(i,j);
담당자('ev',' ','allocs') = phi.l;
* 모든 시나리오를 열거
확률 = 0;
s(ss) = 아니오;
s('s1') = 예;
루프((h1,h2,h3,h4,h5),
probxx = 람다('route-1',h1)
* 람다('경로-2',h2)
* 람다('경로-3',h3)
* 람다('경로-4',h4)
* 람다('경로-5',h5);
만약(probxx,
drand('경로-1',s) = dd('경로-1',h1);
drand('경로-2',s) = dd('경로-2',h2);
drand('경로-3',s) = dd('경로-3',h3);
drand('route-4',s) = dd('route-4',h4);
drand('route-5',s) = dd('route-5',h5);
prob(들) = probxx;
* s(ss) = s(ss-1) 보기에는 좋지만 매우 느립니다.
s(ss+1)$s(ss) = 예;
s(ss-1)$s(ss) = 아니요;
);
);
s(ss) = 확률(ss);
lp를 사용하여 phi를 최소화하는 할당을 해결합니다.
rep(i,j,'allocss') = x.l(i,j);
담당자('ev',' ','allocss') = phi.l;
디스플레이 담당자;