💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
ADMM算法在分布式调度中的应用 复刻ADMM的论文,主要参考 包括并行算法(Jocobi)和串行算法(Gaussian Seidel, GS) 主要参考文献是下面两篇:
主从配电网分布式优化控制是一种将串行与并行ADMM算法相结合的方法,用于解决配电网中的优化问题。在这种方法中,每个节点都有自己的局部优化问题,通过与其他节点进行通信和协作,最终实现整个配电网的全局优化控制。
首先,每个节点根据自身的局部信息和约束条件,通过串行ADMM算法求解局部优化问题。然后,节点之间通过通信交换信息,将局部解传递给其他节点,同时接收其他节点的局部解。通过并行ADMM算法,各节点之间协作,不断更新局部解,直至达到全局最优解。
这种主从配电网分布式优化控制方法能够有效地解决配电网中的优化问题,提高系统的效率和稳定性。通过合理设计通信机制和优化算法,可以实现节点间的高效协作和信息交换,从而实现整个配电网的优化控制。
部分代码:
%%ADMM主程序
%%串行计算
clear
clc
%%%区域a,节点33,1-7,18-25
%%耦合为Xa=[U(6),U(7),P(7),Q(7),U(5),U(25),P(25),Q(25)]
Line_a=[1,2,3,4,5,6,7,18,19,20,21,22,23,24,25];
Node_a=[33,1,2,3,4,5,6,18,19,20,21,22,23,24,25];
%%%区域b,节点6-17
%%耦合为Xb=[U(6),U(7),P(7),Q(7)]
Line_b=[7,8,9,10,11,12,13,14,15,16,17];
Node_b=[6,7,8,9,10,11,12,13,14,15,16,17];
%%%区域c,节点5,25-32
%%耦合为Xb=[U(5),U(25),P(25),Q(25)]
Line_c=[25,26,27,28,29,30,31,32];
Node_c=[5,25,26,27,28,29,30,31,32];
%%%%首轮求解
Ploss_data=zeros(32,1);
Volta_data=zeros(33,1);
Qg_data=zeros(33,1);
xigma=0;gama=0;lagrant_a=[0;0;0;0;0;0;0;0];lagrant_b=[0;0;0;0];lagrant_c=[0;0;0;0];
Xa_last=[0;0;0;0;0;0;0;0];Xb_last=[0;0;0;0];Xc_last=[0;0;0;0];
Xa_dual=[0;0;0;0;0;0;0;0];Xb_dual=[0;0;0;0];Xc_dual=[0;0;0;0];
[Xa,Ploss,Volta,Qg]=program_a(lagrant_a,xigma,gama,Xa_last,Xa_dual);
Ploss_data(Line_a)=Ploss(Line_a);Volta_data(Node_a)=Volta(Node_a);Qg_data(Node_a)=Qg(Node_a);
[Xb,Ploss,Volta,Qg]=program_b(lagrant_b,xigma,gama,Xb_last,Xb_dual);
Ploss_data(Line_b)=Ploss(Line_b);Volta_data(Node_b)=Volta(Node_b);Qg_data(Node_b)=Qg(Node_b);
[Xc,Ploss,Volta,Qg]=program_c(lagrant_c,xigma,gama,Xc_last,Xc_dual);
Ploss_data(Line_c)=Ploss(Line_c);Volta_data(Node_c)=Volta(Node_c);Qg_data(Node_c)=Qg(Node_c);
Xa_last=[Xb;Xc];Xb_last=Xa(1:4);Xc_last=Xa(5:8);
Xa_dual=Xa;Xb_dual=Xb;Xc_dual=Xc;
xita=0.5;%阻尼系数
lagrant_a=lagrant_a+xita*xigma*(Xa-[Xb;Xc]);lagrant_b=lagrant_b+xita*xigma*(Xa(1:4)-Xb);lagrant_c=lagrant_c+xita*xigma*(Xa(5:8)-Xc);
figure(1)%目标函数
plot(1,sum(Ploss_data),'m*')
xlabel('迭代次数')
ylabel('总损耗')
hold on
figure(2)%对偶误差
plot(1,norm(Xa-Xa_last,2)^2,'c*-');
xlabel('迭代次数')
ylabel('误差')
hold on
%%%%迭代
for k=1:100
xigma=3e-3;gama=4e-3;
[Xa,Ploss,Volta,Qg]=program_a(lagrant_a,xigma,gama,Xa_last,Xa_dual);
Ploss_data(Line_a)=Ploss(Line_a);Volta_data(Node_a)=Volta(Node_a);Qg_data(Node_a)=Qg(Node_a);
[Xb,Ploss,Volta,Qg]=program_b(lagrant_b,xigma,gama,Xb_last,Xb_dual);
Ploss_data(Line_b)=Ploss(Line_b);Volta_data(Node_b)=Volta(Node_b);Qg_data(Node_b)=Qg(Node_b);
[Xc,Ploss,Volta,Qg]=program_c(lagrant_c,xigma,gama,Xc_last,Xc_dual);
Ploss_data(Line_c)=Ploss(Line_c);Volta_data(Node_c)=Volta(Node_c);Qg_data(Node_c)=Qg(Node_c);
Xa_last=[Xb;Xc];Xb_last=Xa(1:4);Xc_last=Xa(5:8);
Xa_dual=Xa;Xb_dual=Xb;Xc_dual=Xc;
xita=0.5;%阻尼系数
lagrant_a=lagrant_a+xita*xigma*(Xa-[Xb;Xc]);lagrant_b=lagrant_b+xita*xigma*(Xa(1:4)-Xb);lagrant_c=lagrant_c+xita*xigma*(Xa(5:8)-Xc);
lagrant_a=lagrant_a+xigma*(Xa-Xa_last);lagrant_b=lagrant_a(1:4);lagrant_c=lagrant_a(5:8);
figure(1)
plot(k+1,sum(Ploss_data),'r*');
figure(2)
plot(k+1,norm(Xa-Xa_last,2)^2,'b*-');
end
Ploss_total=sum(Ploss_data)
gap=norm(Xa-Xa_last,2)^2
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1] 梁俊文, 林舜江, 刘明波. 主动配电网分布式无功优化控制方法[J]. 电网技术, 2018(1).
[2] 瞿小斌, 文云峰, 叶希, et al. 基于串行和并行ADMM算法的电-气能量流分布式协同优化[J]. 电力系统自动化, 2017(4).