一、获取代码方式

获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2:
完整代码已上传我的资源:【物理应用】基于matlab粒子群配电网重构【含Matlab源码 764期】

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、粒子群算法简介

1 粒子群算法的概念
粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。

2 粒子群算法分析
2.1基本思想
粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。下面的动图很形象地展示了PSO算法的过程:

2 更新规则
PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。

公式(1)的第一部分称为【记忆项】,表示上次速度大小和方向的影响;公式(1)的第二部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;公式(1)的第三部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。以上面两个公式为基础,形成了PSO的标准形式。

公式(2)和 公式(3)被视为标准PSO算法。
3 PSO算法的流程和伪代码

三、部分源代码

%主函数
clear
clc
warning offN=10;%节点总数(包括电源节点)
R=16;%支路总数
sizepop=10;%粒子群种群规模
maxgen=200;%算法最大迭代次数pop=pop_initial(sizepop,N,R);%种群初始化
Vmax=4;Vmin=-Vmax;%粒子速度的上限与下限
Sigmoid=@(x) 1./(1+exp(-x));Utility=FAPSO_LDNP(N,pop,Vmax,Vmin,maxgen,sizepop);%调用FAPSO算法求解LDNP问题
%结果显示
figure(4)
plot(Utility)
grid on
xlabel('迭代次数','fontsize',12)
ylabel('投资效益比','fontsize',12)
title('FAPSO迭代收敛图','fontsize',12)
function Utility=FAPSO_LDNP(D,pop,Vmax,Vmin,maxgen,popsize)
vmax=Vmax/4;
vmin=-Vmin/-4;
popmax=5;
popmin=-5;
c1=2;
c2=2;
w=0.8;%固定惯性权重
wmin=0.4;
k1=1.5;%惯性权重调整参数
k2=0.3;
% 产生初始粒子和速度
for i=1:popsize%随机产生一个种群pop0(i,:)=5*rands(1,D);    %初始种群V(i,:)=rands(1,D);  %初始化速度%计算适应度fitness(i)=fun_LDNP(pop0(i,:));   %染色体的适应度
end% 个体极值和群体极值
[bestfitness,bestindex]=max(fitness);
zbest=pop0(bestindex,:);   %全局最佳
gbest=pop0;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值%加FA改进  分组
Fav=sum(fitness)/popsize;%F_{av}
C_index=find(fitness>=Fav);%C组,第三组,适应值最差的一组 地址变量
lc=length(C_index);
b_index=find(fitness<Fav);%准B组,其中一部分更优的粒子将会被分到A组,剩下的才是真正的B组
lb=length(b_index);
Fav_=0;
for i=1:lbFav_=Fav_+fitness(b_index(i));
end
Fav_=Fav_/lb;%F_{av}^'
A_index=find(fitness<Fav_);%A组
la=length(A_index);
B_index=find(fitness>=Fav_&fitness<Fav);%B组
lb=length(B_index);
%算权重
W=zeros(popsize,1);%开辟惯性权重存储空间
for i=1:popsizeif sum(i==A_index)W(i)=w-(w-wmin)*abs(fitness(i)-Fav_)/(fitnesszbest-Fav_);elseif sum(i==B_index)W(i)=w;elseif sum(i==C_index)W(i)=1.5-1/(1+k1*exp(-k2*abs(fitnesszbest-Fav_)));end
end
for i=1:10
[~,~,~]=jiedian(pop(:,:,i));
end
% 迭代寻优
for i=1:maxgenfor j=1:popsize%速度更新V(j,:) = W(j)*V(j,:) + c1*rand*(gbest(j,:) - pop0(j,:)) + c2*rand*(zbest - pop0(j,:));V(j,V(j,:)>vmax)=vmax;V(j,V(j,:)<vmin)=vmin;%种群更新pop0(j,:)=pop0(j,:)+0.1*V(j,:);pop0(j,pop0(j,:)>popmax)=popmax;pop0(j,pop0(j,:)<popmin)=popmin;%适应度值fitness(j)=fun_LDNP(pop0(j,:)); endfor j=1:popsize%个体最优更新if fitness(j) > fitnessgbest(j)gbest(j,:) = pop0(j,:);fitnessgbest(j) = fitness(j);end%群体最优更新if fitness(j) > fitnesszbestzbest = pop0(j,:);fitnesszbest = fitness(j);endend yy(i)=fitnesszbest;   %惯性权重更新%加FA改进  分组Fav=sum(fitness)/popsize;%F_{av}C_index=find(fitness>=Fav);%C组,第三组,适应值最差的一组 地址变量lc=length(C_index);b_index=find(fitness<Fav);%准B组,其中一部分更优的粒子将会被分到A组,剩下的才是真正的B组lb=length(b_index);Fav_=0;for ii=1:lbFav_=Fav_+fitness(b_index(ii));endFav_=Fav_/lb;%F_{av}^'A_index=find(fitness<Fav_);%A组la=length(A_index);B_index=find(fitness>=Fav_&fitness<Fav);%B组lb=length(B_index);%算权重W=zeros(popsize,1);%开辟惯性权重存储空间for ii=1:popsizeif sum(ii==A_index)W(ii)=w-(w-wmin)*abs(fitness(ii)-Fav_)/(fitnesszbest-Fav_);elseif sum(ii==B_index)W(ii)=w;elseif sum(ii==C_index)W(ii)=1.5-1/(1+k1*exp(-k2*abs(fitnesszbest-Fav_)));endend
end

四、运行结果


五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 门云阁.MATLAB物理计算与可视化[M].清华大学出版社,2013.

【物理应用】基于matlab粒子群配电网重构【含Matlab源码 764期】相关推荐

  1. 主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算

    主题:基于改进粒子群算法的含源配电网静态重构 利用IEEE-33节点系统进行仿真计算 以网络最小损耗为目标函数 基于改进粒子群算法进行重构 可以加入不同数量的分布式电源 包含M文件.模型图.程序框图以 ...

  2. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  3. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  4. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  5. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  6. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  7. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  8. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  9. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  10. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

最新文章

  1. k8s概念入门之control-manager-针对1.1.版本阅读
  2. 51Nod --1133 不重叠的线段
  3. UI组件之ProgressBar及其子类(二)SeekBar拖动条和RatingBar星级评分条的使用
  4. boost::spirit模块将 QString 数据类型用作 Qi 属性的测试程序
  5. 工程计价里面的表以及相关税额的计算
  6. php自动安装myqsl,php – 在自制的小牛上安装MySQL麻烦
  7. python训练营微信广告发送机_python实现给微信公众号发送消息的方法
  8. 层次聚类算法_机器学习理论(十四)聚类
  9. 组件化开发Android应用及SDK
  10. c语言中指,C语言程序设计中指教学要点分析.doc
  11. 百度地图多点路线规划_自驾游路线规划神器:高德地图路书功能
  12. ibm澳州业务_通过集体学习使业务用户能够使用IBM Blueworks Live和IBM Industry Models进行业务建模
  13. C++ _stdcall和__stdcall、_fastcall的区别
  14. 华为设备无线环境中的Portal认证
  15. ZYNQ-AXI DMA IP简介
  16. bind: An operation on a socket could not be performed because the system lacked sufficient buffer sp
  17. matlab散点图折线图_什么是散点图以及何时使用
  18. 2020科目一考试口诀_2021驾考科目一技巧口诀
  19. 认证资料大全(八)------ SUN认证列表
  20. YOLOV5:在本地电脑训练模型

热门文章

  1. PHP中单引号双引号使用原则
  2. SharpGL学习笔记(十二) 光源例子:解决光源场景中的常见问题
  3. python入门安装
  4. Android安全-代码安全4-逆向工具对抗
  5. 一个rsync自动备份并发信通知的shell脚本
  6. (原创)c++11改进我们的模式之改进单例模式
  7. (数据库篇) SQL查询~ 存在一个表而不在另一个表中的数据
  8. 第9章 逻辑回归 学习笔记 中
  9. HTC Vive手柄实现在平面上划线
  10. 190111每日一句