旅行商问题JAVA代码.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文档。上传文档
查看更多
旅行商问题JAVA代码

import java.util.*;public class Tsp { private String cityName[]={北京,上海,天津,重庆,哈尔滨,长春,沈阳,呼和浩特,石家庄,太原,济南,郑州,西安,兰州,银川,西宁,乌鲁木齐,合肥,南京,杭州,长沙,南昌,武汉,成都,贵州,福建,台北,广州,海口,南宁,昆明,拉萨,香港,澳门}; //private String cityEnd[]=new String[34]; private int cityNum=cityName.length; //城市个数 private int popSize = 50; //种群数量 private int maxgens = 20000; //迭代次数 private double pxover = 0.8; //交叉概率 private double pmultation = 0.05; //变异概率 private long[][] distance = new long[cityNum][cityNum]; private int range = 2000; //用于判断何时停止的数组区间 private class genotype { int city[] = new int[cityNum]; //单个基因的城市序列 long fitness; //该基因的适应度 double selectP; //选择概率 double exceptp; //期望概率 int isSelected; //是否被选择 } private genotype[] citys = new genotype[popSize]; /** *构造函数,初始化种群 */ public Tsp() { for (int i = 0; i popSize; i++) { citys[i] = new genotype(); int[] num = new int[cityNum]; for (int j = 0; j cityNum; j++) num[j] = j; int temp = cityNum; for (int j = 0; j cityNum; j++) { int r = (int) (Math.random() * temp); citys[i].city[j] = num[r]; num[r] = num[temp - 1]; temp--; } citys[i].fitness = 0; citys[i].selectP = 0; citys[i].exceptp = 0; citys[i].isSelected = 0; } initDistance(); } /** * 计算每个种群每个基因个体的适应度,选择概率,期望概率,和是否被选择。 */ public void CalAll(){ for( int i = 0; i popSize; i++){ citys[i].fitness = 0; citys[i].selectP = 0; citys[i].exceptp = 0; citys[i].isSelected = 0; } CalFitness(); CalSelectP(); CalExceptP(); CalIsSelected(); } /** *填充,将多选的填充到未选的个体当中 */ public void pad(){ int best = 0; int bad = 0; while(true){ while(citys[best].isSelected = 1 bestpopSize-1) best ++; while(citys[bad].isSelected != 0 badpopSize-1) bad ++; for(int i = 0; i cityNum; i++) citys[bad].city[i] = citys[best].city[i]; citys[best].isSelected --; citys[bad].isSelected ++; bad ++; if(best == popSize ||bad == popSize) break; } } /** *交叉主体函数 */ public void crosso

文档评论(0)

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

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

1亿VIP精品文档

相关文档