cTSP问题的设计思路.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c# TSP设计思路1问题分析TSP问题是一个经典的数学问题:当有N个城市,一个旅行商需要贩卖货物走遍所有城市后回到出发城市,求其最短路径的解。由于遗传算法方法的本质是处理复杂问题的一种随机搜索算法, 因此利用遗传算法求解TSP问题是方便和快速的。2算法说明:1 初始化群体:设N个城市,n个子群体,每个子群中m个个体,初始设计交叉概率,变异概率, lchrom : 城市数量pcross:交叉的概率pmutation:变异的概率co_min:时间选择;使用遗传算法目前数学界已经有标准定义,我们只要按照标准算法,即可求解出TSP问题的最优解法:算法定义包括包括群体的初始化,选择,交叉,变异操作。其主要步骤可描述如下:(1)随机产生一组初始个体构成的初始种群,并评价每一个个体的适配值。(2)判断算法的收敛准则是否满足。若满足输出搜索结果;否则执行以下步骤。(3)根据适配值大小以一定方式执行选择操作。(4)按交叉概率Pc执行交叉操作.(5)按变异概率Pm执行变异操作。(6)返回步骤(2)。 本TSP问题的遗传算法总体设计总体设计说明:(1)本算法的判断结束准则是固定指定了迭代的次数当算法达到迭代次数时,算法结束,输出当前的最优解(2)在根据适配值计算并选择的时候,记录下来的当前最优值,在变异后加入跟新的群体,保证新的迭代循环中TSP解越来越好(不会变差)。(3)在选择的一种操作是拿最优的K个替换最差的K个个体,本例是按适配值选择,并使群体数目变少,当每次变异操作后,产生随机路径补充群体是群体数目不变,再次循环,一定程度上防止因初始群体的选择问题而陷入局部最优。2 详细设计2.1 编码与随机和初始群体生成给所有城市编码,以城市的遍历次序作为遗传算法的编码。在MATLAB中使用 randperm(N)产生一个1×N 的矩阵(N为所有城市的个数,本例中为31)为一个随机路径。利用n×N矩阵存储n个随机群体产生初始群体。2.2  城市位置及距离矩阵和适应度函数城市的位置为编译前指定,也可以使用随机生成的坐标参数。距离矩阵使用一个N×N矩阵D存储,D(i,j)代表城市 i和城市j之间的距离。D(i,j)=sqrt((Xi-Xj).^2+(Yi-Yj).^2)在该问题的求解中,用距离的总和来衡量适应度,距离的总和越大,适应度越小,进而探讨求解结果是否最优。每个个体(每条路径距离)总合计算公式为: Rectangle rect = new Rectangle();rect = Screen.GetWorkingArea(this);Graphics g1 = this.CreateGraphics();myImage = new Bitmap(420,450,g1);Graphics g2 = Graphics.FromImage(myImage);IntPtr dc1 = g1.GetHdc();IntPtr dc2 = g2.GetHdc();BitBlt(dc2,0,0,420,450,dc1,24,30;g1.ReleaseHdc(dc1);g2.ReleaseHdc(dc2);2.3 选择选择操作是为了避免有效基因的损失,使高性能的个体得以更大的几率生存,从而得到全局收敛性和计算效率。本例中使用的适配值函数为for(k=0;klchrom;k++)for(j=0;jlchrom;j++)dd[k*lchrom+j]=hypot(x[k]-x[j],y[k]-y[j]); 利用循环选择个体,将个体,将较小路径(适应度较大)个体选择下来。但这种算法的群体的个体数目变小并且较优的个体个数较少, 可能收敛的数目变慢,在算法调试的过程中证明了这一点。3. c#编程验证 1初始值(图 1)种群大小=30染色体的长度=30运行代数=200变异概率=0.01交叉概率=0.75测算最大种群=40.4891055418042 测算平均种群=33.957564905523 测算最小种群=29.3854736066898 测算种群总和=1018.72694716569 结果: 城市: 30 种群: 30 交叉概率: 0.75 变异概率: 0.01 X 值 :373142375395218149346366614051931222852692531382371011782524023725828717515489312271144 Y 值:2602869415325291214801252041607518650271601061511081902022402510774132146133501092初始值(图 2)种群大小=50染色体的长度=50运行代数=500变异概率=0.01交叉概率=0.95测算最大种群=31.4973726222

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档