PSO算法优化及在TSP中的应用

PSO算法优化及在TSP中的应用PSO 算法优化及在 TSP 中的应用 一 基础知识简介 什么是 PSO PSO PSO Particle Swarm Optimization 基于种群的随机优化技术算法 粒子群算法模仿昆虫 兽群 鸟群和鱼群等的群集行为 这些群体按照一种合作的方式寻找食物

大家好,我是讯享网,很高兴认识大家。

PSO算法优化及在TSP中的应用

一、基础知识简介

什么是PSO?
PSO(PSO——Particle Swarm Optimization)(基于种群的随机优化技术算法)
粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断改变其搜索模式。
算法的基本概念你给的书籍第十一章与第十二章介绍的非常详细了,包括很多已有的优化方法与实现步骤,我就不再赘述。

二、粒子群算法优化PSO(particle swarm optimazition)

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.e-03 1.e-05]
在这里插入图片描述
适应度曲线

删除自适应变异部分的注释,运行后结果如下,可以看出收敛到全局最优解()
[-0.000343 0.00]
在这里插入图片描述

其实,每组测试值不一样的,因为随机数不一样,你可以多运行做几组测试。你只需要理解参数值与测试值得关系,C值与W值

显然,原始的经典【粒子群算法】无论从书籍上提供的那种思路,都有优缺点,很难再改变,其次就是TSP是离散优化问题,应用效果不好,参数的设定也极为复杂。

这里提供的思路,可以借鉴参考:书籍12.2
PSO算法的改进研究可以归纳为两方面:
一方面的研究是将各种先进理论计内结ASo算法,研究各种改进和PSO算法;另一方面是将PSO算法和其他智能优化算法相结合,研究各种混合优化算法,达到取长补短、改善算法某方面性能的效果。
现今,有大量的学者将混沌技术、神经网络技术、灰色理论、自适应技术等一系列先进理论引入到PSO算法。各种先进理论的引入,极大地提高了PSO的性能。
∎本文核心:
那么,我们想办法改进一些理论的研究方式与算法的思路(参数、函数),PSO的经典格式用于解决连续优化问题。但是,我们将旅行商问题作为一个示例性问题,它是一个离散的优化问题。为了解决离散优化问题,我们必须将经典PSO转换为离散PSO。为了将其转换为离散PSO,我们对其进行了修改,并使用了“交换算子”的概念。为了实现和分析我们的算法,我们需要一个问题。在这里,我们以旅行商问题为例。为了将其转换为离散PSO。那么改进的方向确定为“离散式粒子群算法优化”解决TSP问题。改进算法参考文献设计思路源于以下文章。接下来我们研究一下三篇优秀的论文
①发表于国际计算机应用杂志的:Solving City Routing Issue with Particle Swarm Optimization
本文提出了离散粒子群优化在这个问题上的一个应用。交换算子和交换序列的概念引入和应用源于这篇文章,如何实现看文章与我写的源码
它涵盖了基本的PSO算法与原理介绍:细节你自行翻译阅读研究这是代码设计的重要依据之一,一定要看明白论文第四节【4.1-4.5】阐述的算法思想
在这里插入图片描述

最主要的一个思想就是:老师给的书籍算法改进分析和现在很多主流算法提及到的PSO算法设计中都有的公式如下:
在这里插入图片描述

这些算法都不适用于离散组合优化的TSP问题,这才是改进算法出发点的关键所在。

②文献:A COPMARISON OF PARTICLE SWARM OPTIMIZATION AND THE GENETIC ALGORITHM
粒子群的优化组合与遗传算法,你可以借鉴算法改变思路与设计
③旅行销售员问题的粒子群优化算法(重点研究)
在这里插入图片描述
在这里插入图片描述
ppestp是粒子达到的**位置,gpestp(t)是粒子达到的**位置,c1是量化粒子信任经验的认知系数,c2是量化粒子信任**邻居的社会系数,rand1和rand2是随机数。设计改进算法中我们引用到此概念
源码中设计如下所示:
在这里插入图片描述
注意:如何实现的请看源码(文章后面有介绍)
所有算法改进启发源于此三篇文献:特别是①③好好研究,一边看论文
其次就是我源码几乎每一句都给你写了注释,只要你有点python基础,看懂是没问题的。

三、TSP问题

源码:加q

四、粒子群优化改进(离散化概念引入)在TSP中的应用
源码介绍
项目文件夹为:PSO_suanfayouhua

子文件夹包:My_Project 下有
①psoMain.py 是粒子群算法改进源码与实现
②tspPsomain.py是改进的PSO算法解决TSP问题的设计与实现
③userScript.py 城市坐标路径读取
④Graph.py 不同城市的路径、顶点、边、路线图
⑤Data -->qa194.tsp 为100城市坐标文件

实验结果与展示:
运行①结果迭代太多数据了,我复制一部分
1 [-1.8929, -0.21249] [4.35535, -4.8764] 3.0627 3.0627 [-1.8929, -0.21249]
2 [4.2317, -2.34566] [-1.7531, -4.4521] 31.7174 31.7174 [4.2317, -2.34566]
3 [4.1786, -0.98727] [-2.9076, 1.74097] 21.981 21.981 [4.1786, -0.98727]
4 [-4.18445, -4.6319] [1.23629, 4.1277] 40.884 40.884 [-4.18445, -4.6319]
5 [-0.11051, -2.2535] [0.0, 2.85304] 6.5157 6.5157 [-0.11051, -2.2535]
6 [-1.54982, -2.79965] [-2.22006, 2.64527] 11.31 11.31 [-1.54982, -2.79965]
7 [-1.05898, -3.76586] [1.02395, -4.008] 12.0142 12.0142 [-1.05898, -3.76586]
8 [-3.65846, 1.87332] [-3.2637, -4.4159] 13.2126 13.2126 [-3.65846, 1.87332]
9 [0.45955, -2.0689] [0., 1.0602] 8.7361 8.7361 [0.45955, -2.0689]
10 [1.11358, -3.4594] [3.1508, -1.00513] 14.7253 14.7253 [1.11358, -3.4594]
11 [-0.26237, -4.7679] [1.81268, 0.18839] 22.0672 22.0672 [-0.26237, -4.7679]
12 [1.83533, 3.7696] [-1.1106, -4.0912] 13.0375 13.0375 [1.83533, 3.7696]
13 [-1.89205, -2.02766] [4.9448, 1.77946] 11.2525 11.2525 [-1.89205, -2.02766]
14 [1.04488, 3.93216] [0., 2.1825] 16.3908 16.3908 [1.04488, 3.93216]
15 [-1.5603, 0.64829] [-2.28084, 2.5792] 3.4187 3.4187 [-1.5603, 0.64829]
全局最好的坐标---------> [-1.8929, -0.21249]
全局最好的适应度---------> 3.0627
-----------------------------------------迭代次数 No.[0]-------------------------------------
1 [2.29703, -0.91708] [3.18993, -0.] 7.9914 3.0627 [-1.8929, -0.21249]
2 [26.3666, 33.796] [22.035, 36.141] 1856.17 31.7174 [4.2317, -2.34566]
3 [18.666, 23.4943] [13.4873, 24.0815] 877.03 21.981 [4.1786, -0.98727]
4 [49.982, 48.5374] [54.1665, 52.169] 4836.65 40.884 [-4.18445, -4.6319]
5 [12.6379, 13.5464] [13.7483, 15.7999] 348.73 6.5157 [-0.11051, -2.2535]
6 [8.0944, 6.7757] [9.6442, 9.0754] 107.977 11.31 [-1.54982, -2.79965]
7 [20.0843, 17.79] [21.743, 20.556] 723.34 12.0142 [-1.05898, -3.76586]
8 [10.0414, -0.] [13., -1.09208] 102.521 13.2126 [-3.65846, 1.87332]
9 [18.68, 21.276] [18.0205, 24.345] 808.54 8.7361 [0.45955, -2.0689]
10 [21.281, 22.5226] [19.1676, 26.0818] 964.09 14.7253 [1.11358, -3.4594]
11 [26.2098, 26.396] [26.4722, 30.164] 1382.08 22.0672 [-0.26237, -4.7679]
12 [20.7153, 15.0051] [18.88, 11.3355] 636.75 13.0375 [1.83533, 3.7696]
13 [28.6965, 26.1992] [29.5884, 29.227] 1488.3 11.2525 [-1.89205, -2.02766]
14 [6.3288, -0.] [5.284, -4.06355] 46.124 16.3908 [1.04488, 3.93216]
15 [13.0758, 4.1157] [14.536, 3.46743] 188.42 3.4187 [-1.5603, 0.64829]
全局最好的坐标---------> [-1.8929, -0.21249]
全局最好的适应度---------> 3.0627
-----------------------------------------迭代次数 No.[1]-------------------------------------
1 [4.0764, 3.28595] [2.07935, 4.203] 34.493 3.0627 [-1.8929, -0.21249]
2 [44.187, 43.677] [18.82, 10.8814] 3946.5 31.7174 [4.2317, -2.34566]
3 [1.16672, -6.677] [-16.4992, -29.1713] 43.263 21.981 [4.1786, -0.98727]
4 [2.70485, 1.64303] [-46.2774, -46.894] 12.8337 12.8337 [2.70485, 1.64303]
5 [5.9427, 5.3582] [-6.6952, -7.1882] 68.094 6.5157 [-0.11051, -2.2535]
6 [9.3735, 8.8446] [1.2791, 2.06895] 175.168 11.31 [-1.54982, -2.79965]
7 [1.4816, 3.99663] [-19.6027, -14.0034] 13.6826 12.0142 [-1.05898, -3.76586]
8 [19.602, 24.673] [9.2607, 25.092] 1005.13 13.2126 [-3.65846, 1.87332]
9 [-11.9233, -17.0062] [-29.6034, -38.652] 415.00 8.7361 [0.45955, -2.0689]
10 [-4.0924, -5.8331] [-25.0734, -28.3557] 52.082 14.7253 [1.11358, -3.4594]
11 [15.245, 16.386] [-10.9648, -10.0101] 510.604 22.0672 [-0.26237, -4.7679]
12 [15.1125, 11.1264] [-4.6028, -3.07866] 381.36 13.0375 [1.83533, 3.7696]
13 [-4.9578, -4.51195] [-32.654, -30.711] 39.152 11.2525 [-1.89205, -2.02766]
14 [20.445, 20.0884] [14.0163, 20.62] 837.18 16.3908 [1.04488, 3.93216]
15 [8.5125, 5.3324] [-4.4633, 0.21668] 105.571 3.4187 [-1.5603, 0.64829]
全局最好的坐标---------> [-1.8929, -0.21249]
全局最好的适应度---------> 3.0627
-----------------------------------------迭代次数 No.[2]-------------------------------------
1 [3.75655, 4.6844] [-1.31983, 1.39845] 34.585 3.0627 [-1.8929, -0.21249]
2 [36.382, 33.057] [-8.8047, -10.8205] 2414.82 31.7174 [4.2317, -2.34566]
3 [5.4103, 0.17781] [3.2436, 6.8548] 28.2616 21.981 [4.1786, -0.98727]
4 [-7.8846, -4.3935] [-10.5895, -6.03655] 85.775 12.8337 [2.70485, 1.64303]
5 [1.4249, 2.0905] [-4.5178, -3.26766] 9.5142 6.5157 [-0.11051, -2.2535]
6 [8.8645, 10.0064] [-1.5089, 1.06174] 174.266 11.31 [-1.54982, -2.79965]
7 [-3.9695, 0.93205] [-4.4511, -2.0646] 10.9223 10.9223 [-3.9695, 0.93205]
8 [8.0575, 13.0542] [-11.5444, -11.0189] 240.227 13.2126 [-3.65846, 1.87332]
9 [-3.14323, -6.50165] [7.7801, 10.0746] 65.634 8.7361 [0.45955, -2.0689]
10 [6.6009, 9.0798] [10.3934, 15.9129] 136.52 14.7253 [1.11358, -3.4594]
11 [9.2332, 9.2422] [-6.0119, -6.1437] 179.088 22.0672 [-0.26237, -4.7679]
12 [-2.61976, 5.0535] [-17.7323, -6.0728] 33.0734 13.0375 [1.83533, 3.7696]
13 [11.0623, 11.8957] [15.2201, 16.4077] 265.11 11.2525 [-1.89205, -2.02766]
14 [-3.67403, 1.32913] [-24.119, -18.1593] 18.9593 16.3908 [1.04488, 3.93216]
15 [-1.66566, 4.3106] [-10.0782, -0.02172] 23.754 3.4187 [-1.5603, 0.64829]
全局最好的坐标---------> [-1.8929, -0.21249]
全局最好的适应度---------> 3.0627
-----------------------------------------迭代次数 No.[3]-------------------------------------
1 [2.27093, 3.08085] [-1.08565, -1.80354] 15.02 3.0627 [-1.8929, -0.21249]
2 [9.0848, 9.7001] [-27.5974, -23.1567] 179.103 31.7174 [4.2317, -2.34566]
3 [14.0795, 23.0713] [8.9691, 23.0935] 760.02 21.981 [4.1786, -0.98727]
4 [14.3724, 14.5995] [21.257, 19.993] 412.11 12.8337 [2.70485, 1.64303]
5 [8.9087, 8.3246] [7.4838, 5.2341] 146.892 6.5157 [-0.11051, -2.2535]
6 [3.5478, 4.17725] [-5.3167, -5.7291] 34.74 11.31 [-1.54982, -2.79965]
7 [17.159, 14.4422] [21.1283, 14.5101] 547. 10.9223 [-3.9695, 0.93205]
8 [1.33435, -6.7389] [-6.7232, -19.393] 43.0204 13.2126 [-3.65846, 1.87332]
9 [12.8188, 17.8865] [16.962, 24.388] 484.56 8.7361 [0.45955, -2.0689]
10 [13.9963, 15.6987] [6.39545, 5.619] 418.58 14.7253 [1.11358, -3.4594]
11 [1.7487, 1.84168] [-7.4845, -7.40055] 7.9729 7.9729 [1.7487, 1.84168]
12 [4.9647, 3.7132] [6.5844, -1.34034] 31.999 13.0375 [1.83533, 3.7696]
13 [5.3122, 6.5889] [-5.9501, -5.3068] 66.163 11.2525 [-1.89205, -2.02766]
14 [21.673, 14.8817] [25.047, 13.0525] 658.54 16.3908 [1.04488, 3.93216]
15 [-0.289, 2.1073] [0.37666, -1.20328] 8.577 3.4187 [-1.5603, 0.64829]
全局最好的坐标---------> [-1.8929, -0.21249]
全局最好的适应度---------> 3.0627

运行②(粒子群优化改进解决TSP问题)同样数据太多了,我只是复制一部分

添加所有的边.
Showing Particle*
Pbest: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘7’, ‘72’, ‘29’, ‘27’, ‘77’, ‘95’, ‘92’, ‘68’, ‘100’, ‘69’, ‘30’, ‘15’, ‘46’, ‘58’, ‘66’, ‘12’, ‘35’, ‘39’, ‘48’, ‘3’, ‘10’, ‘54’, ‘41’, ‘78’, ‘83’, ‘21’, ‘8’, ‘94’, ‘26’, ‘91’, ‘25’, ‘14’, ‘87’, ‘53’, ‘51’, ‘5’, ‘42’, ‘9’, ‘88’, ‘71’, ‘84’, ‘64’, ‘57’, ‘73’, ‘19’, ‘70’, ‘65’, ‘45’, ‘75’, ‘82’, ‘61’, ‘38’, ‘20’, ‘63’, ‘40’, ‘50’, ‘93’, ‘49’, ‘56’, ‘17’, ‘98’, ‘90’, ‘80’, ‘11’, ‘24’, ‘6’, ‘36’, ‘44’, ‘34’, ‘28’, ‘96’, ‘85’, ‘86’, ‘55’, ‘4’, ‘22’, ‘43’, ‘62’, ‘99’, ‘81’, ‘79’, ‘67’, ‘52’, ‘32’, ‘59’, ‘60’, ‘89’, ‘76’, ‘47’, ‘31’, ‘37’, ‘2’, ‘16’, ‘74’]
Cost of Pbest: 25497
Current Solution: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘7’, ‘72’, ‘29’, ‘27’, ‘77’, ‘95’, ‘92’, ‘79’, ‘46’, ‘69’, ‘30’, ‘15’, ‘93’, ‘58’, ‘66’, ‘12’, ‘38’, ‘39’, ‘48’, ‘3’, ‘35’, ‘10’, ‘45’, ‘78’, ‘83’, ‘21’, ‘8’, ‘94’, ‘26’, ‘91’, ‘25’, ‘41’, ‘87’, ‘53’, ‘50’, ‘5’, ‘42’, ‘9’, ‘88’, ‘71’, ‘84’, ‘64’, ‘57’, ‘74’, ‘19’, ‘70’, ‘51’, ‘54’, ‘75’, ‘82’, ‘61’, ‘56’, ‘20’, ‘14’, ‘89’, ‘49’, ‘65’, ‘40’, ‘73’, ‘17’, ‘98’, ‘90’, ‘80’, ‘11’, ‘24’, ‘6’, ‘36’, ‘44’, ‘34’, ‘28’, ‘96’, ‘85’, ‘86’, ‘55’, ‘4’, ‘100’, ‘43’, ‘63’, ‘22’, ‘81’, ‘59’, ‘67’, ‘52’, ‘32’, ‘62’, ‘60’, ‘37’, ‘76’, ‘47’, ‘31’, ‘68’, ‘2’, ‘99’, ‘16’]

Cost of Current Solution: 28833
Pbest: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘7’, ‘72’, ‘29’, ‘27’, ‘77’, ‘95’, ‘92’, ‘63’, ‘65’, ‘69’, ‘30’, ‘15’, ‘54’, ‘58’, ‘66’, ‘12’, ‘68’, ‘39’, ‘48’, ‘3’, ‘62’, ‘49’, ‘50’, ‘78’, ‘83’, ‘21’, ‘8’, ‘94’, ‘26’, ‘91’, ‘25’, ‘79’, ‘87’, ‘53’, ‘41’, ‘5’, ‘42’, ‘9’, ‘88’, ‘71’, ‘84’, ‘43’, ‘57’, ‘10’, ‘19’, ‘70’, ‘37’, ‘14’, ‘75’, ‘55’, ‘61’, ‘22’, ‘20’, ‘38’, ‘74’, ‘100’, ‘89’, ‘99’, ‘59’, ‘17’, ‘98’, ‘90’, ‘4’, ‘11’, ‘24’, ‘6’, ‘36’, ‘44’, ‘34’, ‘28’, ‘96’, ‘85’, ‘86’, ‘82’, ‘80’, ‘93’, ‘64’, ‘46’, ‘35’, ‘81’, ‘40’, ‘67’, ‘52’, ‘32’, ‘51’, ‘60’, ‘45’, ‘76’, ‘47’, ‘31’, ‘16’, ‘2’, ‘73’, ‘56’]
Cost of Pbest: 24037
Current Solution: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘7’, ‘72’, ‘29’, ‘27’, ‘77’, ‘95’, ‘92’, ‘63’, ‘65’, ‘69’, ‘30’, ‘15’, ‘54’, ‘58’, ‘66’, ‘12’, ‘68’, ‘39’, ‘48’, ‘3’, ‘62’, ‘49’, ‘50’, ‘78’, ‘83’, ‘21’, ‘8’, ‘94’, ‘26’, ‘91’, ‘25’, ‘79’, ‘87’, ‘53’, ‘41’, ‘5’, ‘42’, ‘9’, ‘88’, ‘71’, ‘84’, ‘43’, ‘57’, ‘10’, ‘19’, ‘70’, ‘37’, ‘14’, ‘75’, ‘55’, ‘61’, ‘22’, ‘20’, ‘38’, ‘74’, ‘100’, ‘89’, ‘99’, ‘59’, ‘17’, ‘98’, ‘90’, ‘4’, ‘11’, ‘24’, ‘6’, ‘36’, ‘44’, ‘34’, ‘28’, ‘96’, ‘85’, ‘86’, ‘82’, ‘80’, ‘93’, ‘64’, ‘46’, ‘35’, ‘81’, ‘40’, ‘67’, ‘52’, ‘32’, ‘51’, ‘60’, ‘45’, ‘76’, ‘47’, ‘31’, ‘16’, ‘2’, ‘73’, ‘56’]

Cost of Current Solution: 24037
Pbest: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘7’, ‘72’, ‘29’, ‘27’, ‘77’, ‘95’, ‘92’, ‘63’, ‘65’, ‘69’, ‘30’, ‘15’, ‘54’, ‘58’, ‘66’, ‘12’, ‘68’, ‘39’, ‘48’, ‘3’, ‘62’, ‘49’, ‘50’, ‘78’, ‘83’, ‘21’, ‘8’, ‘94’, ‘26’, ‘91’, ‘25’, ‘79’, ‘87’, ‘53’, ‘41’, ‘5’, ‘42’, ‘9’, ‘88’, ‘71’, ‘84’, ‘43’, ‘57’, ‘10’, ‘19’, ‘70’, ‘37’, ‘14’, ‘75’, ‘55’, ‘61’, ‘22’, ‘20’, ‘38’, ‘74’, ‘100’, ‘89’, ‘99’, ‘59’, ‘17’, ‘98’, ‘90’, ‘4’, ‘11’, ‘24’, ‘6’, ‘36’, ‘44’, ‘34’, ‘28’, ‘96’, ‘85’, ‘86’, ‘82’, ‘80’, ‘93’, ‘64’, ‘46’, ‘35’, ‘81’, ‘40’, ‘67’, ‘52’, ‘32’, ‘51’, ‘60’, ‘45’, ‘76’, ‘47’, ‘31’, ‘16’, ‘2’, ‘73’, ‘56’]
Cost of Pbest: 24037
Current Solution: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘7’, ‘72’, ‘29’, ‘27’, ‘77’, ‘95’, ‘92’, ‘63’, ‘65’, ‘69’, ‘30’, ‘15’, ‘54’, ‘58’, ‘66’, ‘12’, ‘68’, ‘39’, ‘48’, ‘3’, ‘62’, ‘49’, ‘50’, ‘78’, ‘83’, ‘21’, ‘8’, ‘94’, ‘26’, ‘91’, ‘25’, ‘79’, ‘87’, ‘53’, ‘41’, ‘5’, ‘42’, ‘9’, ‘88’, ‘71’, ‘84’, ‘43’, ‘57’, ‘10’, ‘19’, ‘70’, ‘37’, ‘14’, ‘75’, ‘55’, ‘61’, ‘22’, ‘20’, ‘38’, ‘74’, ‘100’, ‘89’, ‘99’, ‘59’, ‘17’, ‘98’, ‘90’, ‘4’, ‘11’, ‘24’, ‘6’, ‘36’, ‘44’, ‘34’, ‘28’, ‘96’, ‘85’, ‘86’, ‘82’, ‘80’, ‘93’, ‘64’, ‘46’, ‘35’, ‘81’, ‘40’, ‘67’, ‘52’, ‘32’, ‘51’, ‘60’, ‘45’, ‘76’, ‘47’, ‘31’, ‘16’, ‘2’, ‘73’, ‘56’]

Cost of Current Solution: 24037
Pbest: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘82’, ‘6’, ‘52’, ‘27’, ‘77’, ‘95’, ‘56’, ‘81’, ‘79’, ‘69’, ‘44’, ‘63’, ‘92’, ‘58’, ‘66’, ‘12’, ‘68’, ‘39’, ‘24’, ‘3’, ‘17’, ‘11’, ‘14’, ‘98’, ‘70’, ‘37’, ‘4’, ‘94’, ‘71’, ‘91’, ‘40’, ‘48’, ‘67’, ‘72’, ‘89’, ‘5’, ‘21’, ‘73’, ‘96’, ‘47’, ‘10’, ‘93’, ‘78’, ‘15’, ‘19’, ‘83’, ‘38’, ‘16’, ‘41’, ‘55’, ‘61’, ‘22’, ‘30’, ‘50’, ‘88’, ‘100’, ‘46’, ‘80’, ‘99’, ‘20’, ‘85’, ‘90’, ‘43’, ‘31’, ‘57’, ‘26’, ‘36’, ‘62’, ‘49’, ‘75’, ‘59’, ‘34’, ‘53’, ‘84’, ‘86’, ‘64’, ‘8’, ‘28’, ‘2’, ‘29’, ‘32’, ‘25’, ‘76’, ‘65’, ‘51’, ‘9’, ‘7’, ‘60’, ‘87’, ‘45’, ‘54’, ‘74’, ‘35’, ‘42’]
Cost of Pbest: 27340
Current Solution: [‘33’, ‘97’, ‘13’, ‘23’, ‘18’, ‘1’, ‘79’, ‘30’, ‘28’, ‘27’, ‘77’, ‘95’, ‘6’, ‘43’, ‘46’, ‘69’, ‘82’, ‘64’, ‘9’, ‘58’, ‘66’, ‘12’, ‘68’, ‘39’, ‘75’, ‘3’, ‘25’, ‘11’, ‘71’, ‘37’, ‘83’, ‘93’, ‘85’, ‘94’, ‘76’, ‘91’, ‘98’, ‘72’, ‘21’, ‘15’, ‘14’, ‘5’, ‘16’, ‘7’, ‘88’, ‘74’, ‘53’, ‘89’, ‘34’, ‘45’, ‘19’, ‘70’, ‘63’, ‘38’, ‘52’, ‘55’, ‘61’, ‘22’, ‘29’, ‘26’, ‘50’, ‘100’, ‘67’, ‘35’, ‘8’, ‘99’, ‘31’, ‘90’, ‘81’, ‘60’, ‘24’, ‘86’, ‘36’, ‘59’, ‘65’, ‘96’, ‘42’, ‘56’, ‘41’, ‘62’, ‘73’, ‘49’, ‘40’, ‘2’, ‘78’, ‘10’, ‘44’, ‘92’, ‘47’, ‘20’, ‘51’, ‘54’, ‘48’, ‘57’, ‘84’, ‘80’, ‘17’, ‘32’, ‘87’, ‘4’]
在这里插入图片描述
结果分析:

上图显示了每次迭代的旅行开销。在此图中,我们可以看到旅行成本随着迭代次数的减少而降低。这意味着我们的算法试图在每次迭代中找到更少的旅行成本,最优的旅行路线。为了进行比较,我们两次运行算法,并将它们的结果绘制在同一张图中,用绿线表示。当我们比较两个结果时,由于算法中使用的随机函数,离散式PSO算法优化改进,算法为相同的alpha()和beta()给出了不同的值。

核心代码:
在这里插入图片描述
在这里插入图片描述

在我们的程序中,我们使用不同的常量和一些随机数,整个程序的范围是固定的。我们通过更改alpha()和beta()的值来运行程序很多次,发现了一些有趣的结果。我们发现参数alpha,beta的值接近.85会比其他值提供更准确的结果。在我们的算法中,我们使用“ rand()”函数生成介于0和1之间的某个随机数。该随机数用作概率。对于不同的随机数,程序的行为会有所不同,并给出一些新结果。(这里涉及到一个概率问题,参考文献中描述的更具体)
在这里插入图片描述
结论:
所以,改进的离散式PSO算法来解决旅行商问题,该算法解决了TSP问题,并产生了更精确的结果,并减少了计算成本和时间。如上图
接下来我们改变一下参数alpha = .85, beta = .85 的值
我这里做了三组:
Alpha值 Beat值 结果显示
0.65 0.65 看下图与数据
0.85 0.85 看下图与数据
0.90 0.90 看下图与数据

0.85值
0.65值
0.90值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结合图数据看每次运行的控制台作对比分析
在这里插入图片描述
最后:如何说明改进的算法解决旅行商问题有很好的优越性,并且数据更精确,效果更好呢?
肯定就是做对比分析嘛!!!!!!!!!!!!
①我这里给你一个包含多种算法解决TSP问题的源码,你可以每一个都做测试对比一下结果,或者选一个比较直观的算法来做对比,对TSP数据集st70.tsp进行了测试,并对此测试数据调整了参数。
在这里插入图片描述

源码文件就在打包文件里名叫:多种组合算法实现TSP问题

为了方便做了一个GUI界面测试不同的数据集如下:项目包PSO-TSP-main

在这里插入图片描述
运行入口文件:main.py 就可以
实验如下,我们保持参数一样,看结果
在这里插入图片描述
运行结果如图所示:
在这里插入图片描述

小讯
上一篇 2025-01-25 21:53
下一篇 2025-02-24 10:24

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36923.html