可执行文件下载:
/Files/gpcuster/TSPGA.rar
修正显示的版本下载:
/Files/gpcuster/TSPGA2.rar
简介
首先,咱们可以看看用遗传算法求解的旅行商问题的效果图:
您可以在黑色背景的区域内看到问题的求解结果,下面对该程序的使用做一些说明:
- 黑色区域的绿色空心点是需要访问的点。
- 黑色区域的红色空心点是开始访问的起点。(有且只有一个)
- 白色的连线代表从起点(红色空心点)开始,分别经过需要访问的点(绿色空心点)的行走路线。(注意:这里定义的旅行商问题和传统的定义有一点不同。这里的定义不需要从终点再回来起点。)
程序使用说明
启动程序,您将看到如下界面:
下面,我对程序的界面做一些说明:
- Population Size:这个参数代表种群的个体数量。
- Generations:这个参数代表种群的繁殖代数。
- CorssOverRate:这个参数代表种群的个体之间发生交配的概率。
- MutationRate:这个参数代表种群个体发生变异的概率。
- CitiesNum:这个参数代表需要访问的城市的数量(体现为黑色区域中绿色空心点的个数)。
- Random:点击这个按钮,将随机参数起始点(红色空心点)和需要访问的城市(绿色空心点)。
- Reset:点击这个按钮,将清除所有在黑色区域的点。
- Start:点击这个按钮,将根据黑色区域的数据开始计算旅行商问题,并显示最后计算的结果。
更加您的需要,可以不用点击Random按钮随机产生问题的描述。您可以自己手动地在黑色区域设置起点和需要访问的点。设置方法如下:
将鼠标移到到黑色区域,点击鼠标的右键将在黑色区域设置一个需要访问的点,点击鼠标的左键将在黑色区域设置访问的起点(有且仅有一个)。
当您完成黑色区域的设置以后,在点击Start就可以运行程序,并观看到最后的计算结果了。
程序的组织结构
整个程序分为2个部分:
- 表现层:Form1.cs
- 逻辑层:World.cs
您在使用的时候不需要考虑表现层中的内容。(如果您想对程序的界面做修改那就是另外一回事了J)
您关注的重点应该在逻辑层当中。里面描述了整个程序的计算过程。
程序的计算原理
整个程序的计算流程相对简单,根据初中做学的达尔文关于《物种起源》的思想。描述如下:
Start
配置种群的相关参数
_world.Population = Int32.Parse(population.Text);
_world.Generation = Int32.Parse(generation.Text);
_world.CrossOverRate = Double.Parse(crossOverRate.Text);
_world.MutationRate = Double.Parse(mutationRate.Text);
初始化种群的第一代
generateFirstGeneration();
进化到下一代
generateNextGeneration()
返回最优的个体
End
具体的实现原理和方法,可以参考这篇论文
/Files/gpcuster/AFastTSPSolverUsingGAOnJAVA.rar
最后,程序的源代码下载:
/Files/gpcuster/TSPGACode1.rar