turkpow.gms : 터키 전력 계획 모델

설명

이것은 터키 권력을 위한 투자 계획 모델입니다
최소 비용 확장 패턴을 결정하는 섹터입니다.

대형 모델 유형 :LP


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


메인 파일 : turkpow.gms

$title 터키 전력 계획 모델(TURKPOW,SEQ=54)

$onText
이는 터키 전력의 투자 계획 모델입니다.
최소 비용 확장 패턴을 결정하는 부문입니다.

Turvey, R 및 Anderson, D, 8장: 터키의 전력 개발:
선형 프로그래밍을 사용한 사례 연구. 전기 경제학: 에세이
및 사례 연구. 존스 홉킨스 대학교 출판부, 볼티모어 및 런던,
1977.

키워드: 선형 계획법, 투자 계획, 에너지 경제학
$offText

$s타이틀 세트 정의
세트
   시간 '기간' / 1975*2005 /
   te(time) '확장된 시간 범위' / 1975, 1978, 1983, 1988, 1993, 1998, 2005 /
   t(te) '기준연도를 제외한 기간' / 1978, 1983, 1988, 1993, 1998, 2005 /
   b '로드 블록' / 최고, 높음, 중간, 낮음 /
   m '식물 유형' / 수력-1*수력-13, 가스-t, 석유, 갈탄-1*갈탄-3, 핵 /
   mh(m) '수력 단위' / 하이드로-1*하이드로-13 /
   메가 슬롯(m) '열 단위 - 빈티지 포함'
   mc(m) '총 신규 용량에 제한이 있는 열 단위' / 갈탄-1*갈탄-3 /;

별칭 (t,v), (b,bp);
메가 슬롯(m) = mh(m)이 아님;
디스플레이 산;

$s제목 데이터:
'식물 데이터용' 라벨 설정
           / initcap '초기 용량(mw)'
             '운영 가용성'을 이용하세요
             e-fact '수력 발전소의 에너지 인자'
             opcost '운영 비용(mw-년당 밀 tl)'
             opcost-g '연간 운영 비용 감소율(%)'
             capcost '자본 비용(mw당 밀 tl)'
             capcost-g '연간 자본 비용 감소율(%)'
             life '단위의 수명(년)'
             maxcap '최대 용량 - 총 신규 용량(mw)' /;

테이블 mdatah(m,labels) '수력 발전소 데이터'
              initcap avail e-fact opcost capcost 수명 maxcap
* (mw) (밀 tl (밀 tl (년)) (mw)
* mw-yr당) mw당)
   하이드로-1 .9 .4 .09 1.4 50 684
   하이드로-2 .9 .4 .09 4 50 1484
   하이드로-3 .9 .4 .09 6.5 50 844
   하이드로-4 .9 .4 .09 7 50 250
   하이드로-5 1829 .9 .6 .09 3 50 2000
   하이드로-6 .9 .6 .09 6.8 50 814
   하이드로-7 .9 .8 .09 4.3 50 890
   하이드로-8 .9 .4 .09 2.7 50 1366
   하이드로-9 .9 .4 .09 4.6 50 656
   하이드로-10 .9 .4 .09 6.1 50 192
   하이드로-11 .9 .6 .09 3.9 50 1002
   하이드로-12 .9 .6 .09 5.6 50 947
   하이드로-13 .9 .8 .09 6.1 50 81;

테이블 mdatat(m,labels) '화력발전소 데이터'
             initcap avail opcost opcost-g capcost capcost-g life maxcap
* (mw) (밀 tl (%) (밀 tl (%) (년) (mw)
* mw-yr당) mw당)
   가스-t 120 .8 1.7 -.005 2.5 30 +inf
   오일 847 .9 1.1 -.005 4.5 -.01 30 +inf
   갈탄-1 960 .8 .6 -.005 5 -.01 30
   갈탄-2 .8 .2 -.005 7 -.01 30 2500
   갈탄-3 .8 .2 -.005 7 -.01 30 3500
   핵 .8 .3 -.005 9 -.02 30 +inf;

매개변수
   hlo(m,te) '하한: 수력 단위 팽창(mw)'
             / 하이드로-4.1978 250 /
   hup(m,te) '상한: 수력 단위 확장(mw)'
             / (하이드로-1*하이드로-3, 하이드로-5*하이드로-7).(1978,1983) inf
               (하이드로-1*하이드로-13).(1988,1993,1998,2005) inf
                하이드로-4.1978 250 /
   tlo(m,te) '하한: 열 단위 팽창(mw)'
             / 가스-t.1983 100, 가스-t.1988 200, 가스-t.1993 360
               가스-t.1998 600, 가스-t.2005 1600 /;

테이블 tup(m,te) '열 단위 팽창의 상한(mw)'
                              1978년 1983년 1988년 1993년 1998년 2005년
   가스티 230 390 650 1110 1580 3580
   핵 600 2500 5000 10000 inf
   갈탄-3 inf inf inf inf
   (석유,갈탄-1,갈탄-2) inf inf inf inf inf inf;

테이블 dd(b,*) '1975년 수요 데이터'
* 참고자료에서 표에 제시된 데이터는 실제로 두 세트의 성장을 사용합니다.
* 미래 수요를 결정하기 위한 요율이며 본문에 명시된 요율이 아닙니다. 여기서는
* 단일 성장률(연 11%)을 사용함.
            기간 수요
* 연간 시간) (mw)
   피크 526 3365
   높음 2540 2550
   중간 3066 2050
   낮음 2628 1520;

스칼라
   rho '이자율' / .11 /
   prr '피크 예치금 요구량(%)' / .05 /
   r '최대 총 수력 용량' / .5 /
   g '수요 증가율(연간 %)' / .11 /;

매개변수
   length(time) '기준 연도와의 거리'
   d(b,te) '블록별 전력 수요(mw)'
   dur(b) '블록 로드 기간(연도의 일부)'
   opcostt(m,v,t) '열 장치 운영 비용(mw-yr당 백만 tl)'
   capcostt(m,v,t) '열 단위에 대한 자본 비용(mw당 백만 tl)'
   시그마(m) '자본 회수율'
   delta(t) '할인 요소'
   bs(b,b) '로드 순서 행렬'
   vs(t,v) '빈티지 시간 행렬'
   kit(m,v) '열 단위의 초기 용량(mw)';

길이(시간) = ord(시간) - 1;
bs(b,bp) = (ord(b) >= ord(bp));
vs(t,v) = (ord(t) >= ord(v));
opcost(m,v,t)$vs(t,v) = mdatat(m,"opcost")* (1 + mdatat(m,"opcost-g"))**length(v);
capcostt(m,v,t)$vs(t,v) = mdatat(m,"capcost")*(1 + mdatat(m,"capcost-g"))**length(v);

d(b,te) = round(dd(b,"수요")*(1 + g)**길이(te),0);
dur(b) = sum(bp$bs(b,bp), dd(bp,"기간"))/sum(bp, dd(bp,"기간"));
델타(t) = (1 + rho)**(-길이(t));
sigma(메가 슬롯) = rho/(1 - (1 + rho)**(-mdatat(메가 슬롯,"생명")));
시그마(mh) = rho/(1 - (1 + rho)**(-mdatah(mh,"생명")));
kit(메가 슬롯,"1978") = mdatat(메가 슬롯,"initcap");

디스플레이 길이, bs, vs, opcostt, capcostt, dd, d, dur, delta, sigma;

$sTitle 모델 정의
변수
   phi '총 할인 비용(백만 TL)'
   phic(te) '자본 요금(백만 tl)'
   phio(te) '운영 비용(백만 TL)'
   hh(m,te) '추가 용량: 수력 단위(mw)'
   ht(m,v) '추가 용량: 열 단위(mw)'
   htt(m) '추가 용량: 시간 경과에 따른 총 열 단위(mw)'
   zh(m,b,t) '전력 출력: 수력(mw)'
   zt(m,v,b,t) '전력 출력: 열(mw)';

양수 변수 zh, zt, hh, ht;

방정식
   db(b,te) '수요수지(mw)'
   pr(te) '피크 및 예비 요구 사항(mw)'
   cch(m,te) '용량 제약: 수력(mw)'
   cct(m,v,te) '용량 제약: 열(mw)'
   ech(m,te) '수력 에너지 제약 조건(mw-yr)'
   hcc(te) '수력 용량 제약(mw)'
   rch(m) '자원 제약: 수력발전소의 최대 신규 용량(mw)'
   cat(m) '용량 계산: 단위당 총 신규 용량(mw)'
   ak(te) '회계: 자본 부과금(백만 TL)'
   ao(te) '회계: 운영 비용(백만 TL)'
   obj '총 할인 비용(백만 TL)';

db(b,t).. 합계(bp$bs(bp,b), 합계(mh, zh(mh,bp,t))
           + 합계((메가 슬롯v)$vs(t,v), zt(메가 슬롯v,bp,t))) =g= d(b,t);

pr(t).. sum(mh, mdatah(mh,"avail")*(mdatah(mh,"initcap") + sum(v$vs(t,v), hh(mh,v))))
           + sum(메가 슬롯, mdatat(메가 슬롯,"avail")*sum(v$vs(t,v), kit(메가 슬롯v) + ht(메가 슬롯v)))
          =g= (1 + prr)*d("피크",t);

cch(mh,t).. sum(b, zh(mh,b,t)) =l= mdatah(mh,"avail")*(mdatah(mh,"initcap")
                                  + 합계(v$vs(t,v), hh(mh,v)));

cct(메가 슬롯v,t)$vs(t,v)..
              sum(b, zt(메가 슬롯v,b,t)) =l= mdatat(메가 슬롯,"avail")*(kit(메가 슬롯v) + ht(메가 슬롯v));

ech(mh,t).. sum(b, dur(b)*zh(mh,b,t)) =l= mdatah(mh,"e-fact")*( mdatah(mh,"initcap")
                                         + 합계(v$vs(t,v), hh(mh,v)));

hcc(t).. sum(mh, mdatah(mh,"initcap") + sum(v$vs(t,v), hh(mh,v))) =l= r*d("peak",t);

rch(mh)..sum(t, hh(mh,t)) =l= mdatah(mh,"maxcap");

cat(메가 슬롯)..htt(메가 슬롯) =e= sum(v, ht(메가 슬롯v));

ak(t).. phic(t) =e= sum(mh, sigma(mh)*mdatah(mh,"capcost")*sum(v$vs(t,v), hh(mh,v)))
                 + 합계(메가 슬롯, 시그마(메가 슬롯)*sum(v, capcost(메가 슬롯v,t)*ht(메가 슬롯v)));

ao(t).. phio(t) =e= sum(mh, mdatah(mh,"opcost")*sum(b, dur(b)*zh(mh,b,t)))
                 + sum((메가 슬롯v)$vs(t,v), opcostt(메가 슬롯v,t)*sum(b, dur(b)*zt(메가 슬롯v,b,t)));

obj..phi =e= sum(t, delta(t)*(phic(t) + phio(t)));

hh.lo(mh,t) = hlo(mh,t);
hh.up(mh,t) = hup(mh,t);
ht.lo(메가 슬롯t) = tlo(메가 슬롯t);
ht.up(메가 슬롯t) = tup(메가 슬롯t);
htt.up(메가 슬롯) = mdatat(메가 슬롯,"maxcap");

모델 칠면조/모두/;

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

$s제목 보고서
매개변수 보고서 '요약 보고서';

기록/전력, 용량, 기간, 에너지, e-한도, 운영 비용/설정;

보고서(메가 슬롯b,t) = 합계(v, zt.l(메가 슬롯v,b,t));
보고서(mh,b,t) = zh.l(mh,b,t);
보고("전력",b,t) = d(b,t);
Report("기간",b,t) = dur(b);
Report("전력","전력",t) = sum(b, Report("전력",b,t));
보고(m,"전력",t) = 합계(b, 보고(m,b,t));
보고서(메가 슬롯,"용량",t) = sum(v$vs(t,v), 키트(메가 슬롯v) + ht.l(메가 슬롯v));
보고서(mh,"용량",t) = mdatah(mh,"initcap") + sum(v$vs(t,v), hh.l(mh,v));
Report("에너지",b,t) = Report("전력",b,t)*report("지속 시간",b,t);
보고서("에너지","에너지",t) = sum(b, 보고서("에너지",b,t));
보고서(m,"에너지",t) = sum(b, dur(b)*report(m,b,t));
report(mh,"e-limit",t) = report(mh,"용량",t)*mdatah(mh,"e-fact");
report(mh,"op-cost",t) = report(mh,"에너지",t)*mdatah(mh,"opcost");
보고서(메가 슬롯,"op-cost",t) = sum(v$vs(t,v), opcostt(메가 슬롯v,t)*sum(b, dur(b)*zt.l(메가 슬롯v,b,t)));
report("op-cost","op-cost",t) = sum(m, report(m,"op-cost",t));
report("op-cost",b,t) = sum(mh, dur(b)*mdatah(mh,"opcost")*zh.l(mh,b,t))
                              + sum((메가 슬롯v)$vs(t,v), dur(b)*opcostt(메가 슬롯v,t)*zt.l(메가 슬롯v,b,t));

hh.l, ht.l, 보고서를 표시합니다.