目录
一、按等耗量微增率原则分配发电厂负荷
1.1 算例
1.2 原理
1.3 编程思路
二、按照等报价策略分配负荷
2.1 算例
2.2 原理
2.3 编程思路
三、Matlab代码实现
某发电厂的机组耗量特性及相关参数见表1,系统给定24小时荷见表2,试按等微增率原则分配该发电厂24小时的负荷。
表1 发电厂的机组耗量特性及相关参数
机组 |
a |
b |
c |
Pmin/MW |
Pmax/MW |
1 |
0.000786 |
0.27 |
8.00 |
30 |
100 |
2 |
0.000792 |
0.3 |
5.0 |
20 |
80 |
3 |
0.000764 |
0.28 |
6.4 |
25 |
120 |
4 |
0.000270 |
0.2657 |
20 |
50 |
150 |
5 |
0.000424 |
0.308 |
5.8 |
50 |
150 |
6 |
0.001020 |
0.28 |
3.0 |
15 |
60 |
7 |
0.000578 |
0.2529 |
9.8 |
120 |
320 |
8 |
0.000296 |
0.2427 |
16.4 |
75 |
200 |
9 |
0.000254 |
0.2791 |
21.00 |
250 |
520 |
10 |
0.000522 |
0.2700 |
14.40 |
75 |
280 |
表2 系统给定负荷
时间 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
负荷/MW |
1022 |
963 |
978 |
993 |
1037 |
1066 |
1095 |
1124 |
时间 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
负荷/MW |
1138 |
1154 |
1182 |
1197 |
1242 |
1271 |
1314 |
1372 |
时间 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
负荷/MW |
1314 |
1271 |
1285 |
1290 |
1372 |
1459 |
1459 |
1081 |
我们知道每小时消耗量总和=。为各发电机组每小时消耗量,同时满足为各时间段的负荷总量,这就是约束条件。
由此可以建立拉格朗日目标函数。
使消耗量最小化的条件是使L最小化,即对L求偏导=0,推出
其中df/dp即为耗量微增率,所以满足等耗量微增率。又,所以耗量微增率
根据等耗量微增率原则以及总负荷量的约束条件,可列出以下方程式组:
求解上述方程式组可得出P1~P10的初步结果,但由于每台发电机组有最大和最小出力的限制,因此对于上述的初步结果应当进行验证,当1台越限时,用它的边界值代替它的初步结果值,当有多台越限时,首先判断这些越限机组中最大的a值,再取a值最大的机组用它的边界值代替它的初步结果值,从以上可以看出无论1台还是多台越限第一次验证只改变1台越限机组的初步结果,因此将改变初步结果值的越限机组所对应的上述方程改为-bn*Pn/m=-bn,其中m为该机组所对应的边界值,显然Pn即=m,其它方程不变,还是11个方程解11个未知数,求得结果再进行第2次,第3次......反复验证,直到所有发电机组的功率全部在最大和最小出力的限制范围内,最后求出每个小时所对应的所有机组的总消耗量,验证程序结束,最后显示1~24小时内每个时间点的各个发电的出力,等耗量微增率以及总消耗量。
各发电厂的报价函数及相关参数见表1,系统给定24小时负荷见表2,试按等报价法确定各发电厂24小时的交易计划(出力及价格)。
表1 各发电厂的报价函数系数及技术参数(f=api+b)
电厂 |
a |
b |
Pmin/MW |
Pmax/MW |
1 |
0.000786 |
0.27 |
30 |
100 |
2 |
0.000792 |
0.3 |
20 |
80 |
3 |
0.000764 |
0.28 |
25 |
120 |
4 |
0.000270 |
0.2657 |
50 |
150 |
5 |
0.000424 |
0.308 |
50 |
150 |
6 |
0.001020 |
0.28 |
15 |
60 |
7 |
0.000578 |
0.2529 |
120 |
320 |
8 |
0.000296 |
0.2427 |
75 |
200 |
9 |
0.000254 |
0.2791 |
250 |
520 |
10 |
0.000522 |
0.2700 |
75 |
280 |
表2 系统给定负荷
时间 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
负荷/MW |
1022 |
963 |
978 |
993 |
1037 |
1066 |
1095 |
1124 |
时间 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
负荷/MW |
1138 |
1154 |
1182 |
1197 |
1242 |
1271 |
1314 |
1372 |
时间 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
负荷/MW |
1314 |
1271 |
1285 |
1290 |
1372 |
1459 |
1459 |
1081 |
部分代码:
function ans =jiaoyanjieguo(jizucanshu,D,A,geidingfuhe,time)%初步结果进行验证,使各机组功率均在范围内,
%输出为11行1列的数组,数据包括各机组功率和总耗量
h=0;%标志位,当有越限时,h值为越限机组中a值最大的机组号
l=0;%所有越限机组中最大的a值
m=0;%a值最大的机组的边界值
for i=1:10%对第一到第十的机组验证,若有越限,找出a值最大的机组,把机组号赋值给h,最大的斜率a赋值给l,边界值赋值给m
if D(i,1)
l=jizucanshu(i,2);
h=i;
m=jizucanshu(i,5);
end
else if D(i,1)>jizucanshu(i,6)%判断是否大于最大值
if jizucanshu(i,2)>l
l=jizucanshu(i,2);
h=i;
m=jizucanshu(i,6);
end
end
end
end
if h>0 %有越限,更改A矩阵中a值最大的越限机组座对应的行参数
A(h,11)=0;
A(h,h)=-jizucanshu(h,3)/m;
D=chubujieguo(jizucanshu,geidingfuhe,A,time); %重新求得各机组的功率
jiaoyanjieguo(jizucanshu,D,A,geidingfuhe,time);%再次进行验证
else %上述循环后至无越限,G存放总耗量,最后连同各机组功率一起存放至E中,即E为输出结果
E=zeros(11,1);%存放输出结果
G=zeros(1,1);%存放总耗量
for i=1:10
G(1,1)=G(1,1)+jizucanshu(i,2)*D(i,1)^2+jizucanshu(i,3)*D(i,1)+jizucanshu(i,4);%求总耗量
end
E=[D;G];%输出结果
ans=E;
end
end
我们知道只要给定边际电价就可以根据等报价策略c=aP+b算出发电各机组的出力
首先必须假定一个初始边际电价c(较小,本次采用0.27)和步长dc,再根据P=(c-b)/a等式循环算出各个机组的出力P,又因为各机组有最大最小出力限制,因此当出力超出限制范围时用边界值最为越限功率,最后算出每个时间点的总功率t,判断若t不满足改时间点的负荷功率要求则根据c=c+dc重新取边际电价,再次计算各功率,直到 该时间点的总功率满足负荷要求,最后显示1~24小时各时间点的各机组功率,边际电价和功率总和t.