标准粒子群算法(PSO)matlab实现_粒子群算法matlab程序-程序员宅基地

技术标签: matlab  算法  开发语言  

粒子群算法( Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。鸟群中有个体和群体,个体和群体的信息是可以互通的。个体在随机搜寻食物的过程中,只要跟踪离食物最近的群体,就能最有效地找到食物。

1.一些基本概念
(1)粒子:优化问题的候选解,指鸟群中的一个个个体;
(2)位置:候选解所在的位置,即鸟群个体的位置;
(3)速度:粒子的移动速度;
(4)适应度:评价粒子优劣的值,一般为优化目标函数的数值;
(5)个体极值:单个粒子迄今为止找到的最佳位置,就鸟群觅食而言,是单个个体能够发现距离食物最近的个体;
(6)群体极值:所有粒子迄今为止找到的最佳位置。

2.大概流程及经典公式
根据这些概念,可以大概知道流程:1)初始粒子;2)计算适应度值;3)定义初始个体极值与群体极值;4)更新粒子位置与速度;5)更新个体极值和群体极值。
在实际问题的解决中,构建目标函数是最重要的,也是最难的。而粒子群算法中最经典的部分在于步骤4)(更新粒子位置与速度),其公式如下:
图1
xid——粒子的位置;
vid——粒子的移动速度;
w——惯性权重;
c1,c2——学习因子;
r1,r2——[0.1]中的随机数;

 

标准PSO算法的核心公式如下:

在这里插入图片描述

其中,w,c1,c2是预置好的:
w称为惯性权重,大小一般在[0.5,1.5]。
c1,c2称为学习因子,一般取值[1,4],通常设置的c1=c2,但是c1与c2不必完全相同。

此实验是在二维空间寻找最小值,设置多峰函数:
z = x^2 + y-7cos(pix)-8cos(2pi*y);
它的图像如下所示,我们要找的是z的最小值,也是z轴的最低点。

在这里插入图片描述
下面是一些参数设置的变化对粒子收敛情况的影响
本次实验中,种群规模为100,迭代次数为100,其他参数进行不断的变化
(1)w=0.8 , c1=1.4 , c2=1.4 这是一般情况下参数的设置。

 在这里插入图片描述

上图是粒子群在三维图上的变化,可以看出粒子的分布越来越集中,由于寻找的是最小值,后期的分布很难看出,以下是x-y的一个俯视图,看出粒子越来越集中。

在这里插入图片描述

后面为了更加直观的了解粒子的收敛情况,只给出粒子在二维平面(x,y)的一个运动情况。

在这里插入图片描述
(2)w=1.2 , c1=1.4 , c2=1.4 惯性权重变大,使得粒子对上一代的速度继承了更多,可能会导致粒子收敛困难。

在这里插入图片描述

(3)w=0.8 , c1=3 , c2=1.4。这里将w继续设置为0.8,个体学习因子c1变大,对收敛会有部分影响,通过多次实验发现它会导致最终寻找的最优解的变化范围变大。

在这里插入图片描述
(4)w=0.8 , c1=1.4 , c2=3。群体学习因子c2变大,对收敛会有部分影响,但是影响程度没有w剧烈。

 在这里插入图片描述

结论:
1.c1的值如果较大会缺乏搜索指导,虽然有时会得到最优解,但实验的结果随机性过大。
2.c2的值如果较大会影响最优值,但影响不大。
3.w的值如果较大会让粒子迅速拉向目标区域或者越过目标区域,进而影响算法性能。
4.对算法性能影响最大的是惯性权重,其次是加速系数。
5. 在种群规模不太小的情况下,适当的增加迭代次数会使结果更优。

改进:
1.初始使用较大的c1值和较小的c2值,增加多样性,后期让c1的值线性降低,c2的值线性增加,增强粒子收敛能力。
2.w的值在前期设置较大有助于全局搜索,后期减小加强局部搜索。

以上就是PSO的简单总结,初次更博,可能存在很多不足,请见谅。
PSO代码的详细讲解可见:https://www.bilibili.com/video/BV1KE411c7vK/

Matlab 粒子群算法PSO实例学习(有代码和详细注释)_哔哩哔哩_bilibili


matlab粒子群优化算法_哔哩哔哩_bilibili

另外一篇博客也不错:

Matlab粒子群算法(PSO)优化程序——经典实例_箫韵的博客-程序员宅基地_粒子群优化算法matlab程序


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jiesunliu3215/article/details/122008617

智能推荐

深度学习基础----mAP和CMC,Recall和Precision,ROC和AUC,NDCG_深度学习prec@-程序员宅基地

就Re-ID的任务来说: 已知:一个在训练集上训练好的模型,一个query( 用于查询的集),一个gallery( 在其中搜索结果,或test) 求:mAP, CMCmAP:mean Average Precision针对:检索问题。是就query和gallery来讨论直述:每一张查询图片在查找集(query和gallery..._深度学习prec@

Excel AutoFilter Copy-程序员宅基地

Sub CopyFilter()'by Tom OgilvyDim rng As RangeDim rng2 As RangeWith ActiveSheet.AutoFilter.Range On Error Resume Next Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _ .Spe..._autofilter copy

iOS学习线路图(参考)-程序员宅基地

花时间整理出了习路线图,希望大家可以参考一下iOS的完整学转载于:https://www.cnblogs.com/lcblg/p/3907267.html

vector的增长机制-程序员宅基地

vector的增长机制vector是ST L 中最常见的容器, 它占用的是一块连续分配的内存, 从数据存储的角度来讲, 和数组极其相似, 不同的是:数组是静态分配空间, 一旦分配了空间的大小, 就不可再改变了;而vector 是动态分配空间, 随着元素的不断增加, 它会按照自身的一套增长机制不断扩充自身的容量。vector 默认的扩容机制是按照容器现有容量的一倍进行增长。由于 Vector ...

spring-boot-route(十三)整合RabbitMQ-程序员宅基地

RabbitMQ简介及Spring Boot整合RabbitMQ

你必须知道的SON_.son可以匹配的内容是-程序员宅基地

JOSN的可以表示为以下三种类型简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串,数值,Boolean和null,但是不支持undefined.对象:对象作为一种复杂数据类型,表示的是一组无序的键值对,每个键值对可以是简单值,也可以是复杂数据类型的值.数组:数组也是一种复杂数据类型,表示的是一组有序值得列表,可以通过数值索引来访问其中得值,数组可以是任意类型-简单值..._.son可以匹配的内容是

随便推点

霞浦职业中专学校计算机专业,2019年霞浦职业中专学校中职中专招生简章-程序员宅基地

2019年霞浦职业中专学校中职中专招生简章学校简介我校是一所以工科类专业为主的集学历教育、职业培训及高校企业合作办学为一体的中等职业学校:学校坚持“就业有,创业有本领,有希望,发展有基础”的育人目标,通过课程、学分制、双元制教学模式、6S德育管理等,逐步形成学校办学特色,先后获得“福建省阳光工程培训先进单位”、“职业教育先进单位”和“农村青年就业转移先进单位”等荣誉称号。招生计划表:专业介绍一、数..._霞浦有职教高考班呜

完全卸载MySQL服务的方法-程序员宅基地

1. 重新运行安装文件,单击remove移除mysql。此时安装目录中的文件没有完全移除,需要手动删除安装目录的Mysql文件夹。2. 如果MySQL服务没有移除的话,以管理员方式运行cmd命令:sc delete MySQL即可删除。3. 删除mysql注册表信息:有几个地方: 1、HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\..._sc remove mysql

OpenCL向量加法-程序员宅基地

简介下面一个例子介绍了向量加法的OpenCL版,相当于学习C语言中的“Hello World”,本篇教程中的代码以及其余相关教程都可以通过OLCF github下载vecAdd.c#include #include #include #include // OpenCL kernel. Each work item takes care of one ele

2022年 HSC-1th中CRYPTO的AFFINE-程序员宅基地

2022年 HSC-1th中CRYPTO的AFFINE照例下载附件,是 py 文件:# -*- coding: utf-8 -*-import stringimport hashlibletter=string.ascii_letters+string.digits#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789def encrypt(m, c, a, b): for i in range(len(m))

Egret TypeScript基本写法学习文档-程序员宅基地

基本类型基础类型只有这么几种,与AS3对比TypeScript ActionScript3number Numberstring Stringboolean(0.8以前为bool) Booleanany *undefined undefinednull null任意类型:ActionScript

实验13:定时器0中断_定时器0中断函数-程序员宅基地

实验13:定时器0中断/*************************************************************************************** 定时器0实验 *实现现象:下载程序后D1小灯循环点亮1秒,熄灭1秒。使用单片机内部定时器可以实现准确延时。注意事项:无。 ..._定时器0中断函数