图片
文章正文2
MASTES——基于Mathematica的电力系统分析和仿真工具包
作者:sgool    发布于:2017-12-07 11:55:45    文字:【】【】【

MASTES

Mathematica Analysis and Simulation Toolbox for Electric Power System

基于Mathematica的电力系统分析和仿真工具包

by SGOOL(吴浩、邱一苇、何哲楠 等)


     MASTES是一套基于Mathematica语言编写的电力系统分析和仿真工具包,旨在利用Mathematica语言强大的符号和数值混合计算能力,将用户从繁琐的公式推导和数值计算中解脱出来,帮助教学直指电力系统分析的基本原理和算法核心,帮助科研迅速切入理论和算法创新的关键点,从而以此提升教学和科研的效率。


下载 MASTES

在您下载这份文件时,需要填写一些信息


MASTES 1.1




下面会介绍MASTES的基本使用方法,如果您需要完整的MASTES介绍、说明,可以下载

MASTES用户手册

使用条款和免责声明

使用条款

  1. MASTES是一款完全免费的电力系统分析和仿真工具包,您可以将MASTES用于科研、教育、实践等任何领域,所以我们选择了基于GNU GPL协议发布它,具体可以参考协议原文;
  2. 在转载MASTES时,希望您能保留以下标注
  3. 版权所有 SGOOL Research Group
    Copyright @2017 All Rgihts Reserved

免责声明

  • 我们希望MASTES能够在电力系统的辅助分析中对用户有所帮助,但在使用过程中所产生的所有结果都由用户自己负责

功能和特性

版本1.1更新

  • 优化规则列表的分派,较大提升了计算速度。

版本1.0功能

  • 潮流计算(极坐标系牛顿法、直角坐标系牛顿法、P-Q分解法、高斯赛德尔法、直流潮流法)
  • 最优潮流计算(内置“最小网损”、“最小燃料成本”、“最大负荷裕度”优化模型,以对偶内点法进行求解)

特性——自动化函数计算

以潮流计算为例,用户只需输入数据,而后的所有方程形成、函数计算都可以由MASTES来完成,部分核心代码如下所示:
 符号定义
  anglA=ToExpression["a"<>#]&/@busName;
  voltA=ToExpression["v"<>#]&/@busName;

 潮流方程定义
  voltReA=voltA Cos[anglA];
  voltImA=voltA Sin[anglA];
  real=gYsym.voltReA-bYsym.voltImA;
  imag=gYsym.voltImA+bYsym.voltReA;
  pEqu=TrigReduce[pg-pl-(voltReA real+voltImA imag)];
  qEqu=TrigReduce[qg-ql-(voltImA real-voltReA imag)];

 微分计算
  jacPf=D[equPf,{varsPf}]//SparseArray;

 数值计算
  rhs=equPf/.rule;
  vnew=(varsPf/.rule) +LinearSolve[sparseSym2Num[jacPf,rule], -rhs];

这样,不仅避免了繁琐的手工计算,也将出错的可能性降至最低。

特性——易理解、易扩展

以最优潮流计算为例,建立一个如“最小燃料成本”的优化模型只需要如下语句:
  varsOpf=Flatten[{avBusA[[Delete[Range[2nBus],2avBus-1]]],pqGenA}];(*该模型中可优化的变量*)
  consRule=Flatten[{avBusRule0[[2avBus-1]],pqLoadRule0}];(*该模型中定值的参数、变量*)
  fFunc=Total[genPara[[All,12]]+genPara[[All,13]]pGenA+genPara[[All,14]]pGenA^2];(*优化目标函数*)
  hFunc=pfEquTot/.yRule/.consRule;(*等式约束表达式*)
  gFunc={voltA,pGenA,qGenA}//Flatten;(*不等式约束表达式*)
  gLower={busPara[[All,12]],genPara[[All,11]],genPara[[All,9]]}//Flatten;(*不等式约束下界*)
  gUpper={busPara[[All,11]],genPara[[All,10]],genPara[[All,8]]}//Flatten;(*不等式约束上界*)

当你想要验证自己的模型时,只需要根据自己的需求修改以上表达式即可。而后的所有函数计算全部都可以由MASTES为你完成,同样将出错的可能性降到了最低

开始使用(以潮流计算为例)

S1:数据准备

工具包解压好后,第一步需要准备所需分析的数据,我们在MASTES中内置了很多数据,如IEEE标准14节点系统等等。当我们需要调用内部数据时,可以直接输入数据名即可,具体内置数据详见用户手册。

  caseName = "IEEE14";

这时调用的是工具包内部已经内置的数据。如需从外部导入数据,如IEEE300.raw(目前仅支持PSS/E30版本的raw格式数据的导入),则只需将数据文件放在与主程序相同或其子文件夹中,如这里我们把数据文件放在子文件夹Data中,则只需修改如下

  caseName = "Data\\IEEE300.raw";

S2:参数设置

在文件的第一部分,使用者可以通过设置变量来控制计算进程。

  caseName = "IEEE14";
  maxIter = 50; errTol = 10^-8; errMax = 10^8;
  maxIterPQ = 100; errTolPQ = 10^-6;
  maxIterGs = 200; errTolGs = 10^-4;
  optNode = 1; bTapChg = False; qLimit = False; midInfo = 6;
  pfInitMd = "flat";
  pfSolMd = "NewtonPol";

S3:运行程序

在主程序第一个单元处,按下shift+Enter来运行计算,就可以得到计算结果。以14节点,极坐标系下的牛顿法计算为例。


如果想查看此次计算的更多信息,我们可以通过增大midInfo的值来增大输出结果的详细程度。比如从5提升到11,就可以看到每次迭代的最大误差值等信息


联系我们

zjuwuhao@gmail.com

Mathematica网址

www.wolfram.com
脚注信息
版权所有 SGOOL Research Group
Copyright @2015 All Rights Reserved
浙ICP备15024121号