首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECJ中的海岛模型

ECJ中的海岛模型
EN

Stack Overflow用户
提问于 2015-06-04 14:24:44
回答 2查看 284关注 0票数 2

在遗传规划(GP)中,当使用岛屿模型时,它是否意味着将人口规模在岛屿之间分割?

例如,如果在参数文件中有

代码语言:javascript
复制
pop.subpop.0.size = 4000

我们有4个岛屿,这是否意味着每个岛屿都有1000人口?如果我们将这一行代码放入每个岛的参数文件中呢?每个岛屿是否有不同的人口规模?

我正在使用Java和ECJ封装来实现GP中的岛模型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-09 11:33:43

不,在你的例子中,你只定义了一个由4000个人组成的岛。这个数字永远不会自动分割。

在欧洲法院中使用岛屿模型有两种方法:

  • 使用InterPopulationExchanger类:

共享变量的唯一Java进程。这些岛屿是人口对象的子种群。因此,您需要为参数文件中的每个子种群设置大小。在您的示例中,您只将岛(子种群)设置为0到4000个人,但也应该设置其他大小。例如,对于10个岛屿,每个岛屿有4000人:

代码语言:javascript
复制
exch = ec.exchange.InterPopulationExchange
pop.subpops = 10
pop.subpop.0.size = 4000
pop.subpop.1.size = 4000
pop.subpop.2.size = 4000
...etc
pop.subpop.10.size = 4000
  • 使用IslandExchanger类:

在这种情况下,每个岛都在不同的Java进程中执行,因此,每个islandID.params文件(每个岛/进程一个)只需要设置一个填充:

代码语言:javascript
复制
exch = ec.exchange.InterPopulationExchange
pop.subpop.0.size = 4000

并且在server.params文件中设置了岛屿数:

代码语言:javascript
复制
exch.num-islands = 10

您可以在ECJ文档的第223页看到其余参数和更多信息( pdf:https://cs.gmu.edu/~eclab/projects/ecj/docs/manual/manual.pdf )。

票数 0
EN

Stack Overflow用户

发布于 2015-08-15 10:52:39

我没有研究过ECJ方案,但这是总的想法:你有一个被划分为多个子群体的群体。

我不知道你为什么想要不同大小的亚群体。与固定大小的亚群体相比有什么好处吗?

总之,我做了一个非常简单的实现了一个带有多个子群体的遗传规划变体。您可以在这里下载:code.html

它是用C++编写的,但是它应该很容易被Java程序员理解。

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

https://stackoverflow.com/questions/30646522

复制
相关文章

相似问题

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