問題タブ [evolutionary-algorithm]
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.
python - コード バクテリア: 進化する数学的動作
私のブログにリンクを張るつもりはありませんが、私の本当の意味を明確にする方法は他にありません。この記事はかなり長く、3 つの部分 ( 1、2、3 ) に分かれていますが、興味がある場合は読む価値があります。
ずっと前 (少なくとも 5 年前)、私は「数学的バクテリア」を生成する Python プログラムをプログラミングしました。これらのバクテリアは、単純なオペコードベースの遺伝子コードを持つ Python オブジェクトです。それらに数値を入力すると、コードの実行に応じて数値が返されます。それらの遺伝子コードを無作為に生成し、これらのオブジェクトに環境選択を適用して、事前定義された期待値と同様の結果を生成します。次に、それらを複製させ、突然変異を導入し、進化させます。その結果は非常に興味深いものです。彼らの遺伝子コードは基本的に、トレーニング データセットの値が異なっていても、単純な方程式を解く方法を学習するからです。
さて、これはただのおもちゃです。無駄にする時間があり、好奇心を満たしたかったのです。ただし、研究に関しては、何かが行われたと思います...ここで車輪を再発明していると思います。私がプログラムしたような in silico バクテリアを作成するためのより深刻な試みを知っていますか?
これは実際には「遺伝的アルゴリズム」ではないことに注意してください。遺伝的アルゴリズムは、進化/選択を使用して、特定のスコアリング関数に対するパラメーターのベクトルを改善する場合です。これはちょっと違う。特定のスコアリング関数に対して、パラメーターではなくコードを最適化します。
.net - .NET に使用するのに適した遺伝的アルゴリズム (GA) または粒子群最適化 (PSO) フレームワークは何ですか?
PSO や GA などの進化的最適化手法を実装するために提案する、優れた安定したフレームワークは何ですか?
私は独自のものを作成しましたが、それらが気に入っています。既存の安定版のものと比較または追加することに興味があります (または、それらがしっかりしていて拡張可能であれば、それらを使用するだけです)。
c++ - (再帰的重心の)2Dスケルトン推定に役立つopencv関数とは
重複の可能性:
描画された輪郭から「Opencvを使用して2Dスケルトンを推定および可視化する」ための最良のアルゴリズムはどれですか
2次元スケルトン推定のためのOpencv関数またはステップ
artificial-intelligence - 遺伝的プログラミングでクロスオーバーを実装する
私は遺伝的プログラミング(GP)システムを書いています(C言語ですが、それは些細なことです)。多くの文献 (Koza、Poli、Langdon、Banzhaf、Brameier など) を読みましたが、説明されていない実装の詳細がいくつかあります。例えば:
私は世代別のアプローチではなく定常状態の人口を使用しています。これは主に、暫定的な人口のために半分を予約するのではなく、コンピューターのメモリのすべてを使用するためです。
Q1. GP では GA とは異なり、クロスオーバーを実行するときに 2 つの親を選択しますが、1 つまたは 2 つの子を作成するか、それとも自由に選択できますか?
Q2. 定常状態の GP では、世代システムとは対照的に、クロスオーバーによって作成された子供たちは人口のどのメンバーに取って代わりますか? これは私が議論したのを見たことがないものです。2 人の親ですか、それとも他の 2 人のランダムに選択されたメンバーですか? 後者の場合は理解できますし、代わりのメンバーを選ぶためにネガティブ トーナメント セレクションを使用するかもしれませんが、それは時期尚早の収束を生み出しませんか? (クロスオーバー イベントの後、母集団には 2 つの元の親とそれらの親の 2 つの子が含まれ、他の 2 つのランダムなメンバーが削除されます。エリート主義は固有のものです。)
Q3. GP に焦点を当てた Web フォーラムまたはメーリング リストはありますか? 奇妙なことに、私はそれを見つけていません。Yahoo の GP グループはほぼアナウンスのみに使用され、Poli/Langdon フィールド ガイド フォーラムはほとんど沈黙しており、gamedev.net のような一般/ゲーム プログラミング サイトでの GP ディスカッションは非常に基本的なものです。
ご協力いただきありがとうございます。
evolutionary-algorithm - 遺伝的/進化的アルゴリズムと極小値/極大値
極小値/極大値の問題を回避するためにシミュレートされたアニーリングなどを使用することを提案するいくつかの投稿や記事に出くわしました。
十分に大きなランダム母集団から始めた場合、なぜこれが必要になるのか理解できません。
初期集団が実際に十分に大きくランダムであることを確認するための別のチェックですか? それとも、これらの手法は「良い」初期集団を生成するための単なる代替手段ですか?
python - TSP 問題に対して推奨される GA 演算子は?
巡回セールスマン問題に取り組む遺伝的アルゴリズムを構築しています。残念ながら、突然変異してより良い結果を得る前に、1,000 世代以上持続できるピークに達しました。この場合、どの交叉演算子と突然変異演算子が一般的にうまく機能しますか?
evolutionary-algorithm - シミュレーテッドアニーリングに劣化する進化的アルゴリズムの問題:突然変異が小さすぎる?
進化的アルゴリズムの理解に問題があります。私はこの手法を数回使用しようとしましたが、常に同じ問題に遭遇しました。それは、シミュレーテッドアニーリングへの縮退です。
かっこで囲まれたフィットネスを使用した最初の人口は次のとおりです。
A(7)、B(9)、C(14)、D(19)
交配と突然変異の後、私には次の子供がいます:
AB(8.3)、AC(12.2)、AD(14.1)、BC(11)、BD(14.7)、CD(17)
最も弱いものを排除した後、私たちは
A、AB、B、AC
次のターン、ABは再び交尾し、結果は約8になり、ACを押し出します。次のターン、ABは再び、Bを押し出します(突然変異が主に> 1の範囲で適応度を変えると仮定します)。
現在、わずか数ターン後に、プールには元々最も適切な候補(A、B)とそれら2つの突然変異(AB)が入力されます。これは、初期プールのサイズに関係なく発生しますが、少し時間がかかります。たとえば、初期人口が50の場合、50ターンかかり、その後、他のすべてが排除され、より複雑なシミュレーテッドアニーリングでセットアップ全体が回転します。初めに、私も候補者を自分たちと交配させ、問題を悪化させました。
だから、私は何が恋しいですか?私の突然変異率は単純に小さすぎますか?それを増やすと消えますか?
これが私がそれを使用しているプロジェクトです: http ://stefan.schallerl.com/simuan-grid-grad/ ええ、コードはバグがあり、インターフェースはひどいです、しかし私は今それを修正するのが面倒です-そして注意してください、それはあなたのブラウザをロックするかもしれません。Firefoxは一度はクロームより遅くないと思っていても、クロームを使用する方が良いでしょう(おそらく、画像比較のトレースは効果があります、イェーイ!)。興味のある方は、ここでコードを見つけることができます。
ここで私はev-algのアイデアを捨てて、シミュレーテッドアニーリングに行きました。
ps:シミュレーテッドアニーリングについてさえよくわかりません-それは進化的アルゴリズムのようなもので、人口サイズが1だけですよね?
java - Eclipse での Java 構成のセットアップ。複数の .param ファイル
私は遺伝的プログラミングを行うためにECJを使用するつもりですが、Javaには何年も触れていません。私は日食環境のセットアップに取り組んでおり、いくつかの問題を抱えています。
ECJ ソースにはいくつかのパッケージがあり、いくつかのサンプル プログラムが付属しています。実行構成に-file pathToParamsFile
移動し、プログラム引数に追加して、1 つのサンプル プログラム (tutorial1 と呼ばれます) を実行しました。これにより、そのチュートリアルの params ファイルがポイントされ、そのサンプルが実行されました。
私がテストしている新しい例 (パッケージ gui から) には、2 つの params ファイルがあります。1 つの param ファイルだけを指定しようとしましたが、コンソールでプログラムが実行されましたが、読み込まれない GUI があるはずでした。
何が間違っているのかわかりません。どんな助けでも大歓迎です。
python - イベントの順序を予測するための機械学習アルゴリズム?
単純な機械学習の質問. おそらくこれを解決するための多くの方法:
4 つの可能なイベントの無限のストリームがあります。
'event_1', 'event_2', 'event_4', 'event_4'
イベントは完全にランダムな順序ではありません。ほとんどのイベントが発生する順序にはいくつかの複雑なパターンがあり、残りのイベントはランダムであると仮定します。ただし、事前にパターンはわかりません。
各イベントが受信された後、過去にイベントが発生した順序に基づいて、次のイベントが何であるかを予測したいと考えています。私の質問は次のとおりです。この予測子にはどの機械学習アルゴリズムを使用すればよいですか?
予測子には、次のイベントが実際に何であったかが通知されます。
無限の履歴を維持することは不可能であるため、予測子がどのくらいの期間の履歴を維持する必要があるかという問題が生じます。これはあなたの答えに任せます。実用性のために、答えは無限大ではありません。
したがって、予測は何らかのローリング履歴を使用して行う必要があると思います。したがって、新しいイベントを追加して古いイベントを期限切れにすることはかなり効率的であり、たとえば、予測モデル全体を再構築する必要はありません。
研究論文の代わりに特定のコードがあれば、あなたの回答に計り知れない価値を加えることができます。Python や C ライブラリは便利ですが、何でも構いません。
更新:各ラウンドで複数のイベントが同時に発生する場合はどうでしょうか。それは解決策を変えますか?
java - 遺伝的プログラミングで個人にコードを渡すのではなく、数字を送るのではありませんか?ECJ
私はJavaでECJを使用しています。私には、同じ頭脳を持ちたいと思っている個人の軍隊があります。
基本的にはGPを使って脳を進化させたいです。ifステートメントには「」や「」、端末には 「」や「」if-on-enemy-territory
や「」などが欲しいです。if-sense-target
go-home
move-randomly
shoot
ただし、これらのステートメントは完全に実行可能なJavaコードである必要があります。ECJでこれを行うにはどうすればよいですか?
例えば:
「」という名前の端末が欲しいのですがmoveRandom
。これを兵士のクラス内でコーディングすると、次のようになります。
では、このコードを実行する端末を作成するにはどうすればよいですか?