clearlaksp.gms : 시나리오 축소: ClearLake 연습

설명

운동, p. 44:

클리어 레이크 댐(Clear Lake Dam)은 클리어 레이크(Clear Lake)의 수위를 조절합니다.
드림랜드의 유명한 리조트.  댐 위원회는 다음과 같은 노력을 기울이고 있습니다.
앞으로 4개월 동안 얼마나 많은 물을 방출할지 결정하십시오.
호수는 현재 홍수 단계보다 150mm 아래에 있습니다.  댐은 능력이 있다
매달 수위를 200mm씩 낮추는 것이 필요하지만,
강수량과 증발량이 댐에 영향을 미칩니다.  클리어 근처의 날씨
호수는 매우 가변적입니다.  댐위원회는 월을 나누어
비슷한 날씨를 2개월간 두 블록으로 나눕니다.  각각의 달
블록은 날씨에 대해 동일한 확률을 가지며, 이는 가정됩니다.
서로 독립적입니다.  첫 번째 블록의 매월에는
자연적으로 100mm 증가하는 확률을 1/2로 지정합니다.
수위가 1/4에서 50mm 감소하거나
수위가 250mm 증가합니다.  이 모든 수치는 다음과 같습니다.
댐 방출 없이 수위의 자연적인 변화.  매달
두 번째 블록에서 그들은 1/2의 확률을 갖는 것에 할당합니다.
자연적으로 수위가 150mm 증가하고 확률은 1/4에서
수위가 50mm 증가하거나 350mm 증가합니다.  만약
홍수가 발생하면 피해는 홍수 위의 mm당 $10,000로 평가됩니다.
수준.  수위가 너무 낮으면 물을 수입하는 데 비용이 많이 듭니다.
이러한 비용은 홍수 단계 아래 250mm 미만에서 mm당 $5000입니다.  는
위원회는 먼저 예상되는 비용을 최소화하려는 전반적인 목표를 고려합니다.
비용.  이 모델은 이 첫 번째 목표만 고려합니다.

소형 모델 유형 :SP


카테고리 : 슬롯 EMP 라이브러리


메인 파일 : clearlaksp.gms

$title 시나리오 축소: ClearLake 연습(CLEARLAKSP,SEQ=72)

$onText

운동, p. 44:

클리어 레이크 댐(Clear Lake Dam)은 클리어 레이크(Clear Lake)의 수위를 조절합니다.
드림랜드의 유명한 리조트.  댐 위원회는 다음과 같은 노력을 기울이고 있습니다.
앞으로 4개월 동안 얼마나 많은 물을 방출할지 결정하십시오.
호수는 현재 홍수 단계보다 150mm 아래에 있습니다.  댐은 능력이 있다
매달 수위를 200mm씩 낮추는 것이 필요하지만,
강수량과 증발량이 댐에 영향을 줍니다.  클리어 근처의 날씨
호수는 매우 가변적입니다.  댐위원회는 월을 나누어
비슷한 날씨를 2개월간 두 블록으로 나눕니다.  각각의 달
블록은 날씨에 대해 동일한 확률을 가지며, 이는 가정됩니다.
서로 독립적입니다.  첫 번째 블록의 매월에는
자연적으로 100mm 증가하는 확률을 1/2로 지정합니다.
수위가 1/4에서 50mm 감소하거나
수위가 250mm 증가합니다.  이 모든 수치는 다음과 같습니다.
댐 방출 없이 수위의 자연적인 변화.  매달
두 번째 블록에서 그들은 1/2의 확률을 갖는 것에 할당합니다.
자연적으로 수위가 150mm 증가하고 확률은 1/4에서
수위가 50mm 증가하거나 350mm 증가합니다.  만약
홍수가 발생하면 피해는 홍수 위의 mm당 $10,000로 평가됩니다.
수준.  수위가 너무 낮으면 물을 수입하는 데 비용이 많이 듭니다.
이러한 비용은 홍수 단계 아래 250mm 미만에서 mm당 $5000입니다.  는
위원회는 먼저 예상되는 비용을 최소화하려는 전반적인 목표를 고려합니다.
비용.  이 모델은 이 첫 번째 목표만 고려합니다.

Birge, R 및 Louveaux, FV, 확률론적 프로그래밍 소개.
스프링거, 1997.

$offText

매월 p 강수량 수준 설정 / 낮음, 보통, 높음 /
     t 기간 / 12월, 1월, 2월, 3월, 4월 /;

계절별 deltastoch(t,p) 저수위 변화 데이터 테이블
             낮음 보통 높음
     1월 50일 150 350
     2월 50일 150 350
     3월 -50 100 250
     4월 -50 100 250;

매개변수
     pr(p) 확률분포 / 낮음 0.25, 보통 0.50, 높음 0.25 /
     FloodCost '홍수량 초과 금액에 대한 K$/mm' / 10 /
     lowCost '홍수위 250mm 이하 금액에 대해 K$/mm' / 5 /
     초기수위 /100/
     delta(t) 각 계절에 대한 저수지 수위의 무작위 변화;

변수
     객체 비용
     l(t) 기간 말의 댐 수위
     r(t) mm 정상적으로 해제됨
     f(t) mm 방출된 홍수 물
     z(t) mm의 물 수입;
양의 변수 l, r, f, z;

r.up(t) = 200;
* 수위 l은 수위 아래 250mm를 기준으로 함
l.up(t) = 250;
l.fx('dec') = linit;
delta(t) = sum(p, pr(p)*deltastoch(t,p));

방정식 defobj, ldef(t);

defobj.. obj =e= sum(t$(ord(t)>1),floodCost * f(t) + lowCost * z(t));

ldef(t)$(ord(t)>1)..
        l(t) =e= l(t-1) + delta(t) + z(t) - r(t) - f(t);

모델 mincost / defobj, ldef /;

파일 emp / '%emp.info%' /; emp.nd=2; put emp '* 문제 %슬롯i%';
루프(t$(ord(t)>1),
   put / '스테이지' ord(t):2:0 ' ' l.tn(t) ' ' r.tn(t) ' ' f.tn(t) ' ' z.tn(t) ' ' ldef.tn(t) ' ' delta.tn(t)
   put / 'randvar ' delta.tn(t) ' 이산 ';
   loop(p, put pr(p) deltastoch(t,p)));
닫다;

s 시나리오 설정 / s1*s81 /
매개변수
     s_delta(s,t) 확률변수 구현
     s_l(s,t) 시나리오별 기간 말 댐 수위
     s_r(s,t) mm 시나리오에 따라 정상적으로 릴리스됨
     s_f(s,t) 시나리오에 의해 방출된 홍수의 mm
     s_z(s,t) mm 시나리오에 의해 유입된 물
     s_obj(s) 시나리오별 비용;

dict / s를 설정하십시오.    시나리오.''
            delta.randvar. s_delta
            엘.    수준.   s_l
            r.    수준.   s_r
            에프.    수준.   s_f
            z.    수준.   s_z
            obj.  수준.   s_obj /;

emp 시나리오 dict를 사용하여 mincost min obj를 해결합니다.