MATLB|电力系统优化运行与市场化

目录

一、按等耗量微增率原则分配发电厂负荷

1.1 算例

 1.2 原理

1.3 编程思路

二、按照等报价策略分配负荷

2.1 算例

2.2 原理

2.3 编程思路

三、Matlab代码实现

一、按等耗量微增率原则分配发电厂负荷

1.1 算例

某发电厂的机组耗量特性及相关参数见表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

 1.2 原理

我们知道每小时消耗量总和=\sum f(P)f(P)为各发电机组每小时消耗量,同时满足\sum P=Pd为各时间段的负荷总量,这就是约束条件。

由此可以建立拉格朗日目标函数L=\sum f(P)-\lambda (\sum P-Pd)

使消耗量最小化的条件是使L最小化,即对L求偏导=0,推出d_{f1}/d_{p1}=d_{f2_{}}/d_{p2}.....d_{fn}/d_{pn}=\lambda

其中df/dp即为耗量微增率,所以满足等耗量微增率。又f=aP^2+bP+c,所以耗量微增率\lambda =2aP+b

1.3 编程思路

根据等耗量微增率原则以及总负荷量的约束条件,可列出以下方程式组:

               

求解上述方程式组可得出P1~P10的初步结果,但由于每台发电机组有最大和最小出力的限制,因此对于上述的初步结果应当进行验证,当1台越限时,用它的边界值代替它的初步结果值,当有多台越限时,首先判断这些越限机组中最大的a值,再取a值最大的机组用它的边界值代替它的初步结果值,从以上可以看出无论1台还是多台越限第一次验证只改变1台越限机组的初步结果,因此将改变初步结果值的越限机组所对应的上述方程改为-bn*Pn/m=-bn,其中m为该机组所对应的边界值,显然Pn即=m,其它方程不变,还是11个方程解11个未知数,求得结果再进行第2次,第3次......反复验证,直到所有发电机组的功率全部在最大和最小出力的限制范围内,最后求出每个小时所对应的所有机组的总消耗量,验证程序结束,最后显示1~24小时内每个时间点的各个发电的出力,等耗量微增率以及总消耗量。

二、按照等报价策略分配负荷

2.1 算例

各发电厂的报价函数及相关参数见表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)         if jizucanshu(i,2)>l
            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 

2.2 原理

我们知道只要给定边际电价就可以根据等报价策略c=aP+b算出发电各机组的出力

2.3 编程思路

首先必须假定一个初始边际电价c(较小,本次采用0.27)和步长dc,再根据P=(c-b)/a等式循环算出各个机组的出力P,又因为各机组有最大最小出力限制,因此当出力超出限制范围时用边界值最为越限功率,最后算出每个时间点的总功率t,判断若t不满足改时间点的负荷功率要求则根据c=c+dc重新取边际电价,再次计算各功率,直到 该时间点的总功率满足负荷要求,最后显示1~24小时各时间点的各机组功率,边际电价和功率总和t.

三、Matlab代码实现

你可能感兴趣的:(优化调度与电气,matlab,开发语言)