遗传算法求解TSP问题报告.DOC

上传人:天*** 文档编号:1004446 上传时间:2018-11-14 格式:DOC 页数:5 大小:79.50KB
下载 相关 举报
遗传算法求解TSP问题报告.DOC_第1页
第1页 / 共5页
遗传算法求解TSP问题报告.DOC_第2页
第2页 / 共5页
遗传算法求解TSP问题报告.DOC_第3页
第3页 / 共5页
遗传算法求解TSP问题报告.DOC_第4页
第4页 / 共5页
遗传算法求解TSP问题报告.DOC_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、遗传算法求解 TSP 问题实验报告一、实验要求:以旅行商问题(TSP )为例做模拟进化搜索技术实验,并提交实验研究报告。二、实验思路:bool fnCreateRandomGene(); /产生随机基因bool fnGeneAberrance(); /基因变异bool fnGeneMix(); /基因交叉产生新的个体测试并淘汰适应度低的个体bool fnEvalAll(); /测试所有基因的适应度int fnEvalOne(T /测试某一个基因的适应度void Crossover( int nFatherA, int nFatherB);void fnDispProbability(); /显

2、示每个个体的权值Crossover()两染色体的交叉实现输入参数: 1、nFatherA 父染色体 A2、nFatherB 父染色体 B3、nMode 交叉方式返回值: 空 注:现有交叉方式1、常规交叉方式,该方式比现代计算方法 (邢文训等编著)p178 给出的 “非常规码的常规交配法”稍复杂些。书中只随机选择一个交配位,两个后代交配位之前的基因分别继承双亲的交配位之前的基因。本程序中,是随机选择两个不相同的交配位,后代在这两个交配位之间继承双亲在这两个交配位之间的基因如 父 A 1 2 3 | 4 5 6 7 | 8 9 10父 B 4 7 8 | 3 2 5 9 | 1 6 10子 A 8

3、 3 2 | 4 5 6 7 | 9 1 10子 B 1 4 6 | 3 2 5 9 | 7 8 102、贪心交叉方式(Greedy Crossover) ,具体算法可参见 谢胜利,等.求解问题的一种改进的遗传算法.计算机工程与应用,2002(8):58245.三、实验代码:#include #include#include #include #include#include #include #include “def.h“#include “TSP.h“void main()ifstream input_file;ofstream output_file;time_t time1,time

4、2;int _GENERATION_AMOUNT;int times;int _CITY_AMOUNT=-1;int ii,j,k;std:vector x;std:vector y;char readfile50;const char* writefile=“tsp.txt“;double tempx10000,tempy10000;coutreadfile;input_file.open(readfile);if(!input_file)couttempx_CITY_AMOUNTtempy_CITY_AMOUNT;if(tempx_CITY_AMOUNTtimes;cout _GENERA

5、TION_AMOUNT;while(_GENERATION_AMOUNT=10000|_GENERATION_AMOUNT _GENERATION_AMOUNT;Csga CUnit(times,_GENERATION_AMOUNT,_CITY_AMOUNT); /初始化time1=time(NULL);/开始遗传算法if(!CUnit.fnCreateRandomGene() /产生随机基因 /产生随机的基因 exit(0);/循环基因编译,杂交,淘汰过程CUnit.fnEvalAll(); /测试所有基因的适应度for ( int i = 0; itimes; +i )/CUnit.fnD

6、ispProbability();/显示每个个体的权值CUnit.fnGeneAberrance(); /基因变异 /基因变异/CUnit.fnDispProbability();/显示每个个体的权值CUnit.fnGeneMix();/交叉产生新的个体测试并淘汰适应度低的个体 /基因杂交CUnit.fnEvalAll(); /测试所有基因的适应度 / 每隔_DISP_INTERVAL 显示一次结果if ( (i+1)%_DISP_INTERVAL = 0 | i = 0)cout “第“ i+1 “ 代“ endl;CUnit.fnDispProbability();CUnit.fnDispHistoryMin();CUnit.fnDispHistoryMin();time2=time(NULL);cout“nn 计算用时为:“difftime(time2,time1)“s“endl;四、实验结果:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。