群智能算法-粒子群1

news2024/9/19 10:41:59

一.基本理念

粒子群算法(PSO),最早由两位外国科学家在1995年提出,该算法源自对鸟类捕食问题的研究。

我们将鸟类补食性原则分为一下三个基数,每组基数对应一个粒子,而每组粒子我们将其称之为种群。所以我们将其在细分具体,基数一,为我们当前粒子的位置,基数二,为我们当前粒子的速度,基数三,为我们当前粒子的适应度值(这里的适应度值则是由我们当前的位置和速度综合求解得出的结果,对于每一个问题的自适应度值的求解过程都是不一样的)。

我们的每一个粒子都将其放入解空间中,在我们的解空间中,我们的粒子的每一代都得保留最优个体(Pbest),和最优种群值(Gbest),通过跟踪我们的最优粒子来更新最优位置,这里我们解释一个Pbest,是我们个体对应最优适应度值的最优位置,而Gbest是指种群中最优适应度值对应的最优位置。

我们对于每次的更新过程是通过比较新粒子的适应度值和个体极值,群体极值的适应度值更新最优个体(Pbest)和群里最优值(Gbest)。

 二.更新函数

其中V是我们的每一次迭代更新的速度,X是每一次要更新的位置,Pid,和Pgd分别为个体最优值,和群体最优值。w,c1,c2为常数。这里的w是一个很关键的值,它在迭代更进过程会随着迭代次数的变化而变化,会导致两边的权值发生差异。但目前我们只将其设为常数,不考虑权值的变化。

 三.具体实验步骤

 四.样例举例

一元函数的优化过程

1.初始化过程

我们设定x=1:0.01:2  这是我们x的取值范围和移动精度。

设定y=sin(10*pi*x)./x    这是我们对应的函数移动趋向。

我们当前要解决的问题我们要求出对应精度,y的最大值,所以我们的最优值,求的就是x在y上的最大分布。

参数初始化

c1=1.49445     c2=1.49445   这里的两个参数,我们是随便定义的。

maxgen=50  sizepop=10   分别定义我们的进化次数和种群规模

Vmin=-0.5    Vmax=0.5   速度的偏移范围

popmin=1   popmax=2   x也就是我们位置的范围变化

初始化粒子基数(生成我们第一代粒子的位置和速度)

for i=1:sizepop
   %%我们随机产生一个种群
   pop(i,:)=(rands(1)+1)/2+1;%%这里的随机数生成方式是为了保证我们生成的数能够在我们的位置范围中。
   %%我们的pop中的每一行都保留一个个体的当前的x位置
   V(i,:)=0.5*rand %%这里我们随机化每个粒子的速度
   %%V这里的每一行我们表示当前粒子的速度
   fitness(i)=sin(10*pop(i,:)./pop(i,:))
   %%在这里我们的自适应度值就是我们当前位置对应的函数值
end

个体最优值和群体最优值的初始化更新

%%bestfitness我们的群体最优适应度的值
%%bestindex ↑其对应的下标
[bestfitness,bestindex]=max(fitness);%%我们得出我们的最大适应度和其下标
%%zbest 这里是我们的全局最佳个体
%%gbest 这里是我们的每个个体对应的最优值
zbest=pop(bestindex,:)
gbest=pop
fitnesszbest=bestfitness  %%群体中的最优适应度值
fitnessgbest=fitness %%每个个体的最优适应度值

2.进化代数寻优过程

for i=1:maxgen %%最大代数寻优
    for j=i:sizepop
    %%我们先进行速度的更新
    %%根据我们的速度公式
    V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:))
    %%c1*rand*(gbest(j,:)-pop(j,:))%%个体最优位置减去每个个体的位置 
    %%c2*rand*(zbest(j,:)-pop(j,:))%%群体最优位置减去每个个体的位置
    %%为了保证我们个体速度的范围
    V(j,find(V(j,:)>Vmax))=Vmax;
    V(j,find(V(j,:)<Vmin))=Vmin;
    %%种群位置的更新 (速度和位置先后更新次序不可颠倒)
    pop(j,:)=pop(j,:)+V(j,:);%%更据我们的公式我们得出
    %%同时我们保证位置的范围是否超出
    pop(j,find(pop(j,:)>popmax)) = popmax;%%局限最大
    pop(j,find(pop(j,:)<popmin)) = popmin;%%局限最小
    fitness(j)=fun(pop(j,:));%%对于每一个位置的适应度更新
    %%这里我们的fun函数返回就是x对于在y上的位置
    end
    for j=1:sizepop
    %%在我们将个体位置,群体位置,还有每个位置的适应度得出后,我们还有对个体最优进行更新
       if fitness(j)>fitnessgbest(j)
         gbest(j,:)=pop(j,:)%%保留最优位置%%每个个体
         fitnessgbest(j)=fitness(j);%%保留最优适应度值%%每个个体
       end
    %%在将gbest和fitnessgbest更新完毕之后我们在将群体最优位置和群体最优适应度更新了
       if fitness(j)>fitnesszbest
         zbest=pop(j,:);
         fitnesszbest=fitness(j);
       end
    end
    hold on
    plot(gbest,fitnessgbest,'r*')%%将粒子的走向绘出
    yy(i)=fitnesszbest%%保留种群最优值,之后将其绘图用于识别适应代数和适应度变化的趋势
end

3.将结果进行绘图用于直观的看出粒子的走向和,进化代数和适应度的变化

hold on
plot(zbest,fitnessbest,'r*')%%输出我们群体最优值的对于的点


figure
%%直观的查看每一代的适应度是如何变化的
plot(yy)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

4. 数据绘图

1.初始函数绘图

2.每代最优粒子分布情形

3.每代种群最优适应度的变化 

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

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

相关文章

C++核心编程—类和对象,类的三大特性——封装、继承、多态

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.类和对象的概念①什么是对象&#xff1f;②抽象和类1.类的基本概念2.类的声明与定义&#xff1a;3.对象的创建与使用 二.类的封装①为什么有封…

阿里云国际站代理商:阿里云支持哪些大数据方案和应用?如何使用和操作?

阿里云国际站代理商&#xff1a;阿里云支持哪些大数据方案和应用&#xff1f;如何使用和操作&#xff1f; [本文由阿里云代理商聚搜云撰写] 大数据时代已经来临&#xff0c;如何处理并分析这些海量的数据成了企业迫切需要解决的问题。作为一家国内领先的云计算提供商&#xff0…

传地址给组件并让该组件用到地址在背景图片中的方法

问题 这是我在开发中遇到的问题。在网站的分页面中&#xff0c;背景图片的格式几乎一模一样。只是上面的文字和图片不一样而已。 所以我希望写一个组件&#xff0c;然后页面只需要传入背景图片地址和标题就可以显示出相关内容。 于是我动手写了&#xff0c;大致思路是一个盒…

Win11的两个实用技巧系列之读取硬盘很卡的解决办法、添加防火墙信任项方法

win11读取机械硬盘速度慢? win11读取硬盘很卡的解决办法 win11读取机械硬盘速度慢&#xff1f;win11系统硬盘读取速度太慢了&#xff0c;该怎么解决呢&#xff1f;下面我们就来看看win11读取硬盘很卡的解决办法 不少win11用户都遇到了读取硬盘很卡的情况&#xff0c;导致等待…

2023年铜川宜宾半程马拉松赛-人生首次半马比赛

1、赛事背景 2023年5月21日&#xff0c;我参加了2023年铜川宜宾半程马拉松赛&#xff0c;也是人生首次半马比赛。。很久之前的天气预报就是说要下雨&#xff0c;有的时候更是预报中大雨&#xff0c;所以很担心半马会不会延期举办&#xff0c;还好如期举行了。 2023宜君“药谷飘…

盐城北大青鸟东台基地IT精英挑战赛作品展示

北大青鸟IT精英挑战赛作品展示 ——《波比》 这是我们21级老生们的作品&#xff0c;主要的创作灵感来自于&#xff0c;可爱的小青蛙和王子小时候结合而成的IP形象&#xff0c;同时也是漫展的追随者。 设计团队21级计算机2班&#xff1a;王丽娜 陈美玲 陆梅莹

深度学习实战——模型推理优化(模型压缩与加速)

忆如完整项目/代码详见github&#xff1a;https://github.com/yiru1225&#xff08;转载标明出处 勿白嫖 star for projects thanks&#xff09; 目录 系列文章目录 一、实验思路综述 1.实验工具及内容 2.实验数据 3.实验目标 4.实验步骤 二、模型压缩与加速综述 1.模…

C++中的高阶函数:以std::function优雅地实现回调

C中的高阶函数&#xff1a;以std::function优雅地实现回调 1. 简介1.1 C高阶函数的概念1.2 C的std::function的功能及其重要性 2. std::function的使用2.1 std::function的定义和基本使用2.1.1 std::function的定义2.1.2 std::function的基本使用 2.2 std::function接受普通函数…

安吉尔航天净水新品发布,净水行业已进入新赛点?

作为具有较强线下依赖性的家电细分市场&#xff0c;净水器行业受到外部因素的扰动较大&#xff0c;2020年&#xff0c;经济下行趋势明显&#xff0c;这一年也成为国内净水器市场的拐点&#xff0c;不少业内人士认为多年的行业扩张期已在此结束。 但进入2023年&#xff0c;随着…

【收藏】麻省理工:如何选择和设计论文的Figure?

论文中的图表以独有的方式组织信息&#xff0c;更好地传递作者思想。那么&#xff0c;如何选择和设计合适的Figure&#xff1f; MIT Communication Lab&#xff08;麻省理工学院通信实验室&#xff09;为作者提供了有效的建议&#xff0c;我们来学习一下 ~ 01 数据图 在制作数…

使用 LSSVM 的 Matlab 演示求解反常微分方程问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Qt Quick系列(3)—组件component

&#x1f680;作者&#xff1a;CAccept &#x1f382;专栏&#xff1a;Qt Quick 文章目录 概念相关知识点代码示例总结 概念 在Qt Quick中&#xff0c;组件&#xff08;Component&#xff09;是一种可重用的元素&#xff0c;可以包含其他子组件或属性。它们可以用来创建自定…

PIC adc模块的配置

PIC adc模块的配置有如下要点&#xff1a; 1. adc模块本身&#xff1a; 注意&#xff0c;Auto-conversion Trigger和ADC的clock是两个概念。 auto-conversion Trigger的频率不得超过ADC采样一次的总时长。而真正的采样率是auto-conversion Trigger的頻率。 采样的过程中&…

2023音视频开发程序员未来10年路线选择

2023音视频开发程序员未来10年路线选择&#xff1a; 音视频领域&#xff0c;其实你可以分三个部分来看&#xff0c; 第一是音视频本身&#xff0c;第二是网络通讯&#xff0c;第三是图像处理。 音视频本身涉及到音视频视频编解码啊&#xff0c;各种视频容器啊等等协议规范。 网…

【Java SE】| Java 序列化详解

目录 &#x1f981; 什么是序列化和反序列化?&#x1f981; 序列化和反序列化常见应用场景&#x1f981; 序列化协议对应于 TCP/IP 4 层模型的哪一层&#xff1f;&#x1f981; 常见序列化协议有哪些&#xff1f;1. Java自带的序列化方式2. Kryo3.Hessian &#x1f981; 什么是…

Dockerfile(6) - EXPOSE 指令详解

EXPOSE 通知 Docker 容器在运行时监听指定的网络端口 EXPOSE 端口号 EXPOSE 端口号/协议 默认协议是 TCP 同时在 TCP、UDP 上暴露端口 EXPOSE 80/tcp EXPOSE 80/udp EXPOSE 原理 个人理解&#xff1a;EXPOSE 暴露的端口更像是指明了该容器提供的服务需要用到的端口EXPOSE …

独角数卡 搭建-邮件配置-Epusdt配置-收U详细配置

配置独角数卡 https://github.com/assimon/dujiaoka/wiki/2.x_bt_install ⚠️正式上线后一定要将.env配置里面的APP_DEBUG设置为false⚠️ ⚠️正式上线后一定要将.env配置里面的APP_DEBUG设置为false⚠️ ⚠️正式上线后一定要将.env配置里面的APP_DEBUG设置为false⚠️ 安…

FMC子卡设计原理图:141-四路 250Msps 16bits AD FMC子卡 模拟信号、无线电、光电的采集场景

FMC141-四路 250Msps 16bits AD FMC子卡 一、产品概述&#xff1a; 本板卡基于 FMC 标准板卡&#xff0c;实现 4 路 16-bit/250Msps ADC 功能。遵循 VITA 57 标准&#xff0c;板卡可以直接与xilinx公司或者本公司 FPGA 载板连接使用。板卡 ADC 器件采用 ADI 公司 AD9467…

基于关联规则挖掘的商品交叉销售分析

基于关联规则挖掘的商品交叉销售分析 小P&#xff1a;我们最近考虑将一些相关的商品打包销售&#xff0c;以提高GMV&#xff0c;有没有好的方法啊 小H&#xff1a;参考经典的啤酒尿布案例&#xff0c;可以尝试通过关联规则挖掘相关信息 数据探索 # 导入库 import pandas as pd…

创新工具 | 教你6步用故事板设计用户体验事半功倍

问题 构思方案时团队在细节上难以共识 故事板是什么&#xff1f;故事板就像连环画一样&#xff0c;将用户使用解决方案的关键步骤顺序串联了起来&#xff0c;呈现了方案和用户之间的交互。 故事板以先后顺序展现团队票选出来的最佳解决方案&#xff0c;在过程中对于方案中未…