ECJ 中的孤岛模型
Island Model in ECJ
在遗传规划(GP)中,当使用岛屿模型时,是否意味着它将在岛屿之间分割种群大小?
例如,如果在参数文件中我们有
pop.subpop.0.size = 4000
我们有 4 个岛屿,这是否意味着每个岛屿将有 1000 人?如果我们把这行代码放在每个岛的参数文件中呢?每个岛屿的人口规模可能不同吗?
我正在使用 Java 和 ECJ package 在 GP 中实现孤岛模型。
我没有研究过 ECJ 包,但这是一般的想法:你有一个被分成多个子群体的群体。
我不知道你为什么想要不同大小的亚群。与固定大小的亚群相比有优势吗?
无论如何,我做了一个非常简单的具有多个亚群的遗传编程变体的实现。您可以在这里下载:http://www.mepx.org/source_code.html
它是用 C++ 编写的,但 Java 程序员应该很容易理解它。
不,在您的示例中,您只定义了一个由 4000 个人组成的岛屿。该号码永远不会自动拆分。
ECJ 中有两种使用 Islands 模型的方式:
- 使用 InterPopulationExchanger class:
一个共享变量的独特 Java 进程。这些岛屿是 Population 对象的子种群。因此,您需要在参数文件中为每个子种群设置大小。在您的示例中,您只将岛(子种群)设置为 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
- 使用 IslandExchanger class:
在这种情况下,每个岛都在不同的 Java 进程中执行,因此,每个 islandID.params 文件(每个 island/process 一个)只需要设置一个人口:
exch = ec.exchange.InterPopulationExchange
pop.subpop.0.size = 4000
并且岛屿的数量在server.params文件中设置:
exch.num-islands = 10
您可以在 ECJ 文档 pdf 的第 223 页查看其余参数和更多信息:https://cs.gmu.edu/~eclab/projects/ecj/docs/manual/manual.pdf
在遗传规划(GP)中,当使用岛屿模型时,是否意味着它将在岛屿之间分割种群大小?
例如,如果在参数文件中我们有
pop.subpop.0.size = 4000
我们有 4 个岛屿,这是否意味着每个岛屿将有 1000 人?如果我们把这行代码放在每个岛的参数文件中呢?每个岛屿的人口规模可能不同吗?
我正在使用 Java 和 ECJ package 在 GP 中实现孤岛模型。
我没有研究过 ECJ 包,但这是一般的想法:你有一个被分成多个子群体的群体。
我不知道你为什么想要不同大小的亚群。与固定大小的亚群相比有优势吗?
无论如何,我做了一个非常简单的具有多个亚群的遗传编程变体的实现。您可以在这里下载:http://www.mepx.org/source_code.html
它是用 C++ 编写的,但 Java 程序员应该很容易理解它。
不,在您的示例中,您只定义了一个由 4000 个人组成的岛屿。该号码永远不会自动拆分。
ECJ 中有两种使用 Islands 模型的方式:
- 使用 InterPopulationExchanger class:
一个共享变量的独特 Java 进程。这些岛屿是 Population 对象的子种群。因此,您需要在参数文件中为每个子种群设置大小。在您的示例中,您只将岛(子种群)设置为 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
- 使用 IslandExchanger class:
在这种情况下,每个岛都在不同的 Java 进程中执行,因此,每个 islandID.params 文件(每个 island/process 一个)只需要设置一个人口:
exch = ec.exchange.InterPopulationExchange
pop.subpop.0.size = 4000
并且岛屿的数量在server.params文件中设置:
exch.num-islands = 10
您可以在 ECJ 文档 pdf 的第 223 页查看其余参数和更多信息:https://cs.gmu.edu/~eclab/projects/ecj/docs/manual/manual.pdf