智能优化方法作业PSO算法资料.docx

上传人:b****5 文档编号:28005096 上传时间:2023-07-07 格式:DOCX 页数:12 大小:349.04KB
下载 相关 举报
智能优化方法作业PSO算法资料.docx_第1页
第1页 / 共12页
智能优化方法作业PSO算法资料.docx_第2页
第2页 / 共12页
智能优化方法作业PSO算法资料.docx_第3页
第3页 / 共12页
智能优化方法作业PSO算法资料.docx_第4页
第4页 / 共12页
智能优化方法作业PSO算法资料.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

智能优化方法作业PSO算法资料.docx

《智能优化方法作业PSO算法资料.docx》由会员分享,可在线阅读,更多相关《智能优化方法作业PSO算法资料.docx(12页珍藏版)》请在冰豆网上搜索。

智能优化方法作业PSO算法资料.docx

智能优化方法作业PSO算法资料

智能优化方法作业

PSO算法实验报告

课程名称:

智能优化方法

作者姓名:

专业:

控制工程

目录

第一章问题描述1

第二章算法设计1

2.1解及目标函数的表达1

2.1.1种群的编码1

2.1.2初始种群的产生1

2.1.3评价函数的构造1

2.2POS速度迭代公式2

2.3粒子的更新2

2.4惯性权重的调整3

2.5停止准则3

第三章算法实现及分析3

3.1编译环境及界面介绍3

3.2matlab中GUI界面打开的3种方式4

第四章算法分析5

4.1默认参数下的运行结果5

4.2种群大小对算法的影响6

4.3最大迭代次数对算法的影响8

4.4实验得出的“最优”参数9

第一章问题描述

无约束5维的Rosenbrock函数可以描述如下:

(1)

其中,

要求按PSO算法思想设计一个该问题的求解算法,并利用计算机语言实现设计的算法。

将实验报告和程序代码(带有详细注释)。

第二章算法设计

2.1解及目标函数的表达

2.1.1种群的编码

显然对于一个粒子个体可以用一个含有5个元素的一维数组进行表示。

对于一个种群这里使用pop_size×5的二维数组进行表示。

其中pop_size为种群大小。

2.1.2初始种群的产生

初始种群的各个粒子均采用均匀随机产生的方式,即粒子每一位都是-30到30上的随机数。

同样粒子的速度也是-40到40上的随机数。

这里设置速度在-40到40内是因为限定速度的最大值为40。

2.1.3评价函数的构造

这里直接采用解的函数值作为评价函数,评价函数值越小认为该解越好。

评价函数如下:

(2)

其中,

2.2POS速度迭代公式

为了改善算法的收敛性,这里采样带惯性权重的迭代公式,速度迭代公式如下:

(3)

其中:

粒子的速度。

w:

粒子的权重,为0到1的数值。

表示对之前速度的一个惯性。

值越小,前一时刻的速度对当前时刻速度的影响也越小。

对个体所搜索过的最优值的学习因子。

值越大,向个体最优值的移动速度也越大。

对全局搜索过的最优值的学习因子。

值越大,向全局最优值移动的速度也越大。

0到1的随机数。

表示粒子学习状态的随机,有可能向全局最优值学习,有可能向个体最优值学习。

也有可能几乎不学习。

粒子搜索过的个体最优解。

种群搜索过的全局最优解。

可以看出,这里将整个种群视为“连通的”。

即整个种群共用一个全局最优值。

另外,为了保证算法的收敛性,这里对速度的最大值进行了限定。

这里设定的速度最大值的绝对值为40,即粒子的每一个分量在一次迭代过程中最多跨越搜索长度的2/3。

2.3粒子的更新

粒子的更新采用如下公式:

(4)

其中:

粒子的位置。

这里同样对粒子的位置进行限定,即让粒子的每一个分量均在-30到30之间。

2.4惯性权重的调整

惯性权重带代表着对之前速度继承情况。

一般来说,惯性权重越大全局的探索能力越强,惯性权重越小局部的开发能力越强。

根据这个规律,这里采样变惯性权重的搜索方式。

在搜索的开始阶段,使用较大的惯性权重,随着迭代次数的进行,逐渐减少惯性权重。

使其进行更多的局部开发,寻找最优解。

惯性权重调整公式如下:

(5)

其中:

第i次迭代的惯性权重。

最大惯性权重。

最小惯性权重。

iter_max:

最大迭代次数。

i:

当前迭代次数。

2.5停止准则

停止准则采样固定的迭代次数。

第三章算法实现及分析

3.1编译环境及界面介绍

本次试验算法采用matlab进行实现。

matlab版本为R2013b.首先我们编写了一个m脚本文件进行调试(pso_pro.m).在程序调试成功以后,为了方便讨论各个参数对算法的影响及对算法进行分析。

我们又编写了一个GUI界面(PSO_pro.fig或PSO_pro.m)。

界面如下:

图3.1PSO算法GUI界面

3.2matlab中GUI界面打开的3种方式

方法一:

将文件放到matlab当前工作目录或者添加文件目录到matlab搜索目录中。

然后在命令空间输入PSO_pro.

方法二:

打开PSO_pro.m文件,然后点击上方run字样的绿色箭头。

方法三:

在命令空间输入guide,选择openexistingGUI->browse->PSO_pro.fig.然后点击上方的run字样的绿色箭头。

以上方法均可以打开GUI界面,但是不能直接点击PSO_pro.fig文件进行打开。

这是因为这样打开GUI文件时,不会调用opening函数。

即不会初始化及更新结构体。

运行文件会导致错误。

第四章算法分析

4.1默认参数下的运行结果

下面是默认参数下的一种运行结果

图4.1默认参数下的运行情况

可以看出在这些参数下,算法的收敛速度非常不错,在迭代到150次左右次之后,结果几乎不变了。

最优值1.2398距离理论最优值0也是比较接近。

总体来说算法表现较为良好。

然后我们多运行了几次,发现并不是每一次算法都会收敛到最优值附近。

如下图所示:

图4.2默认参数下收敛效果不好的情况

这是因为,这里种群的大小为20,比较少。

粒子群算法作为一种随机优化方法。

在初始粒子分布较近,且他们的函数值离最优值较远时。

他们通过互相学习,很快的就会“聚拢”。

但是因为他们函数值较差,所以会出现求解失败的情况。

这里由迭代曲线可以看出,在不到40代的时候,粒子几乎已经收拢了,不会出现更新到更好解的情况了。

下面分别讨论一些参数对算法的影响。

4.2种群大小对算法的影响

下面是将种群大小改为30后,其中的一次较好的迭代结果:

图4.3种群大小=30较好的一次结果

可以看出,当把种群大小改为30后,算法的收敛速度更快了(坐标轴从10^10到10^-30变化)。

同时求解的效果也非常的好。

另外,由迭代曲线可以看出,粒子并没有完全“聚拢”,最优值还可以继续下降。

这里1.0000是显示精度不足,并不是代表1.

同样多运行几遍程序,发现很少出现求解失败的情况,即使求解失败,其最优值和之前求解失败的情况相比,也有明显的下降。

如下图所示:

图4.4种群大小=30求解失败的情况

另外,我们又将种群大小改为40,50,60.发现当种群大小超过40后,求解精度几乎为10^(-5)以上.同时几乎不存在求解失败的情况。

总结:

随着种群的增加,系统求解到最优值的精度越来越高。

同时系统求解成功的概率也越来越高。

系统求解成功的概率和种群的大小密切相关。

4.3最大迭代次数对算法的影响

下面是将最大迭代次数改为300后的一次运行结果:

图4.5迭代次数=300的运行结果

可以看出,当增加迭代次数时,求解的结果也会越来越好。

但是通过多次运行发现,算法求解失败的概率几乎没有改变。

这是因为算法的求解是否成功和种群的大小、他们的初始位置有关以及速度惯性权重有关。

而和迭代次数关系不大,由上图可以发现在230次的时候,粒子几乎已经“聚拢”了。

这时即使增加迭代次数,粒子也不会再进行广域的探索了。

结论:

迭代次数越多,求解的精度越高。

但求解的成功概率几乎不变。

4.4实验得出的“最优”参数

通过一系列的测试,我们发现在以下这组参数下,算法用时最少,同时比较容易得到最优值。

图4.6最优参数下的结果

可以看出算法可以收敛到10^(-30)以上,已经超过了matlab的最小数字。

求解到了问题的最优值。

而且差不多刚好在300代左右迭代到最优值,没有过多的浪费时间。

事实上,权重的设置对算法的影响也比较大。

这里由于得到的结论和算法的理论分析相同,便不再赘述了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1