MATLAB电力系统潮流计算

用MATLAB利用牛顿-拉夫逊法计算电科院22节点系统(使用稀疏技术),计算出各节点的电压相角、各支路的功率等。使用了稀疏计算技术,能计算1000节点以上的系统,且计算时间小于1秒。

计算思路

  1. 形成节点导纳矩阵,分析各节点的类型,找出待求量;
  2. 设定各节点电压的初值,并给定迭代误差判据;;
  3. 计算不平衡量;
  4. 求修正方程的系数矩阵,即雅可比矩阵的各元素;
  5. 形成雅可比矩阵,求解修正方程,得到各节点电压变化量;
  6. 计算各节点电压新值;
  7. 检查是否收敛,如不收敛,则运用各节点电压新值自第3步开始下一次迭代;
  8. 计算平衡节点功率和线路功率。

结果展示


22节点网络潮流计算

1047节点潮流计算

部分代码

读取文件

%% 取数据文件和参数
[open_filename] = uigetfile('.TXT');
data=dlmread(open_filename);
node_num=data(1,1);                                                        %节点数
branchnum=data(1,2);                                                       %支路数
balancenode=data(1,3);                                                     %平衡节点号数
v_balancenode=data(1,4);                                                   %平衡节点电压
base_power=data(1,6);                                                      %基准功率
convergence_accuracy=data(1,7);                                            %运算精度
index=find(data(:,1)==0);                                                  %index存放矩阵中第一列为0的元素(区分各块参数)
Line=data(index(1)+1:index(2)-1,:);                                        %线路为第一块
Line_ground=data(index(2)+1:index(3)-1,:);                                 %对地支路为第二块
Transformer=data(index(3)+1:index(4)-1,1:6);                               %变压器为第三块
PQ=data(index(4)+1:index(5)-1,:);                                          %PQ节点为第四块
PV=data(index(5)+1:index(6)-1,:);                                          %PV节点为第五块
PV_num=PV(:,1);                                                            %PV节点数
R=Line(:,4);X=1j*Line(:,5);   B=1j*Line(:,6);Z=R+X;Line_Y=1./Z;              %Y是Z的逆矩阵,线路参数
Rt=Transformer(:,4);   Xt=Transformer(:,5);   k=Transformer(:,6);        %变压器参数
Gt=Rt./(Rt.*Rt+Xt.*Xt);Bt=-Xt./(Rt.*Rt+Xt.*Xt);
Yt=Gt+1j.*Bt; Yt2=Yt./k; Yt3=Yt./k./k;                                     %变压器等值电路参数
G_ground=1j*Line_ground(:,2);                                              %对地支路参数
Nonzero_num=node_num+2*(size(Line,1)+size(Transformer,1));                 %非零元素:对角线+2*(线路+变压器)

形成节点导纳矩阵(应用稀疏矩阵)

tic;                                                                       %计时
Y=spalloc(node_num,node_num,Nonzero_num);                                  %创建一个节点数*节点数的全零稀疏矩阵Y,该矩阵具有Nonzero_num个非零值的空间
node_i=Line(:,2);node_j=Line(:,3);                                         %节点i、j
Y=Y-sparse(node_i,node_j,Line_Y,node_num,node_num)-sparse(node_j,node_i,Line_Y,node_num,node_num);   %把互导纳放进Y的(node_i,node_j)和(node_j,node_i)位置
Y_new=Y;
i=1:node_num;                                                              %创建一个由1到22的行向量
Y=Y-sparse(i,i,sum(Y_new,2),node_num,node_num);                            %把自导纳放进Y的(i,i)位置node_i=Transformer(:,2);node_j=Transformer(:,3);                           %将变压器等值参数电路放进矩阵
Y=Y-sparse(node_i,node_j,Yt2,node_num,node_num)-sparse(node_j,node_i,Yt2,node_num,node_num);  %互导纳
Y=Y+sparse(node_i,node_i,Yt3,node_num,node_num)+sparse(node_j,node_j,Yt,node_num,node_num);   %自导纳i=Line_ground(:,1);
Y=Y+sparse(i,i,G_ground,node_num,node_num);                                %自导纳放入对地支路的G
i=Line(:,2);
Y=Y+sparse(i,i,B,node_num,node_num);                                       %自导纳放入i支路的B
i=Line(:,3);
Y=Y+sparse(i,i,B,node_num,node_num);                                       %自导纳放入j支路的B
Y_abs=abs(full(Y));                                                           %形成导纳矩阵的幅值矩阵
Y_angle=angle(full(Y));                                                       %导纳矩阵的相角矩阵

迭代设置

V=ones(node_num,1);                                                        %计算启动的电压幅值为1
deta=zeros(node_num,1);                                                    %相角为0
%deta=ones(node_num,1)*100*pi/180;                                          %问9:平衡节点相角设为100°
V(PV(:,1),1)=PV(:,2);                                                     %PV节点电压设置
V(balancenode)=v_balancenode;                                             %平衡节点电压设置
JDV=[deta;V];                                                             %修正量的向量
P=(PQ(:,2)-PQ(:,4))/base_power;                                               %取标幺值
Q=(PQ(:,3)-PQ(:,5))/base_power;

开始迭代的(部分代码)

count_max=15;                                                              %最大迭代次数为count_max
for count=0:count_max%% 功率方程不平衡量A=ones(node_num,1);deta_ij=deta*A'-A*deta';                                               %deta(ij)=deta(i)-deta(j)Pi_0=sum(diag(V)*(real(Y).*cos(deta_ij)+imag(Y).*sin(deta_ij))*diag(V),2);%计算PidP=P-Pi_0;                                                             %计算dPiQi_0=sum(diag(V)*(real(Y).*sin(deta_ij)-imag(Y).*cos(deta_ij))*diag(V),2);%计算QidQ=Q-Qi_0;                                                             %计算dQidP(balancenode)=0;dQ(balancenode)=0;                                   %平衡节点的dP,Q设为0dQ(PV(:,1))=0;                                                        %pv节点的不平衡量dQ设为0JDPQ=[dP;dQ];                                                          %修正方程的左边,dp,dq组成的列向量%% 雅可比矩阵(应用稀疏矩阵)非对角元部分[Jacobian_i,Jacobian_j]=find(Y);Jacobian_n=size(Jacobian_i,1);         %Y中非零元素位置放到Jacobian_i,Jacobian_j中,Jacobian_n为Jacobian_i的行数

判断收敛条件

    %% 判断是否收敛%DV=V.*delta_V;    %Ddelta=[delta_deta;DV];delta_V=delta(node_num+1:2*node_num).*V;V=V-delta_V;deta=deta-delta(1:node_num);if max(abs(delta_V))<convergence_accuracy                              %达到收敛精度breakendtime=toc;

输出结果

%% 运行结束输出结果
disp('迭代次数:'),disp(count);
disp('迭代用时:'),disp(time);
if count>=count_max                                                        %不收敛disp('超过设置的最大迭代次数,结果不收敛!')
elsedisp('结果收敛,结果为:');jd_angle=deta.*180/pi;                       %相角弧度制转换为角度制disp('各节点电压:(幅值,相角)'),disp([V,jd_angle]);n_Line=size(Line,1);                                                   %线路参数长度n_trsnsformer=size(Transformer,1);                                     %变压器参数长度S1=zeros(node_num);S2=zeros(node_num);

计算平衡节点功率、各支路功率、变压器支路功率等等

%% 计算平衡节点功率Sb=0;for t=1:node_numUi=V(t,1)*cos(deta(t,1))+1j*V(t,1)*sin(deta(t,1));    Us=V(balancenode,1)*cos(deta(balancenode,1))+1j*V(balancenode,1)*sin(deta(balancenode,1));Sb=Sb+conj(Y(balancenode,t))*conj(Ui);enddisp('平衡节点功率:'),Sb=Us*Sb
%% 画图显示结果subplot(2,2,1),plot(1:node_num,V)xlabel('节点号');ylabel('电压幅值');grid on;subplot(2,2,2),plot(1:node_num,jd_angle)xlabel('节点号');ylabel('电压角度');grid on;subplot(2,2,3),bar(P,'r');xlabel('节点号');ylabel('节点注入有功');grid on;subplot(2,2,4);bar(Q,'b');    xlabel('节点号');ylabel('节点注入无功');grid on;
end

完整源代码可私聊,或加qq1732523422

ps:不免费提供

MATLAB 电力系统潮流计算(采用稀疏矩阵,可计算1000节点)相关推荐

  1. matlab电力系统潮流计算软件matpower_衡真课堂 | 电力系统稳态与暂态分析

    电力系统稳态分析 电力系统稳态运行指电力系统正常的.相对静止的运行状态. 电力系统稳态分析包括三个方面 ①电力系统的基本知识和等值网络: ②电力系统正常运行状况的分析和计算: ③电力系统有功功率-频率 ...

  2. matlab电力系统潮流计算,基于MATLAB的电力系统潮流计算

    Abstract: MATLAB is used to calculate the load flow of the electric system. By comparing the calcula ...

  3. matlab电力系统潮流计算,大神们,求个电力系统潮流计算的matlab程序。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 n=input('Please input n\n'); %n表示系统的节点数 d0=input('Please input d0\n'); %d0表示系 ...

  4. 电力系统潮流计算程序实现C语言版(动态节点+稀疏技术)

    概述 电力系统潮流计算程序采用的是牛顿-拉夫逊法(直角坐标) 潮流计算程序的系统节点数是可以动态变化的,根据节点大小分配储存空间 为了减少储存空间和加快计算速度,根据电力系统节点导纳矩阵稀疏的特点,计 ...

  5. matlab 简单算例,(简单算例)基于Matlab的电力系统潮流编程计算.pdf

    (简单算例)基于Matlab的电力系统潮流编程计算 基于Matlab的电力系统潮流编程计算 口黄扬威吴喜春郭志峰张斯翔 (三峡大学电气与新能源学院湖北·宜昌443002) 摘要:通过介绍电力系统的实际 ...

  6. 电气潮流运算Matlab怎么编程,基于Matlab的电力系统潮流编程计算

    计算技术 信息发展 与 64 -- 科协论坛 · 2011 年第 6 期(下) -- 基于 Matlab 的电力系统潮流编程计算 □ 黄扬威 吴喜春 郭志峰 张斯翔 (三峡大学电气与新能源学院 湖北· ...

  7. pq法潮流计算matlab,基于MATLAB电力系统PQ潮流计算程序设计(范文1)

    <基于MATLAB电力系统PQ潮流计算程序设计.doc>由会员分享,可免费在线阅读全文,更多与<基于MATLAB电力系统PQ潮流计算程序设计>相关文档资源请在帮帮文库(www. ...

  8. matlab 电力系统分析 毕设,基于MATLAB的P-Q分解法电力系统潮流计算毕业设计

    基于MATLAB的P-Q分解法电力系统潮流计算毕业设计 摘 要 电力系统潮流计算是研究电力系统稳定运行情况的一种重要的计算,在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用它来定量地分析比 ...

  9. pq算法matlab仿真,基于MATLAB电力系统PQ潮流计算程序设计最终版(模版2)

    <基于MATLAB电力系统PQ潮流计算程序设计.doc>由会员分享,可免费在线阅读全文,更多与<基于MATLAB电力系统PQ潮流计算程序设计(最终版)>相关文档资源请在帮帮文库 ...

最新文章

  1. Python 之 matplotlib (十二) subplot
  2. mysql 以数组的形式插入更新表
  3. 【干货】Duang!看好产品是如何增加情感化设计的?
  4. SkGradientShader::CreateLinear 的参数。
  5. SpringBoot使用Thymeleaf模板
  6. U-Mail邮件服务器树状通讯录实现智能化应用
  7. css unchecked,详细介绍CSS中的伪选择器
  8. [html] html元素哪些标签是不可替换元素?哪些是可替换元素?
  9. 笔记本电脑锁_武汉笔记本电脑模型打样价格
  10. Ansible Inventory
  11. 合成资产挖矿项目 ARCx 启动流动性挖矿
  12. Java 实现--时间片轮转 RR 进程调度算法
  13. 不同VPC路由器通过静态路由、动态路由(OSPF)实现网络互通实战
  14. linux 桌面对比,七大顶级Linux桌面比较
  15. 数字全角转半角VBA
  16. 需求:解压获取ipa里面的图片在windows系统上打不开
  17. vscode切换中英文
  18. Xcode4.3.2修改默认公司名称
  19. mbp安装steam显示“steam_osx”已损坏,mac安装steam方法
  20. 计算机专科学校哪个好,哪个计算机高等专科学校好 哪个电脑学院好 哪个中专计算机学校好...

热门文章

  1. 新南威尔士计算机科学就业方向,新南威尔士大学计算机科学专业
  2. 一年时间,拿到了人生中的第一个10万
  3. 对就是对,错就是错。
  4. Kaggle信贷预测随笔
  5. Unable to start activity ComponentInfo 解决方法
  6. 迅驰时尚盛典,果然不错!
  7. 【Aegisub相关】math.random 行为记录
  8. 计算机制图 教学大纲,《工程制图与计算机绘图》教学大纲
  9. Tmall_Fore_home
  10. 使用Ajax获取二进制数据流图片渲染到img标签