遗传算法解决网络布线问题 tsp

Code:
  1. // File: CgaTsp.h the head of class   
  2. #ifndef GATSP_H   
  3. #define GATSP_H   
  4.   
  5. #include <vector>   
  6. #include <fstream>   
  7. #include <algorithm>   
  8. #include <iostream>   
  9. using namespace std;   
  10.   
  11.   
  12.   
  13. // 变异概率                
  14. #define MUTATION_RATE       0.2   
  15.   
  16. // 杂交概率   
  17. #define CROSSOVER_RATE  0.75   
  18.   
  19. // 基因组数目   
  20. #define POP_SIZE              40   
  21.   
  22. // 为2的倍数   
  23. #define NUM_BEST_TO_ADD 2   
  24.   
  25. // 产生随机数   
  26. inline int    RandInt(int x,int y)   
  27. {   
  28.   
  29.     return rand()%(y-x+1)+x;   
  30. }   
  31. inline double RandFloat()            
  32. {   
  33.   
  34.     return (rand())/(RAND_MAX+1.0);   
  35. }   
  36.   
  37. // 计算机坐标结构   
  38. struct CoOrd   
  39. {   
  40.         float x,y;   
  41.         CoOrd(){};   
  42.         CoOrd(float a, float b):x(a),y(b){};   
  43. };   
  44.   
  45. // 基因组结构   
  46. struct SGenome   
  47. {   
  48.     // 连接计算机间的路径(基因组)   
  49.     vector<int>     vecPC;   
  50.        
  51.    // 适应分数   
  52.   double         dFitness;   
  53.   
  54.   
  55.     // 构造函数   
  56.     SGenome():dFitness(0){}   
  57.        
  58.     SGenome(int nc): dFitness(0)   
  59.     {   
  60.         vecPC = GrabPermutation(nc);   
  61.     }   
  62.   
  63.     // 创建计算机间随机的一条路径   
  64.     vector<int> GrabPermutation(int &limit);   
  65.   
  66.     // 在GrabPermutation函数中使用   
  67.     bool        TestNumber(const vector<int> &vec, const int &number);   
  68.   
  69. };   
  70.   
  71.   
  72. // 遗传算法类   
  73. class CgaTSP   
  74. {   
  75. private:   
  76.   
  77.     // 计算机坐标向量   
  78.     vector<CoOrd> m_vecPCCoOrds;   
  79.     vector<SGenome>     m_vecPopulation;   
  80.     vector<int>  m_savevecPC;   
  81.   
  82.   
  83.     double              m_dMutationRate;   
  84.   
  85.     double              m_dCrossoverRate;   
  86.   
  87.     // 整个种子群体的总适应性分   
  88.     double              m_dTotalFitness;   
  89.        
  90.     // 在此之前找到的最短路径   
  91.     double              m_dShortestRoute;   
  92.     // 把所有代中的最短路径保存起来   
  93.     double              m_saveShortestRoute;   
  94.   
  95.     // 最长路径   
  96.     double              m_dLongestRoute;   
  97.   
  98.     // 种子群中的基因组数目   
  99.     int                   m_iPopSize;   
  100.   
  101.     // 染色体数目   
  102.     int                   m_iChromoLength;   
  103.   
  104.     // 新一代中适应分最高的成员   
  105.     int                   m_iFittestGenome;   
  106.   
  107.     // 表明已经到了那一代   
  108.     int                   m_iGeneration;   
  109.   
  110.     
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值