問題タブ [genetic-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
genetic-algorithm - 遺伝的プログラミングを用いたアリのコロニー行動
コザがここで説明しているように、遺伝的プログラミングを使用して食物採餌行動が可能な進化中のアリを見ています。時間ステップごとに、各アリをループして、そのコンピューター プログラムを実行します (コロニー内のすべてのアリで同じプログラムが使用されます)。MOVE-ONE-STEP
現在、TURN-LEFT
、 、 などの単純な命令を定義していますが、引数を順番に実行するTURN-RIGHT
関数もあります。PROGN
私が抱えている問題は、PROGN
命令を順番に実行できるため、アリは単一の時間ステップで複数のアクションを実行できることです。自然とは異なり、アリを並行して走らせることはできません。つまり、他のすべてのアリが自分の順番を待っている間に、1 つのアリがいくつかのアクションを実行して環境を操作する可能性があります。
これが通常の方法なのか、それとももっと良い方法があるのか 疑問に思っています。コザはそれについて何も言及していないようです。つまり、シナリオを拡張して、単一の時間ステップで一度だけ発生するものに依存する可能性のある他のエージェント (敵など) を使用したいと考えています。
landscape - 線形遺伝的プログラミング - エラー ランドスケープの問題
私は線形遺伝的プログラミングの世界を探求していますが、この 1 つの問題に行き詰まっていることに気づきました。最も単純な問題でさえ、エラーの状況は非常に滑らかではないように思えます。特に、エラー ランドスケープには、一定のエラーのこれらの巨大なギャップ (ソリューションの適合度がちょうどゼロであるギャップ) が常に含まれているようです。これにより、進化的アルゴリズムがプログラム空間全体のランダム検索に劣化し、解決策を発見することがほとんど不可能になります。人々がこれをどのように回避するかについて説明がある人はいますか? 私は何が欠けていますか?
genetic-algorithm - 高性能で使いやすい非 GPL 遺伝的プログラミング ライブラリ
遺伝的プログラミングを使用して、ユーザーが何を求めているかを正確に把握するアプリケーションを構築したいと考えています。非プログラマー向けのプログラミングアプリケーションです。基本的に、ユーザーはアプリケーションに一連の例をフィードし、アプリケーションはその例から、ユーザー自身の使用/配布用の新しいプログラムを構築するために必要なルールを導き出します。
線形回帰を使用してプロトタイプを作成しましたが、単純な問題しか解決できませんでした。今週、pyevolve を使用して遺伝的プログラミングを実験しましたが、予想以上にうまく機能しました。ただし、純粋な python で記述されているため、例を解決するのに数十秒かかると思われますが、私のアプリケーションでは、せいぜい数秒の時間しかありません。
私は、pyevolve と同じくらい使いやすい、よりパフォーマンスの高いライブラリを見つけようとしましたが、適切なライブラリが見つかりません。openBeagle を試してみましたが、サンプルを実行し、ドキュメントを何時間も調べた後でも、「ビバリウム」から個体を実際に選択する方法を見つけることができません。人々が GAUL を推奨しているのを見てきましたが、これは GPL ライブラリであり、将来のアプリケーションのライセンス方法を制限します。lil-gp をダウンロードしようとしましたが、ftp ダウンロード リンクが大学のログイン画面でロックされています。
アプリケーションは Mac OS X cocoa アプリケーションになるため、Java、C#、または Matlab GP ライブラリは考慮しませんでした。
matlab - Matlab で遺伝的アルゴリズムを使用して "y=x*x" の最小値を見つける
この質問で誰かが私を助けてくれませんか。私はMatlabの初心者です...そして、Matlabで遺伝的アルゴリズムを作成して使用する方法を理解するのは少し難しいです。指定された関数の最小値/最大値を検索するための非常に単純なコードを書くのを手伝ってくれる人がいれば。そのためにgatoolを使用する必要があることを読みました...しかし、Matlabヘルプネットワークの例を理解できません。次の手順を実行しています。
テキスト エディターで次のように入力しています。
/li>次に、を起動し、
GATOOL
この関数を次のように指定します@parabola
- 変数の数の設定 (2 に等しい)
Initial range = [-10;10]
.他のパラメータはデフォルトとして設定されています
ボタンを押す
Start
と、結果が表示されます。fitnessfcn のエラー: 入力引数 "x" が定義されていません。
java - 遺伝的プログラミングを目的としたJavaでのバイナリツリーの作成
受講しているソフトウェアエンジニアリングクラスのプロジェクトに取り組んでいます。目標は、遺伝的プログラミングを使用して、提供されたトレーニングデータに適合する数式を生成するプログラムを設計することです。
私はプロジェクトに取り組み始めたばかりで、ユーザー定義のツリーの高さを可能にし、各ノードを分離してクロスオーバーとミューテーションを簡単にするバイナリツリーを作成する方法に頭を悩ませようとしています。それらのプロセスを実装します。
これまでに作成したノードクラスは次のとおりです。私の明らかな経験不足であると私が確信していることをご容赦ください。
これにより、ノード自体から必要なすべてが達成されますが、これらをより大きなツリーに変換する方法を理解しようとすると問題が発生します。ある種のコレクションタイプを使用する必要があることはわかっていますが、ライブラリで、自分がやろうとしていることに適していると思われるコレクションタイプを見つけることができないようです。
正しい方向への微調整でさえ大いにありがたいです。
genetic-programming - 遺伝的プログラミングにおける指数
ターミナル変数に(整数だけでなく)実数値の指数が必要です。たとえば、関数 y = x^3.5 + x^2.2 + 6 を進化させたいとします。どのように進めればよいでしょうか? これを実行できる GP 実装は見たことがありません。累乗関数を使用してみましたが、初期解の指数が多すぎて、評価値が「二重」境界を超える場合があります。任意の提案をいただければ幸いです。前もって感謝します。
genetic-programming - 遺伝的プログラミングの段階
遺伝子プログラムを進化させるとき、必要な時間は発生のさまざまな段階にどのように配分されますか? つまり、時間の 90% は、ランダム プログラムよりも少しだけ良くなることに費やされているのでしょうか。
genetic-programming - 遺伝的プログラミングにおけるテストケースの動的数?
遺伝的プログラミングの論文を見ると、テストケースの数は常に固定されているように思えます。ただし、ほとんどの変更は実行のすべての段階で非常に有害である (?) はずです。最初にごく少数 (1 つ?) のテスト ケースだけを試して、突然変異が意味を成すかどうかを調べたらどうなるでしょうか?
さまざまなテスト ケースがソリューションのさまざまな機能をテストし、1 つの突然変異でそれらの機能の 1 つだけが改善されるのではないでしょうか?
java - JGAPでのマルチスレッドの使用に関して知っておくべき「落とし穴」はありますか?
私は、画像を表すGPを生成しようとする遺伝的プログラミングプロジェクトに取り組んでいます。私のアプローチは、画像を異なる独立したセクションに分割し、別々のスレッドにそれらの進化の仕事をさせることです。
物事は非同期になるので、当然、オブジェクトも独立している必要があります。問題は、JGAPの特定のオブジェクトが実際には共有変数であるため、スレッド間で共有されることに気づいたことです。これにより、多くの問題が発生します。たとえば、同じ名前のすべての変数が同じであることに気付きました。つまり、複数のIGPProgramを同時に評価する場合は、変数をロックする必要があり、パフォーマンスが大幅に低下する可能性があります。
また、複数のGPConfigurationを作成しようとすると、プログラムは最初にそれをリセットする必要があると文句を言うことに気づきました。したがって、これはすべてのGPConfigurationが共有されているように見えます(つまり、複数のスレッドで同時に複数の構成を作成することはできません)。これは、GPProblemsの作成に時間がかかる可能性があり、多くのGPProblemsを作成しているため問題です。なので、作業を複数のスレッドに分割することで、時間を短縮したいと思っていました。
JGAPとスレッドを操作するときに知っておく必要のある「落とし穴」はありますか?残念ながら、マルチスレッドはJGAPのドキュメントではあまり触れられておらず、JGAPの経験があるかもしれない人々からアドバイスをもらいたいと思っていました。
artificial-intelligence - 線形遺伝的プログラミング定数
最初に個体に定数をシードし、遺伝的演算子を介してそれらを変異させるのとは対照的に、メモリレジスタ内で定数を明示的に定義することの利点と欠点は何ですか?
具体的には、私が持っている線形遺伝的プログラミングに関する本からこれを読んでください。
私たちの実装では、すべてのレジスタが浮動小数点値を保持しています。内部的には、定数は書き込み保護されたレジスタに格納されます。つまり、宛先レジスタになることはありません。結果として、可能な定数のセットは固定されたままになります。
私が疑問に思っているのは、これは、最初に定数をランダムに生成してプログラムに統合し、トレーニングプロセスを通じてそれらを改善するよりも優れたアプローチであるということです。
ありがとう