3

我建立了一个GA算法来解决TSP。

这是在 Norvig 的书 (AIAMA) 中的一个练习。他建议我们阅读 Larrañaga 对陈述等问题的看法。我在那里学习了一些交叉运算符和突变,并尝试了其中的一些,看看哪个更适合我。我还根据每条路径的成本详细阐述了一个适应度函数。

好吧,尽管我对我的算法设计有很多疑问,但我以前从未使用过 AI,所以我不知道我的方法是否适用于 GA。

这是我所做的:

我采用了路径向量(我的初始人口)

然后在每个循环中,我通过增加成本顺序来组织这个向量,并在这个向量中选取最好的 X 路径并删除其他路径。

然后我应用 XOver 和 Mutation(以一定的速率)并将它们放在向量的旧删除值的位置。

然后我做同样的事情(订单向量 - 提取最佳等)

并继续这样做,直到它稳定下来。

这是一个好方法吗?如果不是给我一些北方。因为当我选择了最好的并且没有保留它们(只是通过 Xover 和突变从它们中创建了一个全新的流行音乐)时,我没有得到好的结果。这样(保留最好的——在一些实验中,我只保留最好的)我有更好的结果,结果总是收敛并且很快

状态表示:对于状态表示,我选择使用路径表示(我从一开始就在使用它,并在我阅读了 Larrañaga 等之后决定坚持使用它),如下所示:假设我们有 5 个城市和访问第一个城市,然后是第二个,然后是第三个......我们的路径表示将是 (1, 2, 3, 4, 5)

初始人口生成:实际上我是生成代表城市的随机点(这就是本书要求我做的,在封闭的正方形中生成随机点) - 但为了比较,我生成了一个人口并在比较时坚持使用它结果——我想如果我不坚持一个特定的人群,我就不会知道我的进步

最适合的人:最适合的人是那些旅行费用最高的人。(我不知道我是否应该 - 在这个问题中 - 使用其他东西作为参数

交叉:我尝试了一些交叉运算符,并将我的结果与书中介绍的结果进行了比较,最后使用了一个 Order CrossOver(Larrañaga 等人(1999)):这个交叉从两个随机切割(形成一个子路径)父路径,然后从另一个父路径(从第二个剪切开始,而不是在位置“0”)复制路径的其余部分(该子路径内尚未访问的城市) - 添加它们出现在另一个路径中的城市父母。

例如:路径 (1 2 3 4 5) (3 4 2 1 5) 选择子路径 (234) 和 (421) 作为后代 (5 |2 3 4| 1) (5 |4 2 1| 3) <- | 里面的部分 | 来自父母一方,另一部分来自另一方父母

突变:对于突变,我选择了 IVM(反转突变)方法。它从原始路径中获取一个子路径,并将其插入(反转)到一个随机点。

示例:路径(1 2 3 4 5)子路径(2 3 4)和5后随机插入

生成:(1 5 | 4 3 2)

4

1 回答 1

1

首先,避免所有这些缩写(GA、TSP、XOver)。它很难阅读,有些人可能不知道您在说什么。遗传算法的第一个问题是如何选择初始种群,如何执行交叉,如何执行突变。第二个问题是对描述的天真理解可能是一个可怕的问题。

对您来说,最合适的人是那些成本已经更高的人。你可以争辩说最好选择最多样化的人,即那些更有可能探索问题空间不同部分的人。描述如何进行以下操作:

  • 国家代表:只是为了确保
  • 初始种群生成:非常重要。也许这一步有可用的材料,因为它在本地搜索算法中很常见。
  • 最适合的人:我建议你尝试在这里多玩。尝试不同的策略。您正在寻找最适合再现的方案,而不是问题的整体解决方案。
  • 交叉:你是怎么做到的?
  • 突变:突变的目标是避开问题空间的当前区域,并且可以创建一个成本非常高的个体。在下一步使用您当前的算法时,他将在您排序时被淘汰

您还需要评估您的解决方案如何随着运行时间而改进。例如,不是n您提供的迭代,而是100n解决方案变得更好,多少?当算法停止时,上一代的个体之间的相似程度等等。

另一个问题,您尝试解决固定拓扑还是可变拓扑?

编辑:您正在使用已发布的算法,因此问题似乎不在特定操作上。对于健身,你坚持路径成本是正确的。你说

因为当我选择了最好的并且没有保留它们(只是通过 Xover 和突变从它们中创建了一个全新的流行音乐)时,我没有得到好的结果。这样(保留最好的——在一些实验中我只保留最好的)我有更好的结果,结果总是收敛并且很快。

您应该保留最适合的个人及其子女。它遵循大自然的邪恶原则,只有最好的人才有繁殖的权利。必须更换的是最不适合的个体。

您可以调整 3 个参数:有孩子的最适合个体的比例(以及将被淘汰的个体数量)、突变概率和运行次数。

要测试您的算法如何执行,您可以通过迭代对最佳解决方案进行采样,即每次t迭代都可以节省较低的成本。一旦绘制它应该看起来像:

x = 迭代次数; f(x) = 成本

于 2012-02-02T09:32:24.847 回答