用Matlab编写的经典电力系统经济调度程序,考虑网损,采用经典绚丽按比例分摊网损3节点功率分配。

主程序:

clc
fun='50*(x(1)^2)+245*x(1)+50*(x(2)^2)+351*x(2)+50*(x(3)^2)+389*x(3)';
x0=[0,0,0];
lb=[0.5;0.1;0.1];
ub=[2;1;1];
aeq=[1,1,1];
beq=[2.66];
[x,fval,exitflag]=fmincon(fun,x0,[],[],aeq,beq,lb,ub,[]);
a1=x(1,1);
b1=x(1,2);
c1=x(1,3);
[beq_loss,loss_active,loss_marix]=loss(a1,b1,c1)
% aeq=[aeq;aeq_loss];
% beq=[beq;beq_loss];
beq=[beq-beq_loss];
loss_allocation=loss_marix*loss_active
% x0=x;
[x,fval,exitflag]=fmincon(fun,x0,[],[],aeq,beq,lb,ub,[])
y=x
p2=y(1,1)+loss_allocation(1,1)
p3=y(1,2)+loss_allocation(2,1)
p5=y(1,3)+loss_allocation(3,1)

损耗:

function[S_loss_active,loss_active,loss_marix]=loss(p2,p3,p5)
A=[1,0,0,0,1.06,0;2,1,p2-0.20,0.20,1,0;3,1,p3-0.45,-0.15,1,0;4,1,-0.40,-0.05,1,0;5,1,p5-0.60,-0.10,1,0]
tic;
[dimention,dd]=size(A);
y=zeros(dimention,dimention);
y(1,3)=1/(0.08+j*0.24);y(3,4)=1/(0.01+j*0.03);y(4,5)=1/(0.08+j*0.24);y(2,5)=1/(0.04+j*0.12);
y(2,4)=1/(0.06+j*0.18);y(2,3)=1/(0.06+j*0.18);y(1,2)=1/(0.02+j*0.06);
y1=transpose(y);
Y1=y+y1;
[c,d]=size(Y1);
%Y=[];
for m=1:cfor n=1:dif(m~=n) Y(m,n)=-Y1(m,n);else sum=0;for k=1:dsum=Y1(m,k)+sum;Y(m,n)=sum;endendend
end
Y
G=real(Y);
B_temp=imag(Y);eps=0.00001;
Akk_Ak=0.1;
K=0;
while (Akk_Ak>eps)K=K+1;Ak=A;
[dP_temp]=make_in_P(A,G,B_temp);%求取多阶的有功功率不平衡量
B1=B_temp(2:5,2:5);% 电纳矩阵减阶
dP=dP_temp(2:5,:)%有功不平衡量减去平衡节点的不平衡量
B=inv(B1);
U=A(2:5,5);for i=1:4dP_U(i,1)=dP(i,1)*(1/U(i,1));end
U_a=-B*dP_U;
for i=1:4dHD(i,1)=U_a(i,1)/U(i,1);%相角的修正量
end
dHD    %显示弧度的修正量
for i=2:5A(i,6)=A(i,6)+dHD(i-1,1);%修正后的相角值更新在矩阵A中
end[dQ_temp]=make_in_Q(A,G,B_temp);
dQ=dQ_temp(2:5,1)%无功功率的不平衡量
for i=1:4dQ_U(i,1)=dQ(i,1)*(1/U(i,1));enddU=-B*dQ_U %电压幅值的修正量for i=2:5A(i,5)=A(i,5)+dU(i-1,1);%修正后的电压幅值更新在矩阵A中endfprintf('第%d次迭代结果\n',K)Akk=Afor m=2:5for n=5:6Akk_Ak_temp1(m,n)=abs(Akk(m,n)-Ak(m,n));endendAkk_Ak_temp=max(Akk_Ak_temp1);Akk_Ak=max(Akk_Ak_temp');end
t1=toc;
fprintf('迭代耗时%f\n秒',t1)%以下是计算平衡节点功率
[balance_P]=make_in_P(Akk,G,B_temp);
[balance_Q]=make_in_Q(Akk,G,B_temp);
i=sqrt(-1);
S_balance=-balance_P(1,1)-balance_Q(1,1)*i
%以下是计算线路功率
S_mn=[];
[k3,k4]=size(Y);
for m=1:k3for n=1:k4S_mn(m,n)=-Akk(m,5)*(cos(Akk(m,6))+sin(Akk(m,6))*i)*((Akk(m,5)*(cos(-Akk(m,6))+sin(-Akk(m,6))*i)-Akk(n,5)*(cos(-Akk(n,6))+sin(-Akk(n,6))*i)))*conj(Y(m,n));  %注意公式互导纳加负号
%         S_mn(m,n)=G(m,n)*(Akk(m,5)*cos(Akk(m,6))-Akk(n,5)*cos(Akk(n,6)))-B_temp(m,n)*(Akk(m,5)*sin(Akk(m,6))-Akk(n,5)*sin(Akk(n,6)))-(G(m,n)*(Akk(m,5)*sin(Akk(m,6))-Akk(n,5)*sin(Akk(n,6)))+B_temp(m,n)*(Akk(m,5)*cos(Akk(m,6))-Akk(n,5)*cos(Akk(n,6))))*i;end
end
S_mn
%以下是通过各节点注入功率求和得到网络的总损耗S_loss,
[k5,k6]=size(Akk);
S_loss_temp=0;
for m=1:k5S_loss_temp=S_loss_temp+Akk(m,3)+Akk(m,4)*i;
endS_loss=S_loss_temp+S_balance
S_loss_active=real(S_loss);
P=p2+p3+p5;
loss_marix=diag([p2/P,p3/P,p5/P]);
loss_active=[S_loss_active;S_loss_active;S_loss_active];
t2=toc
fprintf('PQ分解法运算共耗时%f\n秒',t2)
%S_mn_1=S_mn+S_mn'
%如通过支路功率求和来求取网络的总损耗,容易出现正负号的问题,所以选择用网络所有节点注入功率之和来求网损

有功:

function [dP]=make_in_P(A,G,B)
[k1,k2]=size(A);
[p1,p2]=size(G);
dP=[];
for m=1:k1temp_p=0;for n=1:k1temp_p=temp_p+A(m,5)*A(n,5)*(G(m,n)*cos(A(m,6)-A(n,6))+B(m,n)*sin(A(m,6)-A(n,6)));enddP=[dP;temp_p];
end
for p=1:k1dP(p,1)=A(p,3)-dP(p,1);
end
dP;
return;

无功:

function [dQ]=make_in_Q(A,G,B)
[k1,k2]=size(A);
[p1,p2]=size(G);
dQ=[];
for m=1:k1temp_q=0;for n=1:k1temp_q=temp_q+A(m,5)*A(n,5)*(G(m,n)*sin(A(m,6)-A(n,6))-B(m,n)*cos(A(m,6)-A(n,6)));enddQ=[dQ;temp_q];
end
for p=1:k1dQ(p,1)=A(p,4)-dQ(p,1);
end
dQ;
return;

用Matlab编写的经典电力系统经济调度程序(完整代码分享)相关推荐

  1. 煤炭价格预测:基于matlab的时间序列分析(主要流程+完整代码)

    基于matlab的时间序列分析(主要流程+完整代码) 案例简介 时间序列简介 平稳时间序列{xt} ARIMA=AR+MA+INTEGRATER 实例应用 数据平稳化 模型选择--确定p.q ACF/ ...

  2. Arduino中编写打砖块小游戏(完整代码)

    标题 Arduino中编写打砖块小游戏(完整代码) 程序中有大量的注释,希望真的能帮助到你! (一)环境 硬件:OLED 屏幕(128*64).摇杆模块(程序中使用的是摇杆模块的模拟量,如果你身边没有 ...

  3. MATLAB模拟陀螺仪的运动轨迹(附完整代码)

    本文讲述了陀螺仪运动轨迹的分析过程,并且通过MATLAB进行仿真. 顺时针旋转 MATLAB陀螺仪运动轨迹仿真(正转) 逆时针旋转 MATLAB陀螺仪运动轨迹仿真(反转) 第一步:建立坐标系 假设陀螺 ...

  4. OpenCV编写视频文件的实例(附完整代码)

    OpenCV编写视频文件的实例 OpenCV编写视频文件的实例 OpenCV编写视频文件的实例 #include <iostream> // for standard I/O #inclu ...

  5. 基于Matlab模拟AWGN 信道上 OFDM附完整代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  6. 基于MATLAB的MIMO信道估计(附完整代码与分析)

    目录 一. 介绍 二. MATLAB代码 三. 运行结果与分析 3.1 均方误差(MSE)与训练功率(dB)的关系 3.2 不同信道估计方法性能对比 一. 介绍 本篇将在MATLAB的仿真环境中对比M ...

  7. Matlab+YALMIP+CPLEX解决带储能的微电网优化调度问题(完整代码分享)

    2Matlab+YALMIP+CPLEX解决带储能的微电网优化调度问题 请先确保YALMIP工具箱和CPLEX正确安装,MATLAB导入对应文件,否则无法运行程序!! 如果对你有用,请给博主点歌赞!! ...

  8. 基于MATLAB的微分代数方程解法(附完整代码)

    目录 一. 微分代数方程求解 例题1 二. 全隐式微分方程 三. 延迟微分方程求解 例题2 一. 微分代数方程求解 例题1 初始条件: 求数值解: 解: ①方法1求解 矩阵形式表示该微分代数方程: ( ...

  9. java swing 编写的植物大战僵尸 功能完善 完整代码 下载即可以运行

    今天为大家继续分享一个界面漂亮.功能完整的围棋程序的开发与制作 430,目前系统已经完成了初步功能,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程. ...

最新文章

  1. Android SDK 路径修改
  2. 利用脑机接口从鸟的脑电波中重现鸟唱歌声
  3. 特别完善的面试知识总结
  4. 如何在面试中介绍自己的项目经验,90%的人都做错了!
  5. centos 7 局域网丢包排查_网络排查神器:mtr
  6. P3317-[SDOI2014]重建【矩阵树定理,数学期望】
  7. mysql5.5索引如何定义_MySQL5.5索引数在InnoDB引擎内与索引数在mysql中定义的数量是不一致问题-阿里云开发者社区...
  8. PDF 开发者 Charles Geschke 去世,39 年前联合创立软件巨头 Adobe!
  9. 如何找出 Mac 上两个文档之间的差异?
  10. java中求梯形的面积_java 求梯形面积
  11. 微信小程序-canvas 2d带动画的半圆形刻度进度条
  12. 思科路由器无法访问互联网怎么操作?
  13. 天道酬勤系列之C++ 常量介绍
  14. C小程序——统计字符串中出现指定串abcd的次数
  15. 狐狸抓兔子(实验楼的练习)
  16. 那年十八站在角落如喽啰,如今站在人生巅峰,分享嵌入式求职技巧
  17. 机器学习中监督学习是什么?人工智能机器学习
  18. linux vim 终端 行首 行尾_vim总结
  19. 计算机女神百度云连接,JVID JKF VENUS NIGHT JKF女神之夜 比基尼感謝祭 2018.mkv
  20. 不知道音频转文字怎么操作?那这份转换攻略送给你

热门文章

  1. 喜羊羊与灰太狼中为什么倒霉的总是灰太狼?
  2. 矿物绝缘电缆行业调研报告 - 市场现状分析与发展前景预测
  3. 8、MySQL——数据的完整性
  4. Android 微博长图加载
  5. input 的 oninput onkeypress onkeydown onchange 事件的区别
  6. 全屋净水十大知名品牌排名
  7. 8个小程序开源项目助你快速搭建小程序
  8. java程序扫雷_Java实现简单的扫雷小程序
  9. XTU 1376 回文数
  10. linux下的c语言实现象棋,【C语言小游戏】 中国象棋