- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数 据 结 构
课程设计报告
设计题目:
院 系:
专业班级: 200-*
学生姓名: 、、
指导教师:
200*年月日
指导教师评语
指导教师:
年 月 日 成绩评定 学 号 姓 名 任务分工 成绩 目 录
1.设计内容 1
1.1问题描述 1
1.2设计要求 1
1.3开发环境 1
1.4研究思路 1
2.设计步骤 5
2.1需求分析 5
2.2概要设计 5
2.3详细设计 9
2.4调试分析 12
2.5测试结果 14
3.设计成果展示 17
3.1用户手册 17
3.2程序运行部分截图 18
4.总结与心得体会 19
附 录 21
1.设计内容
1.1问题1.2设计要求
(1)输入数据放到文件里,输入要测试的文件名,能输出最短路程及其路线。
(2)能用图形演示旅行商的最佳推销路线。
1.3开发环境
本程序开发环境为 Visual Studio 2003
1.4研究思路
对于“旅行商路线选择”这一问题,我们的思路如下:
运行程序——调用用户所给标准地图(程序自带中国交通地图与山东省主要城市及周边省会地图)——选择要去的城市——通过坐标算出两城市之间的距离存入内存——将城市连成一条回路——通过算法将回路优化——优化一定程度后停止——界面显示最优路线与旅行顺序
我们程序的主要算法是遗传算法,其基本描述如下:
遗传算法是模拟自然选择和生物进化的过程,以优胜劣汰的方式求解问题。算法需要选择一种合适的编码方式表示解,并选择一种评价函数来计算每个解的适应值,适应值高的解可以更容易地被选中并进行交配,从而产生新的子代。选择和交配的过程一直循环,同时以一定的概率进行变异,直到求得满意解或其它终止条件。算法运行的过程具有很强的指向性,适合众多复杂问题的求解。
遗传算法的过程可以抽象为4大部分:初始化、选择算子、交配算子和变异算子。初始化确定具体问题在遗传算法中的编码、群体大小、各种概率大小等参数;选择算子确定如何在群体中选择新的种群;交配算子使选出来的种群进行交配以模拟进化;变异算子使新的个体能够保持多样性。
旅行商问题规定了每个城市只能出现一次,因此编码有其特殊性,一般采用整数的编码方式,通过数字序列来表示城市的遍历次序。采用整数编码方式的简单遗传算法(SGA)的交配策略通常是以单个整数为单位进行,可称为基于点的交配;为TSP设计的交配策略通常都会以边为单位进行,可称为基于边的交配。
1、简单遗传算法的流程如图
2、适应度函数
适应度函数必须能够配合选择方式有效区分子代的优劣,我们采用的方式是f=1/s ,其中s 是路径的总长度。
3、选择操作
实验采用了轮盘赌 的选择方式,它是一种经典的 GA 选
择方式,概率大个体在轮盘中占有更大的面积,更容易被选中。
4、变异操作
变异操作是让遗传算法跳出局部最优的重要手段。一般采用的变异操作是随机产生两个变异位,把这两个位的城市调换位置。在一次变异中,选中的个体进行进行n/20(n为城市数目) 次交换。
例:对序列 1 2 3 4 5 6 7 8执行 2 次交换,变异位分别 2 与 5,3 与 6,那么,一次交换后:1 5 3 4 2 6 7 8
两次交换后:1 5 6 4 2 3 7 8。
5、优化搜索
遗传算法一般采用的是2-opt 二段优化 ,这是一种简单的优化方案。一次 2-opt表述如下:选择位置 a,b,尝试倒置ab间的所有路径,如果路径比原来短,则接受倒置,否则路径保持不变。
例如:1 2 3 4 5 6 7 8。
倒置 2,5 间路径,则变成 1 5 4 3 2 6 7 8。
在我们采用遗传算法的优化中,倒置操作一共进行n/10次尝试。同时因为倒置较长的序列通常不会得到路径提升,所以控制倒置位置a,b 之间的差小于等于n /5。
由于我们的问题实际属于动态旅行商问题,我们提前做了两个假定:
(1)旅行期间,城市间的交通都很发达,不存在因交通而耽误时间现象。
(2)在信息采样周期内,城市的规模与城市之间的距离等参数固定。
2.设计步骤
2.1需求分析
市场营销需要商家派遣人员到各个城市去调查市场状况和推销公司产品,为了节省开销和节约路途花费时间,就产生了旅行商到各个城市的顺序和最短路线选择问题。
基于以上问题,旅行商们需要的是一款能够直观反映所需到达城市的顺序以及最短路线的可视化应用程序,以供自己参考决策,选择最佳行程。
因此,我们的程序为了解决以上问题,采用了C++语言编程,其主要功
文档评论(0)