問題タブ [genetic-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.

0 投票する
11 に答える
1119 参照

math - 配列の単調性を評価するためのアルゴリズム(つまり、配列の「ソート性」を判断する)


編集:うわー、多くの素晴らしい応答。はい、私はこれを遺伝的アルゴリズムによって実行される種類の品質を判断するための適応度関数として使用しています。したがって、評価のコストは重要です(つまり、高速である必要があります。できればO(n))。


私がいじっているAIアプリケーションの一部として、整数の候補配列をその単調性、別名「ソート性」に基づいて評価できるようにしたいと思います。現在、ソートされた最長の実行を計算し、それを配列の長さで割るヒューリスティックを使用しています。

これは良いスタートですが、ソートされたサブシーケンスの「塊」が存在する可能性を考慮に入れていません。例えば:

この配列は、3つのソートされたサブシーケンスに分割されます。私のアルゴリズムでは、40%しかソートされていないと評価されますが、直感的には、それよりも高いスコアが得られるはずです。この種のもののための標準的なアルゴリズムはありますか?

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

.net - 仮想マシンの GA フレームワーク

仮想マシンで命令セットを進化させて抽象的な問題を解決するための .NET 遺伝的アルゴリズム フレームワークを知っている人はいますか? 仮想マシンがプール内で自己増殖し、予想される入力が与えられた場合に「良い」出力を持つデータセットによって決定されるフィットネス関数に対して進化できるようにするフレームワークに特に興味があります。

0 投票する
5 に答える
3035 参照

mathematical-optimization - 遺伝的アルゴリズム

Rastrigin 関数の最小値を計算する遺伝的アルゴリズムを実装しようとしていますが、いくつか問題があります。
染色体をバイナリ文字列として表現する必要があり、ラストリン関数は数値のリストをパラメーターとして受け取るため、染色体を数値のリストにデコードするにはどうすればよいですか?
また、Rastrigin はリスト内の要素を -5.12<=x(i)<=5.12 にすることを望んでいます。染色体を生成するときに、その間隔にない数が生成されるとどうなりますか?

0 投票する
3 に答える
2690 参照

python - TSP 問題に対して推奨される GA 演算子は?

巡回セールスマン問題に取り組む遺伝的アルゴリズムを構築しています。残念ながら、突然変異してより良い結果を得る前に、1,000 世代以上持続できるピークに達しました。この場合、どの交叉演算子と突然変異演算子が一般的にうまく機能しますか?

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

algorithm - 本番環境に遺伝的アルゴリズムはありますか?

本番環境で遺伝的アルゴリズムを使用することは良い考えですか?

使用している場合: どのような場合ですか? サブジェクトを選択するメリットは何ですか? アルゴリズムに簡単に変更を加えることができますか?

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

genetic-algorithm - 特殊スケジューリングアルゴリズム(パターン展開)

質問
以下の問題に対して遺伝的アルゴリズムを試す価値はあると思いますか?

問題の側面は、ジェネレーター/フィットネス関数スタイルのセットアップに最適だと思います。(似たようなプロジェクトを失敗した場合は、ぜひご連絡ください。似たようなことはしないでください)

物事を構造化し、これを正しく釘付けにする方法についてのヒントをありがとう。

問題
次の実世界の問題に使用する適切なスケジューリング アルゴリズムを探しています。

このような 15 スロットのシーケンスがあります (数字は 0 から 20 まで変化する場合があります)。

(そして、このタイプの合計 10 の異なるシーケンスがあります)

各シーケンスは配列に拡張する必要があり、各スロットは 1 つの位置を取ることができます。

マトリックスの制約は次のとおりです。

  • [行単位、つまり水平方向] 配置される 1 の数は、11 または 111 のいずれかでなければなりません
  • [行単位] 1 の 2 つのシーケンス間の距離は 00 以上である必要があります
  • 各列の合計は、元の配列と一致する必要があります。
  • マトリックスの行数を最適化する必要があります。

次に、配列は 4 つの異なる行列の 1 つを割り当てる必要があり、行数が異なる場合があります。

A、B、C、D は実際の部門です。負荷は、他の部門の目標を妨げないように、10 日間にわたって合理的に公平に配置する必要があります。

各行列は、10 個の異なる元のシーケンスの拡張と比較されるため、次のようになります。

これらの特定のスポットは予約されている場合があります(予約するだけにするか、予約しないか、機能ベースにするかはわかりません)。 予約されたスポットは、会議やその他のイベントである可能性があります

各行 (たとえば、すべての A) の合計は、2% 以内でほぼ同じになるはずです。つまり、sum(A1 から A10) は (B1 から B10) とほぼ同じである必要があります。

行数は異なる場合があるため、たとえば次のようになります。

A1: 5 行 A2: 5 行 A3: 1 行、その 1 行はたとえば次のようになります。

等..

サブ問題*

問題の一部だけを解決できてとてもうれしいです。たとえば、次のように入力できます。

上記の制約に従って、行数が最小化された 1 と 0 を持つシーケンスの適切な配列を取得します。

0 投票する
3 に答える
323 参照

python - Pythonで文字列と整数をビット文字列として扱う方法は?

私はPythonで遺伝的アルゴリズムを開発しています.染色体は文字列と整数で構成されています. 遺伝的操作を適用するには、これらの整数と文字列のグループをビット文字列に変換します。

たとえば、1 つの染色体が次の場合:

私はそれが次のようになることを望みます:

(これは実際の翻訳ではありません)。それで...どうすればこれを行うことができますか? 染色体には同じ量の文字列と整数が含まれますが、この数はアルゴリズムの実行ごとに異なる場合があります。

明確にするために、取得したいのは、連結された染色体内の各要素のビット表現です。

これが遺伝的演算子 (突然変異や単純交叉など) を適用する最良の方法ではないと思われる場合は、教えてください! 私は新しいアイデアを受け入れます。

どうもありがとう!マヌエル

0 投票する
3 に答える
278 参照

search - 遺伝的アルゴリズムで無効な検索スペースを回避するにはどうすればよいですか?

私は学校のプロジェクト用に GA を開発していますが、関数の適合性を評価すると、個人はその逆数に相当することに気付きました。

たとえば、セット(1, 1, -1, 1)は と同等(-1, -1, 1, -1)です。検索スペースを縮小し、より効率的に解に到達するには、クロスオーバーが検索スペースの後半で検索しないようにするにはどうすればよいですか?

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

java - GUIでのGAの使用

私はこれをモバイルデバイスで書いているので、これが明確でない場合は申し訳ありませんが、私はそれを速くしようとしています。

私は、適応度の値を構築し、トーナメントの選択、突然変異、およびクロスオーバーを使用していくつかの反復を通じて進化するバイナリエンコーディング(遺伝子)を使用して、基本的な遺伝的アルゴリズムを作成しました。基本的なコマンドラインの例としては、機能しているようです。

私が抱えている問題は、GAを使用して迷路からメソッドを見つける迷路解決プログラムを作成しているときに、GUI内に遺伝的アルゴリズムを適用することです。ランダムなバイナリエンコードされた遺伝子と適応度関数(すべてのバイナリ値を合計する)を、迷路の周りのボットを制御する方法に変換するにはどうすればよいですか?利用可能なルートが青で、壁が黒である、迷路のようなラベル(グリッドなど)で構成される基本的なGUIをJavaで構築しました。

GAのパフォーマンスが高く、一般的なGAの機能(フィットネス方法、母集団の取得と設定、選択、クロスオーバーなど)が含まれていることを繰り返すと、迷路を実行するためにGUIにプラグインする必要があります。GAの内容に応じてさまざまな方向に移動できるボットを取得するには、どこに行く必要がありますか?可能であれば、大まかな擬似コードは素晴らしいでしょう

要求に応じて、Individualは別のクラス(Indiv)を使用して構築され、すべての主要な作業はPopクラスで実行されます。新しい個体がインスタンス化されると、intの配列はその個体の遺伝子を表し、遺伝子は0〜1の数値からランダムに選択されます。適応度関数は、これらの遺伝子の値を加算するだけで、Popクラスで選択を処理します。 、2人の選択された個人の突然変異と交叉。それ以外に多くはありません。コマンドラインプログラムは、n世代にわたる進化を示し、反復ごとに全体的な適合性が向上します。

編集:私を悩ませていることがいくつかありますが、今はもう少し意味がわかり始めています...

Adamskiが提案したように、以下に示すオプションを使用して「エージェント」を作成したいと思います。私が抱えている問題は、ここでランダムビット文字列が機能する場所です。エージェントは壁がどこにあるかを知っており、4ビット文字列(つまり0111)に配置されていますが、これはランダムな32ビット文字列にどのように影響しますか?(つまり、10001011011001001010011011010101)次の迷路がある場合(xが開始場所、2が目標、1が壁):

左に曲がると、私は間違った方向を向いており、エージェントが前方に移動すると、エージェントは迷路から完全に外れます。ストリングの第1世代は完全にランダムであり、適応度が上がるにつれて進化すると思いますが、迷路の中でストリングがどのように機能するかはわかりません。

だから、これをまっすぐにするために...

フィットネスは、エージェントが移動でき、壁のそばにいるときの結果です。

遺伝子は32ビットの文字列であり、利用可能なアクションを示すために2ビットの16セットに分割され、ロボットが2ビットを移動するには、壁の近くの位置を示すエージェントからの4ビットを渡す必要があります。移動が壁を通過する場合、移動は行われず、無効と見なされます。移動が行われ、新しい壁が見つかった場合、フィットネスは上がります。

そうですか?

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

artificial-intelligence - 量子PSOおよび荷電PSO(PSO =粒子​​群最適化)

PSO(つまり、荷電PSOと量子PSO)を実装する必要があります。私の質問は次のとおりです。

  • 各PSOが使用する速度更新戦略(同期または非同期粒子更新)
  • PSOのそれぞれが使用するソーシャルネットワーキングトポロジ(フォンノイマン、リング、スター、ホイール、ピラミッド、4つのクラスター)

今のところ、これらは私の問題です。すべてのあなたの助けをいただければ幸いです。

ありがとう。