我正在使用遗传算法(GA)来优化旅行商问题(TSP)。我的问题是如何计算个体的适应度。显然,路径越短的解决方案适应度越高,但如果不知道最短和最长可能路径是多少,我该如何准确地分配适应度值来确定我的解决方案在该范围内的位置呢?
回答:
将适应度设为路径长度是可以的。请记住,在遗传算法中,适应度仅用于选择个体:因此,使用常规的选择程序时,尺度并不重要,重要的是排名。
实现示例:
- http://www.codeproject.com/Articles/1403/Genetic-Algorithms-and-the-Traveling-Salesman-Prob
- http://khayyam.developpez.com/articles/algo/voyageur-de-commerce/genetique/(使用谷歌翻译)
- http://www.lalena.com/ai/tsp/
- http://www.mathworks.com/matlabcentral/fileexchange/13680
更多细微之处(2001 – 群体智能 – Kennedy & Eberhart – 第249页):
巴勃罗·莫斯卡托是一位南美研究者,他开创了对模因算法的研究(例如,莫斯卡托,1989年)。他和现在在爱丁堡大学的迈克尔·诺曼在1980年代开始在加州理工学院合作。在最近的一篇论文中,他们描述了使用模因算法优化旅行商问题(TSP)的方法(莫斯卡托和诺曼,1992年)。请记住,TSP要求找到通过多个城市的最短路径,每个城市只经过一次。这个问题在应用数学中有着丰富的历史,因为它非常难解决,特别是当城市数量很大时。TSP是一个NP难问题,这表明如果找到解决它的方法,那么许多其他问题也将被解决。莫斯卡托和诺曼使用了一种在种群中既有合作又有竞争的算法,并实现了模拟退火的混合版本用于局部搜索。
一个由个体组成的种群——这些研究者通常使用16个个体的种群大小——在问题空间中搜索,该空间由城市的排列定义,称为“旅行路线”。种群被概念化为一个环,每个个体与其两个紧邻的邻居相连,与他们在搜索中竞争;个体还与环的另一侧的其他人相连,与他们合作。种群中的每个个体都包含一个城市的旅行路线。竞争被视为个体之间成对的“挑战”和“战斗”,其中比较个体及其邻居的旅行路线长度,并根据差异设置一个概率阈值。旅行路线长度之间的差异影响S形曲线的陡度;当差异较小或温度较低时,概率分布几乎均匀,而当两个旅行路线长度之间的差异很大时,旅行路线1被删除并替换为旅行路线0的副本的概率会增加。
合作被用来让更成功的个体彼此“交配”,而不是与种群中适应度较低的成员交配。用于决定竞争互动的相同规则也被用来评估交叉的合作伙伴的可取性,交叉的实现方式与GA中一样。一个个体向另一个个体“求婚”,如果提议被接受,即如果随机决策有利于他们的互动,那么交叉操作符就会被实现。这样就创建了下一代。