0

pyevolve で GP を適用してトレーニングすると、最高のツリーが得られます。このツリーを使用して、さまざまなデータをテストしたいと思います。minをツリーのルートに保ちたいので、gp_add、gp_mul... がツリーのルートの場合、関数は -1 を返します。

これは私の最高のツリーの例で、生のスコアは 1.0143 です

gp_min(gp_add(gp_mul(gp_min(a, b), c), d))

これがコードです。テスト データに最適な個体を適用しようとしています。

bestIndi = ga.bestIndividual()
comp_code = bestIndi.getCompiledCode()
score = eval(comp_code)

このコードは正しい方向ですか? スコアが常に -1 になるのはなぜですか?

4

1 に答える 1

0

それは正しい道です。GP の主要なプロパティの 1 つは十分性プロパティです。これは、ドメイン内の要素が問題を解決するのに十分であることを示します。

変数の範囲を確認してください。

min をツリーのルートとして維持したい場合は、それをフィットネス関数に適用することをお勧めしますが、GP がルートとして gp_min を持つ個体よりも優れた個体を見つけた場合は、その制限を取り除くことが望ましいでしょう。

于 2013-10-10T00:13:17.247 に答える