1

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

然后您使用另一个种子(例如“5678”)运行遗传以生成初始解决方案,然后您从该初始解决方案填充随机解决方案列表,并继续应用 GA 步骤来解决问题。

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

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

4

1 回答 1

1

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

在您的评论中,有一件事让我想知道:

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

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

于 2013-05-20T22:22:11.740 回答