在遗传规划(GP)中,当使用岛屿模型时,它是否意味着将人口规模在岛屿之间分割?
例如,如果在参数文件中有
pop.subpop.0.size = 4000我们有4个岛屿,这是否意味着每个岛屿都有1000人口?如果我们将这一行代码放入每个岛的参数文件中呢?每个岛屿是否有不同的人口规模?
我正在使用Java和ECJ封装来实现GP中的岛模型。
发布于 2015-09-09 11:33:43
不,在你的例子中,你只定义了一个由4000个人组成的岛。这个数字永远不会自动分割。
在欧洲法院中使用岛屿模型有两种方法:
共享变量的唯一Java进程。这些岛屿是人口对象的子种群。因此,您需要为参数文件中的每个子种群设置大小。在您的示例中,您只将岛(子种群)设置为0到4000个人,但也应该设置其他大小。例如,对于10个岛屿,每个岛屿有4000人:
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在这种情况下,每个岛都在不同的Java进程中执行,因此,每个islandID.params文件(每个岛/进程一个)只需要设置一个填充:
exch = ec.exchange.InterPopulationExchange
pop.subpop.0.size = 4000并且在server.params文件中设置了岛屿数:
exch.num-islands = 10您可以在ECJ文档的第223页看到其余参数和更多信息( pdf:https://cs.gmu.edu/~eclab/projects/ecj/docs/manual/manual.pdf )。
发布于 2015-08-15 10:52:39
我没有研究过ECJ方案,但这是总的想法:你有一个被划分为多个子群体的群体。
我不知道你为什么想要不同大小的亚群体。与固定大小的亚群体相比有什么好处吗?
总之,我做了一个非常简单的实现了一个带有多个子群体的遗传规划变体。您可以在这里下载:code.html
它是用C++编写的,但是它应该很容易被Java程序员理解。
https://stackoverflow.com/questions/30646522
复制相似问题