基于变异粒子群算法的主动配电网故障恢复策略(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

2.1 场景1的孤岛划分结果

2.2 场景2的孤岛划分结果

2.3 场景1的故障恢复策略

2.4 场景2的故障恢复策略

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

文献来源:

随着传统化石能源的日益枯竭以及环境问题的日益严重,以光伏发电为代表的分布式电源DG
(Distributed Generation)得到快速发展。大量DCG的接入给主动配电网的安全、可靠运行带来了威胁,由于传统配电网故障恢复策略已不再适用于主动配电网,因此对含DG的主动配电网故障恢复策略的研究成为热点。
目前,已有大量关于含DG的主动配电网故障恢复策略的研究。文献[1]将用户对于负荷的需求响应量化为成本,将其引人故障恢复模型的目标函数中,利用混合粒子群算法进行最优策略的求解。
文献[2]在综合考虑光伏和风力发电具有随机性特点的基础上建立DG注入功率模型,基于机会约束模型和改进的带精英策略的非支配排序的遗传算法NSGA-II (Non-dominated Sorting Genetic Algorithm-Il制定故障恢复策略。针对故障恢复模型的构建,现有的文献考虑了光伏随机性与负荷时变性特征,但鲜有研究考虑到用户侧需求时变性特征。文献[3]基于Prim算法对配电网进行孤岛划分,在配电网发生故障时,动态生成合理的孤岛划分方案,并对重要负荷进行供电恢复。文献「4]对含有DG 的配电网进行规划,在配电网内预设可独立运行的微电网,当发生故障时,各微电网进入孤岛运行模式,对故障负荷进行供电恢复。在故障恢复策略中,仅利用DG形成孤岛对失电负荷进行恢复的策略降低了故障恢复效率与恢复量。
本文研究了一种含分布式光储系统的配电网故障恢复的最优策略。首先,建立了光储系统模型,并利用典型负荷时变性优先恢复系数反映不同时刻用户侧需求的变化情况,保证了故障时刻需求度高的负荷优先恢复,提高用户满意度,该模型更加准确且贴近工程实际。其次,在进行故障恢复时首先利用
BFS 与 DFS相结合的方法对配电网进行动态孤岛划分,对时变性优先恢复系数高的负荷进行优先恢复然后利用光储系统与主网的协调控制对配电网进行恢复;应用MPSO对配电网进行恢复,动态调整初始孤岛,最终得到最优恢复策略,该策略既可以充分利用分布式光伏系统的出力,又可以满足时变性用户侧需求。最后,通过算例验证了本文的故障恢复模型可以保证用户侧需求度高的负荷优先恢复;利用MPSO可以提高收敛速度,并有效解决了BPSO易于陷入局部最优的问题;恢复策略综合考虑了总失电负荷最少、网损最小及开关动作次数,保证了供电恢复可靠性。研究提出的策略对解决配电网故障恢复问题具有一定的有效性与优越性,且有一定实际工程价值。

📚2 运行结果

2.1 场景1的孤岛划分结果

2.2 场景2的孤岛划分结果

2.3 场景1的故障恢复策略

 

2.4 场景2的故障恢复策略

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]徐岩,张荟,孙易洲.基于变异粒子群算法的主动配电网故障恢复策略[J].电力自动化设备,2021,41(12):45-53.DOI:10.16081/j.epae.202108030.

🌈4 Matlab代码实现

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自适应变异粒子算法(Adaptive Mutation Particle Swarm Optimization,AMPSO)是一种改进的粒子算法,它能够自适应地调整变异概率,从而增强算法的全局搜索能力和收敛速度。下面是MATLAB代码实现: ```matlab function [gbest,gbestval]=AMPSO(fhd,nop,dim,max_iter,xmin,xmax) % fhd: function handle of the objective function % nop: number of particles % dim: dimension of the problem % max_iter: maximum number of iterations % xmin, xmax: lower and upper bounds of the search space % gbest: global best position % gbestval: global best value % initialization w=0.729; % inertia weight c1=1.49445; % acceleration coefficients c2=1.49445; vmax=(xmax-xmin)/2; % maximum velocity vmin=-vmax; % minimum velocity pm=0.1; % initial mutation probability pm_max=0.5; % maximum mutation probability pm_min=0.01; % minimum mutation probability pm_inc=0.01; % mutation probability increment pm_dec=0.005; % mutation probability decrement pm_updt=50; % mutation probability update interval pm_cnt=0; % mutation probability update counter gbest=ones(1,dim)*Inf; % initialize global best position gbestval=Inf; % initialize global best value pbest=zeros(nop,dim); % initialize personal best positions pbestval=Inf*ones(nop,1); % initialize personal best values x=xmin+rand(nop,dim).*(xmax-xmin); % initialize positions v=vmin+rand(nop,dim).*(vmax-vmin); % initialize velocities mut=zeros(nop,dim); % initialize mutations for i=1:nop fval=fhd(x(i,:)); if fval<pbestval(i) pbest(i,:)=x(i,:); pbestval(i)=fval; end if fval<gbestval gbest=x(i,:); gbestval=fval; end end for iter=1:max_iter % update velocities r1=rand(nop,dim); r2=rand(nop,dim); v=w.*v+c1.*r1.*(pbest-x)+c2.*r2.*(ones(nop,1)*gbest-x); % check velocity limits v=min(max(v,vmin),vmax); % update positions x=x+v; % check position limits x=min(max(x,xmin),xmax); % evaluate objective function for i=1:nop fval=fhd(x(i,:)); if fval<pbestval(i) pbest(i,:)=x(i,:); pbestval(i)=fval; if fval<gbestval gbest=x(i,:); gbestval=fval; end end end % update mutation probability pm_cnt=pm_cnt+1; if pm_cnt==pm_updt if gbestval==Inf pm=pm/2; else pm=pm+pm_inc*(pm_max-pm)/(pm_max*gbestval+eps); pm=max(pm,pm_min); pm=min(pm,pm_max); pm_cnt=0; end end % generate mutations for i=1:nop if rand<pm mut(i,:)=randn(1,dim).*(xmax-xmin)/10; else mut(i,:)=zeros(1,dim); end end % update positions with mutations x=x+mut; % check position limits x=min(max(x,xmin),xmax); end end ``` 代码中,首先定义了一些算法参数,包括惯性权重w、加速系数c1和c2、最大和最小速度vmax和vmin、初始变异概率pm、变异概率的最大值和最小值pm_max和pm_min、变异概率的增量和减量pm_inc和pm_dec、变异概率更新的间隔pm_updt等。然后进行初始化,包括粒子位置x、速度v、个体最优位置pbest、个体最优值pbestval、全局最优位置gbest和全局最优值gbestval。接着进行迭代,每次迭代包括以下步骤: 1. 更新粒子速度v; 2. 检查速度限制; 3. 更新粒子位置x; 4. 检查位置限制; 5. 计算粒子适应度,更新个体最优位置和全局最优位置; 6. 更新变异概率pm; 7. 生成变异向量; 8. 更新粒子位置x。 最后输出全局最优位置gbest和全局最优值gbestval。 需要注意的是,这段代码是一种基本的实现,具体应用时需要根据具体问题进行适当修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值