2

このような遺伝的アルゴリズムのシミュレーションは非常に魅力的で、自分で作成するのも楽しいと思います。しかし、このようなほとんどのシミュレーションの問題は、通常、人間の指導で非常に簡単に作成できる予測可能な理想的な結果に向けて山登りをしているだけだということです。興味深いシミュレーションには、互いに大きく異なる無数の異なる解があり、それらを観察している人間にとって驚くべきものです。

では、そのようなものを作成するにはどうすればよいでしょうか。私が説明していることを達成することを期待するのは合理的ですか? インスピレーションを得ることができる「標準的な」シミュレーション (ライフ ゲームが標準化されているという意味で) はありますか?

4

4 に答える 4

3

あなたが何を意味するかによって異なります かなり主観的な言葉です。趣味でグラフ アナライザーをプログラミングしたことがあります。このプログラムでは、まず、選択した任意の f(x) をプロットして境界を設定できます。2 番目のステップは、x のランダム生成関数で最も一般的な二項演算子 (+-*/) を保持するツリーを作成することでした。プログラムは、そのようなランダム関数のプールを作成し、それらが問題の元の曲線にどれだけ適合するかをテストし、プール内の関数のいくつかを交配して突然変異させます.

結果はかなりクールでした。まったく奇妙な関数は、多くの場合、クエリ関数にかなりよく似ています。おそらく最も有用なプログラムではありませんが、それでも楽しいプログラムです。

于 2011-01-28T06:45:11.400 に答える
1

まず、遺伝的アルゴリズムは山登りをしていません。そうしないと、最初の極大値/極小値で動けなくなります。

また、驚くべき結果が得られないとどうして言えますか? たとえば、私が試した実行の 1 つのために生成された第 7 世代のこの車両を見てください。かなり古いモデルの自転車です。人間が同じモデルを思いつくのに何千年もかかったのに、これは驚くべき結果ではないとどうして言えますか?

于 2011-01-29T15:06:50.677 に答える
1

興味深い創発的動作 (予測不可能でありながら有用な) を得るには、単純な最適化問題ではなく、遺伝的アルゴリズムに興味深い学習タスクを与える必要があるでしょう。

たとえば、あなたが言及した Car Builder (それ自体は非常に優れていますが) は、固定された道路をフィットネス関数として使用しているだけです。これにより、遺伝的アルゴリズムが最適解を簡単に見つけることができますが、道路がわずかに変化した場合、その最適解は機能しなくなる可能性があります。これは、解の適合性が風景の些細な詳細に依存して成長し、堅牢ではない可能性があるためです。それに変わります。実際には、車は 1 つの固定された試験道路で進化したのではなく、さまざまな道路や地形で進化しました。変化し続ける道路を (動的) フィットネス関数として使用します。これは、ランダムな要因によって生成されますが、勾配などの特定の現実的な境界内にある場合、より現実的で有用なフィットネス関数になります。

于 2011-01-31T09:29:49.053 に答える
1

EvoLisaは面白い結果を出す GAだと思います。ある意味では、既知の画像と一致させようとしているので、出力は予測可能です。一方、出力の詳細はかなりクールです。

于 2011-02-08T19:31:55.053 に答える