2

遺伝的プログラミング (GP) で、島モデルが使用される場合、それは人口サイズを島間で分割することを意味しますか?

たとえば、パラメータファイルに

pop.subpop.0.size = 4000

4 つの島がありますが、各島の人口は 1000 人になるということですか? このコード行を各島のパラメーター ファイルに入れるとどうなるでしょうか。島ごとに異なる人口規模を持つことは可能ですか?

Java とECJ パッケージを使用して、GP にアイランド モデルを実装しています。

4

2 に答える 2

0

いいえ、あなたの例では、4000 人の島を 1 つだけ定義しました。番号が自動的に分割されることはありません。

ECJ でアイランド モデルを使用するには、次の 2 つの方法があります。

  • InterPopulationExchangerクラスの使用:

変数を共有する 1 つの一意の Java プロセス。島は人口オブジェクトの部分集団です。したがって、パラメータ ファイルで各部分母集団のサイズを設定する必要があります。あなたの例では、島 (部分集団) を 0 から 4000 人に設定しただけですが、他のサイズも設定する必要があります。たとえば、それぞれ 4000 人の個体がいる 10 の島の場合:

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 ファイル (島/プロセスごとに 1 つ) は 1 つの集団のみを設定する必要があります。

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 に答える