遺伝的プログラミング (GP) で、島モデルが使用される場合、それは人口サイズを島間で分割することを意味しますか?
たとえば、パラメータファイルに
pop.subpop.0.size = 4000
4 つの島がありますが、各島の人口は 1000 人になるということですか? このコード行を各島のパラメーター ファイルに入れるとどうなるでしょうか。島ごとに異なる人口規模を持つことは可能ですか?
Java とECJ パッケージを使用して、GP にアイランド モデルを実装しています。
遺伝的プログラミング (GP) で、島モデルが使用される場合、それは人口サイズを島間で分割することを意味しますか?
たとえば、パラメータファイルに
pop.subpop.0.size = 4000
4 つの島がありますが、各島の人口は 1000 人になるということですか? このコード行を各島のパラメーター ファイルに入れるとどうなるでしょうか。島ごとに異なる人口規模を持つことは可能ですか?
Java とECJ パッケージを使用して、GP にアイランド モデルを実装しています。
いいえ、あなたの例では、4000 人の島を 1 つだけ定義しました。番号が自動的に分割されることはありません。
ECJ でアイランド モデルを使用するには、次の 2 つの方法があります。
変数を共有する 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
この場合、すべての島は異なる 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