遗传算法中包含了如下5个基本要素:

(1)对参数进行编码;

(2)设定初始种群大小;

(3)适应度函数的设计;

(4)遗传操作设计;

(5)控制参数设定(包括种群大小、最大进化代数、交叉率、变异率等)。

下面使用python编程对中国28个省会城市的TSP问题进行了求解,python的版本是2.7.14。百度地图提供了JavaScript API,能够很方便地获取各城市之间的路径距离。这里有一段获取28个城市之间距离的JS代码,将其复制到百度地图JavaScript API的一些示例网页上,然后点击运行,再点击右侧相应的按钮即可获取各城市之间的距离。

 1 <html>
 2 <head>
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 4     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
 5     <style type="text/css">
 6         body, html{width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
 7         #l-map{height:100px;width:100%;}
 8         #r-result{width:100%; font-size:1px;line-height:12px;}
 9     </style>
10     <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
11     <title>计算驾车时间与距离</title>
12 </head>
13 <body>
14     <div ></div>
15     <div >
16         <input type="button" value = "计算各省会城市间距离矩阵" onclick = "getCityDistance()" />
17         <div ></div>
18     </div>
19 </body>
20 </html>
21 <script type="text/javascript">
22     // 百度地图API功能
23     var map = new BMap.Map("l-map");
24     map.centerAndZoom(new BMap.Point(116.404, 39.915), 5);
25     var city = [
26         "北京",  "长春",  "沈阳", "哈尔滨", "石家庄", "济南",
27         "呼和浩特", "太原", "郑州", "南京",  "上海",  "杭州",
28         "福州",    "南昌", "武汉", "合肥",  "长沙",  "广州",
29         "重庆",    "西安", "海口", "贵阳",  "昆明",  "成都",
30         "兰州",    "西宁", "拉萨", "乌鲁木齐"
31     ];
32 
33     var i = 0, j = 1;
34 
35     function getCityDistance()
36     {
37         setInterval(getCityDistance1, 6000);
38     }
39     
40     function getCityDistance1()
41     {
42         if(i >= city.length - 1)
43         {
44             return;
45         }
46                     var output = "";
47                     city1 = city[i];
48                     city2 = city[j];
49                     var searchComplete = function (results)
50                     {
51                         if(transit.getStatus() != BMAP_STATUS_SUCCESS)
52                         {
53                             return ;
54                         }
55                         var plan = results.getPlan(0);
56                          output += plan.getDistance(false) + ", ";                    //获取距离
57                         document.getElementById("result").innerHTML += output;
58                     }
59                     var transit = new BMap.DrivingRoute(
60                                                         map,
61                                                         {renderOptions: {map: map, autoViewport: false}, onSearchComplete: searchComplete, onPolylinesSet: function(){}}
62                                                         );
63                 
64                     transit.search(city1, city2);
65                 
66                 j++;
67                 if(j >= city.length)
68                 {
69                     i++;
70                     j = i + 1;
71                 }
72 
73     }
74 </script>
View Code

相关文章:

  • 2022-12-23
  • 2021-06-05
  • 2021-10-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
猜你喜欢
  • 2022-01-27
  • 2021-10-30
  • 2021-11-28
  • 2021-10-28
  • 2021-11-20
  • 2021-12-09
相关资源
相似解决方案