遗传算法解决TSP问题,C++版(带注释).docxVIP

  1. 1、本文档共29页,可阅读全部内容。
  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文档。上传文档
查看更多
遗传算法解决TSP问题,C版(带注释)

//遗传算法解决简单TSP问题,(VC6.0)//一、定义头文件(defines.h)#ifndef DEFINES_H #define DEFINES_H///////////////////////////////// DEFINES /////////////////////////////////////////窗口定义大小#define WINDOW_WIDTH500#define WINDOW_HEIGHT500//城市数量及城市在窗口显示的大小#define NUM_CITIES20#define CITY_SIZE 5//变异概率,交叉概率及种群数量#defineMUTATION_RATE0.2#defineCROSSOVER_RATE0.75#definePOP_SIZE 40//倍数#define NUM_BEST_TO_ADD2//最小容许误差#define EPSILON0.000001#endif//二、一些用得到的小函数(utils.h)// utils.h: interface for the Cutils class.//头文件名//////////////////////////////////////////////////////////////////////#ifndef UTILS_H #define UTILS_H#include stdlib.h#include math.h#include sstream#include string#include iostreamusing namespace std;//--------定义一些随机函数--------//----定义随机整数,随机[x,y]之间的整数---inline int RandInt(int x, int y){return rand()%(y-x+1)+x;}//--------------随机产生0到1之间的小数----------inline float RandFloat(){return rand()/(RAND_MAX + 1.0);}//-----------------随机产生0和1-------------inline bool RandBool(){if (RandInt(0,1))return true;elsereturn false;}//-----定义一些方便的小功能包括:整形转字符型,浮点型转字符型---string itos(int arg);//converts an float to a std::stringstring ftos (float arg);//限制大小void Clamp(double arg, double min, double max);void Clamp(int arg, int min, int max);#endif //三、地图头文件(CmapTSP)#ifndef CMAPTSP_H#define CMAPTSP_H//如果没有定义那么就定义////////////////////////////////////////////////////类名:CmapTSP.h////描述:封装地图数据、城市坐标以及适应度计算。/////////////////////////////////////////////////#include vector#include utils.h#include defines.husing namespace std;const double pi=3.1415926535897;//------CoOrd结构体,保存每个城市的坐标--------struct CoOrd//没有括号{float x, y;CoOrd(){}CoOrd(float a,float b):x(a),y(b){}};//------CmapTSP类,封装地图数据,城市坐标,以及适应度计算----class CmapTSP {private://城市数目int m_NumCities;//地图长度和宽度int m_MapWidth;int m_MapHeight;//可能最好路径double m_dBestPossibleRoute;//把所有城市组成一个环形void CreateCitiesCircular();//用勾股定理计算两个城市A和B之间的距离double CalculateA_to_B(const CoOrd city1, const CoOrd city2);//该函数计算出排列成环形后的最佳路径,答案是显而易见的(环形多边形周长)void CalculateBestPossibleRoute();public://

文档评论(0)

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

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

1亿VIP精品文档

相关文档