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

参考资料

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

编程工具

Matlab 2019a

目录

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

e210ad40e8e335b95942278c4c0ed61b.png

权重改进的粒子群算法

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

是最重要的参数,
较大的
有利于提高算法的全局搜索能力,而较小的
会增强算法的局部搜索能力
,根据不同的权重变化公式,可得到不同的PSO算法,常见的有线性递减权重法、自适应权重法、随机权重法。

5577de0a4676b712999979453a41e6a8.png

线性递减权重法

  • 原理

由于较大的惯性因子有利于跳出局部极小点,便于全局搜索,而较小的惯性因子则有利于对当前的搜索区域进行精确局部搜索,以利于算法收敛,因此针对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,自适应权重的粒子群算法求得的结果的精度还是可以的。

ca4050f96ede48ddfc436161284d3201.png

随机权重法

  • 原理

将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

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

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

1ebc05fe3192da38911951aec6611cac.png

目录

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

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

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

相关文章

两个list怎么对比数据_基于日志的回放对比系统设计

‍‍‍‍‍‍点击关注“有赞coder”获取更多技术干货哦~作者:马力部门:新零售测试一、背景上半年公司的网关系统进行了重构,需要把零售业务已有的网关接口迁移到新网关上。这些接口每天都有成千上万次请求,为商家提供各…

让人眼花缭乱的视错觉,太酷炫了!

盯~ 原理:这只死盯着人看的小短手并不是一个普通的纸模,它的眼睛鼻子和嘴也都不在正常的位置上,它的脸其实是凹下去的。 错觉的关键在于我们的大脑对凹面和凸面的加工方式,以及大脑对从图形中挑出一张脸的执着和能力。大脑想要…

一个人的夜晚

一个人的夜晚——代腾飞 2008年9月10日 于成都在这个秋深的夜晚一个人矗立窗前仰望天边与明月共婵娟一阵秋风吹来,心觉几分寒却找不到什么来抵挡于是去采几缕相思来作伴想让这颗孤寂冰冷的心变得一点温暖 只是刚一触动这一琴弦那心潮的死水就开始了犯难淹没了我整…

php 如何生成exe文件怎么打开,如何把PHP转成EXE文件

原问:如何把PHP转成EXE文件。结果当然是没有这样的软件,但是有两ASP的东东,可以把网站做成EXE文件发布。我没时间试,大家可以看看,有啥结果可以贴过来,我们研究研究。呵呵。地址:http://www.oct…

swot分析模板_什么是SWOT分析图?怎样绘制SWOT分析思维导图,这样操作很简单

什么是SWOT分析图?大到企业小到个人都会使用到SWOT来对自身所具备的能力进行分析,这也印证了SWOT分析图的重要性,下面我们一起来深度了解SWOT分析吧!!一:什么是SWOT分析图所谓SWOT分析图是基于内外部竞争环…

不是python文件处理seek()方法的参数是_python文件操作seek()偏移量,读取指正到指定位置操作...

python 文件操作seek() 和 telll() 自我解释file.seek()方法格式: seek(offset,whence0) 移动文件读取指针到制定位置offset:开始的偏移量,也就是代表需要移动偏移的字节数。whence: 给offset参数一个定义,表示要从哪个位置开始偏…

有哪些命令行的软件堪称神器?

ag 比grep、ack更快的递归搜索文件内容。 tig 字符模式下交互查看git项目,可以替代git命令。 mycli mysql客户端,支持语法高亮和命令补全,效果类似ipython,可以替代mysql命令。 jq json文件处理以及格式化显示,支持高…

SQL--合并多条记录为一条记录

--作用:源表中,如果A列的记录相同的,则把B列的记录合并,再写到目的表中,如果不相同,则原样插入到目的表中---两个原始表之一,源if exists (select * from dbo.sysobjects where id object_id(N[dbo].[源]) and OBJECTPROPERTY(id, NIsUserTable) 1)drop table [dbo].[源]GOCR…

java类型转换造成的字节丢失,java 编码转换(已解决,转换字节丢失,无法实现)

Header里面的Content-Disposition只支持ASCII,所以我们传输的文件名必须是ASCII,当文件名为中文时,必须要将该中文转换成ASCII。如果服务端能处理,最好直接将filename通过URLEncode编码。根据你提供的代码,你服务端返回…

代码 | 一天一点代码坏味道(1)

【代码精进】| 总结/Edison Zhou作为一个后端工程师,想必在职业生涯中都写过一些不好维护的代码。本文是我学习《代码之丑》的学习总结,今天第一天发车,先来看看在命名上的一些常犯的坏味道。0为何要品代码坏味道Martin Flower在《重构》一书…

香肠派对电脑版_香肠派对先行服s7赛季下载-香肠派对先行服s7赛季最新版下载...

详情香肠派对先行服s7赛季是玩家非常喜爱的一款游戏,香肠派对先行服已经更新到最新的s7赛季,在这里可以超前体验版本的内容,始终先人一步!喜欢就来下载香肠派对先行服s7赛季最新版本开始战斗吧!香肠派对先行服s7赛季游…

python base64编码_JS和Python实现AES算法

1. AES原理AES算法是典型的对称加密算法,AES原理可以学习这两篇文档:漫画:什么是AES算法:https://www.toutiao.com/i6783550080784794124/AES加密算法的详细介绍与实现:https://blog.csdn.net/qq_28205153/article/det…

Zune 3.0与XNA GS 3.0 Beta

2008年9月16日,微软发布了新的Zune设备,新增了16G和120G的版本,颜色也出现了新颜色,蓝色的比较好看。 与此同时,Zune Software也升级到3.0,有Zune的朋友可以从www.zune.net上下载。Zune 3.0不仅为你的Zune设…

当你老了,一生最后悔什么?大数据告诉你!

‍ 当你老了,一生最后悔什么?

java获取jtable的路径,Java如何在JTable组件中获取选定的单元格?

以下示例显示如何获取选定的行或选定的列,或如何选择JTable组件中的多个单元格。要侦听选择事件,我们可以JTable通过调用JTable.getSelectionModel().addListSelectionListener()方法将选择侦听器添加到组件。该方法接受实现ListSelectionListener接口的…

@scheduled注解配置时间_SpringBoot2.0实战(32)配置定时任务

定时任务的几种实现方式:Timer:Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。Quartz:使用Quartz&…

小心 Enum Parse 中的坑

小心 Enum Parse 中的坑Intro最近使用枚举的时候,踩了一个小坑,分享一下,主要是枚举从 int 值转成枚举时可能会遇到Sample来看下面的示例:首先定义一个枚举:public enum Color : byte {Red 0,Green 1,Blue 2, }来看…

python判断列表是否为空_Jinja2: 判断返回的列表是否为空

我们在使用 Python 或者 Ansible 来进行自动化任务的时候常常会进行一些数据的组合和提取来生成文件。但是我们需要为不同的情况来做分析和进行判断。如果我们需要对返回的 list 来进行提取的时候我们常常只是运行一个 for loop 就解决了问题。如果输出如下所示:{&q…

在php中使用kind,KindEditor 4.x在PHP中的应用实例!

1.解压放入php项目静态资源文件夹,如下图:Paste_Image.png2.如果只是php使用,可以删除其它类型语言的文件夹,文件结构如下图:Paste_Image.png3.打开php文件夹,更改upload_json.php里文件上传目录文件夹至Up…

你的朋友国庆假期都去了哪里玩?微信大数据告诉你!最远的朋友圈签到竟然来自……

国庆中秋八天假 你是出门四处浪浪浪了 还是躺在家里看朋友圈里的世界名景 10月8日,微信发布《国庆假期微信大数据报告》 从出境人数、热门地区、境外消费等角度 全方位展示国庆期间微信用户的出游情况 哪些城市的人最爱出境游? 哪个国家是最热门的出境目…