GAMS系列分享7-电力系统最优潮流-5节点最优潮流

本节主要探讨          5节点电力系统     

                                           基于直流潮流的

                                                  电力系统最优潮流计算。

参考:GAMS系列分享6-电力系统最优潮流-3节点最优潮流.编程一模一样),四舍五入任何规模大小的电力系统最优潮流你都会编程了。只是模型数据多了点。

 



1,物理模型

                                GAMS系列分享7-电力系统最优潮流-5节点最优潮流_第1张图片

2,数学模型

       

 

                式1,为优化目标

                式2,线路直流潮流计算

                式3,是各节点功率平衡

                式4,线路潮流约束

               式5,发电机出力约束

3,程序

*DC-opf five bus
*集合定义
Sets bus /1*5/,slack(bus) /1/,gen /g1*g5/;
scalars sbase /100/;
alias (bus,node);

*参数
table gendata(gen,*)
      b    Pmin    Pmax
g1    14   0       40
g2    15   0       170
g3    30   0       520
g4    40   0       200
g5    20   0       600;
set GBconect(bus,gen)
/1 . g1
 1 . g2
 3 . g3
 4 . g4
 5 . g5 /;
table busData(bus,*)
     pd
2    300
3    300
4    400 ;
set conex
/1 . 2
 2 . 3
 3 . 4
 4 . 1
 4 . 5
 5 . 1 /;
conex(bus,node)$conex(node,bus)=1;
table branch(bus,node,*)
           x          limit
1 . 2      0.0281     400
1 . 4      0.0304     400
1 . 5      0.0064     400
2 . 3      0.0108     400
3 . 4      0.0297     400
4 . 5      0.0297     240 ;
branch(bus,node,'x')$(branch(bus,node,'x')=0)=branch(node,bus,'x');
branch(bus,node,'limit')$(branch(bus,node,'limit')=0)=branch(node,bus,'limit');
branch(bus,node,'bij')$conex(bus,node) = 1/branch(bus,node,'x');

*变量定义
Variables Pij(bus,node),pg(gen),delta(bus),of;

*方程定义
Equations const1,const2,const3;
const1(bus,node)$conex(bus,node)..pij(bus,node)=e=branch(bus,node,'bij')*(delta(bus)-delta(node));
const2(bus)..+sum(gen$gbconect(bus,gen),pg(gen))-busdata(bus,'pd')/sbase
                   =e=sum(node$conex(node,bus),pij(bus,node));
const3..OF=g=sum(gen,pg(gen)*gendata(gen,'b')*sbase);
model loadflow /all/;



pg.lo(gen)=gendata(gen,'Pmin')/sbase;
pg.up(gen)=gendata(gen,'pmax')/sbase;
delta.up(bus)=pi;
delta.lo(bus)=-pi;
delta.fx(slack) =0;
pij.up(bus,node)$conex(bus,node)=branch(bus,node,'limit')/sbase;
pij.lo(bus,node)$conex(bus,node)=-branch(bus,node,'limit')/sbase;
solve loadflow min of us lp;




*存储计算结果
parameter report(bus,*),congestioncost;
report(bus,'gen(MW)')  = sum(gen$GBconect(bus,gen),pg.l(gen))*sbase;
report(bus,'load(MW)') = busData(bus,'pd');
report(bus,'angel')    = delta.l(bus);
report(bus,'LMP($/MW)')= const2.m(bus)/sbase;
congestioncost = sum((bus,node),pij.l(bus,node)*(-const2.m(bus)+const2.m(node)))/2;
*congestioncost = sum((bus,node),pij.l(bus,node)*(-const2.m(bus)+const2.m(node)))/2;
display report,pij.l,congestioncost;

4,求解结果

              GAMS系列分享7-电力系统最优潮流-5节点最优潮流_第2张图片

 

5,重要知识点讲解

   没有重要知识点。和3节点的编程一模一样

                                                       一模一样

                                                       一模一样

 

6,一定要背下来的步骤:(几乎所有的程序都是这样)

       理解程序的重点来了。

       对所有的程序进行这样的拆解,有助于自己快速掌握编程。

       1,定义集合

                      电力系统常见的单维集合:bus,gen,slack(bus)。

                      多维集合:conex(bus,node) ,GBconect(bus,gen) ;

                      集合的多重命名: alias(bus,node)。 

       2,写参数

 

                     发电机参数    :Gendata(gen,*)   

                     负荷大小参数  :busData(bus,*) 

                     线路参数      : branch(bus,node,*)      这个地方注意***,详见5.4

       3,设变量

                    发电机出力大小    pg(gen)

                    线路上的潮流大小  Pij(bus,node)

                    各母线的相角      delta(bus)

                   优化变量:OF

       4,写约束

                    等式约束:线路有功潮流 const1

                                       母线节点功率平衡 const2

                                       目标函数:const3

 

                    不等式约束:发电机出力上下限,因为不涉及变量间的运算,直接用.lo,.up约束,更简洁

                                        同样的线路潮流上下限

       5,赋初值

             对平衡节点的相角为0    用到的.fx   ,delta(bus).fx

       6,建 模型,求模型

                 本文是目标函数只考虑了b,是线性规划LP问题。

 

欢迎关注系列GAMS分享,现在更新电力系统最优潮流的GAMS求解。

本期重点:和3节点模型编程一模一样

你可能感兴趣的:(电力系统最优潮流,直流潮流,GAMS,线性代数,算法)