설명
이 예는 다중 목표 발전 모델을 해결하는 방법을 보여줍니다. 모델 라이브러리의 EPSCM을 기반으로 합니다. 키워드: 다중 목표 최적화, 발전
카테고리 : 피망 슬롯 데이터 유틸리티 라이브러리
메인 파일 : moo02.gms 포함: moo02.gms
$title 다목적 발전 모델 풀기 (moo02,SEQ=152)
$onText
이 예에서는 다목적 발전 모델을 해결하는 방법을 보여줍니다.
모델 라이브러리의 EPSCM을 기반으로 합니다.
키워드: 다목적 최적화, 발전
$offText
$inlineCom [ ]
$설정되지 않은 경우 NBOBJ $set NBOBJ 2
$설정되지 않은 경우 METHOD $set METHOD 샌드위치
세트
p '발전 장치' / 갈탄, 석유, 가스, RES /
i '부하 영역' / 베이스, 중간, 피크 /
pi(p,i) '하중 유형에 대한 단위 가용성' / 갈탄.(기본,중간)
Oil.(중간,피크), Gas.set.i
RES.(기본, 피크) /
es(p) '내인성 배출원' / 갈탄, RES /
k '목적함수' / 비용, CO2 배출, 내생적 /
포인트 '파레토 포인트' / point1*point1000 /;
$세트 최소 -1
$set 최대 +1
매개변수 dir(k) '최대값의 경우 목적 함수 1, 최소값의 경우 -1의 방향'
/ 비용 %min%, CO2배출량 %min%, 내생적 %max% /
pareto_obj(points,k) '파레토 포인트의 객관적인 값';
pheader/용량, 비용, CO2배출량/을 설정합니다.
테이블 pdata(pheader,p)
갈탄 석유 가스 RES
용량 [GWh] 61000 25000 42000 20000
비용 [$/MWh] 30 75 60 90
CO2배출량 [t/MWh] 1.44 0.72 0.45 0;
매개변수
광고 '연간 수요(GWh)' / 64000 /
df(i) '부하 유형에 대한 수요 비율' / 기본 0.6, 중간 0.3, 피크 0.1 /
수요(i) '부하 유형에 대한 수요(GWh)';
수요(i) = ad*df(i);
변수
z(k) '목적 함수 변수';
양수 변수
x(p,i) '부하 면적 단위의 생산 수준(GWh)';
방정식
objcost '비용을 K$로 최소화하는 목표'
objco2 'Kt의 CO2 배출 최소화 목표'
목표 'GWh의 내생적 자원을 극대화하기 위한 목표'
defcap(p) '용량 제약'
defdem(i) '요구 만족';
objcost.. sum(pi(p,i), pdata('cost',p)*x(pi)) =e= z('cost');
objco2.. sum(pi(p,i), pdata('CO2emission',p)*x(pi)) =e= z('CO2emission');
객체.. sum(pi(es,i), x(pi)) =e= z('내생적');
defcap(p).. sum(pi(p,i), x(pi)) =l= pdata('용량',p);
defdem(i).. sum(pi(p,i), x(pi)) =g= 수요(i);
모델 예 / 모두 /;
kk(k) '활성 목적 함수'를 설정합니다.
kk(k) = 그렇습니다;
$if %NBOBJ%==2 kk('내생적') = 아니요;
$onEcho > cplex.opt
스레드 1
$offEcho
$libInclude moo %METHOD% 예 LP kk dir z 포인트 pareto_obj -iterations=20 -gridpoints=5 -savepoint=1 -savepoint_filename= -savepoint_dir=savepoints -solver=cplex -optfile_init=1 -optfile_main=1
'gdxmerge savepoints%system.DirSep%*.gdx > %system.NullFile%'을 실행합니다.
pareto_obj 표시;