2

In Genetic Programming (GP), when island model is used, does it mean that it will split the population size between islands?

For example, if in parameters file we have

pop.subpop.0.size = 4000

and we have 4 islands, does it mean that each island will have a population of size 1000? What if we put this line of code in parameters file of each island? Is it possible to have different population size for each island?

I'm using Java and ECJ package to implement island models in GP.

4

2 回答 2

0

我没有研究过 ECJ 包,但这是一般的想法:你有一个被划分为多个亚群的人群。

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

无论如何,我对具有多个亚群的遗传编程变体进行了非常简单的实现。你可以在这里下载:http ://www.mepx.org/source_code.html

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

于 2015-08-15T10:52:39.917 回答
0

不,在您的示例中,您只定义了一个拥有 4000 人的岛屿。该号码永远不会自动拆分。

ECJ中有两种使用岛屿模型的方法:

  • 使用InterPopulationExchanger类:

一个共享变量的独特 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类:

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

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

于 2015-09-09T11:33:43.033 回答