clc;
clear ;
global Ij;
global Vmax; %允许误差
MaxNum=120; %粒子最大迭代次数
D=12; %粒子的维数
Particlesize=12; %粒子群规模
c1=2.1; %每个粒子的个体学习因子,也称为加速常数
c2=2.1; %每个粒子的社会学习因子,也称为加速常数
w=1; %惯性因子
Vmax=4; %粒子的最大飞翔速度
S_b=randi(Particlesize,D); %粒子所在的位置
V=Vmax*rand(Particlesize,D); %粒子的飞翔速度
Ij=[1 1 1 0 0 1 1 0 0 0 0 0];%FTU 反馈的值这里就是输入,请修改这里,看结果
fitness=F(S_b');%这里注意下,要转置
%inline定义的适应度函数会使程序运行速度大大降低
f=zeros(Particlesize);
for i=1:Particlesize
f(i)=F(S_b(i,:));
end
personalbest_x=S_b;%这里是种群里的每个粒子都认为自己是最好的
personalbest_faval=f;
[globalbest_faval]=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_faval]=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
没有合适的资源?快使用搜索试试~ 我知道了~
故障定位基于粒子群实现配电网故障定位附matlab代码.zip
共3个文件
m:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 75 浏览量
2022-10-11
23:08:16
上传
评论 3
收藏 2KB ZIP 举报
温馨提示
1.版本:matlab2019a,不会运行可私信 2.领域:【故障定位】 3.内容:基于粒子群实现配电网故障定位附matlab代码 4.适合人群:本科,硕士等教研学习使用
资源推荐
资源详情
资源评论
收起资源包目录
【故障定位】基于粒子群实现配电网故障定位附matlab代码 上传.zip (3个子文件)
FLPSO.m 2KB
Sigmoid.m 176B
F.m 584B
共 3 条
- 1
资源评论
- weixin_457157722023-10-31感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
- 惜時2023-12-27简直是宝藏资源,实用价值很高,支持!
- miao_______2024-04-30总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
天天Matlab科研工作室
- 粉丝: 3w+
- 资源: 7261
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功