설명
다음 2단계 문제는 최적의 값을 결정하는 것으로 구성됩니다. 이를 충족시키기 위해 다양한 유형의 발전소에 용량 투자 다음 기간에는 전기가 필요합니다. 4개의 발전소가 고려됩니다. 세 가지 모드로 작동할 수 있습니다. 차기 수요 세 가지 모드가 각각 충족되어야 합니다. 예산이 있다 제약 조건 및 최소 총 용량에 대한 제약 조건도 있습니다.
소형 모델 유형 :LP
카테고리 : 슬롯 사이트 추천 모델 라이브러리
메인 파일 : lands.gms
$title 최적의 투자 (LANDS,SEQ=188)
$onText
다음 2단계 문제는 최적을 결정하는 것으로 구성됩니다.
이를 충족시키기 위해 다양한 유형의 발전소에 용량 투자
다음 기간에는 전기가 필요합니다. 4개의 발전소가 고려됩니다.
세 가지 모드로 작동할 수 있습니다. 차기수요
세 가지 모드가 각각 충족되어야 합니다. 예산이 있다
제약 조건과 최소 총 용량에 대한 제약 조건도 있습니다.
Louveaux, F V 및 Smeers, Y, 전기에 대한 최적의 투자
생성: 확률론적 모델과 테스트 문제. 에서
Ermoliev, Y 및 Wets, RJ, Eds, 수치 기법
확률적 최적화 문제. 스프링거 출판사, 1988,
445-452쪽.
이 문제는 두 단계로 해결되며 각 시나리오를 해결합니다.
별도로 그리고 세 가지 시나리오를 모두 함께 사용합니다.
키워드: 선형계획법, 투자계획, 확률론적 계획법,
발전
$offText
세트
i '발전소 유형' / plant-1*plant-4 /
j '작동 모드' / 모드-1*모드-3 /;
매개변수
c(i) '투자비' / 공장-1 10, 공장-2 7, 공장-3 16, 공장-4 6 /
d(j) '에너지 수요' / 모드-1 na, 모드-2 3, 모드-3 2 /;
표 f(i,j) '운영 비용'
모드-1 모드-2 모드-3
공장-1 40 24 4
2공장 45 27 4.5
3공장 32 19.2 3.2
식물-4 55 33 5.5;
스칼라
m '최소 설치 용량' / 12 /
b '예산 한도' / 120 /;
변수
x(i) '설치된 용량'
y(i,j) '운영 수준'
비용 '총 비용';
양수 변수 x, y;
방정식
defcost '총 비용의 정의'
mincap '최소 설치 용량'
bbal '예산 제약'
powbal(i) '파워 밸런스'
dembal(j) '수요 잔액';
defcost.. 비용 =e= sum(i, c(i)*x(i)) + sum((i,j), f(i,j)*y(i,j));
mincap..sum(i, x(i)) =g= m;
bbal..sum(i, c(i)*x(I)) =l= b;
powbal(i)..sum(j, y(i,j)) =l= x(i);
dembal(j)..sum(i, y(i,j)) =g= d(j);
모델 det / all /;
s '노드' / s-1*s-3 /를 설정합니다.
매개변수
dvar(들) / s-1 3, s-2 5, s-3 7 /
문제 / s-1 .3, s-2 .4, s-3 .3 /
'시나리오 보고서'를 대표합니다.
루프(들,
d('모드-1') = dvar(들);
lp를 사용하여 비용을 최소화하는 문제를 해결합니다.
repdet('cost',s) = 비용.l;
repdet(i,s) = x.l(i);
repdet('prob',s) = prob(들);
det.solPrint = %solPrint.quiet%;
);
* 모델을 확률적으로 만듭니다.
매개변수 ds(j,s) '확률적 수요';
양수 변수 ys(i,j,s) '운영 수준';
방정식
defcosts '총 비용의 정의'
powbals(i,s) '전력 균형'
dembals(j,s) '수요 잔고';
defcosts.. 비용 =e= sum(i, c(i)*x(i)) + sum((i,j,s), prob(s)*f(i,j)*ys(i,j,s));
powbals(i,s)..sum(j, ys(i,j,s)) =l= x(i);
dembals(j,s)..sum(i, ys(i,j,s)) =g= ds(j,s);
모델 stoc / defcosts, mincap, bbal, powbals, dembals /;
ds(j,s) = d(j);
ds('mode-1',s) = dvar(s);
lp를 사용하여 비용을 최소화하는 stoc을 해결합니다.
repdet('cost','hedge') = 비용.l;
repdet(i,'hedge') = x.l(i);
담당자 표시;