web-dev-qa-db-ja.com

遺伝的アルゴリズムを使用するためのクールなプロジェクト?

遺伝的アルゴリズムを使用するための実用的なアプリケーションを探しています。考えたことは次のとおりです。

  • ウェブサイトインターフェースの最適化
  • 物理シミュレータによる車両の最適化
  • 遺伝的プログラミング
  • 自動テストケース生成

しかし、実際に私に飛び出した人は誰もいません。では、遺伝的アルゴリズムプロジェクトに費やす自由な時間(数か月)があるとしたら、何に取り組むことを選択しますか?

46
Ryan

多くの可能性があるトピックの1つは、進化的アルゴリズムを使用してゲームプレイの戦略を進化させることです。人々は進化論を使用して、ポーカー、チェッカー/ドラフト、ゴー、その他多くのゲームの戦略を生み出してきました。 J-GAP 人々は遺伝的プログラミングを使用して Robocode のボットを進化させてきました。

最近、進化的計算について 紹介記事 を投稿しました。これには、進化的アルゴリズムが使用されてきたいくつかの詳細が含まれています。 Adam Marczyk また、多くの例を含む優れた記事を書いています。 Genetic Argonaut blog には、興味深い進化プロジェクトへのリンクが多数含まれています。

あまり一般的ではないタイプの進化的アルゴリズムは 学習分類システム です。これにより、入力を分類するための一連のルールが進化します。これは、ニューラルネットワークが使用されるのと同じ種類の問題に適用できます。フォームに基づいてスポーツの結果を予測しようとするなど、特定の問題に対してLCSを開発することは興味深いかもしれません。

19
Dan Dyer

Roger Alsingの Mona Lisa のようなものに興味があるかもしれません

11
Stephen Denne

進化するレゴ構造 GAにとってこれまでで最も興味深いおもちゃプロジェクトだと思います。

http://static.23.nu/md/Pictures/ZZ099735B6.jpg

11
max

私は、自動テストケース生成に問題で提案されたものと同様のものについて読みました。実際、それはまったく逆でした。テストケースを指定し、アルゴリズム(遺伝的プログラミング)に合格するコードを作成させます。このようにして、仕様を提供し、プログラムを繁殖させます。あなたがそれのために少しグーグルするならば、あなたはそれに関するいくつかの研究を見つけることができます。
これは非常に興味深いアイデアだと思います。もちろん、今では誰もこのようなアプリを作成することはありませんが、それは素晴らしい研究分野です。

5
yoosiba

複雑なシンセサイザーでサウンドパッチを生成するために使用されています(例: Clavia Nord Modular G2 )他のマシンでも試してみます。YamahaDX7が思い浮かびますが、かなりの数があると思います。そこにいくつかのソフトウェアの選択肢。または画像生成。

Palle Dahlstedt による論文で、パッチアルゴリズムの背後にある理論を読んでください。現時点ではダウンしているようですが...

3
Niklas Winde

おそらく巡回セールスマンツアーを見つける。最近、パリの66か所を巡るウォーキングツアーを見つけようとしましたが、これらすべてのコーディングがとても楽しいことがわかりました。私の興奮は2つのソースから生じていると思いました:ツアーを描くことができたという事実(モナリザのアイデアの良い点の1つ、またはエンジニアリングがあなたのものなら、レゴの構造)とあなたができるほど多くのアプローチがあるという事実比較:

  • 「どこかから始めて、常に最も近い、訪問されていない場所に行く」などの単純なヒューリスティックを使用できます。
  • 「1つの頂点またはより小さなサイクルから3つのエッジが発生する場合を除いて、コストを増やして(どこでも)エッジを順番に追加し続ける」など、より複雑なヒューリスティックを使用できます。
  • コストが三角不等式を満たす場合は、 最小全域木に基づく簡単なアルゴリズム などの近似アルゴリズムを使用できます。ボーナスとして、最小スパニングツリーをコーディングできます(高速で簡単な正確なアルゴリズムが利用可能であるにもかかわらず、GAを使用することもできます)。自信がある場合は、最小全域木と完全一致に基づいて、より難しい(3/2)近似アルゴリズムをコーディングできます。
  • 巡回セールスマンツアーがあり、それが交差する場合は、「交差を解除する」ことで改善できます。繰り返しますが、これはコスト関数に関するいくつかの条件を前提としています。
  • 自分でツアーを見つけて、コンピューターを打ち負かすことができるかどうかを確認することもできます。
  • 最後になりましたが、遺伝的アルゴリズム!この問題は、非常に明確な適応度関数と非常に簡単な再結合の方法があるため、GAに非常に適しています。
3
A. Rex

遺伝的プログラミングを使用してどのような問題を解決できるか? を参照してください。

車両構造 本当にかっこいいと思いました。

3
Eugene Yokota

遺伝的アルゴリズムは、最適化とスケジューリングに最適です。例としては、一連のマシンをスケジュールし、一連のタスクを完了するために時間の経過とともに部品とオペレーターを配置する場合があります。おそらく最もエキサイティングなプロジェクトではありませんが、実際のアプリケーションがあります。

3
aekeus

大学に戻って、多次元関数の最小化を行いました。パラメータx1、x2、x3、...、xnを取り、値Yを生成するf(x)があるとします。 Y = Y1 ..がそれほど難しくないように、パラメータx1、..、xnを見つける必要があります。それでも興味深い学習方法です。Nedlermeadの方がはるかに効率的ですが、これはローカル最小値にとらわれる傾向がありません。

2
Sridhar Iyer

プロジェクト それを使用して最適なキーボードレイアウトを試してみて、いわば「Dvorakを打ち負かす」という言及を見たと思います。 :D

2
J Cooper

私はコンウェイのライフゲームと遺伝的アルゴリズムで遊んで楽しんだ。
高度な生命体を進化させようとしている..それがあなたを忙しくさせるかどうかわからない
しかし数ヶ月..

2
Tim

楽曲を作曲!デビッドコープと彼のプログラムエミリーハウエルについて読んでください。

2
freedrull