TSP / TSPTW具有不同的种子

时间:2013-05-20 11:48:28

标签: genetic-algorithm traveling-salesman

我想问一下,是否可以使用不同的种子运行GA来生成初始解决方案并进行分析?但是,在应用GA时,您必须生成多个人口解决方案。 例如,您使用种子“12345”运行遗传算法以生成初始解,然后从此初始解中填充随机解的列表,并继续应用GA步骤来解决问题。

然后用另一个种子运行遗传,例如“5678”以生成初始解,然后从这个初始解中填充随机解的列表,并继续应用GA步骤来解决问题..

这意味着首次运行中的填充列表可能包含第二次运行中生成的初始解决方案。

我的问题是,有没有什么方法可以使用不同种子的GA来进行比较和分析?如果没有,我如何比较和分析,我应该只针对问题使用不同的实例文件吗?

1 个答案:

答案 0 :(得分:1)

要首先对随机算法进行比较,通常使用不同的随机种子多次运行它们。然后您获得的输出是随机变量。然后,您可以通过对所得样本执行统计假设检验(ANOVA或Kruskal-Wallis进行多重比较,t检验或Mann-Whitney U检验进行成对比较)来评估一种算法是否优于另一种算法。如果在这些测试中获得的p值低于您期望的阈值(通常为0.05,但是对于更严格的证明,您将其设置为更低,例如0.01),您将拒绝H0假设,即这些结果相等,例如,关于他们的手段。因此,您假设结果不相等,而且平均性能更好的算法是更好的算法(如果您对平均性能感兴趣 - “更好”通常有很多维度)。

有一件事让我对你的评论感到惊讶:

  

如果我使用相同的种子多次运行GA算法进行初始求解,结果将完全不同

我认为您在代码中犯了一些错误。您需要在算法内的任何随机决策中使用相同的随机对象,以获得完全相同的结果。在代码中的某处,您可能使用new Random()而不是最初使用给定种子获得的{{1}}。另一个原因可能是您使用绘制随机数的零件的并行处理。你永远不能保证你的线程总是以相同的顺序执行,所以一次线程1获得第一个随机数,线程2获得第二个,另一个时间线程2首先执行并得到第一个数字。