首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优化遗传算法?

优化遗传算法?
EN

Stack Overflow用户
提问于 2014-12-20 00:01:04
回答 3查看 1.3K关注 0票数 5

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

EN

回答 3

Stack Overflow用户

发布于 2015-01-05 17:12:14

由于适应值经常被重新计算(随着算法的运行,种群的多样性降低),提高遗传算法性能的一个好策略是减少计算适应度所需的时间。

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

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

在后一种情况下,随着冲突的增加,哈希表的效率降低到线性搜索的效率。当冲突的累积数量超过哈希表的大小时,应该执行重新哈希:您必须创建一个更大的哈希表,并将元素从较小的哈希表复制到较大的哈希表。

可以省略复制步骤:随着GA的运行,多样性降低,因此许多被消除的元素将不会被使用,并且最频繁使用的染色体值将被快速地重新计算(哈希表将再次用最常用的关键元素值来填充)。

票数 4
EN

Stack Overflow用户

发布于 2016-01-09 07:36:47

我所做的一件事就是限制适应度计算的数量。例如,如果场景不是嘈杂的,即重新计算适应度将导致每次都得到相同的答案,则不要简单地重新计算缓存答案。

另一种方法是使用内存运算符。操作员维护解决方案的“记忆”,并确保如果记忆中的最佳解决方案优于群体中的最佳解决方案,则将该记忆中的最佳解决方案包括在GA群体中。在GA运行期间,内存将与优秀的解决方案保持同步。这种方法可以减少所需的适应度计算次数,并提高性能。

我在这里有一些这样的例子:

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

票数 0
EN

Stack Overflow用户

发布于 2020-06-08 07:37:27

这是一个非常广泛的问题;为此,我建议使用R galgo包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27569620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档