粒子群算法(PSO)测试函数寻优

2023-05-16

3.1粒子群算法

        粒子群优化算法是一种模拟鸟群捕食活动的进化算法,体现了种群相互协作行为的群体智能。在处理优化问题时,每个粒子对应搜索空间的一个潜在方案,在进化过程中基于适应度函数进行选择和记录,粒子之间分享速度信息,并调节运动速度寻找最佳位置。

假设待分配的激光武器数量为nW,无人机数量为nT。标准的粒子群算法包含了N个粒子的种群,每个个体包含了3个n维搜索空间中的向量,分别为粒子当前位置xi、粒子当前最佳位置pi和速度vi。粒子群算法寻优过程中,每个粒子xi以速度vi在搜索空间中运动,通过种群的协作来调节各粒子的速度,更新粒子位置以寻找最优解。

        种群进化过程中,每一代中的各个粒子在自身惯性速度的基础上,同时向当前粒子自身历史最优位置和群体最优位置方向加速获得新速度,并对位置进行更新。设种群全局最优粒子为pg,第k代粒子第d维变量进化更新算法如下:

 其中,d=1,2,⋯,nW表明火力单元变量的维数;ϕ1,d和ϕ2,d分别为[0,ϕ1,max]和[0,ϕ2,max]区间内均匀分布的随机数;为粒子的惯性权重,可采用线性递减策略对第k代的惯性权重系数进行更新。粒子群算法记录个体过去最佳位置pi和种群全局最优位置pg,并构建它们对寻优过程的正反馈作用机制,通过对各粒子速度的激励,粒子相互协同以快速发现高适应度函数。火力分配时需获取整数配对,可根据连续粒子群算法进行离散化,并以粒子对应的适应度函数评价解的质量。

3.1粒子群寻优

        测试函数选择如下:  (理论最优值为1)     

function y = fun(x)
%函数用于计算粒子适应度值
%x           input           输入粒子 
%y           output          粒子适应度值 
y=sin( sqrt(x(1).^2+x(2).^2) )./sqrt(x(1).^2+x(2).^2)+exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)-2.71289;

粒子群算法相关代码:

%% 清空环境
clc
clear

%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;

maxgen=300;   % 进化次数  
sizepop=20;   %种群规模

Vmax=0.5;
Vmin=-0.5;
popmax=2;
popmin=-2;

%% 产生初始粒子和速度
for i=1:sizepop
    %随机产生一个种群
    pop(i,:)=2*rands(1,2);    %初始种群
    V(i,:)=0.5*rands(1,2);  %初始化速度
    %计算适应度
    fitness(i)=fun(pop(i,:));   %染色体的适应度
end

%% 个体极值和群体极值
[bestfitness bestindex]=max(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值

%% 迭代寻优
for i=1:maxgen
    
    for j=1:sizepop
        
        %速度更新
        V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - 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,:)); 
   
    end
    
    for j=1:sizepop
        
        %个体最优更新
        if fitness(j) > fitnessgbest(j)
            gbest(j,:) = pop(j,:);
            fitnessgbest(j) = fitness(j);
        end
        
        %群体最优更新
        if fitness(j) > fitnesszbest
            zbest = pop(j,:);
            fitnesszbest = fitness(j);
        end
    end 
    yy(i)=fitnesszbest;    
        
end
%% 结果分析
plot(yy)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

        寻优结果:

 作一些寻优的小改进1:PSO0.m

       ( 改进后的代码在我资源下载列表进行下载)

 寻优的小改进2:PSO1.m

  寻优的小改进2:PSO2.m

 

  寻优的小改进2:PSO3.m

   寻优的小改进2:PSO4.m

 几种方法的拟合效果都还可以!!!!

                        详细代码见资源列表--->

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

粒子群算法(PSO)测试函数寻优 的相关文章

  • 图像识别的未来:机遇与挑战并存

    识别图像对人类来说是件极容易的事情 xff0c 但是对机器而言 xff0c 这也经历了漫长岁月 在计算机视觉领域 xff0c 图像识别这几年的发展突飞猛进 例如 xff0c 在PASCAL VOC物体检测基准测试中 xff0c 检测器的性能
  • 在Ubuntu中通过CV_bridge更改OpenCV版本

    由于最近一个demo使用的OpenCV版本高于Ubuntu1804melodic自带的OpenCV3 2版本 xff0c 需要调节OpenCV的版本 1 安装OpenCV 下载地址 xff1a Releases OpenCV选择自己需要的版
  • LQR控制算法的浅析

    目录 前言 一 知识点补充 1 拉格朗日乘子法 2 积分中值定理 3 向前欧拉法 xff0c 向后欧拉法 xff0c 中点欧拉法 4 向量的导数 5 矩阵求逆引理 记住就好 xff0c 推导见链接 二 连续时间下的LQR推导 1 系统状态方
  • Linux网络编程【UDP】

    文章目录 UDP C S 通信TCP和UDP对C S 通信相关函数recvfrom xff08 accept 43 read xff09 sendto xff08 connect 43 write xff09 bind UDP 服务代码参考
  • C语言结构体对齐

    计算机内存是以字节 xff08 Byte xff09 为单位划分的 xff0c 理论上CPU可以访问任意编号的字节 xff0c 但实际情况并非如此 cpu一次能读取多少内存要看数据总线是多少位 xff0c 如果是16位 xff0c 则一次只
  • 匿名飞控STM32版代码整理之Ano_Imu.c

    一 ANO Imu c文件 COPYRIGHT 2016 ANO Tech 作者 xff1a 匿名科创文件名 xff1a ANO IMU c描述 xff1a 姿态解算函数官网 xff1a www anotc com淘宝 xff1a anot
  • 匿名飞控码STM32版代码整理之Ano_AttCtrl.c

    代码 include Ano AttCtrl h include Ano Imu h include Drv icm20602 h include Ano MagProcess h include Drv spl06 h include A
  • realsense版本号问题

    问题 xff1a librealsense2 so 2 47 cannot open shared object file No such file or directory 打开驱动查看版本号 realsense span class t
  • YOLOv3

    YOLOv3 论文信息论文标题 xff1a 论文作者 xff1a 收录期刊 会议及年份 xff1a 论文学习YOLOv3 网络架构 xff1a YOLO 输出特征图解码 xff08 前向过程 xff09 xff1a 训练策略与损失函数 xf
  • 使用Gazebo进行移动机械臂抓取仿真

    该项目在Gazebo中搭建一款机器人模型 xff0c 其底盘使用turtlebot移动机器人底盘 xff0c 机械臂采用结构较为简单的turtlebot arm xff0c 并在底盘上添加kinect深度相机 最终该机器人可实现自主导航 物
  • 【树莓派——Ubuntu 20.04 系统安装及Windows远程桌面连接显示】

    前言 文章A主要是Raspberry Pi官方系统的安装和用VNC查看器远程连接显示 xff1b 这篇文章主要分享一下Ubuntu 20 04系统的安装以及用Windows 远程桌面连接显示 Ubuntu 20 04系统的下载和烧录 专门的
  • Abstract写作常用句式

    Abstract 摘要以最简洁的文字概括论文 xff0c 点明研究的目的 途径 结果 意义 xff0c 以便读者决定是否要阅读全文 摘要一般包含几项内容 xff1a 1 论文主题 xff08 1句 xff09 2 理论基础 途径 方法 xf
  • mysql备份与恢复:完全备份,增量备份,基于位置点恢复,基于时间点恢复

    理论介绍 数据备份的重要性数据库备份的分类 常见的备份方法MySQL完全备份数据库完全备份分类 数据库备份与恢复MySQL数据库完全备份与恢复mysqldump备份与恢复MySQL数据库增量备份恢复基于位置的恢复基于时间恢复 数据备份的重要
  • vue => element 进度条 自定义文字 三层数据渲染页面报错:Invalid prop: custom validator check failed for prop “percentage

    三层数据渲染页面报错 报错原因分析 xff1a 解决方案 xff1a span class token operator lt span span class token operator span span class token ope
  • 使用xfsdump进行文件的备份与恢复

    1 添加一块硬盘大小随意 2 sdb为新添加的硬盘 3 格式化为xfs格式 4 新建目录并永久挂载 mount dev sdb xfsdump 5 将sdb设备挂载到 xfsdump 目录 编辑 etc fstab 文件 将 挂载的信息卸写
  • Jetson Orin NX上手使用(Linux系统的配置)

    先介绍手上拿到的orin nx模块 xff1a Jetson Orin NX 16GB 100TOPS的算力听起来顶呱呱 摸过一些jetson系列套件的我拿到手自信开搞 然后就自闭了 他好像跟以前的不是一个路子啊 xff08 以前摸过的有n
  • 51单片机的串口通信原理

    一 并行和串行通信方式 通信有并行和串行两种通信方式 在单片机系统以及现代单片机测控系统中信息交换多采用串行通信方式 1 并行通信方式 并行通信通常是将数据字节的各位用多条数据线同时进行传送 xff0c 每一位数据都需要一条传输线 如下图所
  • 正点原子stm32F407学习笔记3——蜂鸣器实验

    一 硬件设计 蜂鸣器为有源蜂鸣器 xff0c 当 PF 8 输出高电平的时候 xff0c 蜂鸣器将发声 xff0c 当 PF 8 输出低电平的时候 xff0c 蜂鸣器停止发声 xff0c 硬件原理图如下 二 软件设计 1 新建beep c文
  • 先面试还是先笔试-找工作,是先面试,还是先笔试?

    有些工作不需要笔试 有采访 一般来说 xff0c 你会先在笔试中检查你的专业水平 xff0c 然后在面试时检查你的形象和沟通水平 公务员考试先面试还是笔试 先笔试 xff0c 通过后面试 是先面试还是先笔试 xff1f 不同的单位会有不同的
  • 北京邮电大学2023级工商管理硕士MBA(非全日制)已开启

    工商管理硕士专业学位 xff08 非全日制 xff09 预面试通知 北京邮电大学MBA项目以 技术叠加管理 科学叠加艺术 为理念 xff0c 以 追求卓越 持续创新 为驱动 xff0c 面向信息化社会的企事业单位 政府部门及创业者 xff0

随机推荐

  • 【视频教程】基于PyTorch机器学习与深度学习实践应用与案例分析

    近年来 xff0c 随着AlphaGo 无人驾驶汽车 医学影像智慧辅助诊疗 ImageNet竞赛等热点事件的发生 xff0c 人工智能迎来了新一轮的发展浪潮 尤其是深度学习技术 xff0c 在许多行业都取得了颠覆性的成果 另外 xff0c
  • ORB-SLAM3运行过程记录

    试着运行ORB SLAM3 xff0c 做的部分修改 在ORB SLAM3 Examples ROS ORB SLAM3 src中修改ros rgbd cc的topic订阅 xff1a xff08 参考https blog csdn net
  • Introduction写作常用句式

    Introduction 引言部分介绍此项研究的主题 背景 范畴 xff0c 并说明全文的结构 xff0c 便于读者阅读 xff0c 一般包含几项内容 xff1a 1 背景介绍 2 现有问题 3 研究目标 4 篇章结构 1 背景介绍 has
  • mysql中的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP

    在mysql中 xff0c 如果类型为时间的列设置了CURRENT TIMESTAMP xff0c 那么在insert一条新记录的收 xff0c 时间字段自动获取到当前时间 xff0c 如果设置了ON UPDATE CURRENT TIME
  • vncviewer使用教程

    首先安装vncviewer 之后在服务器输入你想要开启的 端口号 conda deactivate vncserver 88 VNC Server这里写 你的服务器地址 5900 43 端口号 如果出现以下问题 xff0c 可能是配置文件的
  • podman常见使用命令

    常用命令 容器 podman run 创建并启动容器 podman start 启动容器 podman ps 查看容器 podman stop 终止容器 podman restart 重启容器 podman attach 进入容器 podm
  • 对子模函数(submodular function)的一些理解

    1 子模函数是一个集合函数 xff0c 又减小回转属性 xff08 diminishing returns 子模函数适用于多种应用 xff0c 包括近似算法 xff0c 博弈理论 xff0c 和电网络 2 标准定义 xff1a 如果是一个集
  • 二项分布(np.random.binomial),搞它就完了

    二项分布 xff08 np random binomial xff09 xff0c 搞它就完了 xff01 首先我们的搞清楚伯努利分布和二项分布 xff0c 我们先找个例子 xff0c 选西瓜 xff0c 待我细细道来 伯努利分布 选一个西
  • Numpy给数组增加维度的操作

    不说其他的 xff0c 直接给个例子就懂了 a是一个一维数组 a 61 np array 0 0 10 0 20 0 30 0 print a shape a np newaxis a np newaxis shape 输出 4 0 10
  • 参数辨识的简单理解

    1 参数辨识技术 xff0c 是一种将理论模型与试验数据结合起来用于预测的技术 参数辨识根据实验数据和建立的模型来确定一组模型的参数 xff0c 使得由模型计算得到的数值结果能最好地拟合测试数据 xff08 可以看做是一种曲线拟合问题 xf
  • Matlab中持久变量(persistent)在Python中的理解

    语法 persistent var1 varN 说明 persistent 将变量var1 varN 声明为持久变量 持久变量是声明它们的函数的局部变量 xff1b 但其值保留在对该函数的各次调用所使用的内存中 xff0c Matlab命令
  • 新的代数计算软件包——Magma

    Magma是一款由悉尼大学数学与统计学系计算代数学小组开发的功能强大的代数计算程序包 xff0c 该软件专门解决代数系统中的数论 代数几何和代数组合学的计算问题 新的代数计算软件包 Magma 前言一 Magama安装二 基本操作三 多项式
  • 基于ChatGPT的新一代辅助编程神器——Cursor

    Cursor 编辑器 Cursor 这是一款与OpenAI合作并且基于GPT3的新一代辅助编程神器 它支持多种文件类型 xff0c 支持格式化文本 xff0c 支持多种主题 xff0c 支持多语言语法高亮 xff0c 支持快捷键设置 xff
  • 2023 Microsoft Edge 新增的分屏功能

    Microsoft Edge Canary 通道目前已经发布 110 版 xff0c 本次更新带来一个非常实用的实验性功能 xff1a 同窗双屏功能 xff0c 可以在一个窗口里同时开两个网页并排看 如何开启分屏功能 xff1f 默认分屏功
  • ubuntu服务器图形界面崩溃解决方案

    你们看的没错 xff0c 我又来了 真的是 xff0c 读计算机不易啊 我又又又把机器搞坏了 就单纯的程序跑不通 xff0c 网上搜解决方案是说好像这个文件夹名带中文 xff0c 明明我修改过了 xff0c 想着重启一下吧 xff0c 然后
  • Mysql备份和恢复

    一 数据备份的重要性 备份的主要目的是灾难恢复 在生产环境中 xff0c 数据的安全性至关重要 任何数据的丢失都可能产生严重的后果 造成数据丢失的原因 1 程序错误 2 人为操作错误 3 运算错误 4 磁盘故障 5 灾难 xff08 火灾
  • FreeRTOS中任务的四种状态

    FreeRTOS任务的四种状态分别是 xff1a 就绪态 运行态 阻塞态 挂起态 各种状态的说明如下 xff1a 1 就绪态 xff1a 处于就绪态的任务是那些已经准备就绪 这些任务没有被阻塞或者挂起 xff0c 可以运行的任务 xff0c
  • BP神经网络实现汽油辛烷值预测,《MATLAB源码+数据集》

    发展背景 在人工神经网络的发展历史上 xff0c 感知机 Multilayer Perceptron xff0c MLP 网络曾对人工神经网络的发展发挥了极大的作用 xff0c 也被认为是一种真正能够使用的人工神经网络模型 xff0c 它的
  • ELM极限学习实现汽油辛烷值预测(MATLAB)

    什么是极限学习机 xff1f 极限学习机 xff08 ELM Extreme Learning Machines xff09 是一种前馈神经网络 xff0c 最早由新加坡南洋理工大学黄广斌教授于2006年提出 该算法具有良好的泛化性能以及极
  • 粒子群算法(PSO)测试函数寻优

    3 1粒子群算法 粒子群优化算法是一种模拟鸟群捕食活动的进化算法 xff0c 体现了种群相互协作行为的群体智能 在处理优化问题时 xff0c 每个粒子对应搜索空间的一个潜在方案 xff0c 在进化过程中基于适应度函数进行选择和记录 xff0