TSP实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TSP实验报告
(实验报告、研究报告)
考核科⽬:算法分析与复杂性理论
学⽣所在学院:计算机科学与技术学院
学⽣所在学科:计算机应⽤技术
姓名:
学号:
学⽣类别:研究⽣
⼀、实验⽬的
1.通过TSP算法的具体实现,加深对算法复杂分析的理解。
2.通过TSP算法的具体实现,提⾼对NP完全问题的认识。
3.通过TSP算法的具体实现,理解不确定性算法。
4.通过TSP算法的具体实现,理解不确定性算法。
⼆、实验环境
实验平台:Visual C++
编程语⾔:C++
编程电脑配置:
三、实验内容描述
TSP(Travelling Salesman Problem)⼜称货郎担或巡回售货员问题,在运筹学、管理科学及⼯程实际中具有⼴泛的⽤途。
及⼯程实际中具有⼴泛的⽤途。
TSP问题是组合优化中的著名难题,⼀直受到⼈们的极⼤关注。
由于其NP难题性质,⾄今尚未完全解决。
此问题可以抽象描述为:
给出⼀个n个顶点⽹络(有向或⽆向),要求找出⼀个包含所有n个顶点的具有最⼩耗费的环路。
其中,任何⼀个包含所有n个顶点的环路被称作⼀个旅⾏。
对于旅⾏商问题,顶点表⽰旅⾏商所要旅⾏的城市(包括起点)。
边上权值给出了在两个城市旅⾏所需的路程。
旅⾏表⽰当旅⾏商游览了所有城市后再回到出发点时所⾛的路线。
四、实验原理
许多研究表明,应⽤蚁群优化算法求解TSP问题优于模拟退⽕法、遗传算法、神经⽹络算法、禁忌算法等多种优化⽅法。
为说明该算法,引⼈如下的标记: m表⽰蚁群中蚂蚁的数量;
表⽰城市i和城市j之间的距离;表⽰t时刻位于城市i的蚂蚁数,显然应满⾜,表⽰t时刻在ij连线上的信息数量。
在算法的初始时刻,将m只蚂蚁随机地放到n座城市上,此时各路径上的信息量相等,设。
每只蚂蚁根据路径上保留的信息量独⽴地选择下⼀个城市。
在时刻t,蚂蚁k从城市i转移到城市j 的概率为
其中,表⽰蚂蚁⾛下⼀步允许选择的所有城市,列表纪录了当前蚂蚁k所⾛过的城市,当所有n个城市都加⼊到中时,蚂蚁k便完成了⼀次循环,此时蚂蚁⾛所⾛过的路径便是问题的⼀个解。
是⼀个启发式因⼦,表⽰蚂蚁从城市i转移到城市j的期望程度,在蚂蚁算法中,
通常取
城市ij之间距离的倒数。
α和β分别表⽰路径上信息量和启发⽰因⼦的重要程度。
当所有蚂蚁完成⼀次循环后,各路径上的信息量要根据下⾯的公式进⾏调整:
其中表⽰路径上信息的蒸发系数;表⽰信息的保留系数;表⽰本次循环路径ij上信息的增量。
表⽰第k只蚂蚁在本次循环中留在路
径ij上的信息量,如果蚂蚁k没有经过路径,则的值为零,表⽰为
其中,Q为常数,表⽰第k只蚂蚁在本次循环中所⾛过的路径的长度。
五、实验结果与实验分析
1.a280:
公布最优解:2579
2.eil51:
公布最优解:426
3.eil76:
公布的最优解:538
4.Eil101:
公布的最优解:629
5.kroA100:
公布的最优解:21282
通过分析运算结果,我看到编写的程序的执⾏结果和⽬前公布的最优值之间
还存在着较⼤的差距。
分析原因,主要是因为没有解决好路径的交叉。
六、复杂度分析
假设:n是城市数量,m是蚂蚁数量,T是迭代次数
时间复杂度 time=n*(n-1)*m*T/2
m⼀般是n的2/3,那就让m=n*2/3
T⼀般是n的倍数,那就让T=k*n
于是 time=n*(n-1)*n*2/3*n*k/2
time=n*(n-1)*n*n*k/3
n->⽆穷⼤的时候,(此时k会远⼩于n)
time就约等于 n^4
空间复杂度 space=3*nxn+n*m
space=3*n*n+n*n*2/3
space=n*n*(3+2/3)
n->⽆穷⼤的时候,space约等于n^2
六、实验体会
因为我是⾮计算机专业学⽣,所以编程能⼒很差,⼀开始对于这些问题根本⽆从下⼿,于是⾃⼰⼜重新学习了遍谭浩强的C编程书,后来⼜学习了⼀下VC++,但是对于VC++还是不太熟悉,多亏了同学和我们组的组员的帮助,再加上借鉴已完成同学的程序,并且这些同学给予了耐⼼的知道,使我的编程能⼒有了很⼤的提升,最后能把⾃⼰的平台勉强完成很是感谢⼤家,在以后的学习中希望我们互帮互助共同进步,我会加倍努⼒,提升⾃⼰。