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

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]
在这里插入图片描述

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

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

接下来就是我们如何改进PSO算法,优化的方向怎么选择,说实话对于码农而言主要的还是写代码,关于算法改进设计研究比较少,这种专业算法改进是很有难度,即使你说本科只要做性能优化,参数的改变和分析设计本身就是一个难题,难在具体问题具体设计与优化。OK
废话不多说---------------------,开始前,请你自己搞明白前面的基本PSO算法,最起码你的论文第二章就能用到,PSO经典算法 书籍第十二章也有介绍(可修改)

这里提供的思路,可以借鉴参考:书籍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问题

1、TSP问题(Travelling Salesman Problem)即旅行商问题: 又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值(最优解)。
TSP问题是一个组合优化问题, 是一个NPC问题,分为两类: 一类是对称TSP问题(Symmetric TSP),另一类是非对称问题(Asymmetric TSP)。

源码:加q2551931023

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

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

实验结果与展示:
运行①结果迭代太多数据了,我复制一部分
1 [-1.199455813078929, -0.6269811787321249] [4.8332219540435535, -4.333580536248764] 3.044348866944627 3.044348866944627 [-1.199455813078929, -0.6269811787321249]
2 [4.853433584872317, -2.6523027416434566] [-1.563496509377531, -4.373554998924521] 31.791664665827174 31.791664665827174 [4.853433584872317, -2.6523027416434566]
3 [4.413679777761786, -0.8870870906698727] [-2.783351881209076, 1.5358712618074097] 21.78187731430981 21.78187731430981 [4.413679777761786, -0.8870870906698727]
4 [-4.5964968430618445, -4.157182735606319] [1.6899855181423629, 4.996622918761277] 40.11872656718884 40.11872656718884 [-4.5964968430618445, -4.157182735606319]
5 [-0.3618299127011051, -2.402194618172535] [0.024958344931777177, 2.8708889387985304] 6.480830871675157 6.480830871675157 [-0.3618299127011051, -2.402194618172535]
6 [-1.4897378544154982, -2.8526840345579965] [-2.5191528327022006, 2.6683588431964527] 11.4317405466831 11.4317405466831 [-1.4897378544154982, -2.8526840345579965]
7 [-1.0787895413965898, -3.1762140692776586] [1.0288652198352395, -4.05568570207608] 12.030163256720142 12.030163256720142 [-1.0787895413965898, -3.1762140692776586]
8 [-3.2496407911765846, 1.3647179772587332] [-3.719891425092637, -4.848372427214159] 13.392378974382126 13.392378974382126 [-3.2496407911765846, 1.3647179772587332]
9 [0.3606753913345955, -2.822958480170689] [0.43765224836436545, 1.638323644470602] 8.321862092567361 8.321862092567361 [0.3606753913345955, -2.822958480170689]
10 [1.4397120608311358, -3.431367711944594] [3.557211025511508, -1.0021139100706513] 14.911615746117253 14.911615746117253 [1.4397120608311358, -3.431367711944594]
11 [-0.5655520725126237, -4.533643898297679] [1.7382597808181268, 0.5039088804818839] 22.129334683130672 22.129334683130672 [-0.5655520725126237, -4.533643898297679]
12 [1.7415680642283533, 3.113517116247696] [-1.862092553191106, -4.663062548650912] 13.698955591130375 13.698955591130375 [1.7415680642283533, 3.113517116247696]
13 [-1.7418523417689205, -2.8040108863502766] [4.914040623759448, 1.5208937282577946] 11.977248371412525 11.977248371412525 [-1.7418523417689205, -2.8040108863502766]
14 [1.3589576982804488, 3.7108412676293216] [0.16377980807176762, 2.462480220531825] 16.863420853953908 16.863420853953908 [1.3589576982804488, 3.7108412676293216]
15 [-1.584789891585603, 0.4262473329764829] [-2.6006023882528084, 2.882627930325792] 3.863996532004187 3.863996532004187 [-1.584789891585603, 0.4262473329764829]
全局最好的坐标---------> [-1.199455813078929, -0.6269811787321249]
全局最好的适应度---------> 3.044348866944627
-----------------------------------------迭代次数 No.[0]-------------------------------------
1 [2.5486598322329703, -0.7904004226191708] [3.7481156453118993, -0.16341924388704587] 7.937654497309914 3.044348866944627 [-1.199455813078929, -0.6269811787321249]
2 [26.868121908243666, 33.66258897998796] [22.01468832337135, 36.31489172163141] 1856.6476854965617 31.791664665827174 [4.853433584872317, -2.6523027416434566]
3 [18.40612772904666, 23.178885417014943] [13.992447951284873, 24.065972507684815] 877.0906447786073 21.78187731430981 [4.413679777761786, -0.8870870906698727]
4 [49.63845009100982, 48.692141987395374] [54.234946934071665, 52.84932472300169] 4836.2446810861065 40.11872656718884 [-4.5964968430618445, -4.157182735606319]
5 [12.806034416836379, 13.560866320695464] [13.167864329537483, 15.963060938867999] 348.6510161141573 6.480830871675157 [-0.3618299127011051, -2.402194618172535]
6 [8.292880438260944, 6.185833162377757] [9.782618292676442, 9.038517196935754] 107.86526894647977 11.4317405466831 [-1.4897378544154982, -2.8526840345579965]
7 [20.518125839210843, 17.3415576512879] [21.59691538060743, 20.51777172056556] 723.7096420605734 12.030163256720142 [-1.0787895413965898, -3.1762140692776586]
8 [10.087739497593414, -0.17701045751218758] [13.33738028877, -1.5417284347709208] 102.20361101295521 13.392378974382126 [-3.2496407911765846, 1.3647179772587332]
9 [18.4114277404068, 21.65776803260276] [18.050752349072205, 24.48072651277345] 808.3266571384354 8.321862092567361 [0.3606753913345955, -2.822958480170689]
10 [21.23935872041281, 22.630204957485226] [19.799646659581676, 26.061572669429818] 964.0586909155829 14.911615746117253 [1.4397120608311358, -3.431367711944594]
11 [26.193329354032098, 26.36497603845396] [26.758881426544722, 30.89861993675164] 1382.8536589570308 22.129334683130672 [-0.5655520725126237, -4.533643898297679]
12 [20.229991470167153, 15.036602013681051] [18.4884234059388, 11.923084897433355] 636.7031025561175 13.698955591130375 [1.7415680642283533, 3.113517116247696]
13 [28.167446042166965, 26.348066186861992] [29.909298383935884, 29.15207707321227] 1488.515863407493 11.977248371412525 [-1.7418523417689205, -2.8040108863502766]
14 [6.798963857183288, -0.30811144020131387] [5.44000615890284, -4.0189527078306355] 46.65606688775124 16.863420853953908 [1.3589576982804488, 3.7108412676293216]
15 [13.030371884159758, 4.208402155041157] [14.61516177574536, 3.7821548220646743] 188.4683109444142 3.863996532004187 [-1.584789891585603, 0.4262473329764829]
全局最好的坐标---------> [-1.199455813078929, -0.6269811787321249]
全局最好的适应度---------> 3.044348866944627
-----------------------------------------迭代次数 No.[1]-------------------------------------
1 [4.609330268740764, 3.4875213585828595] [2.0606704365077935, 4.27792178120203] 34.51311601683493 3.044348866944627 [-1.199455813078929, -0.6269811787321249]
2 [44.99853597790187, 43.82809264819677] [18.1304140696582, 10.165503668208814] 3946.516263496425 31.791664665827174 [4.853433584872317, -2.6523027416434566]
3 [1.8221050378916672, -6.29828772413677] [-16.584022691154992, -29.477173141151713] 43.92688543986263 21.78187731430981 [4.413679777761786, -0.8870870906698727]
4 [2.7773804391070485, 1.8852702648564303] [-46.861069651902774, -46.80687172253894] 12.299297443468337 12.299297443468337 [2.7773804391070485, 1.8852702648564303]
5 [5.814876613819427, 5.813301264033582] [-6.991157803016952, -7.747565056661882] 68.01601582268694 6.480830871675157 [-0.3618299127011051, -2.402194618172535]
6 [9.765911010213735, 8.946830733378446] [1.473030571952791, 2.7609975710006895] 175.74228593740168 11.4317405466831 [-1.4897378544154982, -2.8526840345579965]
7 [1.231735072514816, 3.3355548691299663] [-19.286390766696027, -14.006002782157934] 13.569625437246826 12.030163256720142 [-1.0787895413965898, -3.1762140692776586]
8 [19.69367888405602, 24.83914095121673] [9.605939386462607, 25.01615140872892] 1005.4662536010513 13.392378974382126 [-3.2496407911765846, 1.3647179772587332]
9 [-11.128869223139233, -17.007201707763762] [-29.540296963546034, -38.66496974036652] 415.0070288485115 8.321862092567361 [0.3606753913345955, -2.822958480170689]
10 [-4.082413966897924, -5.948251061198331] [-25.321772687310734, -28.578456018683557] 52.80877506571082 14.911615746117253 [1.4397120608311358, -3.431367711944594]
11 [15.68020076770245, 16.27184458433386] [-10.513128586329648, -10.093131454120101] 510.92805173031604 22.129334683130672 [-0.5655520725126237, -4.533643898297679]
12 [15.396367397261125, 11.996198022771264] [-4.833624072906028, -3.0404039909097866] 381.3422457158036 13.698955591130375 [1.7415680642283533, 3.113517116247696]
13 [-4.214054205289578, -4.4656473792451195] [-32.38150024745654, -30.81371356610711] 39.41215436353152 11.977248371412525 [-1.7418523417689205, -2.8040108863502766]
14 [20.86127469257445, 20.020856526244884] [14.062310835391163, 20.3289679664462] 837.6940568345118 16.863420853953908 [1.3589576982804488, 3.7108412676293216]
15 [8.830388282055125, 5.144259411583324] [-4.199983602104633, 0.9358572565421668] 105.57756466708571 3.863996532004187 [-1.584789891585603, 0.4262473329764829]
全局最好的坐标---------> [-1.199455813078929, -0.6269811787321249]
全局最好的适应度---------> 3.044348866944627
-----------------------------------------迭代次数 No.[2]-------------------------------------
1 [3.4874383434175655, 4.647575137926844] [-1.1218919253231983, 1.1600537793439845] 34.87290176353585 3.044348866944627 [-1.199455813078929, -0.6269811787321249]
2 [36.29972683613382, 33.09567579972857] [-8.698809141768047, -10.732416848468205] 2414.9530059720482 31.791664665827174 [4.853433584872317, -2.6523027416434566]
3 [5.175627886244103, 0.6141878450517781] [3.353522848352436, 6.912475569188548] 28.296793498422616 21.78187731430981 [4.413679777761786, -0.8870870906698727]
4 [-7.735806939868846, -4.831668912543935] [-10.513187378975895, -6.7169391774003655] 85.15967276733775 12.299297443468337 [2.7773804391070485, 1.8852702648564303]
5 [1.547819851264249, 2.413146846440905] [-4.267056762555178, -3.4001544175926766] 9.661666885475142 6.480830871675157 [-0.3618299127011051, -2.402194618172535]
6 [8.453381327918645, 10.092328832439064] [-1.312529682295089, 1.1454980990606174] 174.37973618168266 11.4317405466831 [-1.4897378544154982, -2.8526840345579965]
7 [-3.205004900929695, 0.3509276755793205] [-4.436739973444511, -2.984627193550646] 10.517399563929223 10.517399563929223 [-3.205004900929695, 0.3509276755793205]
8 [8.274856324260575, 13.067679834926542] [-11.418822559795444, -11.771461116290189] 240.30153446882227 13.392378974382126 [-3.2496407911765846, 1.3647179772587332]
9 [-3.9412338500614323, -6.9751174510550165] [7.187635373077801, 10.032084256708746] 65.10690619364634 8.321862092567361 [0.3606753913345955, -2.822958480170689]
10 [6.732567338176009, 9.560749428230798] [10.814981305073934, 15.509000489429129] 136.9424783562352 14.911615746117253 [1.4397120608311358, -3.431367711944594]
11 [9.248078042182332, 9.671443485462422] [-6.432122725520119, -6.600401098871437] 179.15428567797088 22.129334683130672 [-0.5655520725126237, -4.533643898297679]
12 [-2.3721123259261976, 5.181049655730535] [-17.768479723187323, -6.815148367040728] 33.750251810640734 13.698955591130375 [1.7415680642283533, 3.113517116247696]
13 [11.049532025102623, 11.911065258328957] [15.263586230392201, 16.376712637574077] 265.3340949870511 11.977248371412525 [-1.7418523417689205, -2.8040108863502766]
14 [-3.8776384801167403, 1.3949017159432913] [-24.73891317269119, -18.625954810301593] 18.401937585189593 16.863420853953908 [1.3589576982804488, 3.7108412676293216]
15 [-1.1949546938766566, 4.549262059373106] [-10.025342975931782, -0.5949973522102172] 23.96259704148754 3.863996532004187 [-1.584789891585603, 0.4262473329764829]
全局最好的坐标---------> [-1.199455813078929, -0.6269811787321249]
全局最好的适应度---------> 3.044348866944627
-----------------------------------------迭代次数 No.[3]-------------------------------------
1 [2.4716094985827093, 3.0597653695688085] [-1.0158288448348565, -1.5878097683580354] 15.8633056017102 3.044348866944627 [-1.199455813078929, -0.6269811787321249]
2 [9.098180737647848, 9.814171018637001] [-27.201546098485974, -23.281504781091567] 179.34188890874103 31.791664665827174 [4.853433584872317, -2.6523027416434566]
3 [14.054468614283795, 23.674976550740713] [8.878840728039691, 23.060788705688935] 760.0130574350322 21.78187731430981 [4.413679777761786, -0.8870870906698727]
4 [14.176243906113724, 14.471037737825995] [21.91205084598257, 19.30270665036993] 412.2679093154511 12.299297443468337 [2.7773804391070485, 1.8852702648564303]
5 [8.700259782659087, 8.319330809943246] [7.152439931394838, 5.906183963502341] 146.14369275539892 6.480830871675157 [-0.3618299127011051, -2.402194618172535]
6 [3.170613885915478, 4.8313516548217725] [-5.282767442003167, -5.260977177617291] 34.3815077386674 11.4317405466831 [-1.4897378544154982, -2.8526840345579965]
7 [17.99215074009159, 14.922203773314422] [21.197155641021283, 14.571276097735101] 547.46177340897 10.517399563929223 [-3.205004900929695, 0.3509276755793205]
8 [1.6362467476533435, -6.340802777457389] [-6.638609576607232, -19.40848261238393] 43.882121738470204 13.392378974382126 [-3.2496407911765846, 1.3647179772587332]
9 [12.966855284858188, 17.764609074828865] [16.90808913491962, 24.73972652588388] 484.6546146842156 8.321862092567361 [0.3606753913345955, -2.822958480170689]
10 [13.589066713249963, 15.251231750926987] [6.8564993750739545, 5.69048232269619] 418.1857895698558 14.911615746117253 [1.4397120608311358, -3.431367711944594]
11 [1.460286929977487, 1.9252295972784168] [-7.787791112204845, -7.7462138881840055] 7.706334333859729 7.706334333859729 [1.460286929977487, 1.9252295972784168]
12 [4.391885891799647, 3.340878965837132] [6.763998217725844, -1.8401706898934034] 31.39007323386999 13.698955591130375 [1.7415680642283533, 3.113517116247696]
13 [5.297168643013122, 6.149327701635889] [-5.752363382089501, -5.761737556693068] 66.58731661095163 11.977248371412525 [-1.7418523417689205, -2.8040108863502766]
14 [21.14676298289673, 14.474772558338817] [25.02440146301347, 13.079870842395525] 658.1537634296054 16.863420853953908 [1.3589576982804488, 3.7108412676293216]
15 [-0.62439963278289, 2.844057535571073] [0.5705550610937666, -1.7052045238020328] 8.90625279595577 3.863996532004187 [-1.584789891585603, 0.4262473329764829]
全局最好的坐标---------> [-1.199455813078929, -0.6269811787321249]
全局最好的适应度---------> 3.044348866944627

运行②(粒子群优化改进解决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问题

然而,我们这里主要还是讲一下书上的经典PSO算法解决TSP问题的局限性,然后体现出离散式粒子群算法改进后的性能优势。
Pso.py文件就是算法描述与实现,非常详细的注释,一看就明白

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

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

总而言之,改进后的粒子群算法在处理TSP问题上精确度非常好,不存在我们书籍上金典PSO算法的缺陷问题,参数设置这个问题,你要多思考,多做测试,不然你搞不懂到底在干啥,有什么用处!
给你提供的资料与源码足够写一篇优质的本科论文了,你要仔细研究设计逻辑,因为我都是简介简单介绍没有详细到每一步怎么处理,只是给你提供改进方向与源码实现,并且成功解决TSP问题,也达到了你自述文件的要求,思路也差不多。多看书与参考文献,很不错的一个研究课题。

特别注意:
所有的参数都是动态的,每一组实验你可以按照自己的想法做修改参数,反正框架给你搭建好了,你自由发挥即可---------------------------------------------------- 源码:加q2551931023

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧985

喜欢就支持一下,谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值