• 回答数

    3

  • 浏览数

    358

扶阿婆过马路
首页 > 期刊论文 > 粒子群算法及其参数设置毕业论文

3个回答 默认排序
  • 默认排序
  • 按时间排序

一览佳肴

已采纳

我这里有一个粒子群的完整范例:<群鸟觅食的优化问题>function main()clc;clear all;close all;tic; %程序运行计时E0=0.001; %允许误差MaxNum=100; %粒子最大迭代次数narvs=1; %目标函数的自变量个数particlesize=30; %粒子群规模c1=2; %每个粒子的个体学习因子,也称为加速常数c2=2; %每个粒子的社会学习因子,也称为加速常数w=0.6; %惯性因子vmax=0.8; %粒子的最大飞翔速度x=-5+10*rand(particlesize,narvs); %粒子所在的位置v=2*rand(particlesize,narvs); %粒子的飞翔速度%用inline定义适应度函数以便将子函数文件与主程序文件放在一起,%目标函数是:y=1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2))%inline命令定义适应度函数如下:fitness=inline('1/(1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2)))','x');%inline定义的适应度函数会使程序运行速度大大降低for i=1:particlesize for j=1:narvs f(i)=fitness(x(i,j)); endendpersonalbest_x=x;personalbest_faval=f;[globalbest_faval i]=min(personalbest_faval);globalbest_x=personalbest_x(i,:);k=1;while k<=MaxNum for i=1:particlesize for j=1:narvs f(i)=fitness(x(i,j)); end if f(i)vmax; v(i,j)=vmax; elseif v(i,j)<-vmax; v(i,j)=-vmax; end end x(i,:)=x(i,:)+v(i,:); end if abs(globalbest_faval)

205 评论

挂在盒子上723

好的,只要编程的吗。

309 评论

萌萌萌萌瓜

(已合并本篇内容至粒子群算法(1)) 上一节中,我们看到小鸟们聚集到一个较小的范围内后,不会再继续集中。这是怎么回事呢? 猜测: 1.与最大速度限制有关,权重w只是方便动态修改maxV。 2.与C1和C2有关,这两个权重限制了鸟儿的搜索行为。 还是上一节的实验, 。现在我们将maxV的值有5修改为50,即maxV=50,其他参数不变。参数如下 此时得到的最优位值的适应度函数值为0.25571,可以看出与maxV=5相比,结果差了很多而且小鸟们聚集的范围更大了。 现在我们设置maxV=1,再次重复上面的实验,实验结果如下: 这次最终的适应度函数值为,比之前的结果都要好0.00273。从图中我们可以看出,小鸟们在向一个点集中,但是他们飞行的速度比之前慢多了,如果问题更复杂,可能无法等到它们聚集到一个点,迭代就结束了。 为什么maxV会影响鸟群的搜索结果呢? 我们依然以maxV=50为例,不过这次为了看的更加清晰,我们的鸟群只有2只鸟,同时将帧数放慢5倍以便观察。思路一:限制鸟的最大飞行速率,由于惯性系数W的存在,使得控制最大速率和控制惯性系数的效果是等价的,取其一即可。 方案1:使惯性系数随着迭代次数增加而降低,这里使用的是线性下降的方式,即在第1次迭代,惯性系数W=1,最后一次迭代时,惯性系数W=0,当然,也可以根据自己的意愿取其他值。 实验参数如下: 小鸟们的飞行过程如上图,可以看到效果很好,最后甚至都聚集到了一个点。再看看最终的适应度函数值8.61666413451519E-17,这已经是一个相当精确的值了,说明这是一个可行的方案,但是由于其最后种群过于集中,有陷入局部最优的风险。 方案2:给每只鸟一个随机的惯性系数,那么鸟的飞行轨迹也将不再像之前会出现周期性。每只鸟的惯性系数W为(0,2)中的随机数(保持W的期望为1)。 实验参数如下: 可以看到小鸟们并没有像上一个实验一样聚集于一个点,而是仍在一个较大的范围内进行搜索。其最终的适应度函数为0.01176,比最初的0.25571稍有提升,但并不显著。什么原因造成了这种情况呢?我想可能是由于惯性系数成了期望为1的随机数,那么小鸟的飞行轨迹的期望可能仍然是绕着一个四边形循环,只不过这个四边形相比之前的平行四边形更加复杂,所以其结果也稍有提升,当然对于概率算法,得到这样的结果可能仅仅是因为运气不好 我们看到惯性系数W值减小,小鸟们聚拢到一处的速度明显提升,那么,如果我们去掉惯性系数这个参数会怎么样呢。 方案3:取出惯性系数,即取W=0,小鸟们只向着那两个最优位置飞行。 可以看见鸟群们迅速聚集到了一个点,再看看得到的结果,最终的适应度函数值为2.9086886073362966E-30,明显优于之前的所有操作。 那么问题来了,为什么粒子群算法需要一个惯性速度,它的作用是什么呢?其实很明显,当鸟群迅速集中到了一个点之后它们就丧失了全局的搜索能力,所有的鸟会迅速向着全局最优点飞去,如果当前的全局最优解是一个局部最优点,那么鸟群将会陷入局部最优。所以,惯性系数和惯性速度的作用是给鸟群提供跳出局部最优的可能性,获得这个跳出局部最优能力的代价是它们的收敛速度减慢,且局部的搜索能力较弱(与当前的惯性速度有关)。 为了平衡局部搜索能力和跳出局部最优能力,我们可以人为的干预一下惯性系数W的大小,结合方案1和方案2,我们可以使每只鸟的惯性系数以一个随机周期,周期性下降,若小于0,则重置为初始值。 这样结合了方案1和方案2的惯性系数,也能得到不错的效果,大家可以自己一试。 思路二:改变小鸟们向群体最优飞行和向历史最优飞行的权重。 方案4:让小鸟向全局最优飞行的系数C2线性递减。 小鸟们的飞行过程与之前好像没什么变化,我甚至怀疑我做了假实验。看看最终结果,0.7267249621552874,这是到目前为止的最差结果。看来这不是一个好方案,让全局学习因子C2递减,势必会降低算法的收敛效率,而惯性系数还是那么大,小鸟们依然会围绕历史最优位置打转,毕竟这两个最优位置是有一定关联的。所以让C1线性递减的实验也不必做了,其效果应该与方案4相差不大。 看来只要是惯性系数不变怎么修改C1和C2都不会有太过明显的效果。为什么实验都是参数递减,却没有参数递增的实验呢? 1.惯性系数W必须递减,因为它会影响鸟群的搜索范围。 2.如果C1和C2递增,那么小鸟的惯性速度V势必会跟着递增,这与W递增会产生相同的效果。 上面我们通过一些实验及理论分析了粒子群算法的特点及其参数的作用。粒子群作为优化算法中模型最简单的算法,通过修改这几个简单的参数也能够改变算法的优化性能可以说是一个非常优秀的算法。 上述实验中,我们仅分析了单个参数对算法的影响,实际使用时(创新、发明、写论文时)也会同时动态改变多个参数,甚至是参数之间产生关联。 实验中,为了展现实验效果,maxV取值较大,一般取值为搜索空间范围的10%-20%,按上面(-100,100)的范围maxV应该取值为20-40,在此基础上,方案1、方案2效果应该会更好。 粒子群算法是一种概率算法,所以并不能使用一次实验结果来判断算法的性能,我们需要进行多次实验,然后看看这些实验的效果最终来判断,结果必须使用多次实验的统计数据来说明,一般我们都会重复实验30-50次,为了发论文去做实验的小伙伴们不要偷懒哦。 粒子群算法的学习目前告一段落,如果有什么新的发现,后面继续更新哦! 以下指标纯属个人yy,仅供参考 目录 上一篇 优化算法笔记(四)粒子群算法(2) 下一篇 优化算法笔记(六)遗传算法

240 评论

相关问答

  • 钳工工作法及其装备毕业论文

    钳工是用手工工具并经常在台虎钳上进行手工操作的一个工种。下面是由我整理的钳工技师职称论文,谢谢你的阅读。 论职业教育中的装配钳工 摘 要:随着科技的发展,许多钳

    jessicabeck 3人参与回答 2023-12-07
  • 论文的参考文献怎么设置标号对其

    设置中括号和序号对齐,按住“alt键”,把个位数字的序号和中括号都选中,右键单击,选择“字体”。在字体选项框中,点击“字符间距”标签,把间距设置为“加宽”,值是

    北京钢材大全 2人参与回答 2023-12-10
  • 路由器及其配置分析论文文献

    1引言随着对IPv4向IPv6过渡技术研究的不断深入,业界对于过渡问题的认识也不断深入,IETF对于这个问题的认识经历了迁移(Migration)、过渡(Tra

    偶是透明哒 4人参与回答 2023-12-08
  • 粒子群算法及其参数设置毕业论文

    我这里有一个粒子群的完整范例:function main()clc;clear all;close all;tic;

    扶阿婆过马路 3人参与回答 2023-12-08
  • 路由器及其配置毕业论文

    虚拟路由器即Virtual Router,是指在软、硬件层实现物理路由器的功能仿真,属于一种逻辑设备。每个VR应该具有逻辑独立的路由表和转发表,这样就使不同VP

    蓝瑟季候风 2人参与回答 2023-12-10