基于粒子群算法的无约束优化问题求解

基于粒子群算法的无约束优化问题求解

  • 1 引言
  • 2 粒子群算法
    • 2.1 粒子群优化原理
    • 2.2 粒子群算法寻优策略与参数控制
    • 粒子群算法流程
  • 3 粒子群算法求解无约束优化问题
    • 3.1 粒子群算法求解Sphere函数(单峰测试函数)
    • 3.2 Schwefel's Problem 2.26(多峰测试函数)
    • 3.3 Rastrigin's Function(多峰测试函数)
    • 3.4 Griewank's Function(多峰测试函数)
  • 4 参考

1 引言

粒子群算法(Particle Swarm Optimization,PSO)是由美国心理学家James Kennedy和电气工程师Russell Eberhart于1995年提出的一种算法,算是比较老也是非常经典的算法之一。

PSO是非常适合于连续领域问题优化的算法,且已经在此取得相当成功的应用。 离散版本改进将PSO运用到离散领域(组合优化)之中12,如TSP、CVRP问题。

在连续优化问题中,无约束优化问题除了可以用梯度下降算法,牛顿法,共轭梯度等算法,智能优化算法因其寻优速度快,全局收敛等特点,也得到了广泛应用。

2 粒子群算法

2.1 粒子群优化原理

将问题搜索空间类比于鸟类的飞行空间,每一只鸟抽象为一个无质量的粒子(Particle),用于表征一个候选解,食物表征为最优解。优化寻求最优解的过程等同于鸟群觅食的过程,鸟群快速找到食物的一个有效方法就是搜寻目前离食物最近的同伴的位置。因此每个粒子都有速度和位置两个属性,粒子通过权衡自身经验(本身找到的最优解pbest)和群体经验(整个整群的最优解gbest)来迭代更新自己,找到最优解。

鸟类寻优过程中,沿自身飞行方向寻找食物的同时,会根据自身经验和鸟群间信息共享,调整自己的位置和速度,以期找到最优解。

2.2 粒子群算法寻优策略与参数控制

粒子按速度更新公式(1)和位置更新公式(2)寻找最优解:
v i j ← ω v i j + c 1 r 1 ( p b e s t i j − x i j ) + c 2 r 2 ( g b e s t j − x i j ) x i j ← x i j + v i j \begin{align} v_{i}^j &\leftarrow \omega v_{i}^j+c_1r_1(pbest_{i}^j-x_{i}^j)+c_2r_2(gbest^j-x_{i}^j) \\ x_{i}^j &\leftarrow x_{i}^j+v_{i}^j \end{align} vijxijωvij+c1r1(pbestijxij)+c2r2(gbestjxij)xij+vij
其中,

  • D D D——代表搜索空间为D维(即为自变量的个数)。 j j j粒子维度索引, j = 1 , 2 , . . . , D j=1,2,...,D j=1,2,...,D
  • x i x_{i} xi——代表第 i i i个粒子的位置(即为一个解), x i = ( x i 1 , x i 2 , . . . , x i j , . . . , x i D ) x_{i}=(x_{i}^1,x_{i}^2,...,x_{i}^j,...,x_{i}^D) xi=(xi1,xi2,...,xij,...,xiD)
  • v i v_{i} vi——代表第 i i i个粒子的速度, v i = ( v i 1 , v i 2 , . . . , v i j , . . . , v i D ) v_{i}=(v_{i}^1,v_{i}^2,...,v_{i}^j,...,v_{i}^D) vi=(vi1,vi2,...,vij,...,viD)
  • p b e s t i pbest_{i} pbesti——代表粒子 i i i在搜索到的最优位置, v i = ( p b e s t i 1 , p b e s t i 2 , . . . , p b e s t i j , . . . , p b e s t i D ) v_{i}=(pbest_{i}^1,pbest_{i}^2,...,pbest_{i}^j,...,pbest_{i}^D) vi=(pbesti1,pbesti2,...,pbestij,...,pbestiD)
  • g b e s t j gbest^{j} gbestj——整个鸟群搜索到的最优位置。 g b e s t j gbest^{j} gbestj p b e s t i j pbest_{i}^j pbestij关系为: g b e s t j = min ⁡ { p b e s t i j } j = 1 D gbest^{j}= \min \{pbest_{i}^j\}_{j=1}^D gbestj=min{pbestij}j=1D
  • ω \omega ω——惯性权重(inertia weight),动态调整惯性权重可以平衡收敛的全局性和收敛速度。 ω \omega ω越大,探索新区域的能力越强,有利于全局搜索,跳出局部最优; ω \omega ω越小,逐渐退化成爬山算法,有利于算法收敛。推荐取值范围 ω ∈ [ 0.4 , 2 ] \omega \in [0.4,2] ω[0.4,2],另有实验表明 ω = 0.7298 \omega=0.7298 ω=0.7298时,算法有较好的收敛性能。
  • c 1 c_1 c1——加速系数,表征粒子个体的经验,该值越大,证明鸟群在寻找食物过程中,越倾向于根据自己的经验知识寻找食物;该值越小,表示不注重自己的经验,鸟在寻找食物过程中“随大流、从众”。
  • c 2 c_2 c2——加速系数,表征整个鸟群的经验知识,该值越大,越注重鸟之间的信息共享;该值越小,鸟之间没有信息交流,算法演变为随机探索,导致算法收敛速度缓慢。
    实验表明, c 1 = c 2 = 1.479 c_1=c_2=1.479 c1=c2=1.479时算法有较好的收敛性能。
  • maxVelocity——最大速度。该参数在上述公式没有体现,为了平衡算法的探索能力与开发能力,需要设定一个合理的速度范围,限制粒子的最大速度,即粒子下一步迭代可以移动的最大距离。maxVelocity越大,粒子飞行速度快,探索能力强,但粒子容易飞过最优解;maxVelocity越小,飞行速度慢,开发能力强,但是收敛速度慢,且容易陷入局部最优解;一般为对应变量取值范围的10~20%,可根据实际情况调试,但不能大于粒子(解)的变化范围3

粒子群算法流程

在这里插入图片描述

  1. 初始化:算法最大迭代次数MAXGEN;每个粒子的位置x和速度v;位置限制边界xMinxxMax,即自变量取值范围;最大速度限制,根据经验设置最大速度maxVelocity,一般为对应变量取值范围的10~20%3
  2. 评估每个粒子(计算目标函数值和适应度)。
  3. 更新粒子的速度v和位置x
  4. 判断是否越界。速度越界和位置越界都需要判断。看了网上很多博客及程序,有的程序没有进行越界判断,有的只有速度越界判断45,有的则进行了速度越界和位置越界判断67。自己进行编程发现:对于单峰测试函数,没有越界判断依然能够得出最优解。
  5. 评估每个粒子(计算目标函数值和适应度)。
  6. 更新粒子的历史最优位置pbest
  7. 更新全局最优位置gbest

3 粒子群算法求解无约束优化问题

为了验证粒子群算法的求解性能,分别采用了单峰测试函数和多峰测试函数进行试验。便编程时,只需定义一个抽象的问题类Problem,使不同的测试函数继承
Problem,每次进行PSO求解时,只需传入不同的测试函数即可,降低了代码的耦合性。基于粒子群算法的无约束优化问题求解(Java)

3.1 粒子群算法求解Sphere函数(单峰测试函数)

Sphere函数8除了全局极小值外,还有d(维度)个局部极小值。呈连续、下凹、单峰,该问题的维度是 n=30,函数解为 f ( x 1 , x 2 , . . . , x 30 ) = f ( 0 , 0 , . . . , 0 ) = 0 f(x_1,x_2,...,x_{30})=f(0,0,...,0)=0 f(x1,x2,...,x30)=f(0,0,...,0)=0
min ⁡ f ( x ) = ∑ i = 1 30 x i 2 , − 100 ≤ x i ≤ 100 \min f(x) = \sum_{i=1}^{30} x_i^2,\quad -100 \leq x_i \leq 100 minf(x)=i=130xi2,100xi100

求解结果:

全局最优解:0.00	0.00	-0.00	0.00	-0.00	0.00	-0.00	-0.00	0.00	-0.00	-0.00	-0.00	-0.00	0.00	0.00	-0.00	-0.00	0.00	-0.00	0.00	-0.00	0.00	-0.00	0.00	0.00	0.00	0.00	0.00	-0.00	-0.00	
全局极小值:0.00

目标函数收敛图:

3.2 Schwefel’s Problem 2.26(多峰测试函数)

Schwefel’s函数是一个典型的欺骗问题,有1个全局极小值点,距离另一个局部最优点很远,因此如果陷入局部最优就很难跳出。Schwefel’s函数的表达式为如下。该问题的维度是 n=30,函数有全局最小值,解为 f ( x 1 , x 2 , . . . , x 30 ) = f ( 420.9687 , 420.9687 , . . . , 420.9687 ) = − 12569.5 f(x_1,x_2,...,x_{30})=f(420.9687,420.9687,...,420.9687)=-12569.5 f(x1,x2,...,x30)=f(420.9687,420.9687,...,420.9687)=12569.5

min ⁡ f ( x ) = − ∑ i = 1 30 x i sin ⁡ ( ∣ x ∣ ) , − 500 ≤ x i ≤ 500 \min f(x) = -\sum_{i=1}^{30} x_i \sin(\sqrt{|x|}), \quad -500 \leq x_i \leq 500 minf(x)=i=130xisin(x ),500xi500

3.3 Rastrigin’s Function(多峰测试函数)

Rastrigin’s 函数8有许多局部极小值。它是高度多模态的,但极小值的位置是规则分布的。该问题的维度是 n=30,函数解为 f ( x 1 , x 2 , . . . , x 30 ) = f ( 0 , 0 , . . . , 0 ) = 0 f(x_1,x_2,...,x_{30})=f(0,0,...,0)=0 f(x1,x2,...,x30)=f(0,0,...,0)=0

min ⁡ f ( x ) = ∑ i = 1 30 [ x i 2 − 10 cos ⁡ ( 2 π x i ) + 10 ] , − 5.12 ≤ x i ≤ 5.12 \min f(x) = \sum_{i=1}^{30} [x_i^2-10 \cos(2\pi x_i)+10], \quad -5.12 \leq x_i \leq 5.12 minf(x)=i=130[xi210cos(2πxi)+10],5.12xi5.12

3.4 Griewank’s Function(多峰测试函数)

Griewank函数具有许多的局部极小值,这些极小值是规则分布的。。该问题的维度是 n=30,函数解为 f ( x 1 , x 2 , . . . , x 30 ) = f ( 0 , 0 , . . . , 0 ) = 0 f(x_1,x_2,...,x_{30})=f(0,0,...,0)=0 f(x1,x2,...,x30)=f(0,0,...,0)=0

min ⁡ f ( x ) = 1 4000 ∑ i = 1 30 x i 2 − ∏ i = 1 30 cos ⁡ ( x i i ) + 10 ] , − 600 ≤ x i ≤ 600 \min f(x) = \frac{1}{4000}\sum_{i=1}^{30} x_i^2 -\prod_{i=1}^{30} \cos(\frac{x_i}{ \sqrt{i}})+10], \quad -600 \leq x_i \leq 600 minf(x)=40001i=130xi2i=130cos(i xi)+10],600xi600

4 参考


  1. Shi X H, Liang Y C, Lee H P, et al. Particle swarm optimization-based algorithms for TSP and generalized TSP[J/OL]. Information Processing Letters, 2007, 103(5): 169-176. https://doi.org/10.1016/j.ipl.2007.03.010. ↩︎

  2. Wei-Neng Chen, Jun Zhang, Chung H S H, et al. A Novel Set-Based Particle Swarm Optimization Method for Discrete Optimization Problems[J/OL]. IEEE Transactions on Evolutionary Computation, 2010, 14(2): 278-300. https://doi.org/10.1109/TEVC.2009.2030331. ↩︎

  3. 粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读 ↩︎ ↩︎

  4. 用python3实现粒子群优化算法 ↩︎

  5. 粒子群(PSO)算法概念及代码实现 ↩︎

  6. 粒子群算法原理及实现 ↩︎

  7. 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解 ↩︎

  8. 23种标准测试函数解析 ↩︎ ↩︎

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

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

相关文章

字节跳动算法 提前批offer复盘

作者 | zjwang 面试锦囊之面经分享系列,持续更新中 欢迎后台回复"面试"加入讨论组交流噢 写在前面 北航本硕,非科班对搜索推荐比较感兴趣,平时看的文章比较多,所以聊的比较偏这一块大四时一段五个月的nlp方向实习&…

Linux6.yum,git,gdb

1.yum三板斧 yum list :显示所有能安装的软件。 yum lisy | grep 软件 :搜索软件。 yum install -y :安装软件。 yum remove -y 软件 :删除已经安装的软件。 2.git git clone 仓库网址 :添加仓库,按回车之后。需要输入账户和密码。 git add 文件 :把文件添加…

【计算机网络】物理层

0.概念 1.物理层下面的传输媒体 2.传输方式 3.编码与调制 常用编码 题目 基本调制方法 4.信道的极限容量 题目

Java基础-lambda表达式

简化匿名内部类的书写 下面两种写法均可&#xff1b; Arrays.sort(arr, new Comparator<Integer>() {Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;} }); Arrays.sort(arr, (Integer o1, Integer o2) -> {return o1 - o2;} );函数式编程思想&…

Flutter学习四:Flutter开发基础(一)Widget

目录 0 引言 1 Widget 简介 1.1 Widget 概念 1.2 Widget 接口 1.3 Flutter中的四棵树 1.4 StatelessWidget 1.4.1 简介 1.4.2 Context上下文 1.5 StatefulWidget 1.6 State 1.6.1 简介 1.6.2 State生命周期 1.7 在 widget 树中获取State对象 1.7.1 通过Context…

360T7路由器进行WiFi无线中继教程

360T7路由器进行WiFi中继教程 1. 概述2. 360T7路由器进行WiFi中继实现教程2.1 登录路由器管理界面2.2 选择上网方式2.3 搜索WiFi2.4 连接WiFi2.5 点击确认2.6 在主页面查看网络 1. 概述 中继路由系统由一组中继路由器组成&#xff0c;为不能交换路由信息的路由域提供中继路由。…

人工智能(AI)在金融行业的应用

人工智能&#xff08;AI&#xff09;技术在金融行业的应用日益广泛&#xff0c;为金融机构提供了更高效、更智能的解决方案。以下和大家分享AI在金融行业的一些主要应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0…

PHP的pack/unpack

前言&#xff1a;直接参照官网。 PHP: pack - Manual PHP中文手册 PHP中国镜像 php 国内镜像 PHP官方网站 PHP: unpack - Manual PHP中文手册 PHP中国镜像 php 国内镜像 PHP官方网站 1、作用 &#xff08;1&#xff09;pack&#xff1a;将数据打包成二进制字符串。将输入数据…

区块链基础之密码学及安全技术

1.2 密码学及安全技术 1.2.1 密码学知识 1.2.1.1 Hash函数 Hash(哈希) 哈希函数是一类数学函数&#xff0c;可以在有限合理的时间内&#xff0c;将任意长度的消息压缩为 固定长度的输出值&#xff0c;并且是不可逆的。其输出值称为哈希值&#xff0c;也称为散列值。 哈希算法…

Vue.js中的状态管理:理解和使用Vuex

目录 前言 Vue.js 样式绑定 Vue.js class class 属性绑定 实例 1 实例 2 实例 3 实例 4 数组语法 实例 5 实例 6 Vue.js style(内联样式) 实例 7 实例 8 实例 9 Vue.js 组件 全局组件 全局组件实例 局部组件 局部组件实例 Prop Prop 实例 动态 Prop Pro…

Linux基础服务4——ftp

文章目录 一、基本了解1.1 C/S型架构1.2 数据连接模式1.3 用户认证 二、安装服务端2.1 安装vsftpd2.2 配置文件2.3 主配置文件参数2.4 windows访问服务端2.4.1 系统用户访问2.4.2 匿名用户访问2.4.2 开启客户端上传权限2.4.3 开启客户端其他权限2.4.4 开启客户端删除、修改权限…

大数据赋能交通业务管理——远眺智慧交通集成管控系统

随着交通管理需求的不断提升&#xff0c;原有系统管理模式的缺点逐渐显露&#xff0c;各业务系统的相互独立、各自为战&#xff0c;成为交通管理人员全局把控交通资源、实现交通综合管控的壁垒。 智慧交通集成管控平台通过统一标准&#xff0c;集成交警各类业务系统、整合相关数…