Q:遗传算法的初始化

Q: initialization of Genetic Algorithm

我有一个搜索量很大的函数space,所以我想用遗传算法稍微接近最优,然后用其他方法比如BFGS来找到最优点。我正在使用 R 来做到这一点。

问题是我的函数有 12 个参数并且在大多数点上都是无效的。当我为 GA 提供最大和最小参数值并尝试生成种群时,有时整个种群都是由 NaN 组成的(因此,算法无法继续)。

由于我对 GA 了解不多,所以我正在努力寻找解决这个问题的方法。我唯一想到的是选择一个非常大的人口规模(大约 10e5),这样它就可以找到一些有效的值来开始。但这不是一个很好的解决方案,因为能够用正常大小的人口初始化算法会好得多。

你有什么建议吗?我缺少有关 GA 的任何信息吗?

谢谢

如果您的大部分参数 space 无效,那么 GA 可能不是最佳方法。风险在于,当您跨算法时,您可能会得到无效的参数组合。

另一种思考方式是,GA 是一种搜索算法。当它尝试的结果比开始时好一点或差一点时,它的效果最好;如果大多数尝试都是无效的,那么就没有太多的搜索指导。

我的建议是尝试对问题进行不同的参数化,以便更多的点是有效的(尽管可能适应性较低)。您没有描述该功能,因此很难更具体,但有时可以接受 "invalid" 输入并量化它与 "valid" 的距离。然后就可以 运行 进行搜索了。

您可以使用 FI-2Pop GA。

"It is one of the virtues of the FI- 2Pop GA that it can be initialized with an empty feasible population and run with the prospect of eventually finding feasible solutions."