問題タブ [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.
javascript - シンプルな AI - JavaScript (アニメーションに jQuery を使用)
最初に、趣味として数年間プログラミング (主に C ベースの言語、iOS 開発、Web など) を行っており、現在は単純な AI (ほとんどの人々は三目並べゲームから始めますが、私は遺伝子プログラミングの原理を使って何かを作ることに興味があります)。読者にこれを知ってもらいたいのは、答えが複雑すぎない (私はまだ大学のコンピューター サイエンスのコースに参加したことがないので、子供が理解するのが難しすぎない) ことを感謝しているからです。
これが私の目標です:
条項
organsim: CSS div
個体群:生物のグループ (5 または 10)
食料源:別の CSS div
プロセス
- 集団が生成され、それぞれが最初は同じ表現型属性を持っているように見えますが、スキルが異なります (この場合、速度)
- 単一の食料源が生成されます(毎回同じ)
- 環境が設定されてから約 5 秒後 (ステップ 1 と 2)、生物の個体群は競争的に食料源に到達する方法を見つける必要があります。
- 食品に到達できる生物は 1 つだけです。それに到達すると、環境はリセットされますが、前回食料品を見つけた生物は恩恵を受け、その速度レベルが増加する可能性がありますが、特にひどいことをした他の生物はさらに遅くなるか、終了する可能性があります
- プロセスが繰り返されます。ユーザーは集団の特徴を観察し、どれが進化的に成功しているかなどを確認できます。
追加情報
ご覧のとおり、上記の手順は進化をほぼシミュレートしていますが、非常に単純な方法です (動物の実際の状況に比べて条件が少ない)。ここで私がここで尋ねている理由は次のとおりです。私は完全に道に迷っています。どこから始めればよいか本当にわかりません (母集団の生成を除いて、jQuery アニメーションを介してそれらを動かすだけでなく、母集団を生成することもできます)。しかし、それらを食料源に引き寄せることができるのは、今私ができないことです. ですから、これを正しい方向に向ける手助けをしたいと思います。
algorithm - 多目的最適化:NSGAを使用した選択とVEGAを使用した選択
多目的最適化での選択のコンテキストで、ベクトル生成遺伝的アルゴリズム(VEGA)と非優勢ソート遺伝的アルゴリズム(NSGA)アルゴリズムの間にどのような違いがあるのか疑問に思いましたか?
(NSGAはパレートベースであり、VEGAは非パレートベースであることを認識しています。)
python - Theo Jansen 歩行機構の進化的アルゴリズム
非常に精巧な歩行機構を作成したオランダのアーティスト/エンジニアがいます。動作原理は次のとおりです。
http://www.strandbeest.com/beests_leg.php
興味深いのは、ページの下部に記載されている理想的なリンクの長さを計算するために、彼が自作の進化的アルゴリズムを使用したことです。
サイクルの接地部分を視覚的に分析する Python スクリプトを作成しました。これには、次の 2 つの要件を満たす必要があります。
- 上下にぐらつかないように、できるだけまっすぐにしてください。
- 片方の足をもう一方の足に引きずり込まないように、できるだけ一定の速度を保ちます。
これらの 2 つの基準により、「車輪のような」効果が得られ、機械は運動エネルギーを無駄にすることなく直線的に前進します。
質問は:
「上記の 2 つの基準を考慮して、歩行経路を改善するために (以下のコードに正しい突然変異を挿入することによって) 脚の長さを最適化するための単純な進化的反復式の提案はありますか?」
編集:ゲノム候補の「適合規則」に関するいくつかの提案:
- クランク回転の 3 分の 1 に対応することを考えると、サイクルの「下部」(地面との接触) を取ります (下部は非水平勾配を持ち、依然として線形である可能性があることに注意してください)。
- この「接地」部分のポイント位置に線形回帰を適用します。
- 線形回帰から垂直方向の変動を計算します (最小二乗法?)
- 回帰直線と平行に、ある点と前の点との差によって速度変動を計算します。
- (オプション) これらの「エラー関数」のグラフをプロットし、視覚的にミュータントを選択できるようにします (ブーアリング... ;o)。
Python + GTK で作成した私のコードを次に示します。これにより、問題を視覚的に把握できますmut
:
geometry - 遺伝的アルゴリズムによる 2D 形状の最適化
私は最近、遺伝的アルゴリズムについて学び始めたばかりで、物理シミュレーションの 2D 形状最適化にそれらを実装しようとしています。シミュレーションは、形状ごとに 1 つのスカラーを生成します。(これは boxcar2d http://boxcar2d.com/に似ていると思います)
2D 形状は、実際にはいくつかの 2D の「サブ形状」の結合です。各サブシェイプは、角度/半径のリストとして保存されます。2D シェイプは、サブシェイプ リストのリストとして保存されます。これが今の私の染色体になっています。
現時点では、シミュレーションで生成されたスカラーをおそらく使用します。私の質問は、選択と再生産のプロセスをどのように進めるべきかということです。トーナメントの方が適切ですか、それとも切り捨てをプロポーショナル選択と組み合わせて使用したいですか? また、適切な突然変異率/人口サイズなどをどのように見つけますか?
たくさんの質問で申し訳ありませんが、よろしくお願いします。どこから始めればいいのか本当にわかりません。
math - 適応度関数と遺伝的アルゴリズムの選択
変数 A を最大化し、変数 B を最小化する非線形フィットネス関数を設計しようとしています。B は最小化する必要があり、A とは対照的に、小さい場合 (1 未満) は重要性が低くなり、大きい場合 (>1) は重要性が高くなるため、指数関数的に減衰します。
主な目標は A を最適化することなので、アナログは A=利益、B=コストだと思います
ルーレットホイールの選択を使用できるように、すべてをポジティブに保つことを目指すべきですか、それともランク/トーナメントのようなシステムを使用する方がよいでしょうか? 私のアルゴリズムの目的は形状の最適化です。
ありがとう
python - マルチプロセッシング| 既存の通訳を捕まえる
私は進化的計算の問題に取り組んでおり、それを優れたECSPYモジュールで実装しています。私が使用している適応度の値は、かなり複雑なダイナミクスシミュレーションから導き出されています。シミュレーションを防爆にするというアプローチは好きではありません。進化の過程で、simuエンジンが解決できるように構築されていない状況が発生する可能性があるため、これはかなり役に立ちません。ただし、解決可能なシーンを返すようにジェネレータを制約することは、物事を制約することを超えています。
したがって、私のアプローチは単純です。シミュレーションに時間がかかりすぎたり、クラッシュしたりした場合は、ダーウィンの慈悲に任せます。
マルチプロセッシングモジュールを使用して、候補者の適性を評価しています。segfaultingインタープリターをキャッチしたり、数秒で殺したりするにはどうすればよいですか?
よろしくお願いします。
-jf
algorithm - 常に可変のみのアルゴリズムを単一割り当てに変換し、それでも効率的にすることはできますか?
コンテキスト
この質問の文脈は、 Erlangを使用して、進化的アルゴリズムの形式であるGene Expression Programming (GEP)を試してみたいということです。GEPは、「Karva表記」と呼ばれる文字列ベースのDSLを利用します。Karva表記は、式解析ツリーに簡単に変換されますが、変換アルゴリズムは、可変オブジェクトを持つ実装を想定しています。不完全な部分式は、変換プロセスの早い段階で作成され、独自の部分式は、後で、次の値で埋められます。それらが作成された時点では不明です。
Karva表記の目的は、高価なエンコード手法や遺伝暗号の修正なしに、構文的に正しい式が作成されることを保証することです。問題は、Erlangのような単一代入プログラミング言語では、各サブ式が入力されるたびに式ツリーを継続的に再作成する必要があることです。これには安価な--O(n)?-操作を更新し、指数関数的な時間で完了するものに変換します(私が間違っていない限り)。K式を式ツリーに変換するための効率的な関数アルゴリズムが見つからない場合、GEPの魅力的な機能の1つが失われます。
質問
K式の変換の問題がかなりあいまいであることを理解しているので、本質的に機能しないアルゴリズム(可変データ構造を利用するアルゴリズム)を機能しないアルゴリズムに変換する方法についてのアドバイスが必要です。純粋な関数型プログラミング言語は、コンピューターサイエンスの初期に作成された、必要なパフォーマンス特性を得るために可変性に依存するアルゴリズムとデータ構造の多くをどのように適応させるのでしょうか。
python - Pyevolveを使用したパレートランキング
私は現在、いくつかの遺伝的アルゴリズムの問題を解決するためにPyevolveパッケージを使用しています。複数の評価関数があるので、PyevolveパッケージでParetoランキングを使用した例はありますか?
存在しない場合、plzはパレートランキングアルゴリズムの擬似コードを提供できますか。自分で実装したいです。
ありがとうございました!!
artificial-intelligence - フィットネス関数を定義するにはどうすればよいですか?
私は、選択されたデータのセットを持つプロジェクトに取り組んでおり、各データには異なる属性があります。属性を使用して、選択したシナリオに最適なデータを選択するには、フィットネス関数を使用する必要があります。
ただし、自分のフィットネス関数を定義する方法を説明しているサイトは実際には見つかりません。私が持っているのは、それが遺伝的アルゴリズムの一部であるということだけです。これは私が得た限りです。それで、ここでいくつかの指針を得ることができますか?
hash - ハッシュ関数は、進化的アルゴリズムの創設の仮定と矛盾しますか?
進化的アルゴリズムは、適応度関数を使用して、世代を超えて生存する候補を選択します(「適者生存」)。すべての適応度関数は、候補の値が目的の値に近いほど、入力(「キー」)が目的の入力に近くなければならないことを前提としています。
暗号化ハッシュ関数には、「特定のハッシュを持つメッセージを生成することは不可能である」という特性があります。これは、値の「近さ」とキーの「近さ」の間にほとんどまたはまったく相関関係がないことを意味すると理解しています。
これら2つをまとめると、「適者生存」の仮定が暗号化ハッシュ関数にとって間違っていることを意味しませんか?つまり、進化的アルゴリズムを使用して暗号化ハッシュ値の逆を理解しようとすると、適応度関数が間違った方向に移動します。値の「近さ」とキーの「近さ」の間の相関関係は、進化的アルゴリズムの前提条件ですか?