## 基于遗传算法的旅行商最短路径规划问题 (GA-based TSP)
### 算法描述
[算法描述](Description.md)
### Install
swig -c++ -python traveller.i
python setup.py install
### Some Test:
> Python Test:
cd test
python test.py
> C++ Test:
gcc -std=c++11 -fPIC -lm -lstdc++ -pthread DPoint.cpp CityMap.cpp test.cpp -o test -g
./test city_num time_out
> Execute
* 设置城市数500,将随机生成 经度~(30.0, 40.0),纬度~(110.0, 130.0)之间的城市
* 城市距离没有使用球面模型计算,而是如下简化的计算方法:
* 南北方向AM = 地球半径 \* 纬度差 \* Math.PI/180.0;
* 东西方向BM = 地球半径 \* 经度差 \* Cos<当地纬度数 \* Math.PI/180.0>
* 距离 = sqrt(AM\*AM + BM\*BM)
* reference: http://tech.meituan.com/lucene-distance.html
* 遗传算法参数:
* 种群数:种群数越大,遗传基因多样性越丰富
* 子女数:每个种群遗传产生下一代的子女数
* 最大转移数:变异时两个基因产生交叉的序列长度,该数值越大,变异性越大
* ***灾变***:灾变初始值,灾变倍增值
* 灾变的概念:这里设定当最优个体在连续多代遗传时都保持不变,就启动灾变倒计时。
当倒计时为0时表示当前种群陷入***局部最优***,将种群基因重置,类似于物种灭绝并产生新物种
* 设置程序运行时间20秒,设置调试模式为true
* Result of Execution:
[work@localhost test]$ python analysis.py
time_out: 2000 , state: 500个城市 第2776代 最优产生于第2763代 分数0.186737 里程34096140.417267 灾变倒计数0788 灾变计数000 群体平均分0.143186 用时2000(ms)
time_out: 4000 , state: 500个城市 第5695代 最优产生于第5682代 分数0.237647 里程26791815.559546 灾变倒计数0788 灾变计数000 群体平均分0.173504 用时4000(ms)
time_out: 6000 , state: 500个城市 第8691代 最优产生于第8618代 分数0.258155 里程24663463.804994 灾变倒计数0728 灾变计数000 群体平均分0.196991 用时6010(ms)
time_out: 8000 , state: 500个城市 第11644代 最优产生于第11640代 分数0.280567 里程22693316.459644 灾变倒计数0797 灾变计数000 群体平均分0.216620 用时8010(ms)
time_out: 10000 , state: 500个城市 第14671代 最优产生于第14565代 分数0.291937 里程21809472.816275 灾变倒计数0695 灾变计数000 群体平均分0.188085 用时10010(ms)
![Result](img/ga.png "ga")
### Q&A:
* ERROR:traveller_wrap.cxx:2843:13: 错误:‘ptrdiff_t’不是一个类型名
virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const\
* Solution:类型ptrdiff_t在<stddef.h>中定义,在swig生成的traveller_wrap.cxx文件头部添加:#include<stddef.h>
想念@思恋
- 粉丝: 2945
- 资源: 400
最新资源
- 蓄电池充放电管理系统仿真模型 充电放电都采用PI电压电流双环控制 其中电压外环,电流内环,电流内环加入了模式选择部分,分别有三个
- 基于高德地图的Flutter出租车应用基础设计源码
- 基于Django框架的Python交友平台程序设计源码
- 异步电机双闭环矢量控制 Matlab simulink仿真搭建,附赠参考文献 提供以下帮助 波形纪录 参考文献 仿真文件 原理解
- 基于Java与多语言融合的wiki实验设计源码
- CLLLC双向谐振变器变频控制(开环与PI闭环控制),开环做了准谐振和欠谐振情况下的仿真,还有ZVS的验证波形 正反向运行情况
- -with-ucrt-dll-dir指代VS Code安装Windows10 SDK产生的文件夹目录
- 电导增量法INC仿真模型,作为目前实际光伏发电系统中最常用的mppt算法,可以用于学习研究,才用了输出参考电压的方式来进行pwm
- 定时自动备份程序开发使用
- 基于Java的简单文章管理系统设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈