2014-12-19 139 views
1

我一直在玩遗传算法的并行处理来提高性能,但我想知道其他一些常用的技术是如何优化遗传算法的?优化遗传算法?

回答

1

由于经常重新计算适应度值(随着算法的运行人口的多样性下降),改善GA性能的一个好方法是减少计算适应度所需的时间。

细节取决于实现,但以前计算的健身值通常可以通过散列表有效地保存为 。这种优化可以显着降低计算时间(例如,"IMPROVING GENETIC ALGORITHMS PERFORMANCE BY HASHING FITNESS VALUES" - RICHARD J. POVINELLI, XIN FENG报告说,对于复杂的现实世界问题,将散列应用于GA可以将性能提高50%以上)。

一个关键点是碰撞管理:您可以简单地覆盖哈希表的现有元素或采用某种方案(例如线性探测器)。

在后一种情况下,当碰撞挂载时,哈希表的效率会降低到线性搜索的效率。当累计碰撞次数超过散列表的大小时,应执行重新散列操作:必须创建一个较大的散列表并将小散列表中的元素复制到较大散列表中。

副本步可以省略:多样性降低为GA运行,所以很多淘汰的元素将不被使用,最常用的染色体值将快速重新计算(哈希表将再次填补使用最多的关键元素值)。

0

我做的一件事就是限制健身计算的次数。例如,如果景观没有噪声,即每次重新计算适应度都会导致相同的答案,则不要重新计算简单地缓存答案。

另一种方法是使用内存操作符。运营商维护解决方案的“记忆”,并确保该记忆中的最佳解决方案包含在GA群体中,如果它优于人群中的最佳解决方案。内存在GA运行期间保持最新并提供良好的解决方案。这种方法可以减少所需的适应性计算次数并提高性能。

我有一些这方面的东西在这里的例子:

http://johnnewcombe.net/blog/gaf-part-8/ http://johnnewcombe.net/blog/gaf-part-3/