神經网络解决旅行商问题的VC算法.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
神經网络解决旅行商问题的VC算法

神经网络课程设计 控制科学与工程学院 刘玉建 200912829 旅行商问题(Travelling Salesman Problem),是数学领域中的一个经典问题.假设一个旅行商要遍布N个城市,如何在每个城市只寻访一遍的前提下使总路程最短是本问题核心所在. 本程序采用Visual C++基于对话框构架编制,编制了5个城市节点的TSP问题解决方法.程序中包含遍历算法,模拟退火两种方法,程序界面如图1: 图1 程序主界面 其中界面主要包括如下几个部分: 城市节点输入部分:城市节点的分布,可以通过以下三种方式: 单击城市节点显示部分,通过捕获左键单击,获取城市节点坐标; 编辑框中通过输入A-E五个城市的X,Y坐标输入; 通过”载入”键,读取txt文档中的坐标数据,数据格式如图2. 图2 城市坐标格式 具体格式为每行对应一个城市坐标,每行数据分别为其X,Y坐标,数据用空格隔开. 随意的城市分布,可以通过对应的变化,将坐标范围限制在0-250之间(0). 城市节点显示部分:左侧的坐标区域,既可以通过捕捉鼠标左键得到城市节点坐标,又可以将城市节点的分布直观的显示出来. 算法部分:按键”遍历算法”及”模拟退火”,分别对应路径计算的两个算法.输入完5个节点后,便可以通过这两种方法得到运算结果.”重置”按钮,将所有运算数据清零,可以起到程序复位的作用. 现分别介绍两个算法的主要部分. 遍历算法:通过穷举的方法即排列组合的方法,分别计算所有可行的路径并逐一比较,其中最小者,即为符合要求的解法.为简化运算,默认从A城市出发,最终回到A城市,此假设不影响最小路径的生成.遍历算法,当城市节点较少时,可以采用.但当城市增加到一定数目,求解时间难以估计,以指数增长. 本程序中,遍历算法如下: void CTSPDlg::OnCover() { BOOL enPoint=FALSE; //有5个点 if (m_nPoint[0].x!=0 m_nPoint[0].y!=0 m_nPoint[1].x!=0 m_nPoint[1].y!=0 m_nPoint[2].x!=0 m_nPoint[2].y!=0 m_nPoint[3].x!=0 m_nPoint[3].y!=0 m_nPoint[4].x!=0 m_nPoint[4].y!=0) { enPoint=TRUE; } if (enPoint) //当城市节点数目达到要求时,方可执行运算 { int i,j,k,l; //辅助完成遍历算法 int tempDist; //每次遍历的当前路径长度 m_nCityh=0; NDistance=0; for (i=0;i4;i++) { NDistance+=Distance(m_nPoint[i],m_nPoint[i+1]); } NDistance+=Distance(m_nPoint[4],m_nPoint[0]);//以A--E-A为初值 for (i=1;i=4;i++) { for (j=1;j=4;j++) { if (j!=i) { for (k=1;k=4;k++) { if (k!=i k!=j) { for (l=1;l=4;l++) { if (l!=i l!=j l!=k) { tempDist=Distance(m_nPoint[0],m_nPoint[i])+ Distance(m_nPoint[i],m_nPoint[j])+ Distance(m_nPoint[j],m_nPoint[k])+ Distance(m_nPoint[k],m_nPoint[l])+ Distance(m_nPoint[l],m_nPoint[0]); if (tempDist=NDistance) //如果当前路径 { //更小,则保存 NDistance=tempDist; m_nCityi=i; m_nCityj=j; m_nCityk=k; m_nCityl=l; } } } } } } } } m_nResultDist=NDistance; m_bRouterPaint=TRUE; //路径计算完毕,可以绘制 In

文档评论(0)

df9v4fzI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档