欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-21 20:07:02
...

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

                                           基于直流潮流的

                                                  电力系统最优潮流计算。

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

 



1,物理模型

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

2,数学模型

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

 

                式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节点最优潮流

 

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节点模型编程一模一样