問題タブ [genetic]

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.

0 投票する
1 に答える
406 参照

list - 突然変異の問題 - Clojure

リストとして表される関数の要素を変更するのに問題があります。

ランダム関数のコード:

ミューテーション機能も提供しますが、まだ十分ではありません。ステートメントを評価できるようにする必要があるため、以下ではまだ不十分です。

(補足:clojureを学ぶためのリンク/本はありますか?)

0 投票する
4 に答える
7993 参照

c# - C#でXYグラフをプロットする方法は?

私は特定の遺伝的アルゴリズムの問​​題を扱うC#でアプリケーションを開発しています。アルゴリズムの実行により、グラフの描画に必要な出力パラメーターが提供されます。グラフのグラフは2つの独立した軸で構成され、Xは世代数、Yは対応する適応度関数の最大値を表します。具体的には、Excelから画像をアップロードしたので、ここにあります:

http://img97.imageshack.us/img97/2046/graphnb.png

私の優先事項は、ユーザー(突然変異率、人口と世代数、エリート個人の数などのランダムな実行係数を設定する)がC#で生成された「フォーム」に生成されたXYグラフを表示できるようにすることで、このアプリケーションを完全に機能させることです。 。問題を部分的に解決するサイトを見つけましたが、それだけではありません(http://csharp.net-informations.com/excel/csharp-excel-chart-picturebox.htm)。だから私は他のアプリケーションを使用せずに言及されたグラフを実装する方法があるかどうかを尋ねていますが、おそらくプロット用のC#ライブラリと関数などだけですか?私が自分自身を明確にしたことを願っています。よろしくお願いします。

0 投票する
1 に答える
59 参照

c# - 他のクラス本体に多くのtypeparamsがあるクラスのエイリアス(C#)

私は多くのtypeparamsを持つクラスを宣言します:

このようなエイリアスを使用するにはどうすればよいですか?

0 投票する
2 に答える
473 参照

c++ - C++ 遺伝的プログラミング: リンカー/コンパイラーの呼び出し、コンパイルされたプログラムの実行、入出力のパイピング

これは一般的な質問であり、その一部は回答されていると確信していますが、広範な議論よりも意見が必要です。進化計算と遺伝的プログラミングについて修士論文を書くつもりなのですが、遺伝的プログラムからソースコードファイルを作成し、gccを起動してコンパイルできない場合、Linux/C++の有識者の方からご意見をいただきたいです。コンパイルして、コンパイルされたプログラムを (新しいプロセスとして) 実行するためにコンパイルし、そのプログラムに入力を送信して、出力と発生した例外 (またはクラッシュ) をキャプチャできるようにする場合は、失敗した理由をキャプチャします。トピックが広すぎることは理解していますが、これは元に戻せない、試すのはばかげている、またはこれを行うためのより良い方法があると誰かが考えているかどうかを知りたいです.

0 投票する
4 に答える
2953 参照

md5 - 遺伝的アルゴリズムを使用してmd5ハッシュを破ることは可能ですか?

md5がどのように機能するかを知っていれば、遺伝的プログラミングなどの人口ベースのアルゴリズムを使用して単純なパスワードを破ることは可能でしょうか?

たとえば、5〜10文字の文字列のmd5ハッシュが与えられた場合、文字列を取り戻そうとします。

はいの場合、何ができますか

  • 人口の個人のための良い表現
  • 選択基準
  • 組換え方法

これは、遺伝的アルゴリズムの適用を理解し、誰かがこの種のことをしたかどうかを知ることです。

0 投票する
2 に答える
1938 参照

genetic-algorithm - 遺伝的アルゴリズム、適応度、突然変異でクロスワードパズルを解く

私は学校のために研究室を作るために一生懸命に努力しています。遺伝的アルゴリズムを使ってクロスワードパズルを解こうとしています。問題はそれがあまり良くないことです(それはまだランダムすぎます)私は今私のプログラムがどのように実装されているかについて簡単に説明しようとします:

パズルを持っている場合(#はブロック、0は空きスペース)

そして、このパズルの解決策の候補となる単語のコレクション。私のDNAは、単に1D配列としてのマトリックスです。

私の最初の個人のセットは、私の単語に含まれる文字のプールからランダムに生成されたDNAを持っています。

roulette-selectionを使用して選択を行います。組み合わせと突然変異の可能性についていくつかのパラメーターがありますが、突然変異が発生した場合、私は常にDNAの25%を変更します。私は文字のプールからランダムな文字でそれを変更します(突然変異はすでに形成された単語を破壊する可能性があるため、これは悪影響を与える可能性があります)

ここで、適応度関数:行列を水平方向と垂直方向の両方でトラバースします。単語が見つかった場合、FITNESS + = word.lengh +1

ある単語の一部である文字列を見つけた場合、FITNESS + = word.length /(puzzle_size * 4)。とにかく、0から1までの値を指定する必要があります。したがって、「tool」から「to」を検索し、XをFITNESSにアドバタイズし、「tool」から「too」を検出した直後に、FITNESSに別のYを追加します。

私の世代は実際には時間の経過とともに改善していません。それらはランダムに表示されます。したがって、1000〜2000のプールで400世代後でも(これらの数値は実際には重要ではありません)、ソリューションに6ワードが必要な場合に、1〜2ワード(2文字または3文字)のソリューションが得られます。

0 投票する
1 に答える
135 参照

r - Rの入力配列

こんにちは、以下のコードを見つけてください。私が望むのは、実行したい特定の条件チェックに基づいて配列に値を追加することです。値が適格である場合は配列に追加する必要があり、そうでない場合は破棄する必要があります。ただし、必要な配列を取得できません。その点での助けは非常に役立ちます。

私のコードは次のとおりです。

だから私がしたいのは、長さが30未満のデータのみを配列に追加することbですY.

0 投票する
2 に答える
2546 参照

algorithm - 遺伝的アルゴリズムとテトリス

遺伝的アルゴリズムを使用して Tetris プレーヤーを作成し、いくつかの問題に直面しています。私は多くの関連作品を読みましたが、GA について十分な詳細が得られません。

問題は、私のエージェントが非常に速く動けなくなることです...評価関数を使用して、高さ、覆われた穴、平坦度、およびクリアされた行の数の 4 つの機能をカバーしています。同じ評価を使用し、何千行も実行できる論文を読みました。

600 世代後、100 エージェントの人口で、最高のエージェントは平均で 260 行しか実行できません。これは不十分です。すべてのエージェントが同じ曲のシークエンスを演奏しています。

私のGAの詳細:

世代:600 人口:100

遺伝子: 0 から 1 までの 4 つの float 値の配列。

一様交叉は一定の確率で起こり、一定の確率で 2 つの親の間で遺伝子を交換します。

突然変異は特定の確率で発生します。ここでは、遺伝子を交換する、遺伝子をランダムな値に置き換える、または遺伝子にノイズ値を追加するという 3 つの異なるアプローチを試しました。

私は 50% のエリート率を持っていますが、一部の優れたエージェントが選択されて、より悪いエージェントを生み出し、人口を汚染していることに気付きました。

選択はルーレット…

誰かがクロスオーバーと突然変異の最良の方法について詳しく教えてくれたら、感謝します!

ありがとう、そして長い投稿でごめんなさい!

0 投票する
1 に答える
14981 参照

matlab - Matlab で遺伝的アルゴリズムを使用して "y=x*x" の最小値を見つける

この質問で誰かが私を助けてくれませんか。私はMatlabの初心者です...そして、Matlabで遺伝的アルゴリズムを作成して使用する方法を理解するのは少し難しいです。指定された関数の最小値/最大値を検索するための非常に単純なコードを書くのを手伝ってくれる人がいれば。そのためにgatoolを使用する必要があることを読みました...しかし、Matlabヘルプネットワークの例を理解できません。次の手順を実行しています。

  1. テキスト エディターで次のように入力しています。

    /li>
  2. 次に、を起動し、GATOOLこの関数を次のように指定します@parabola

  3. 変数の数の設定 (2 に等しい)
  4. Initial range = [-10;10].
  5. 他のパラメータはデフォルトとして設定されています

    ボタンを押すStartと、結果が表示されます。

    fitnessfcn のエラー: 入力引数 "x" が定義されていません。

0 投票する
1 に答える
734 参照

algorithm - TSPのGAアルゴリズムアプローチ

TSP を解決する GA アルゴリズムを構築しました。

Norvig の本 (AIAMA) の練習問題です。彼は、表現などの問題に関するララニャガの見解を読むことを提案しました。そこでいくつかのクロスオーバー演算子とミューテーションを学び、それらのいくつかを試して、どちらが自分に適しているかを確認しました. また、各パスのコストに基づいてフィットネス関数を詳しく説明しました。

アルゴリズムの設計について疑問があるにもかかわらず、これまで AI を扱ったことがなかったので、私のアプローチが GA に有効かどうかはわかりません。

これが私がしたことです:

パスのベクトルを取得しました (初期母集団)

次に、各ループで、コストの順序を上げてこのベクトルを編成し、このベクトルで最適な X パスを取得して、他のパスを削除しました。

次に、XOver と Mutation を (一定の割合で) 適用し、それらをベクターの古い削除済みの値の位置に配置します。

次に、同じことを行います(順序ベクトル - 最良の抽出など)

そして安定するまで続けます。

それは良いアプローチですか?そうでない場合は、北をください。最良のものを選択してそれらを保持しなかった場合 (Xover と突然変異を介してそれらからまったく新しいポップを作成しただけ)、良い結果が得られませんでした。このようにして(最良のものを維持する - いくつかの実験では最良のものだけを維持した)、より良い結果が得られ、結果は常に収束し、非常に高速になります

州の表現 : 州の表現について、私はパス表現を使用することにしました (私はすでに最初からそれを使用していましたが、ララニャガなどをすべて読んだ後、それを使い続けることにしました)、それは次のとおりです: たとえば、5 つの都市と最初の都市を訪れ、次に 2 番目、3 番目の都市を訪れます ... パスの表現は (1, 2, 3, 4, 5) になります

初期人口生成:実際には、私は都市を表すためにランダムポイントを生成しています(これは、本が私に求めたものであり、閉じた正方形でランダムポイントを生成します)-しかし、比較のために、人口を生成し、比較するときにそれに固執します結果 - 特定の母集団に固執しなければ、自分の改善について知ることはあまりないと思います

最適な個人: 最適な個人とは、移動コストが最も低い個人です。(この問題では、別のものをパラメーターとして使用する必要があるかどうかはわかりません

crossover : 私はいくつかの crossover 演算子を試し、自分の結果を本に示されているものと比較し、最終的に Order CrossOvers (Larrañaga et al(1999) ) の 1 つを使用しました:親パスを作成し、残りのパス (そのサブパス内でまだ訪れていない都市) を他の親からコピーします (位置 '0' ではなく、2 番目のカットから開始) - 他の親パスに表示される都市を追加します親。

例: パス (1 2 3 4 5) (3 4 2 1 5) 子 (5 |2 3 4| 1) (5 |4 2 1| 3) <- | の内側の部分 | | 一方の親から来て、もう一方の親からの他の部分

突然変異 : 突然変異には、IVM (Inversion Mutation) アプローチを選択しました。元のパスからサブパスを取得し、ランダムなポイントに挿入 (反転) します。

例: パス (1 2 3 4 5) サブパス (2 3 4 ) および 5 の後にランダムに挿入

生成: ( 1 5 | 4 3 2 )