我一直在使用遗传算法的并行处理来提高性能,但我想知道其他一些常用的技术是什么来优化遗传算法?
发布于 2015-01-05 17:12:14
由于适应值经常被重新计算(随着算法的运行,种群的多样性降低),提高遗传算法性能的一个好策略是减少计算适应度所需的时间。
细节取决于实现方式,但以前计算的适应值通常可以通过哈希表有效地保存。这种优化可以显著降低计算时间(例如,"IMPROVING GENETIC ALGORITHMS PERFORMANCE BY HASHING FITNESS VALUES" - RICHARD J. POVINELLI, XIN FENG报告称,对于复杂的现实问题,将散列应用于GA可以将性能提高50%以上)。
一个关键点是冲突管理:您可以简单地覆盖哈希表的现有元素或采用某种方案(例如,线性探针)。
在后一种情况下,随着冲突的增加,哈希表的效率降低到线性搜索的效率。当冲突的累积数量超过哈希表的大小时,应该执行重新哈希:您必须创建一个更大的哈希表,并将元素从较小的哈希表复制到较大的哈希表。
可以省略复制步骤:随着GA的运行,多样性降低,因此许多被消除的元素将不会被使用,并且最频繁使用的染色体值将被快速地重新计算(哈希表将再次用最常用的关键元素值来填充)。
发布于 2016-01-09 07:36:47
我所做的一件事就是限制适应度计算的数量。例如,如果场景不是嘈杂的,即重新计算适应度将导致每次都得到相同的答案,则不要简单地重新计算缓存答案。
另一种方法是使用内存运算符。操作员维护解决方案的“记忆”,并确保如果记忆中的最佳解决方案优于群体中的最佳解决方案,则将该记忆中的最佳解决方案包括在GA群体中。在GA运行期间,内存将与优秀的解决方案保持同步。这种方法可以减少所需的适应度计算次数,并提高性能。
我在这里有一些这样的例子:
http://johnnewcombe.net/blog/gaf-part-8/ http://johnnewcombe.net/blog/gaf-part-3/
发布于 2020-06-08 07:37:27
这是一个非常广泛的问题;为此,我建议使用R galgo包。
https://stackoverflow.com/questions/27569620
复制相似问题