|
|
最近初学遗传算法,写了个程序来解决旅行商问题。就是通过染色体交叉,变异,选择,经过n代进化得到最优的染色体,即城市间一条路程最短的哈密尔顿回路。我在染色体交叉和变异时采用了强迫进化的方法,即 父母生了对儿女,如果儿女没有父母强,那就杀死再生一对,直到儿女强过父母或次数超过一个特定值时。感觉这样强迫往较好的种群进化,可以找到较优解,缺点是运行速度下降了
我只在10个,20个城市上做了试验,对于更多的城市就不清楚了。地图信息,交叉率,变异率等需要在代码中设置。GA_TSP1为最初版本,可以设定程序执行次数。GA_TSP2为经过封装的GA类,使用比较方便。
该程序为控制台程序,不漂亮。现在我同学在写一个窗口界面,可以用鼠标在地图上任意设置城市,等写好了再放上来。
My blog: http://blog.gameres.com/show.asp?BlogID=1450&column=0 |
|