快速简单理解粒子群优化算法(Particle Swarm Optimization, PSO)

本文主要是介绍快速简单理解粒子群优化算法(Particle Swarm Optimization, PSO),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.粒子的两个性质:位置、速度

位置是什么: 解空间中的点

速度是什么:解空间点的运动性质,和物理中的速度类似,是一个矢量,包括大小和方向,也就是找到下一个迭代点时的方向和距离

当粒子具有这两个性质的时候,转为数学语言为:当前解的大小已知,判断是否为极值,不是的话,按照一定的方向走一定的距离,寻找下一个迭代点,一直到迭代结束。

2.粒子群中的两个极值:个体极值、群体极值

个体极值是什么:单个粒子在运动过程中的极值的最优位置(个人力量的最大)。

群体极值是什么:种群中所有粒子搜索到的最优位置(群体力量最大)

两者关系:群体极值是最优的个体极值

3.迭代公式中的重要变量名称

\vec{x_{i}}: 第i个粒子的位置

\vec{v_{i}}:第i个粒子的速度

\vec{p_{i}}:个体极值

\vec{p_{g}}:种群极值

4.迭代公式

找到最优值=随机一些粒子从初始位置开始,根据速度不断搜寻。

\vec{v_{i}^{k+1}}=W\vec{v_{i}^{k}}+c_{1}r_{1}(\vec{p_{i}^{k}}-\vec{x_{i}^{k}})+c_{2}r_{2}(\vec{p_{g}^{k}}-\vec{x_{i}^{k}})         -------速度更新

\vec{x_{i}^{k+1}} = \vec{x_{i}^{k}} +\vec{v_{i}^{k+1}}      -------位置更新

速度更新公式的理解:

下一次速度 = 当前速度*惯性矩阵+当前个体极值位置偏差+当前种群极值位置偏差

用当前两种极值偏差约束速度,使速度更向极值方向靠拢,加强收敛性

位置更新公式理解:

下一次位置 = 当前位置+更新后的速度

找到下一个可能极值点

5.总结

粒子群优化算法更新结合只用当前时刻去约束步长和方向,不涉及以前时刻极值。

和最速梯度下降法类似,只不过将梯度改成自己定义的下降方向

这篇关于快速简单理解粒子群优化算法(Particle Swarm Optimization, PSO)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301995

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.