我一直在玩遗传算法的并行处理以提高性能,但我想知道其他一些常用的技术是什么来优化遗传算法?
答案 0 :(得分:1)
由于经常重新计算适应度值(随着算法运行,群体的多样性会减少),因此改善GA性能的良好策略是减少计算适应度所需的时间。
细节取决于实施,但以前计算的适应值通常可以 使用哈希表有效保存。这种优化可能会显着缩短计算时间(例如"IMPROVING GENETIC ALGORITHMS PERFORMANCE BY HASHING FITNESS VALUES" - RICHARD J. POVINELLI, XIN FENG报告对散列应用散列应用可以将复杂现实问题的性能提高50%以上。)
关键点是冲突管理:您可以简单地覆盖哈希表的现有元素或采用某种方案(例如线性探测)。
在后一种情况下,当安装冲突时,哈希表的效率会降低到线性搜索的效率。当累积冲突数超过散列表的大小时,应执行重新散列:您必须创建一个更大的散列表,并将较小的散列表中的元素复制到较大的散列表。
复制步骤可以省略:随着GA的运行,多样性会降低,因此不会使用许多被淘汰的元素,并且会快速重新计算最常用的染色体值(哈希表)将使用最常用的关键元素值填充。)
答案 1 :(得分:0)
我做的一件事是限制适合度计算的数量。例如,在景观不嘈杂的情况下,即每次重新计算适应性将导致相同的答案时,不要重新计算简单地缓存答案。
另一种方法是使用内存运算符。操作员保持解决方案的“记忆”,并确保如果它优于人口中的最佳解决方案,那么该记忆中的最佳解决方案将包含在GA群体中。在GA运行期间,内存保持最新,并提供良好的解决方案。这种方法可以减少所需的适应度计算次数并提高性能。
我在这里有一些这样的例子:
http://johnnewcombe.net/blog/gaf-part-8/ http://johnnewcombe.net/blog/gaf-part-3/
答案 2 :(得分:0)
这是一个非常广泛的问题;我建议为此使用R galgo软件包。