参考资料

《精通MATLAB最优化计算(第二版)》

编程工具

Matlab 2019a

目录

石中居士:最优化计算与Matlab实现——目录​zhuanlan.zhihu.com



权重改进的粒子群算法

在微粒群算法的可调整参数中,惯性权重

是最重要的参数,

较大的

有利于提高算法的全局搜索能力,而较小的
会增强算法的局部搜索能力

,根据不同的权重变化公式,可得到不同的PSO算法,常见的有线性递减权重法、自适应权重法、随机权重法。


线性递减权重法

  • 原理

由于较大的惯性因子有利于跳出局部极小点,便于全局搜索,而较小的惯性因子则有利于对当前的搜索区域进行精确局部搜索,以利于算法收敛,因此针对PSO算法容易早熟以及算法后期易在全局最优解附近产生振荡现象,可以采用线性变化的权重,让惯性权重从最大值

线性减小到最小值

随算法迭代次数的变化公式为:

其中,

分别表示
的最大值和最小值,
表示当前迭代步数,
表示最大迭代步数,通常取
  • 算法步骤

线性递减粒子群算法的基本步骤如下:

【1】随机初始化种群中各微粒的位置和速度;

【2】评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中;

【3】用下式更新粒子的速度和位移:

【4】更新权重

【5】对每个微粒,将其适应值与其经历过的最好位置作比较,如果较好,则将其作为当前的最好位置;比较当前所有pbest和gbest的值,更新gbest;

【6】若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果,否则返回【3】继续搜索。

  • Matlab代码与试算

用线性递减权重的粒子群算法求函数

的最小值。其中粒子数取40,学习因子都取2,最大权重取0.9,最小权重取0.4,迭代步数取10000。

解:此函数的最小点为

,最小值为

建立目标函数文件fitness.m

fitness.m

function

test.m

[

LDW_PSO.m

function

命令行窗口

x_optimization 

对于本例题中的函数而言,用线性递减权重的粒子群算法求得了非常精确的最优点。但是在实际问题中,对于不同问题,其每次迭代所需的比例关系并不相同,所以

的线性递减只对某些问题很有效。

此外,如果在进化初期搜索不到最优点,随着

的逐渐减小,算法局部收敛能力加强,容易陷入局部最优;如果在进化初期探测到次好点,这时
的相对取小就可使算法很快搜索到最优点,而
的线性递减降低了算法的收敛速度。

自适应权重法

  • 原理

为了平衡PSO算法的全局搜索能力和局部改良能力,还可采用非线性的动态惯性权重系数公式,其表达式如下:

其中

分别表示
的最大值和最小值,
表示粒子当前的目标函数值,
分别表示当前所有微粒的平均目标值和最小目标值。在上式中,惯性权重随着微粒的目标函数值而自动改变,因此称为

自适应权重

当各微粒的目标值趋于一致或者趋于局部最优时,将使惯性权重增加,而各微粒的目标值比较分散时,将使惯性权重减小,同时对于目标函数值优于平均目标值的微粒,其对应的惯性权重因子较小,从而保护了该微粒,反之对于目标函数值差于平均目标值的微粒,其对应的惯性权重因子较大,使得该微粒向较好的搜索区域靠拢。

  • 算法步骤

自适应权重粒子群算法的基本步骤如下:

【1】随机初始化种群中各微粒的位置和速度;

【2】评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中;

【3】用下式更新粒子的速度和位移:

【4】更新权重

【5】对每个微粒,将其适应值与其经历过的最好位置作比较,如果较好,则将其作为当前的最好位置;比较当前所有pbest和gbest的值,更新gbest;

【6】若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果,否则返回【3】继续搜索。

  • Matlab代码与试算

用自适应权重的粒子群算法求函数

的最小值。取粒子数为40,学习因子都取2,最大惯性权重取0.9,最小惯性权重取0.6,迭代步数取10000。

解:建立fitness.m文件

fitness.m

function

test.m

[

AW_PSO.m

function

命令行窗口

x_optimization =1.0e-06 *0.172784775909731-0.008767853535804f_optimization =0

本例题中的函数的最小点为

,最小值为0,自适应权重的粒子群算法求得的结果的精度还是可以的。

随机权重法

  • 原理

将PSO算法中设定

为服从某种随机分布的随机数,这样一定程度上可从两方面来克服
的线性递减所带来的不足。

首先,如果在进化初期接近最好点,随机

可能产生相对小的
值,加快算法的收敛速度,另外,如果在算法初期找不到最好点,
的线性递减,使得算法最终收敛不到此最好点,而

的随机生成可以克服这种局限。

计算公式如下:

其中

表示标准正态分布的随机数,
表示0到1之间的随机数。
  • 算法步骤

随机权重粒子群算法的基本步骤如下:

【1】随机初始化种群中各微粒的位置和速度;

【2】评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中;

【3】用下式更新粒子的速度和位移:

【4】更新权重

【5】对每个微粒,将其适应值与其经历过的最好位置作比较,如果较好,则将其作为当前的最好位置;比较当前所有pbest和gbest的值,更新gbest;

【6】若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果,否则返回【3】继续搜索。

  • Matlab代码与试算

求下面函数的最小值

取粒子数为40,学习因子都取2,随机权重平均值的最大值取0.8,随机权重平均值的最小值取0.5,随机权重平均值的方差取0.2,迭代步数取10000。

解:首先建立目标函数文件fitness.m文件

fitness.m

function

test.m

[

RW_PSO.m

function

命令行窗口

x_optimization =-0.0898420111454120.712656402204421f_optimization =-1.031628453489878

本题中的函数的理论最小点有两个,分别为

,最小值为
,随机权重的粒子群算法求得的结果精度还可以。

目录

石中居士:最优化计算与Matlab实现——目录​zhuanlan.zhihu.com


matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...相关推荐

  1. 【聚类算法】基于matlab改进的粒子群算法优化K-means算法【含Matlab源码 1946期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[聚类算法]基于matlab改进的粒子群算法优化K-means算法[含Matlab源码 1946期] 点击上面蓝色字体,直接付费下载,即可 ...

  2. 基于莱维飞行改进的粒子群算法输电线桩路径优化,粒子群算法通过shubert函数测试效果,混沌粒子群

    摘要 环境保护,节能减排,减少碳排放越来越受到现代社会的重视,本文利用莱维飞行改进的粒子群算法优化输电线桩路径,对输电线路路径进行优化设计并加以合理选择,有助于构建稳定.高效的输电网络,保证电能供给质 ...

  3. 机器学习中的数学——粒子群算法(Particle Swarm Optimization, PSO)(三):改进的粒子群算法

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  4. c++分治法求最大最小值实现_最优化计算与matlab实现(12)——非线性最小二乘优化问题——G-N法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 非线性最 ...

  5. 【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码

    1 简介 针对传统的K-means算法对初始聚类中心的选取敏感,容易收敛到局部最优的缺点,提出一种基于改进粒子群优化算法(PSO)的K-means优化聚类算法.该算法利用PSO算法强大的全局搜索能力对 ...

  6. matlab求二元函数极值算法_最优化计算与matlab实现(3)——进退法

    参考资料 <精通MATLAB最优化计算(第二版)> 数值实现 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 进退法 ...

  7. 【MATLAB第6期】基于MATLAB的粒子群及若干改进的粒子群算法原理介绍 持续更新

    一.经典粒子群PSO算法 1 思想来源 粒子群优化(Particle Swarm Optimization,PSO) 作为进化计算的一个分支,是由 Eberhart 和 Kennedy 于 1995 ...

  8. 【路径规划】改进的粒子群算法路径规划【含Matlab源码 491期】

    ⛄一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都 ...

  9. php案例分析百度云_百度阅读|助力推动阅读领域无障碍优化(二)

    三.百度阅读无障碍解决方案 (一)前期深度调研了解视障用户阅读习惯及需求 在深圳市信息无障碍研究会的支持下,对视障用户阅读内容及阅读操作习惯进行了深度调研.大部分视障用户在调研过程中提供了多方面的建议 ...

最新文章

  1. EasyUI中进度条的简单使用
  2. 文本分类入门(四)训练Part 1
  3. python实现网页登录时的rsa加密流程
  4. Python基础(5) - 文件
  5. Django从理论到实战(part10)--URL命名与反转
  6. vmware中centos6.4突然无法进入图形界面解决方法
  7. php pg_fetch_row,pg_fetch_row
  8. linux之我常用的20条命令( 之三)
  9. 网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计基于Linux平台实现[按需印刷]...
  10. 支持linux_Linux的UL库 支持MCC数据采集卡
  11. 【python练习题01】字符串格式化输出
  12. VS2017配置opencv-c++
  13. JDK动态代理和CGLIB动态代理介绍
  14. 用pcdet跑deecamp20_liadr3-1
  15. 你可以不信元宇宙,但请不要错过硬件光线追踪技术的先机
  16. Unknown host ‘dl.google.com‘ You may need to adjust the proxy settings in Gradle的解决方案
  17. 最新!!! iOS app添加微信授权登录——Qt for IOS
  18. 如何写好一个2Take1 Lua - 搭建Lua环境
  19. mariadb mysql.h_MariaDB(MySQL)的常用命令1 【检索数据】
  20. SpringCloudAlibaba【四】Nacos Config 多环境切换与公共配置

热门文章

  1. 迁移Net项目为Net Core\Standard项目
  2. 开源分享 Unity3d客户端与C#分布式服务端游戏框架
  3. 在CentOS上使用Jexus托管运行 ZKEACMS
  4. JS使用按位异或方式加密字符串
  5. Redis -- Hash(哈希) [3]
  6. C语言试题八十二之输入小写字母,把小写字母转换成大写字母。
  7. 贪心算法之最短路径问题(Dijkstra算法)
  8. sqlite数据库备份还原、导出导入
  9. Android之Activity的4种加载模式
  10. server如何调用 thrift_Thrift总结(二)如何快速创建自己的RPC服务