遗传算法每次都会提供不同的输出吗?
Will genetic algorithm provides different output every time?
既然我们期待遗传算法的可行解,那么遗传算法每次使用相同的输入集都会提供不同的输出吗?
视情况而定。
- GA 将通过解决方案采取不同的路线space;和
- GA 不能保证收敛
GA 通常用于具有大型解决方案的复杂问题 spaces,具有复杂的收益和局部最小值。在此类问题中,您不会期望在 GA 运行 结束时产生相同的输出。
另一方面,遗传算法可以应用于只有一个正确答案的大问题。在这种情况下,人口 可能 收敛。
良好的 GA 实施将支持 可重现的 结果。这适用于所有元启发式算法(不仅仅是 GA)。可重现意味着相同的 运行 将产生相同顺序的同一组新的最佳解决方案事件被发现。根据给予过程的实际 CPU 时间,迭代次数可能不同,因此它们可能不会以相同的最佳解决方案结束。
在内部,可重现的结果意味着:
- 一切都使用 1 seeded Random instance.
- 即使是并行实施也能产生可重现的结果(=> 没有工作窃取)
- ...
在开发过程中,重现性是物有所值的黄金,用于查找、诊断、调试和修复错误。
在生产中,少数公司将其关闭(以利用工作窃取等性能提升),但大多数企业仍喜欢保持打开状态。
既然我们期待遗传算法的可行解,那么遗传算法每次使用相同的输入集都会提供不同的输出吗?
视情况而定。
- GA 将通过解决方案采取不同的路线space;和
- GA 不能保证收敛
GA 通常用于具有大型解决方案的复杂问题 spaces,具有复杂的收益和局部最小值。在此类问题中,您不会期望在 GA 运行 结束时产生相同的输出。
另一方面,遗传算法可以应用于只有一个正确答案的大问题。在这种情况下,人口 可能 收敛。
良好的 GA 实施将支持 可重现的 结果。这适用于所有元启发式算法(不仅仅是 GA)。可重现意味着相同的 运行 将产生相同顺序的同一组新的最佳解决方案事件被发现。根据给予过程的实际 CPU 时间,迭代次数可能不同,因此它们可能不会以相同的最佳解决方案结束。
在内部,可重现的结果意味着:
- 一切都使用 1 seeded Random instance.
- 即使是并行实施也能产生可重现的结果(=> 没有工作窃取)
- ...
在开发过程中,重现性是物有所值的黄金,用于查找、诊断、调试和修复错误。
在生产中,少数公司将其关闭(以利用工作窃取等性能提升),但大多数企业仍喜欢保持打开状态。