没有合适的资源?快使用搜索试试~ 我知道了~
粒子群算法优化及在TSP中的应用
1 下载量 201 浏览量
2023-08-24
17:42:38
上传
评论
收藏 1.28MB DOCX 举报
温馨提示
试读
23页
二、粒子群算法优化PSO(particle swarm optimazition) 1、粒子群算法原始基本概念理解(颜色标注的是关键字) 粒子群算法(PSO)是一种基于群体的随机优化技术。与其他基于群体的进化算法相比,它们均初始化为一组随机解,通过迭代搜寻最优解。不同的是,进化计算遵循适者生存原则,而PSO模拟社会。将每个可能产生的解表述为群中的一个微粒,每个微粒都具有自己的位置向量和速度向量,以及一个由目标函数决定的适应度。所有微粒在搜索空间中以一定速度飞行,通过追随当前搜索到的最优值来寻找全局最优值(与局部最优值比较)。 本文核心: 那么,我们想办法改进一些理论的研究方式与算法的思路(参数、函数),PSO的经典格式用于解决连续优化问题。但是,我们将旅行商问题作为一个示例性问题,它是一个离散的优化问题。为了解决离散优化问题,我们必须将经典PSO转换为离散PSO。为了将其转换为离散PSO,我们对其进行了修改,并使用了“交换算子”的概念。为了实现和分析我们的算法,我们需要一个问题。在这里,我们以旅行商问题为例。为了将其转换为离散PSO。那么改进的方向确定为“离散式粒子群算法优化”解决TS
资源推荐
资源详情
资源评论
PSO 算法优化及在 TSP 中的应用
一、基础知识简介
什么是 PSO?
PSO(PSO——Particle Swarm Optimization)(基于种群的随机优化技术算法)
粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种
合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经
验来不断改变其搜索模式。
算法的基本概念你给的书籍第十一章与第十二章介绍的非常详细了,包括很
多已有的优化方法与实现步骤,我就不再赘述。
二、粒子群算法优化 PSO(particle swarm optimazition)
1、粒子群算法原始基本概念理解(颜色标注的是关键字)
粒子群算法(PSO)是一种基于群体的随机优化技术。与其他基于群体的进
化算法相比,它们均初始化为一组随机解,通过迭代搜寻最优解。不同的是,进
化计算遵循适者生存原则,而 PSO 模拟社会。将每个可能产生的解表述为群中
的一个微粒,每个微粒都具有自己的位置向量和速度向量,以及一个由目标函数
决定的适应度。所有微粒在搜索空间中以一定速度飞行,通过追随当前搜索到的
最优值来寻找全局最优值(与局部最优值比较)。
PSO 模拟社会采用了以下三条简单规则对粒子个体进行操作:
①飞离最近的个体,以避免碰撞;
②飞向目标;
③飞向群体的中心。
这是粒子群算法的基本概念之一。
PSO 核心概念:
1.粒子(particle):一只鸟
2. 种群(population):鸟群
3. 位置(position):一个粒子(鸟)当前所在的位置
4. 经验(best):一个粒子(鸟)自身曾经离食物最近的位置
5. 速度(velocity):一个粒子(鸟)飞行的速度
6. 适应度(fitness):一个粒子(鸟)距离食物的远近
原始(PSO)理解概念:
PSO 核心——速度更新
从 PSO 算法流程图中可以看出,核心步骤是更新种群中每个粒子的位置和速度,
而速度的更新是核心中的核心。
粒子速度更新公式如下:
v 为粒子当前的速度,w 为惯性因子(有速度就有运动惯性)。rand()为随机数
生成函数,生成 0~1 之间的随机数。
position 为粒子当前的位置,pbest 为本粒子历史上最好的位置,gbest 为种群中
所有粒子中当前最好的位置。
c1 和 c2 表示学习因子,分别向本粒子历史最好位置 和种群中当前最好位置学
习。
注: 实际 中设置 c1=c2=1(不宜为 0,自我认识型没有“社会”就不行了),
w=0.5 下面介绍比较适合你理解
下面的参数 c and r 在代码中多修改几组数据做测试,写论文你很需要!
基本流程大致如下所示:
注意:
参数 w,c1,c2 的选择分别关系粒子速度的 3 个部分:惯性部分、社会部分和自身
部分在搜索中的作用。如何选择、优化和调整参数,使得算法既能避免早熟又能
比较快的收敛,对工程实践有着重要意义。
惯性权重 w 描述粒子上一代速度对当前代速度的影响。w 值较大,全局寻优能
力强,局部寻优能力弱;反之,则局部寻优能力强。当问题空间较大时,为了在
搜索速度和搜索精度之间达到平衡,通常做法是使算法在前期有较高的全局搜索
能力以得到合适的种子,而在后期有较高的局部搜索能力以提高收敛精度。所以
w 不宜为一个固定的常数。
给定目标函数(你也可以自己写一个):
代码实现以下(代码很简单):具体实现源码文件 Ras.py 不用老师给的源码 low
参数设置:
# 参数初始化(这三个参数不同的人有不同参考的区间,你可以自己设计,合理
就行)
w = 1.0
c1 = 1.49445
c2 = 1.49445
# 参数你可以自行调试 ,得到不同组的数据与结果,最起码对你写毕设有用
maxgen = 200 # 进化次数
sizepop = 20 # 种群规模
输出结果为如下,可以看到它陷入了局部最优解(这就是 12.3 描述的问题)
[-1.4156536e-03 1.7247511e-05]
适应度曲线
删除自适应变异部分的注释,运行后结果如下,可以看出收敛到全局最优解()
[-0.000343 0.00113498]
剩余22页未读,继续阅读
资源评论
黑客0929
- 粉丝: 34
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功