39

今日、 50 個の半透明ポリゴンのみを使用してモナリザのレプリカをペイントする方法について、Roger Alsing によるこのブログ エントリを読みました。

私はその特定のケースの結果に魅了れています.

4

8 に答える 8

31

ロジャーのモナリザプログラムが遺伝的プログラミングであるかどうかについては、いくつかの議論があります。(1 + 1)進化戦略に近いようです。どちらの手法も、遺伝的アルゴリズムを含む進化的計算の幅広い分野の例です。

遺伝的プログラミング(GP)は、コンピュータープログラム(通常はツリーの形式で、多くの場合Lispプログラム)を進化させるプロセスです。GPについて具体的に質問する場合、ジョン・コーザは一流の専門家として広く認められています。彼のウェブサイトには、より多くの情報へのリンクがたくさん含まれています。GPは通常、非常に計算量が多くなります(重要な問題の場合、多くの場合、マシンの大規模なグリッドが関係します)。

より一般的に質問する場合、進化的アルゴリズム(EA)は通常、他の手法では簡単に解決できない問題(NP困難問題など)の適切な近似解を提供するために使用されます。多くの最適化問題がこのカテゴリに分類されます。正確な解を見つけるには計算量が多すぎる場合がありますが、最適に近い解で十分な場合もあります。このような状況では、進化的手法が効果的です。それらのランダムな性質のために、進化的アルゴリズムは問題の最適な解決策を見つけることが保証されることはありませんが、存在する場合はしばしば良い解決策を見つけるでしょう。

進化的アルゴリズムは、人間が実際に解決する方法を知らない問題に取り組むためにも使用できます。人間の先入観や偏見のないEAは、人間が生み出した最高の努力に匹敵する、またはそれよりも優れた驚くべき解決策を生み出すことができます。良い解決策を作成する方法がわからなくても、それが私たちに提示された場合、私たちが良い解決策を認識できることが必要なだけです。言い換えれば、効果的な適応度関数を定式化できる必要があります。

いくつかの例

編集: 無料で入手できる本、遺伝的プログラミングのフィールドガイドには、GPが人間と競争力のある結果を生み出した例が含まれています。

于 2008-12-10T12:21:05.993 に答える
10

興味深いことに、グランド セフト オート IV や最新のスター ウォーズ ゲーム (The Force Unleashed) などのゲームで使用される動的なキャラクター アニメーションを開発した会社は、遺伝的プログラミングを使用して動作アルゴリズムを開発しました。同社のウェブサイトはこちらで、ビデオは非常に印象的です。

http://www.naturalmotion.com/euphoria.htm

彼らはキャラクターの神経系をシミュレートし、接続をある程度ランダム化したと思います。次に、最も遠くまで歩いたモデルの「遺伝子」を組み合わせて、世代を重ねるごとにより多くの有能な「子供」を作成しました。本当に魅力的なシミュレーション作品。

また、パス検索オートマトンで遺伝的アルゴリズムが使用されているのも見てきました。餌を探すアリが典型的な例です。

于 2008-12-10T12:55:01.590 に答える
8

遺伝的アルゴリズムは、ほとんどすべての最適化問題を解決するために使用できます。ただし、多くの場合、それらを解決するためのより優れた、より直接的な方法があります。それはメタプログラミングアルゴリズムのクラスにあります。つまり、潜在的なソリューションをエンコードし、ソリューションを組み合わせ/変更し、どれを決定するかを決定する方法を生成できることを考えると、それはあなたが投げることができるほとんどすべてに適応できることを意味しますソリューションは他のソリューションよりも優れています。GAは、シミュレーテッドアニーリングのような純粋な山登りアルゴリズムよりも極大値をより適切に処理できるという点で、他のメタプログラミングアルゴリズムよりも優れています。

于 2008-12-10T09:33:09.127 に答える
6

私は論文で遺伝的プログラミングを使用して、地形に基づいて種の進化をシミュレートしましたが、それはもちろん遺伝的アルゴリズムの A-life アプリケーションです。

GAが得意とする問題は山登り問題です。問題は、問題を定義する要因が不明でない限り、通常、これらの問題のほとんどを手動で解決する方が簡単であるということです。つまり、他の方法でその知識を達成することはできません。社会やコミュニティに関連することを言います。優れたアルゴリズムがありますが、パラメーターを微調整する必要があります。ここでは GA が非常に便利です。

私が行った微調整の状況は、同じアルゴリズムに基づいて複数の Othello AI プレーヤーを微調整し、それぞれに異なるプレイ スタイルを与えて、それぞれの対戦相手を独自のものにし、独自の癖を持たせ、トップを選別するために競争させました。ゲームで使用した 16 個の AI。利点は、全員がほぼ同等のスキルを持つ非常に優れたプレーヤーであったことです。そのため、AI を簡単に推測できない人間の対戦相手にとっては興味深いものでした。

于 2008-12-10T09:11:13.040 に答える
5

「特定のソリューションが他のソリューションと比較してどれだけ優れているかを判断する関数を(アプリオリに)定義できますか?」と自問する必要があります。

モナリザの例では、新しい絵が前の絵よりも元の画像に似ているかどうかを簡単に判断できるため、遺伝的プログラミングを「簡単に」適用できます。

于 2008-12-10T09:30:21.097 に答える
5

http://en.wikipedia.org/wiki/Genetic_algorithm#Problem_domains

于 2008-12-10T09:10:41.027 に答える
4

遺伝的アルゴリズムを使用するプロジェクトがいくつかあります。GA は最適化問題に最適です。完全に逐次的で正確なアルゴリズムを開発できない場合、問題を解決できます。たとえば、車の特性をより速くすると同時に経済的にするための最良の組み合わせは何ですか?

現時点では、プレイリストを詳しく説明するための単純な GA を開発しています。私のGAは、似ているアルバム/曲のより良い組み合わせを見つけなければならず(この類似性はlast.fmの助けを借りて「計算」されます)、プレイリストを提案します。

于 2008-12-10T12:59:35.370 に答える
2

ロボット工学には、遺伝的アルゴリズム (GA) を多用するEvolutionary Robotics ( w:Evolutionary Robotics )と呼ばれる新しい分野があります。

w:遺伝的アルゴリズムを参照してください:

シンプルな世代遺伝的アルゴリズムの疑似コード

  1. 初期母集団を選択
  2. 集団内の各個体の適合度を評価する
  3. 終了するまで繰り返す: (制限時間または十分なフィットネスが達成される)
  4. 再現する最高ランクの個体を選択する
  5. 交配や突然変異(遺伝子操作)によって新しい世代を繁殖させ、子孫を産む
  6. 子孫の個々の適応度を評価する
  7. 集団の最悪ランクの部分を子孫に置き換える

鍵となるのは生殖の部分であり、遺伝演算子CrossoverMutationを使用して、性的または無性的に発生する可能性があります。

于 2008-12-14T22:38:19.043 に答える