我必须为旅行推销员实施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
答案 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个的大问题中,您可以设计潜在的最佳搜索解决方案。