粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现

这里以 2D Michalewicz function 为对象来演示粒子群算法。

1、Michalewicz function

2、代码详解

2.1 画Michalewicz函数的网格图形

f=@(x,y)(-sin(x).*(sin(x.^2/3.1415926)).^(2*m)...-sin(y).*(sin(2*y.^2/3.1415926)).^(2*m));range=[0 4 0 4];
Ngrid=100;
dx=(range(2)-range(1))/Ngrid;
dy=(range(4)-range(3))/Ngrid;
xgrid=range(1):dx:range(2);
ygrid=range(3):dy:range(4);
[x,y]=meshgrid(xgrid,ygrid);
z=f(x,y);
figure(1);
%subplot(1,2,1);
surfc(x,y,z);
hold on;

2.2 粒子群优化算法的子函数

粒子群初始化

function [xn,yn]=init_pso(n,range)
xrange=range(2)-range(1);
yrange=range(4)-range(3);
xn=rand(1,n)*xrange+range(1);
yn=rand(1,n)*yrange+range(3);
end

粒子群的移动

function [xn,yn]=pso_move(xn,yn,xo,yo,a,b,range)
nn=size(yn,2);
xn=xn.*(1-b)+xo.*b+a.*(rand(1,nn)-0.5);
yn=yn.*(1-b)+yo.*b+a.*(rand(1,nn)-0.5);
[xn,yn]=findrange(xn,yn,range);
end

确保粒子群不会出界

function [xn,yn]=findrange(xn,yn,range)
nn=length(yn);
for i=1:nnif xn(i)<=range(1)xn(i)=range(1);endif xn(i)>=range(2)xn(i)=range(2);endif xn(i)<=range(3)xn(i)=range(3);endif xn(i)>=range(4)xn(i)=range(4);end
end
end   

2.3 粒子群算法的主体函数

%n = number of particles
% Num_iterations = number of iterations
n=10;
Num_iterations =50;
best=zeros(Num_iterations,3);
[xn, yn]=init_pso(n,range);
figure(2);
for i = 1:Num_iterationscontour(x,y,z,15); %show the contour of the objectvie functionhold on;%find the current best location(xo,yo)zn=f(xn,yn);zn_min=min(zn);xo=min(xn(zn==zn_min));yo=min(yn(zn==zn_min));zo=min(zn(zn==zn_min));plot(xn,yn,'.',xo,yo,'*');axis(range);beta=0.5;gamma=0.7;alpha=gamma.^i;[xn,yn]=pso_move(xn,yn,xo,yo,alpha,beta,range);drawnow;hold off;best(i,1)=xo;best(i,2)=yo;best(i,3)=zo;
end

3 图形展示,粒子数设为10,迭代次数设为50

Michalewicz function的网格图

粒子群初始化图,‘点’表示粒子,‘星’表示群中最小的粒子

 粒子群运动结束图,最后粒子都运动到了 '星' 点处

4 粒子群优化算法的优缺点

粒子群优化算法应用范围广,不要求目标函数可导。如果粒子群不够大(比如把粒子数设为2),迭代次数不够多(迭代次数设为5),最后可能无法得到最优解。由于算法初始化时随机生成粒子群,多次运行,粒子群不一样,最终的结果也可能会不一样(进入不同的局部最优解)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript excel

js做的 excel &#xff0c; http://handsontable.com/ js keyCode对照表 http://dwz.cn/Lknbz转载于:https://www.cnblogs.com/qq-757617012/p/4524448.html

中金人工智能报告:AI时代,10 年之后我们还能干什么?|71页完整报告

来源&#xff1a;黑科技智汇中金公司&#xff08;CICC&#xff09;发布了一份长达 71 页的人工智能的证券研究报告《人工智能时代&#xff0c;10 年之后我们还能干什么&#xff1f;》。对全球特别是中国企业当下的人工智能态势作了全面的介绍&#xff1a;包括 BAT、华为、科大讯…

从‘一边拉琴,一边哭’,看什么是真正的兴趣

记得填报志愿时&#xff0c;自己不知道对啥感兴趣&#xff08;现在依然不知道&#xff09;。那时特别简单&#xff0c;自己喜欢折腾家里的旧电器&#xff0c;就自以为对电子专业非常感兴趣。被模电数电&#xff08;电子方向的专业必修课&#xff09;折腾一番后&#xff0c;自己…

Python语言学习笔记

获得人生中的成功需要的专注与坚持不懈多过天才与机会。 ——C.W. Wendte Python将很快成为你最喜欢的编程语言&#xff01; Qt库&#xff1f; PyQt Perl-Qt 简单易学&#xff0c;功能强大&#xff0c;高效率的高层数据结构&#xff0c;简单而有效地实现面向对象编程。 Pyth…

UC伯克利新机器人成果:灵活自由地使用工具

来源&#xff1a;AI 科技评论摘要&#xff1a;前几天我们刚刚介绍了加州大学伯克利分校 Pieter Abbeel 教授领导伯克利机器人学习实验室&#xff08;UC Berkeleys Robot Learning Lab&#xff09;开发的会叠衣服的家务向机器人 BLUE&#xff0c;今天伯克利人工智能实验室&#…

bzoj 1934 最小割

收获&#xff1a; 1、流量为0的边可以不加入。 2、最小割方案要与决策方案对应。 1 #include <cstdio>2 #include <cmath>3 #include <cstring>4 #include <vector>5 #define min(a,b) ((a)<(b)?(a):(b))6 #define oo 0x3f3f3f3f7 #define N 6108 …

如何让学习变得像游戏一样好玩

如何让学习变得好玩&#xff1f;面对枯燥乏味的重复练习&#xff0c;大多数人因新奇感的消退而放弃&#xff0c;很少有人能够多坚持一会&#xff0c;更别说坚持十年了。 如何减轻这种枯燥乏味&#xff0c;让学习变得好玩&#xff1f; 许多孩子喜欢打游戏&#xff0c;玩得废寝…

【翻译】Ext JS 5:为不同设备设置不同的主题

原文&#xff1a;Sencha Ext JS 5: Supporting Different Themes for Different Devices 步骤1创建一个应用程序步骤2定义主题步骤3编辑Appjson文件以便支持多平台生成步骤4编辑output定义以便创建多个应用程序的manifests步骤5更新应用程序步骤6替换Appjson中的CSS配置步骤7替…

工业4.0:数字化供应链的三个方向

来源&#xff1a;资本实验室席卷全球的工业4.0革命几乎影响着每一个行业&#xff0c;包括各行业的供应链管理。在过去&#xff0c;供应链管理是令各行业都非常头疼的环节&#xff0c;因为传统供应链涉及大量模糊且无法访问的数据&#xff0c;就像”黑洞“一样吞噬着成本、时间与…

有效学习

怎样算有效学习&#xff1f; 记得有位大咖说过&#xff0c;‘当你把受过的教育都忘记了&#xff0c;剩下的就是教育’&#xff08;度娘说是爱因斯坦说的&#xff0c;此处未经考证&#xff09;。 学习可以看成是一个把知识放入潜意识的过程。所谓进入潜意识&#xff0c;是指当…

如果机器能帮我们学习,那么有多少东西能够被遗忘?

来源&#xff1a;原理在我还是个学生时的遥远年代&#xff0c;大多数计算机都还是体型巨大的机器。当时我有一个朋友&#xff0c;他的博士导师坚持让他对一个冗长又困难的原子理论进行手写计算。他用掉了一页又一页的草稿纸&#xff0c;上面充满了错误。于是最终他屈服于自己的…

如何通俗理解计算机视觉、计算机图形、图像处理之间的区别与联系

这三者之间联系和区别可以通过下图表示&#xff0c; 左边的图片表示实际景物&#xff0c;右边图片表示实际景物对应的图片。 1、计算机图形 计算机图形技术常用于计算机生成图形。该技术常用的领域有&#xff1a; a.动漫 b.游戏 c.计算机辅助设计&#xff08;CAD&#xff09;…

Android(java)学习笔记27:TextView属性大全

TextView属性大全&#xff1a; android:autoLink 设置是否当文本为URL链接/email/电话号码/map时&#xff0c;文本显示为可点击的链接。可选值(none/web/email/phone/map/all) android:autoText 如果设置&#xff0c;将自动执行输入值的拼写纠正。此处无效果&#xff…

日本电信企业5G部署计划 限制了华为中兴设备的使用

来源&#xff1a;OFweek电子工程据外媒报道&#xff0c;日本监管机构日前正式向日本电信企业分配5G频谱&#xff0c;而这也正是日本在来年春季推出高速无线服务(5G)的一个重要里程碑。日本三大运营商NTT Docomo、KDDI和软银&#xff0c;以及新进入者Rakuten Inc&#xff0c;都获…

Python安装工具包踩过的坑

1、背景介绍 重装win10系统&#xff0c;重装Python。在坑出现之前&#xff0c;已经完成了Python的安装&#xff08;D盘&#xff09;&#xff0c;并且在系统中添加了环境变量。由于平时需要用到Python2.7和Python3.6&#xff0c;这里将对应的解释器分别改名为Python2和Python3。…

C#实验——Problem Statement

Revision History Date Issue Description Author 17/May/2015 Windows Phone8.1 APP Have some ideas, then developing Windows Phone app 魏 潇 18/May/2015 Windows8.1 APP Transform the phone app to the Windows Store 8.1 platform 19…

物联网面临的7大网络安全威胁

来源&#xff1a;51CTO译稿摘要&#xff1a;曾经在物联网世界&#xff0c;一切都变得更加庞大。不仅是设备本身——有些小到只容纳几个芯片&#xff0c;他们通常隐藏其中&#xff0c;眼不见心不烦。但物联网中庞大的数据和设备规模令任何网络安全专业人士都感到头疼。据广泛统计…

从技术分工的角度来看996.ICU

最近&#xff0c;Github上996.ICU话题自诞生以来异常火爆&#xff0c; 很多人在网上吐槽程序员工作时间长&#xff0c;Python之父也为此伸张正义。 有人在网上抱怨资本家黑心&#xff0c;无情的压榨剥削员工。 各国都存在加班的现象&#xff0c;但似乎加班现象在中国最为严重。…

hibernate之CRUD操作

CRUD是指在做计算处理时的增加(Create)、读取(Retrieve)&#xff08;重新得到数据&#xff09;、更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作&#xff1a; 实体类&#xff1a; package com.oumyye.model;public class Student {private lon…

谷歌自动驾驶专利大曝光!

来源&#xff1a;智车科技摘要&#xff1a;本文仅针对其中自动驾驶汽车部分&#xff0c;说明自动驾驶的分级&#xff0c;再以Google为例&#xff0c;说明其发展的自动驾驶汽车和相关技术&#xff0c;分析及说明Google与自动驾驶汽车相关的发明专利及设计专利的布局&#xff0c;…