我刚刚开始了解遗传算法,我正在用它来解决旅行商问题。但是,我对我应该使用的参数感到困惑。让我解释一下参数的含义。
参数:
人口规模
制作儿童人数
突变数量
我确信上述参数取决于我在问题中所拥有的城市数量,以及我的交叉和突变规范的确切形式。但这种关系是什么?
对于什么参数应该有什么样的或经验法则?任何提示或建议都会很棒。
以下是我对5个城市问题所做的详细说明:
1)我生成了20条随机路径, population = 20
2)选择了14条最佳路径(丢掉了6条最差路径)
3)从14条最佳路径中随机选择的两条路径创建2个突变体
突变数量= 2
(对于变异,我只是随意交换了两个城市的顺序
例如:0,1,2,3,4,0
可能会成为0,1,3,2,4,0
4)我从8条最佳路径创建了4个孩子。
儿童人数= 4
(对于交叉,我保留了共同的子路径,剩下的就是
生成randomely)
例如:父1:0,1,2,3,4,0
,父2:0,2,1,3,4,0
3,4
是共同的,因此儿童路径将从中传播
3,4
,其余的是随机的。子路径可能是:
0,3,4,1,2,0
或0,2,3,4,1,0
5)现在我有2个突变体和4个孩子,我将它们添加到我的14条最佳路径中 我有20条路径。
6)执行步骤2),3),4),5),等等。
我完全随意设置参数?他们还好吗?我该怎么用?我应该使用哪些参数来解决15个城市的问题? 48个城市? 500个城市?
先谢谢你。
答案 0 :(得分:3)
你的问题极其有趣且很难,我很遗憾地说没有确切的答案。我写了一本关于遗传算法的书,在其近500页中,我一再坚持认为参数取决于你的问题。
关于您的具体示例,让我们分析您的参数。您的人口为20,每代您将产生6个不同的孩子。假设您有50代,您将分析314个解决方案(20个原始个体加上49 * 6)。鉴于您有5个城市,您有5个= 120个可能的解决方案,因此您使用GA比穷举搜索更耗时。
我知道这是一个象征性的问题,你关心的是更大的问题(15,48和500,使用你的例子)。然而,经验法则是覆盖一小部分搜索空间(在48和500的情况下,这是自动的),以便使用GA的良好特性来指导搜索,你可能会得到一个好结果。我建议将整个执行过程中产生的个人总数作为整个搜索空间的0,001%考虑(如果500个城市中存在巨大问题,可能仍然太多了。)
就所使用的运营商而言,有很多话要说(在我的书中,它超过50页)。因此,我将向您推荐由Larrañaga et al撰写的精彩评论。即使它有点旧,它也会为您提供更好地探索问题的指导。如果您想要更快的参考,请考虑this Wikipedia article。
我很抱歉这个广告,但它不打算出售书籍(毕竟,我的书只有葡萄牙语和西班牙语,所以我不认为这个名单的大多数成员会买它)。我只想指出有很多关于这个主题的文献。如果你需要一个有趣的阅读(并且你不会说葡萄牙语),我建议Michaewicz's book,它所提出的观点肯定会帮助你深入解决你的问题。