1、函数说明
主函数:
main
辅助函数:
F():接收位置参数,返回对应适应值
Initial_X():初始化粒子起始位置
Private_X():接受粒子上一位置,当前位置以及它们对应的适应值,返回适应值较大的位置
Next_X():接受粒子当前位置,个体最优位置以及群体最优位置,返回粒子下一位置

2、重要变量解释
Learning_Rate:学习率,例子偏向群体最优位置飞行的趋势大小
Information_Array:例子信息矩阵,包含{序号,速度(未用到),当前位置,当前位置适应值,个体最优位置,群体最优位置}这几个属性

3、改进
Initial()的改进:可根据向量定义域对粒子的初始位置做一定的限制,提高搜索出全局解的概率
Next_X()的改进:可尝试对学习率的其他的使用方法,缩短搜索时间;改进粒子只朝向个体最优个群体最优粒子方向飞行的方式,允许多个解的存在

效果如下:

主函数:main

Survival_Time=100;%粒子存活时间
nums=100;%粒子数量
x_dim=2;%向量X维度
Learning_Rate=0.8;%学习率
x_range=[-100,100-100,100];%向量X分量范围
Information_Array=zeros(nums,3+3*x_dim);%粒子信息矩阵
%编号(1)
Information_Array(:,1)=1:nums;
%速度(2)
Information_Array(:,2)=2;
%当前位置(3 -> 3+x_dim-1)
Information_Array(:,3:3+x_dim-1)=Initial_X(nums,x_dim,x_range);
%适应值(3+x_dim)
Information_Array(:,3+x_dim)=F(nums,x_dim,Information_Array(:,3:3+x_dim-1));
%私有最佳位置(4+x_dim -> 4+2*x_dim-1)
Information_Array(:,4+x_dim:4+2*x_dim-1)=Information_Array(:,3:3+x_dim-1);%当前只有一个向量位置,个体最优与其相同
%公有最佳位置(4+2*x_dim -> 3+3*x_dim)
temp=sortrows(Information_Array,3+x_dim);%根据当前适应值对整个信息矩阵进行行排序
Best_Invidual=temp(nums,:);%群体中最优个体记录
disp("第1代最佳适应值:"+Best_Invidual(1,3+x_dim));
Information_Array(:,4+2*x_dim:3+3*x_dim)=ones(nums,x_dim).*Best_Invidual(:,3:3+x_dim-1);%将群体最优位置赋予每个个体
flag=1;
plot(Information_Array(:,3),Information_Array(:,4),'*');
while flag<Survival_Time%记录当前例子当前位置与其适应值,后面计算需要使用temp_X=Information_Array(:,3:3+x_dim-1);temp_Y=Information_Array(:,3+x_dim);%粒子下一位置Next_X()Information_Array(:,3:3+x_dim-1)=Next_X(Learning_Rate,Information_Array(:,3:3+x_dim-1),Information_Array(:,4+x_dim:4+2*x_dim-1),Information_Array(:,4+2*x_dim:3+3*x_dim));%适应值Information_Array(:,3+x_dim)=F(nums,x_dim,Information_Array(:,3:3+x_dim-1));%个体最优位置Information_Array(:,4+x_dim:4+2*x_dim-1)=Private_X(temp_X,temp_Y,Information_Array(:,3:3+x_dim-1),Information_Array(:,3+x_dim));%公有最佳位置(4+2*x_dim -> 3+3*x_dim)temp=sortrows(Information_Array,3+x_dim);%根据当前适应值对整个信息矩阵进行行排序Best_Invidual=temp(nums,:);%群体中最优个体记录disp("第"+(flag+1)+"代最佳适应值:"+Best_Invidual(1,3+x_dim));Information_Array(:,4+2*x_dim:3+3*x_dim)=ones(nums,x_dim).*Best_Invidual(:,3:3+x_dim-1);%将群体最优位置赋予每个个体pause(0.1);plot(Information_Array(:,3),Information_Array(:,4),'*');flag=flag+1;
end

辅助函数:F()

function [Y] = F(nums,x_dim,X)
%接收参数:粒子数量,向量维度,粒子向量
%返回对应适应值
%F(X)=x1.^2+x2.^2+...+xn.^2-(x1.*x2+x2.*x3+...+x(n-1).*xn)
Y=zeros(nums,1);
for i=1:numstemp=X(i,:);Y(i,1)=sum(temp.^2)-sum(temp(1,1:x_dim-1).*temp(1,2:x_dim));
end
end

辅助函数:Initial_X()

function [Ret_X] = Initial_X(nums,x_dim,x_range)
%接收参数:粒子数量,向量维度,向量分量范围
%返回粒子初始位置
Ret_X=rand(nums,x_dim).*(x_range(:,2)-x_range(:,1)-1)'+(x_range(:,1))';
end

辅助函数:Private_X()

function [Ret] = Private_X(Last_X,Last_X_Y,Current_X,Current_X_Y)
%接收参数:粒子上一个位置与其适应值,当前位置与其适应值
%返回粒子私有最优位置
temp=(Last_X_Y>Current_X_Y);
Ret=(temp==1).*Last_X+(temp==0).*Current_X;
end

辅助函数:Next_X()

function [Ret] = Next_X(Learning_Rate,Current_X,Private_Best_X,Public_Best_X)
%接收参数:学习率(向着群体最优移动的趋势),当前位置,个体最优位置,群体最优位置
%返回每一粒子下一位置
temp_1=Private_Best_X-Current_X;
Temp_2=Public_Best_X-Current_X;
Ret=Current_X+(1-Learning_Rate).*temp_1+Learning_Rate.*Temp_2;
end

计算智能-群智能算法-粒子群算法matlab实现相关推荐

  1. pso解决tsp matlab,计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc...

    计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc 摘要:TSP是一个典型的NPC问题.本文首先介绍旅行商问题和粒子群优化算法的基本概念.然后构造一种基于交换子和交换序[1]概念 ...

  2. 【转】粒子群算法----粒子群算法简介

    一.粒子群算法的历史  粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,CAS中的成员称为主体.比如研究鸟群系统,每个鸟在这个系统 ...

  3. 基于群智能的路径规划算法(三)------遗传算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  4. 基于群智能的路径规划算法(四)------人工蜂群算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  5. MATLAB智能优化算法 - 粒子群算法及MATLAB实例仿真

    一.粒子群算法理论 粒子群算法来源于鸟类集体活动的规律性,进而利用群体智能建立简化模型.它模拟的是鸟类的觅食行为,将求解问题的空间比作鸟类飞行的时间,每只鸟抽象成没有体积和质量的粒子,来表征一个问题的 ...

  6. c语言计算极值范围用粒子最优算法,智能优化算法——粒子群算法小实践

    实验六 粒子群算法 一.实验目的与要求: 目的:通过本次实验,学生可以掌握粒子群算法基本原理.基本粒子群算法流程和关键参数的设置. 要求:上机仿真,调试通过. 二. 实验设备: 计算机.Matlab软 ...

  7. matlab中fic算法,粒子群算法在函数优化问题中的应用最终版(全文完整版)

    <粒子群算法在函数优化问题中的应用.doc>由会员分享,可免费在线阅读全文,更多与<粒子群算法在函数优化问题中的应用(最终版)>相关文档资源请在帮帮文库(www.woc88.c ...

  8. 算法-粒子群算法-Matlab实现

    粒子群算法(Particle Swarm Optimization,PSO)是20世纪90年代兴起的一门学科,因其概念简明.实现方便.收敛速度快而为人所知.粒子群算法的基本思想是模拟鸟群随机搜寻食物的 ...

  9. 【老生谈算法】标准粒子群算法(PSO)及其Matlab程序和常见改进算法——粒子群算法

    1.算法详解: 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]标准粒子群算法(PSO)及其Matlab程序和常见改进算法.docx 2 ...

  10. 基于群智能的三维路径规划算法 —— 粒子群算法

    目录 一. PSO算法的基本理论 二. PSO算法程序设计流程 三. MATLAB编程实现 四. 算法举例 一. PSO算法的基本理论 粒子群(PSO)算法是依托群鸟觅食的模型寻找最优解.群体特征基于 ...

最新文章

  1. 什么是体系化?为什么要体系化架构
  2. SharePoint 2010 BI(2):使用Visio“.NET研究” Service
  3. 从0到1走进 Kaggle
  4. asp动态树菜单集合(3/3)
  5. 技巧打开网页进行客户个性化信息提交(代码编写)
  6. Ubuntu 下搭建 NFS 服务
  7. 飞天技术汇“2018云栖大会·上海峰会”专场,等你加入
  8. Cisco二层交换机命令
  9. Android - shape圆形画法(oval)
  10. 【独立小程序商城】THINKPHP带后台管理+MYSQL数据库微信小程序商城系统源码
  11. Oracle10g 详细安装教程
  12. Java编写程序获取验证码
  13. 变形金刚11280超清迅雷下载
  14. 一文带你深入了解 SaaS(软件即服务) 的架构设计
  15. 春天的致富梦ZZNU
  16. pv 、uv、ip、vv、cv分别是什么
  17. 查询网站排名,收录情况
  18. 世界杯中隐藏的IoT物联网黑科技
  19. AI辅助检测脑动脉瘤,灵敏度达97.5%,华为云联合成果登上国际顶级期刊
  20. 中国第一个IT职场情商测评

热门文章

  1. [知识图谱实战篇] 七.HTML+D3实现关系图谱搜索功能
  2. 【数据结构与算法】之深入解析“按要求补齐数组”的求解思路与算法示例
  3. iOS逆向之深入解析如何使用Theos开发插件
  4. 最短路径(Shortest Paths)
  5. 安装好Pycharm后如何配置Python解释器简易教程(configure python interpreter)
  6. 【Java2】一维数组,家庭收支界面,/属性和方法,方法重载,变量分类,可变参数,包
  7. 【Linux系统编程】进程间通信之无名管道
  8. 【Qt】Qt中JSON简介
  9. 【Linux】一步一步学Linux——mesg命令(245)
  10. 【Linux】一步一步学Linux——unalias命令(206)