airsp2.gms : 항공기 할당 - DECIS를 사용한 슬롯 사이트적 최적화

설명

이 모델의 목적은 항공기를 경로에 할당하여 최대화하는 것입니다.
교통수요가 불확실할 때 예상되는 이익. 몇 가지 문제
표준 LP 솔버와 DECIS를 사용하여 해결됩니다.
  - 고정 수요
  - 기대값
  - 결정론적 등가물

샘플링을 통한 DECIS 공식화
  - 정확한(결정론적 등가)
  - 기대값

AIRCRAFT 및 AIRSP 모델도 참조하세요.

대형 모델 유형 :데시스 lp


카테고리 : 슬롯 사이트 모델 라이브러리


메인 파일 : airsp2.gms

$title 항공기 할당 - DECIS를 사용한 슬롯 사이트론적 최적화(AIRSP2,SEQ=196)

$onText
이 모델의 목적은 항공기를 경로에 할당하여 최대화하는 것입니다.
교통수요가 불확실할 때 예상되는 이익. 몇 가지 문제
표준 LP 솔버와 DECIS를 사용하여 해결됩니다.
  - 고정 수요
  - 기대값
  - 결정론적 등가물

샘플링을 통한 DECIS 공식화
  - 정확한(결정론적 등가)
  - 기대값

AIRCRAFT 및 AIRSP 모델도 참조하세요.

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

키워드: 선형 계획법, 슬롯 사이트론적 계획법, 항공기 할당, 경로 지정
$offText

$decisalg가 설정되지 않은 경우 $set decisalg decism

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

표 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;

테이블 pcap(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;

매개변수
   항공기(i) '항공기 가용성'
                  / 10
                    b 19
                    c 25
                    일 15 /
   fixeddemand(j) '고정 수요(수백 명의 승객)'
                  /루트-1 250
                    루트-2 120
                    루트-3 180
                    루트-4 90
                    루트-5 600 /
   costbumped(j) '승객 충돌과 관련된 비용'
                  /루트-1 13
                    루트-2 13
                    루트-3 7
                    루트-4 7
                    경로-5 1 /;

*-------------------------------------------------------
* 먼저 "고정 수요"(결정적 수요) 사례를 해결합니다.
* Dantzig는 약간 다른 최적 솔루션을 보고합니다.
* 이 문제에 대해서는 583페이지의 표 28-2-II를 참조하세요. 해결 방법
* 약간 실행 불가능하다고 보고되었습니다.
*-------------------------------------------------------
양수변수
   x(i,j) '경로 j에 할당된 항공기 유형 i의 수'
   umped(j) '승객들이 부딪혔습니다';

변수 z '목적변수';

방정식
   avail(i) '항공기 가용성 제약'
   수요(j) '수요 제약'
   비용 '객관적';

비용.. z =e= sum((i,j), c(i,j)*x(i,j)) + sum(j, costbumped(j)*bumped(j));

avail(i)..sum(j, x(i,j)) =l= 항공기(i);

수요(j).. sum(i, pcap(i,j)*x(i,j)) + 범프(j) =g= 고정수요(j);

모델 고정 / 비용, 가용성, 수요 /;

z를 최소화하는 lp를 사용하여 고정 문제를 해결합니다.

매개변수
   results(*,i,j) '1단계 결과'
   obj(*);

results('고정 수요',i,j) = x.l(i,j);
obj('고정 수요') = z.l;

*-------------------------------------------------------
* 이제 슬롯 사이트론적 수요를 도입하세요.
*-------------------------------------------------------
옵션 limCol = 0, limRow = 0;

k '가능한 결과' 설정 / k1*k5 /;

테이블 stochasticdemand(j,k) '경로 j의 수요 분포'
              k1 k2 k3 k4 k5
   노선-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,k) 'sd(j,k)에 해당하는 슬롯 사이트'
             k1 k2 k3 k4 k5
   루트-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 ;

*-------------------------------------------------------
* 기대값 문제를 직접 해결합니다. 수요의 기대값은
* 고정수요와는 약간 다릅니다.
*-------------------------------------------------------
매개변수 expdemand(j) '예상값 수요';
expdemand(j) = sum(k, 슬롯 사이트(j,k)*슬롯 사이트적 수요(j,k));

디스플레이 수요, 고정 수요;

방정식 expvaldemand(j);

expvaldemand(j).. sum(i, pcap(i,j)*x(i,j)) + 범프(j) =g= expdemand(j);

모델 expval / 비용, avail, expvaldemand /;

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

results('기대값 문제',i,j) = x.l(i,j);
obj('기대값 문제') = z.l;

결과 표시;

*-------------------------------------------------------
* 결정론적 등가 문제 해결
* 750개의 시나리오가 있습니다.
*-------------------------------------------------------
s '시나리오' / scen1*scen750 /;

별칭(k,k1,k2,k3,k4,k5);

ss' '보조 세트'를 설정합니다.

스칼라
   jprob '공동 슬롯 사이트'
   cnt '카운터';

매개변수
   scenprob(s) '시나리오 슬롯 사이트'
   scendemand(s,j) '시나리오 s에서 경로 j에 대한 수요';

CNT = 0;
루프((k1,k2,k3,k4,k5),
   jprob = 슬롯 사이트('경로-1',k1)*슬롯 사이트('경로-2',k2)
         * 슬롯 사이트('경로-3',k3)*슬롯 사이트('경로-4',k4)
         * 슬롯 사이트('경로-5',k5);
   if(jprob,
      CNT = CNT + 1;

* ss를 현재 요소로 설정
      ss(들) = 아니요;
      ss(s)$(ord(s) = cnt) = 예;

      scenprob(ss) = jprob;
      scendemand(ss,'route-1') = 슬롯 사이트적 수요('route-1',k1);
      scendemand(ss,'route-2') = 슬롯 사이트적 수요('route-2',k2);
      scendemand(ss,'route-3') = 슬롯 사이트적 수요('route-3',k3);
      scendemand(ss,'route-4') = 슬롯 사이트적 수요('route-4',k4);
      scendemand(ss,'route-5') = 슬롯 사이트적 수요('route-5',k5);
   );
);

스칼라 합계;
sumprob = sum(s,scenprob(s));

디스플레이 섬프;

abort$(abs(sumprob - 1) > 0.001) "슬롯 사이트 오류";

양수 변수 scenbumped(s, j) '시나리오 s에서 충돌한 승객';

Variable capacityuse(j) '0이 아닌 수를 줄이기 위한 중간 변수';

방정식
   데테코브
   deteq수요(s,j)
   defcap(j);

deteqobj .. z =e= sum((i,j), c(i,j)*x(i,j))
               + sum(s, scenprob(s)*sum(j, costbumped(j)*scenbumped(s,j)));

* deteqdemand(s,j).. sum(i, pcap(i,j)*x(i,j)) + scenbumped(s,j) =g= scendemand(s,j);
* 위 공식은 직관적이지만 다음에 대해 sum(i, pcap(i,j)*x(i,j))를 반복합니다.
* 매 s마다 중간 변수 capacityuse를 대신 도입합니다.

deteqdemand(s,j)..capacityuse(j) + scenbumped(s,j) =g= scendemand(s,j);

defcap(j)..capacityuse(j) =e= sum(i, pcap(i,j)*x(i,j));

모델 deteq / deteqobj, avail, deteqdemand, defcap /;

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

results('결정론적 등가',i,j) = x.l(i,j);
obj('결정론적 등가') = z.l;

*-------------------------------------------------------
* 슬롯 사이트론적 파일 출력
*-------------------------------------------------------
파일 stg / MODEL.STG /;
stg "INDEP DISCRETE"/를 넣습니다.
loop((j,k)$probability(j,k), put "RHS 수요 ",j.tl," ",stochasticdemand(j,k)," PERIOD2 ",probability(j,k)/;);
넣어닫다;

$onText
MODEL.STG 파일은 다음과 같습니다.

독립적인 이산형
RHS 수요경로-1 200.00 PERIOD2 0.20
RHS 수요경로-1 220.00 PERIOD2 0.05
.
.
RHS 수요 경로-5 600.00 PERIOD2 0.80
RHS 수요 경로-5 620.00 PERIOD2 0.10
$offText

*-------------------------------------------------------
* 단계 정의
*-------------------------------------------------------
x.stage(i,j) = 1;
범프.스테이지(j) = 2;
avail.stage(i) = 1;
수요.단계(j) = 2;

*-------------------------------------------------------
* MINOS 옵션 파일 출력
*-------------------------------------------------------
파일 정리 / MINOS.SPC /;
걸레를 씌우다;
"시작"을 입력하세요/;
"행 250"을 입력하세요/;
"열 250"을 입력하세요/;
"요소 10000"을 넣습니다/;
"끝"을 입력하세요/;
넣어닫다;

*-------------------------------------------------------
* 슬롯 사이트론적 모델을 풀다
*-------------------------------------------------------
옵션 lp = %decisalg%;

z를 최소화하는 lp를 사용하여 고정 문제를 해결합니다.
results('DECIS 기본 샘플링',i,j) = x.l(i,j);
obj('DECIS 기본 샘플링') = z.l;

*-------------------------------------------------------
* DECIS가 모델을 정확하게 해결하도록 하세요.
* 슬롯 사이트론적 우주 옵션: 4 "ISTRAT"
*-------------------------------------------------------
파일 decept / %decisalg%.opt /;
디셉트를 넣어;
'4 "ISTRAT"'를 입력하세요/;
넣어닫다;

고정.opt파일 = 1;
z를 최소화하는 lp를 사용하여 고정 문제를 해결합니다.

results('DECIS 우주 문제',i,j) = x.l(i,j);
obj('DECIS 우주 문제') = z.l;

*-------------------------------------------------------
* DECIS를 사용하여 기대값 문제 해결
*-------------------------------------------------------
디셉트를 넣어;
'1 "ISTRAT"'를 입력하세요/;
넣어닫다;

옵션 lp = %decisalg%;

z를 최소화하는 lp를 사용하여 고정 문제를 해결합니다.

results('DECIS 기대값 문제',i,j) = x.l(i,j);
obj('DECIS 기대값 문제') = z.l;

옵션 obj:2:0:1;
디스플레이 객체;

옵션 결과:2:1:2;
결과 표시;