配电网粒子群算法实例
算例:
一、故障信息的数学表示
在上图中K表示断路器,每一个断路器上均有一个FTU装置,可以反馈断路器开关是否过流,用表示上传的故障信息,反映的是各分段开关处是否流过故障电流有故障电流为1,否则为0)。即:
因为FTU上传的信息可分为有故障信息及无故障信息两类,对于分段区间来讲也只能是有故障及无故障两种情况,所以我们可以用二进制编码规则对配电网故障定位问题进行数学建模。以上图所示辐射状配电网为例,系统拥有12个分段开关,我们可以用一串12位的二进制代码表示FTU的上传信息,作为程序的输入,1代表对应的开关有过流信息,0代表对应的开关无过流信息。同时用另一串12位的二进制代码作为程序的输出,代表对应馈线区间发生故障,代表无故障。
二、二进制PSO算法的配电网故障定位原理
应用二进制PSO算法求解配电网故障定位问题,粒子的位置代表配电网中馈线区段的状态,粒子的维数代表配电网的馈线区段总数。每一馈线区段存在0和1两种状态,0表示正常状态,1表示故障状态,馈线区段的状态为待求量。因此,N段馈线区段的状态求解就转化成N维粒子群优化求解,每个粒子的N维位置都表示为配电网N段馈线区段的潜在状态。每次迭代过程中,通过评价函数评价各粒子位置优劣,更新粒子的当前最优位置和全体粒子的最优位置,进而更新粒子的速度和位置,直到满足程序终止条件为止。最终得出的粒子群的全局最优位置就是所求的各馈线区段的实际状态。
三、构造配电网故障定位评价函数
基于待求各馈线区段实际状态下所对应的信息应与实际上传故障信息偏差最小的原则,构造如下评价函数:
表达式的值为每个潜在解对应的适应度值,值越小表示解越优良,因此评价函数应取极小值。
式中:为第j个开关FTU上传的故障信息,取值为1认为该开关流过了故障电流,为0则未流过;为各开关节点的期望状态,若该开关流过了故障电流,则期望状态为1,相反,期望状态为0,表达式为各区段状态的函数。N为配电网中馈线区段的总数,为配电网中各设备状态,为1表明设备故障,取0则设备正常。表示一个权系数乘以故障设备数,。是根据故障诊断理论中“最小集”概念设置的权重系数,取值范围介于与1之间,表明故障区间数越少解越优,避免出现误诊断,本文中权系数取0.5。
四、求期望函数
针对不同的网络,期望函数的表达式不同,无法用统一的格式表示出来。仅以上述算例为例来说明如何求取期望函数。
在辐射型配电网中,任何区间发生故障,必将导致其上游开关流过故障过电流。这是求取期望函数的原则。假设图一的馈线区段6处发生故障,那么分段开关K1,K2,K3 ,K6,都将有过电流若馈线区段11处发生故障,则K1,K2,K3 ,K6,K10都将有过电流。由此类推我们可得到各个分段开关的期望函数:
用粒子群算法求解配电网故障定位评价函数的极小值即可。
Matlab源代码:
clc;
clear all;
global Ij;
global Vmax; %允许误差
MaxNum=120; %粒子最大迭代次数
D=12; %粒子的维数
Particlesize=30; %粒子群规模
c1=2.1; %每个粒子的个体学习因子,也称为加速常数
c2=2.1; %每个粒子的社会学习因子,也称为加速常数
w=1; %惯性因子
Vmax=4; %粒子的最大飞翔速度
S_b=randint(Particlesize,D); %粒子所在的位置
V=Vmax*rand(Particlesize,D); %粒子的飞翔速度
Ij=[1 1 1 1 0 1 1 1 0 0 1 1];%FTU 反馈的值这里就是输入,请修改这里,看结果
fitness=F(S_b');%这里注意下,要转置
%inline定义的适应度函数会使程序运行速度大大降低
for i=1:Particlesize
f(i)=F(S_b(i,:));
end
personalbest_x=S_b;%这里是种群里的每个粒子都认为自己是最好的
personalbest_faval=f;
[globalbest_favali]=min(personalbest_faval);%全局最优
globalbest_x=personalbest_x(i,:);
k=1;
Start=0;
while k<=MaxNum
Remember=globalbest_faval;
for i=1:Particlesize
f(i)=F(S_b(i,:));%计算适应度函数值
if f(i)<personalbest_faval(i) %判断当前位置是否是历史上最佳位置
personalbest_faval(i)=f(i);
personalbest_x(i,:)=S_b(i,:);
end
end%这里就是把整个种群中的所有粒子都检查了一遍,保证当前最优
[globalbest_favali]=min(personalbest_faval);%更新种群最优
globalbest_x=personalbest_x(i,:);
for i=1:Particlesize %更新粒子群里每个个体的最新位置
V(i,:)=w*V(i,:)+c1*rand*(personalbest_x(i,:)-S_b(i,:))...
+c2*rand*(globalbest_x-S_b(i,:));%更新了速度
for j=1:length(Ij)
if rand(1)<Sigmoid(V(i,j))%这里体现了速度决定位置
S_b(i,j)=1;
else
S_b(i,j)=0;
end
end
end
if globalbest_faval-Remember==0
Start=Start+1;
if Start==20
disp(globalbest_x);
break;
end
end
k=k+1;
end
F.m
function fitness=F(SB)
global Ij;
IE=zeros(1,length(Ij));
IE(1)=SB(1)|SB(2)|SB(3)|SB(4)|SB(5)|SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(2)=SB(2)|SB(3)|SB(4)|SB(5)|SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(3)=SB(3)|SB(4)|SB(5)|SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(4)=SB(4)|SB(5);
IE(5)=SB(5);
IE(6)=SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(7)=SB(7)|SB(8)|SB(9)|SB(10);
IE(8)=SB(8)|SB(9)|SB(10);
IE(9)=SB(9);
IE(10)=SB(10);
IE(11)=SB(11)|SB(12);
IE(12)=SB(12);
fitness=sum(abs(Ij-IE))+0.5*sum(abs(SB));
end
Sigmoid.m
function AN=Sigmoid(V)
global Vmax;
if V>Vmax
AN=0.98;
elseif V>-Vmax
AN=1/(1+exp(-V));
else
AN=-0.98;
end
end
配电网粒子群算法实例相关推荐
- 粒子群算法实例-求解函数极值
前面介绍了<粒子群算法>的基本原理,这里结合实例,看看粒子群算法是怎样解决实际问题的.采用过的函数和<遗传算法实例>中的一样: f(x)=x+10sin5x+7cos4x f( ...
- 【Matlab多目标优化求解】粒子群算法求解配电网抢修优化问题【含源码 777期】
一.代码运行视频(哔哩哔哩) [Matlab多目标优化求解]粒子群算法求解配电网抢修优化问题[含源码 777期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解
01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 ...
- 基于改进二进制粒子群算法的配电网重构(matlab实现)
目录 一.引言 1.问题背景 2.二进制粒子群算法 2.1简介 2.2 S i g m o i d Sigmoid Sigmoid函数 2.3二进制粒子群算法 2.4算法的改进 二.配电网重构模型 1 ...
- MATLAB粒子群算法求解带充电站(桩)的电动车辆路径规划EVRP问题代码实例
MATLAB粒子群算法求解带充电站(桩)的电动车辆路径规划EVRP问题代码实例 问题实例描述: 现有一个配送中心需要向20个客户点进行送货.每个客户点有不同货物需求量和卸货服务时间.配送中心和客户点的 ...
- 粒子群算法matlab代码实例使用与参数解读(二维数据)
粒子群算法与matlab代码实例使用 粒子群算法介绍 粒子群算法使用场景 粒子群的优缺点 实例编程分析 代码分析 参数分析 更多应用场景 在网络中有很多的博客都已经粒子群算法的算法本质讲解的非常清晰明 ...
- 【选址优化】基于粒子群算法求解配电网抢修选址优化问题含Matlab源码
1 简介 基于粒子群算法求解配电网抢修选址优化问题. 2 部分代码 function DrawCircle(Circle1, Circle2, r, 3600, s)plot(model.trou ...
- Python之粒子群算法(含代码实例)
这个算法,咋一听感觉很高级,挺难的,其实学习过后也就那样,原理其实挺简单的.下面是我对粒子群算法的一些个人理解,如有差错,还望指出. 一.粒子群算法简介 Kennedy和Eberhart受人工生命研究 ...
- 主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算
主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算 以网络最小损耗为目标函数 基于改进粒子群算法进行重构 可以加入不同数量的分布式电源 包含M文件.模型图.程序框图以 ...
最新文章
- word公式和文字不在一行上,错位了如何解决
- 密码的复杂化#个人隐私保护系列#
- golang中的httptest
- 【Matlab】找到矩阵中每个连通域的最小值
- GDCM:读取流图像的测试程序
- Log and display Log text type in Account Overview page
- [转]Nant daily build实践
- 6-3 二叉树的重建 uva536
- qt msvc编译中文乱码解决
- HDU 5410 CRB and His Birthday
- pytorch forward
- @JVM垃圾收集器种类
- Spark SQL练习
- 5分钟商学院-个人篇-谈判能力
- Mac IDEA 自带Maven换国内源
- UE4像素流(Pixel Streaming)应用场景演示和分析
- 为什么学微电子的都怕掉进材料的坑?
- 电脑局域网之间文件互传、共享文件;特点:传输速率快,传输4G以上的文件,比如:centOS 7 64大于4G传输速率 7-10MB/S。
- 如何利用CRM留住企业老客户
- J2EE项目异常处理