問題タブ [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.
algorithm - 遺伝的アルゴリズムを使用したスパース パラメーターの選択
遺伝的アルゴリズム (GA) を使用して解決したいパラメーター選択の問題に直面しています。3000 の可能なパラメーターから 4 つ以下のパラメーターを選択することになっています。バイナリ染色体表現を使用することは、自然な選択のように思えます。評価関数は、あまりにも多くの「選択された」属性を罰し、属性の数が許容できる場合は、選択を評価します。
問題は、これらのまばらな条件では、GA が人口をほとんど改善できないことです。平均フィットネス コストも、「最悪」の個人のフィットネスも世代を超えて向上しません。私が見ているのは、最良の個人のスコアがわずかに (ごくわずかでも) 改善されていることだけです。これは、ランダム サンプリングの結果であると思います。
パラメータのインデックスを使用して問題をエンコードしても機能しません。これはおそらく、染色体には方向性があるが、選択の問題には方向性がないためです (つまり、染色体 [1, 2, 3, 4]; [4, 3, 2, 1]; [3, 2, 4, 1] 等は同一)
どのような問題表現を提案しますか?
PSこれが重要な場合は、PyEvolveを使用します。
algorithm - 巡回セールスマン ソルバーを使用してハミルトニアン パスを決定する
これは、巡回セールスマンの最適化問題とハミルトニアン パスまたはサイクル決定問題のヒューリスティックを実装するように求められたプロジェクトです。実装自体に支援は必要ありませんが、今後の方向性について質問があります。
私はすでに、遺伝的アルゴリズムに基づく TSP ヒューリスティックを持っています。これは、完全なグラフを想定し、母集団として一連のランダムな解から開始し、世代数にわたって母集団を改善するように機能します。ハミルトニアン パスまたはサイクルの問題を解くためにも使用できますか? 最短経路を取得するように最適化する代わりに、経路があるかどうかを確認したいだけです。
これで、完全なグラフにはハミルトニアン パスが含まれるため、TSP ヒューリスティックを任意のグラフに拡張する必要があります。これは、2 つの都市の間にパスがない場合にエッジを無限値に設定し、有効なハミルトニアン パスである最初のパスを返すことで実行できます。
それはそれにアプローチする正しい方法ですか?または、ハミルトン パスに別のヒューリスティックを使用する必要がありますか? 私の主な関心事は、TSP 最適化が機能することをある程度確信できるため (ソリューションから始めてそれらを改善するため)、それが実行可能なアプローチであるかどうかです。
最善のアプローチは自分でテストすることだと思いますが、時間に制約があるため、このルートをたどる前に尋ねると思いました...(代わりに、ハミルトンパスの別のヒューリスティックを見つけることができました)
unit-testing - 遺伝的アルゴリズムのテスト方法
私はかなりの数の遺伝的アルゴリズムを作成しました。それらは機能します (合理的な解決策をすばやく見つけます)。しかし、私は今TDDを発見しました。遺伝的アルゴリズム(乱数に大きく依存している)をTDDの方法で書く方法はありますか?
より一般的に質問を投げかけるには、非決定論的なメソッド/関数をどのようにテストしますか。これが私が考えたことです:
特定のシードを使用します。そもそもコードを間違えた場合は役に立ちませんが、リファクタリング時にバグを見つけるのに役立ちます。
番号の既知のリストを使用します。上記と同様ですが、コードを手でたどることができます (これは非常に面倒です)。
定数を使用します。少なくとも私は何を期待すべきか知っています。RandomFloat(0,1) が常に 1 を返す場合、サイコロの目が常に 6 になるようにするとよいでしょう。
非決定論的なコードをできるだけ GA から移動するようにしてください。それがその目的の核心であるため、これはばかげているようです。
テストに関する非常に優れた書籍へのリンクも歓迎します。
genetic-algorithm - 遺伝的アルゴリズムに最適なパラメータを見つける方法は?
http://www.aforgenet.com/などの一部の遺伝的アルゴリズム フレームワークでは、突然変異率、人口サイズなどの多くのパラメーターが必要です。
そのようなパラメータの普遍的な最良の数はありますか? 問題(適応度関数の遅れ、突然変異の遅れ、組換えの遅れ、進化速度など)によると思います。私が最初に考えたのは、GA を使用して別の GA を構成することでした。
より良いアイデアはありますか?
c++ - C ++の遺伝的アルゴリズムに最適なデータ構造?
私は自分の問題(大学のプロジェクト)に合わせてカスタマイズされた遺伝的アルゴリズムを実装する必要があり、最初のバージョンでは、短い行列(染色体あたりのビット数x人口のサイズ)としてコード化されていました。
短いと宣言しているのですが、「0」と「1」の値のみを使用しているため、これは悪い設計でした...しかし、これは単なるプロトタイプであり、意図したとおりに機能しました。今度は、新しいものを開発するときです。 、改良版。ここではパフォーマンスが重要ですが、シンプルさも高く評価されています。
私は周りを調べて思いついた:
染色体の場合:-文字列クラス(「0100100010」など)-boolの配列-ベクトル(ベクトルはbool用に最適化されているように見えます)-ビットセット(最も自然なものに聞こえます)
そして人口のために:-C配列[]-ベクトル-キュー
クロモソームにはベクトル、ポップには配列を選ぶ傾向がありますが、このテーマの経験がある人の意見をお願いします。
前もって感謝します!
selection - 遺伝的アルゴリズムにおけるトーナメント選択の複数の反復
やあみんな、トーナメント選択の複数の反復がどのように機能するかについて少し混乱しています。
あなたがランダムなペア(またはk人のメンバー)を選択し、勝者を交配プールに入れ始めたことを知っています。交配プールがいっぱいになるまでこれを続けます。
しかし、その後どうなるかわかりません。
交配プールでランダムに交配を開始しますか?そして、新世代からランダムなペアを選択して、選択プロセスを再開しますか?
ありがとう。
c - フィットネスの効率的な実装-比例した「ルーレット」選択
私は現在、Cでキーボードレイアウト最適化アルゴリズム(Peter Klauslerによって設計されたものなど)を書いています。ここで説明するように、フィットネスに比例した選択を実装したいと思います(PDFリンク)。
ルーレットの選択では、ルーレットのホイールモデルに基づいて母集団のメンバーを選択します。円グラフを作成します。ここで、円全体に対するメンバーのスライスの面積は、総人口に対するメンバーのフィットネスの比率です。円周上のポイントがランダムに選択されているかどうかを確認できるように、適合度の高い母集団のメンバーは、選択される可能性が高くなります。これにより、自然淘汰が確実に行われます。
問題は、それを効率的に実装する方法がわからないことです。私は2つの方法を考えました。1つは信頼性が低く、もう1つは遅い方法です。
まず、遅いもの:
長さNのキーボードプールの場合、長さNの配列を作成します。配列の各要素には、実際には最小値と最大値の2つの要素が含まれています。各キーボードには対応する最小値と最大値があり、範囲はキーボードの適合性に基づいています。たとえば、キーボード0の適合度が10、キーボード1の適合度が20、キーボード2の適合度が25の場合、次のようになります。コード:
(この場合、必要な労力が少ないことを意味するため、適応度は低い方が良いです。)
次に、乱数を生成します。その番号がどの範囲に該当する場合でも、対応するキーボードは「強制終了」され、別のキーボードの子孫に置き換えられます。これを必要な回数繰り返します。
これに伴う問題は、それが非常に遅いことです。完了するにはO(N ^ 2)操作が必要です。
次に速いもの:
まず、キーボードの最低および最高の適合性を把握します。次に、(最低の適合度)と(最高の適合度)の間の乱数を生成し、生成された数よりも高い適合度ですべてのキーボードを強制終了します。これは効率的ですが、キーボードの半分だけを殺すことが保証されているわけではありません。また、「ルーレットホイール」の選択とは多少異なるメカニズムを備えているため、適用できない場合もあります。
だから問題は、効率的な実装とは何ですか?
この本の36ページ(リンク)にはやや効率的なアルゴリズムがありますが、問題は、ルーレットの選択を1回または数回だけ行う場合にのみ効率的であるということです。多くのルーレットの選択を並行して行う効率的な方法はありますか?
artificial-intelligence - プロジェクトで使用する AI に関連するトピックのアイデアをいくつか提供していただけますか?
論文の基礎となる AI に関連するトピックのアイデアが必要です。主に遺伝的アルゴリズムとニューラル ネットワークの技術に興味があります。私はすでにいくつかのアイデアを持っていますが、どれも私には当てはまらないようです!
どんな助けでも本当に感謝します!! :)
artificial-intelligence - AI の世界で印象的なアルゴリズムやソフトウェアは何ですか?
私は常に、AI と進化的アルゴリズムのアイデアが大好きです。残念ながら、私たち全員が知っているように、この分野は初期の頃に予想されたほど速く発展していません.
私が探しているのは、「すごい」要素を持ついくつかの例です。
予想外の方法で適応した自主学習システム。
特に動的で予想外の戦略を生み出したゲーム エージェント
有意義で洞察に富んだ出力を実際に生成した記号表現システム
複数のエージェント システムにおける興味深い緊急行動。
AI を定義するもののセマンティクスには立ち入りません。AIのように見えたり聞こえたりしたら、それについて聞いてみましょう.
最初に1997 年の話をします。
Adrian Thompson 博士は、遺伝的アルゴリズムを使用して FPGA 内に音声認識回路を作成しようとしています。数千世代を経て、彼はデバイスに「止まる」と「進む」の音声コマンドを区別させることに成功しました。彼はデバイスの構造を調べ、いくつかのアクティブな論理ゲートが回路の残りの部分から切断されていることを発見しました。彼がこれらのおそらく役に立たないゲートを無効にすると、回路は機能しなくなります...
編集
何か印象的なものを生み出したテクニック/アルゴリズムについて議論を続けることができますか? 初期段階にあるが有望な数千の AI テクノロジーについて読みたい場合は、Google で検索できます。
artificial-intelligence - ニューラルネットワークではなく、いつ遺伝的アルゴリズムを使用する必要がありますか?
問題を解決するためにニューラルネットワークとは対照的に遺伝的アルゴリズムをいつ使用するか(およびその逆)を決定するための経験則(または一連の例)はありますか?
両方の方法を混在させることができる場合があることは知っていますが、2つの方法の高レベルの比較を探しています。