智能优化算法——粒子群算法小实践

实验六 粒子群算法
一、实验目的与要求:
目的:通过本次实验,学生可以掌握粒子群算法基本原理、基本粒子群算法流程和关键参数的设置。
要求:上机仿真,调试通过。
二、 实验设备:
计算机、Matlab软件、Python、VC++或C语言软件
三、实验内容:
1.求函数的最小值,其中x的取值范围为[-4,4],这是一个有多个局部极值的函数。
2.用离散粒子群算法求函数的最小值,其中x的取值范围为[0,9],这是一个有多个局部极值的函数。
四、实验原理:
(1)粒子群算法原理
粒子群算法,也称粒子群优化算法或鸟群觅食算法,该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型,缩写为 PSO。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。属于进化算法的一种,是一种并行算法。
假设在一个D维的目标搜索空间中,有N个粒子组成一个群落,其中第i粒子表示为一个D维的向量:
在这里插入图片描述
第i个粒子的 “飞行”速度也是一个D维的向量,记为
在这里插入图片描述
第i个粒子迄今为止搜索到的最优位置称为个体极值,记为
在这里插入图片描述
整个粒子群迄今为止搜索到的最优位置为全局极值,记为
在这里插入图片描述
在找到这两个最优值时,更新自己的速度和位置:

在这里插入图片描述
在这里插入图片描述
其中:c1和c2为学习因子,也称加速常数;r1和r2为[0,1]范围内的均匀随机数,i=1,2,D:vij是粒子的速度,在这里插入图片描述在这里插入图片描述是常数,由用户设定来限制粒子的速度。r1和r2是介于0和1之间的随机数,增加了粒子飞行的随机性。在这里插入图片描述右边由三部分组成:第一部分为“惯性”或“动量”部分,反映粒子的运动“习惯”,代表粒子有维持自己先前速度的趋势;第二部分为“认知部分,反映了粒子对自身历史经验的记忆或回忆,代表粒子有向自身历史最佳位置逼近的趋势:第三部分为“社会”部分,反映了粒子间协同合作与知识共导印群体历史经验, 代表粒子有向群体或邻域历史最佳位置逼近的趋势。
(2)粒子群算法流程或步骤
1.参数初始化。
2.计算每个粒子的适应度值fit[i]。
3.对每个粒子,用它的适应度值fit[i]和个体极值在这里插入图片描述比较。如果fit[i]<在这里插入图片描述,则用fit[i]替换掉在这里插入图片描述
4.对每个粒子,用它的适应度值fit[i]和全局极值在这里插入图片描述比较。如果fit[i]<在这里插入图片描述,则用fit[i]替换掉在这里插入图片描述
5.迭代更新粒子的速度vi和位置xi。
6.进行边界条件处理。
7.判断算法终止条件是否满足:若是,则结束算法并输出优化结果;否则,返回步骤2。

在这里插入图片描述
图1.粒子群算法运算流程
五、实验结果
(1)最小值取到-6.4068
在这里插入图片描述
图2.题6.2参数设置
在这里插入图片描述
图3.题6.2实验结果
(2)结果为:当x=4.3717时,函数f(x)取得最小值-10.4199。
在这里插入图片描述
图4.题6.3参数设置
在这里插入图片描述
图5.题6.3实验结果
六、思考粒子群算法关键参数设置对算法结果的影响
(1)粒子群种群规模N
粒子种群大小的选择视具体问题而定,粒子数目越大,算法搜索空间范围就越大,也就更容易发现全局最优解,同时算法运行的时间也越长。在本实验中,粒子种群稍大的算法搜索找到的适应度值越小。
(2)惯性权重w
惯性权重w是标准粒子群算法中非常重要的控制参数,可以用来控制算法的开发和探索能力。 惯性权重的大小表示了对粒子当前速度继承的多少。当惯性权重值较大时,全局寻优能力较强,局部寻优能力较弱; 当惯性权重值较小时,全局寻优能力较弱,局部寻优能力较强。 惯性权重的选择通常有固定权重和时变权重。 固定权重就是选择常数作为惯性权重值,在进化过程中其值保持不变,一般取值为[0.8,1.2];时变权重则是设定某一变化区间,在进化过程中按照某种方式逐步减小惯性权重。 时变权重的选择包括变化范围和递减率。 固定的惯性权重可以使粒子保持相同的探索和开发能力,而时变权重可以使粒子在进化的不同阶段拥有不同的探索和开发能力。
(3)加速常数c1和c2
加速常数c1和c2分别调节向pbest和gbest方向飞行的最大步长,它们分别决定粒子个体经验和群体经验对粒子运行轨迹的影响,反映粒子群之间的信息交流。如果c1=c2=0,则粒子将以当前的飞行速度飞到边界。 此时,粒子仅能搜索有限的区域,所以难以找到最优解。如果c=0,则为“社会”模型,粒子缺乏认知能力,而只有群体经验,它的收敛速度较快,但容易陷入局部最优;如果c2=0,则为“认知”模型,没有社会的共享信息,个体之间没有信息的交互, 所以找到最优解的概率较小。 一个规模为D的群体等价于运行了N个各行其是的粒子,因此一般设置c1=c2。 这样,个体经验和群体经验就有了同样重要的影响力, 使得最后的最优解更精确。
(4)粒子群算法的终止进化代数G
终止进化代数G是遗传算法运行结束条件的一个参数,它表示遗传算法运行到指定的进化代数之后就停止运行,并将当前群体中的最佳个体作为所求问题的最优解输出。下面比较终止迭代次数为200和500,终止迭代次数为500的优化最短距离要比终止迭代次数为的小得多。
在这里插入图片描述
图6.迭代次数为200的适应度进化曲线
在这里插入图片描述
图7.迭代次数为500的适应度进化曲线

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值