【状态估计】基于二进制粒子群优化 (BPSO) 求解最佳 PMU优化配置研究【IEEE30、39、57、118节点】(Matlab代码实现)

👨‍🎓 个人主页: 研学社的博客
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


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


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

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现

💥1 概述

近 年 来 ,随 着 大 量 分 布 式 电 源(distributed generation)接入配电网,使配电网朝着更加灵活的方向发展,配电网管理模式从被动向主动转变[1] 。状态估计是通过建立适当的网络模型对配电网进行在线监测和分析的功能。随着分布式能源集成对系统建模和运行的影响越来越大,对配电系统状态估计要求也越来越严格[2] 。目前,电力系统大多数据来源于数据采集与监控(SCADA)系统,但该系统量测数据采集周期较长,无法得到电网中的实时数据。虽然同步相量量测单元能够提供高精度的实时量测数据来提高状态估计精度[3] ,但由于成本和技术的限制,我国配电网安装的 PMU 装置数量有限,得到的实时量测数据较少。状态估计作为配电管理系统不可或缺的组成要素,其主要研究内容是如何在有限数量的 PMU 量测装置情况下尽可能地提高配电网状态估计精度。国内外已有大量学者针对最优 PMU 装置(optimal PMU placement,OPP)进行了大量的研究[4-9] 。目前,PMU 量测装置的优化目标主要分为满足系统可观性(拓扑可观和数值可观)

[10-12] 和提高状态估计精度[13-15] 两大类,解决这两类问题的对应优化算法有数值优化算法和启发式优化算法。数值优化算法主要分为穷举法和整数规划法,虽然整数规划法发展较为成熟,但配电网节点数目较多,短时间不可能大规模安装 PMU 量测装置,所以整数规划法不满足系统可观性的要求。文献[16]从不可观测度优化的角度出发,利用整数规划模型求解,在误差最大的节点装置 PMU,但没有考虑到配电网系统中节点较多而零注入节点较少的情况。启发式算法 的全局搜索能力强,适用于非线性、高维度的模型求解问题。本文基于二进制粒子群优化 (BPSO) 求解最佳 PMU优化配置研究。

📚2 运行结果

主函数代码:

clc

clear

close all

format shortG

commandwindow;

%% parameters setting

nvar=30; % number of variable

lb=0*ones(1,nvar); % lower bound

ub=1*ones(1,nvar); % upper bound

popsize=1000; % population size

maxiter=1000; % max of iteation

c1=1;

c2=1;

damp=1;

%% initial population algorithm

tic

emp.var=[];

emp.fit=[];

emp.vel=[];

par=repmat(emp,popsize,1);

for i=1:popsize

par(i).vel=lb+rand(1,nvar).*(ub-lb);

R=rand(1,nvar);

par(i).var=R>(1./(1+exp(-par(i).vel)));

par(i).fit=IEEE_30_Bus(par(i).var);

end

bpar=par;

[value,index]=min([par.fit]);

gpar=par(index);

%% main loop algorithm

BEST=zeros(maxiter,1);

for iter=1:maxiter

for i=1:popsize

par(i).vel=par(i).vel-...

c1*rand(1,nvar).*(bpar(i).var-par(i).var)-...

c2*rand(1,nvar).*(gpar.var-par(i).var);

par(i).vel=par(i).vel*damp;

par(i).vel=min(par(i).vel,ub);

par(i).vel=max(par(i).vel,lb);

R=rand(1,nvar);

par(i).var=R>(1./(1+exp(-par(i).vel)));

par(i).fit=IEEE_30_Bus(par(i).var);

if par(i).fit<bpar(i).fit

bpar(i)=par(i);

if bpar(i).fit<gpar.fit

gpar=bpar(i);

end

end

end

BEST(iter)=gpar.fit;

disp([ ' Iter = ' num2str(iter) ' BEST = ' num2str(BEST(iter)) ])

end

%% results algorithm

disp([ ' Best Solution = ' num2str(find(gpar.var==1))]);

disp([ ' Best Fitness = ' num2str(gpar.fit)]);

disp([ ' Time = ' num2str(toc)]);

figure(1);

plot(BEST,'r');

xlabel('Iteration ');

ylabel(' Numbers of PMUs ');

legend('BEST');

title('BPSO');

gtext([' Best Solution = ' num2str(find(gpar.var==1)) ' Best Fitness = ' num2str(gpar.fit) ] );

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]曹鹏,刘敏,杭鲁庆.基于改进磷虾群算法的配电网PMU优化配置研究[J].电网与清洁能源,2022,38(04):61-67.

🌈4 Matlab代码实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
离散二进制粒子群算法(Binary Particle Swarm Optimization,BPSO)是一种基于群体智能的优化算法,用于解决背包问题。BPSO算法的原理如下: 1. 初始化:首先,随机生成一群粒子,每个粒子代表一个解,即一个可行解。每个粒子都有一个二进制向量,表示是否选择对应的物品放入背包中。 2. 适应度计算:对于每个粒子,根据其二进制向量计算适应度函数值。适应度函数可以根据具体的背包问题定义,通常是考虑物品的重量和价值的线性组合。 3. 全局最优和个体最优更新:记录全局最优解以及每个粒子的个体最优解。个体最优解是该粒子自身历史上最好的解,全局最优解是所有粒子历史上最好的解。 4. 粒子位置更新:根据公式更新粒子的二进制向量位置。位置更新公式包括三个部分:个体认知部分(根据个体最优解调整位置)、社会认知部分(根据全局最优解调整位置)和惯性部分(根据当前位置调整位置)。 5. 重复步骤2-4直到满足停止条件:重复执行适应度计算、全局最优和个体最优更新以及粒子位置更新的步骤,直到满足停止条件,如达到最大迭代次数或找到满意的解。 6. 输出结果:输出全局最优解作为问题的最优解。 BPSO算法通过不断调整粒子的位置来搜索最优解,其中个体最优和全局最优的信息共享使得算法能够在搜索空间中快速收敛到较好的解。通过将问题表示为二进制向量,BPSO算法可以应用于背包问题等离散优化问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值