用SFLA解决旅行推销员问题

时间:2016-09-07 19:16:20

标签: algorithm evolutionary-algorithm

我必须为旅行推销员实施SFLA,在这里我正在考虑每只青蛙(一个可行的解决方案)作为一个阵列(其大小为城市数量),包含以他们旅行的方式订购的城市。我无法想象如何使用最佳解决方案更新每个memeplex中最差的解决方案。我无法理解如何将两者联系起来。我指的那篇论文:

  

X。 H。罗,Y。杨和X.李,"解决TSP与混乱的青蛙跳跃   算法," 2008年第八届智能国际会议   系统设计与应用,高雄,2008年,第228-232页。 DOI:   10.1109 / ISDA.2008.346关键词:{搜索问题;旅行商问题; TSP;复杂的组合优化问题;高效   数学函数;全局搜索能力; memeplex;模因   元启发式算法;混合蛙跳   算法; submemeplex;旅行商问题;蚁群算法   优化;基准测试;城镇;设计   工程;教育机构;智能   系统;原型;太空探索;旅行商问题;水   资源;优化;混合青蛙跳跃算法;旅行   推销员问题},网址:   http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4696466&isnumber=4696419

2 个答案:

答案 0 :(得分:0)

这部分算法主要是直观的。你只需要让最差的青蛙靠近最好的青蛙,以改善它的健身功能。没有一种方法,但这是一个例子

new = worst + ( best - worst ) * random() 

best = [1 , 5, 21, 10, 8]
worst = [12, 3, 9, 18, 4]
diff = [-11, 2, -12, -8, 4]
random = 0.3 // 0 < random < 1 
new = [8.7, 3.6, 5.4, 15.6, 5.2] // adapt this frog to your space
                                 // round it to int, remove duplicates, ...
new = [9, 3, 5, 16, 4]

正如你所看到的那样,新的青蛙更接近最好,我们希望它的健康状况得到改善,如果不是我们必须创造一只新的青蛙。

另一种方法是使用cross-over,选择一个交叉点,用最佳解决方案中的项目替换该点之后的项目:

BEST :  [1,2,4,5,3] 
WORST : [4,3,2,1,5]
NEW :   [1,2,2,1,5]
            ^
// crossover point

这些方法中的每一种都有其优点和缺点,您必须选择更适合您问题的方法。

答案 1 :(得分:0)

我目前正在努力。用惯用的方式与随机数相乘在这里不起作用。交叉技术将完成这项工作。继续随机选择城市数量,直到找到最佳城市。 在城市不超过10个的大问题中,您可以设计潜在的最佳搜索解决方案。