计算智能——基于粒子群算法的函数优化问题(课堂实验)

一.算法简介

1.1思想来源

粒子群算法(Particle Swarm Optimization,PSO)是1995年提出的一种全局搜索算法,同时也是一种模拟自然界的生物活动以及群体智能随机搜索算法,因其概念简明、实现方便、收敛速度快而为人所知。

粒子群算法的基本思想是模拟鸟群随机搜寻食物的捕食行为,鸟群通过自身经验和种群之间的交流调整自己的搜寻路径,从而找到食物最多的地点。其中每只鸟的位置/路径则为自变量组合,每次到达的地点的食物密度即函数值。每次搜寻都会根据自身经验(自身历史搜寻的最优地点)和种群交流(种群历史搜寻的最优地点)调整自身搜寻方向和速度,这个称为跟踪极值,从而找到最优解。

1.2基本原理

粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟。
粒子仅具有两个属性
速度:代表移动的快慢
位置:代表移动的方向。

每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。

速度和位置更新是粒子群算法的核心,其原理表达式和更新方式如下:在这里插入图片描述
id:代数
X:位置
V:速度
w:惯性权重
c1:个体可信度
c2:群体可信度
r:随机数

二.基本流程

粒子群基本流程的主要分为:
1.参数初始化
2. 产生初始粒子和速度
3、寻找个体极值
4、寻找全局最优解
5、修改粒子的速度和位置

三.涉及参数

种群数量:影响算法的搜索能力和计算量。虽然初始种群越大收敛性会更好,不过太大了也会影响速度;

迭代次数:太少解不稳定,太多浪费时间。对于复杂问题,进化代数可以相应地提高;

惯性权重:该参数反映了个体历史成绩对现在的影响

加速系数:一般取0~2,此处要根据自变量的取值范围来定,分为个体和群体两种;

空间维数:粒子搜索的空间维数即为自变量的个数。

位置限制:限制粒子搜索的空间,即自变量的取值范围,对于无约束问题此处可以省略。

速度限制:如果粒子飞行速度过快,很可能直接飞过最优解位置,但是如果飞行速度过慢,会使得收敛速度变慢,因此设置合理的速度限制就很有必要了。

四.代码验证

1.加速系数与惯性因子

2.种群数量和空间维度

4.1 Griewank函数

此实验为验证三个最优值为0的多维函数
运行10次,每次迭代1000代 取平均值找到以下值的较好搭配:

二维图绘制:
在这里插入图片描述

4.1.1加速系数与惯性因子的探讨

在这里其他的参数为定值:
迭代次数:maxgen=1000;
种群规模:sizepop=200;
适应度函数维度:dim=10;

1.1 c1,c2为定值,w线性递减
c1 = 1.49445;
c2 = 1.49445;
w=-0.0007x+0.9(其中x为迭代次数1000,w随迭代次数从0.9到0.2线性变化)

# 最优适应度 运行时间 收敛代数
1 0.00000 12.094 108
2 0.000000 12.060 96
3 0.000000 14.478 85
4 0.000000 12.348 113
5 0.000000 12.502 84
6 0.000000 13.415 104
7 0.000000 13.230 103
8 0.000000 12.573 89
9 0.000000 13.436 94
10 0.000000 12.346 97
平均值 0.000000 12.8428 98

1.2 c1线性递减,c2线性递增,w为定值
c1 = -0.0007x+0.9(其中x为迭代次数1000,c1随迭代次数从0.9到0.2线性变化)
c2 = 0.0007x+0.9(其中x为迭代次数1000,c2随迭代次数从0.2到0.9线性变化)
w=0.8

# 最优适应度 运行时间 收敛代数
1 0.000000 12.154 62
2 0.000000 12.504 63
3 0.000000 12.398 58
4 0.000000 15.531 61
5 0.000000 12.531 64
6 0.000000 12.668 65
7 0.000000 12.438 70
8 0.000000 12.458 58
9 0.000000 13.294 58
10 0.000000 12.392 57
平均值 0.000000 12.748 62

1.3 c1线性递减,c2线性递增,w线性递减

# 最优适应度 运行时间 收敛代数
1 0.000000 12.458 93
2 0.000000 12.686 93
3 0.000000 14.969 92
4 0.000000 13.452 95
5 0.000000 12.493 97
6 0.000000 12.305 96
7 0.000000 13.202 98
8 0.000000 12.467 95
9 0.000000 12.675 93
10 0.000000 13.245
  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值