問題タブ [roulette-wheel-selection]
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.
genetic-algorithm - 遺伝的アルゴリズムにおけるルーレット選択
ルーレット選択関数の擬似コードを提供できる人はいますか? これをどのように実装しますか:

この数学表記の読み方がよくわかりません。私は確率や統計を取ったことがありません。
algorithm - ルーレットホイール選択アルゴリズム
ルーレット選択関数の擬似コードを提供できる人はいますか? これをどのように実装しますか: この数学表記の読み方がよくわかりません。これには一般的なアルゴリズムが必要です。
c - フィットネスの効率的な実装-比例した「ルーレット」選択
私は現在、Cでキーボードレイアウト最適化アルゴリズム(Peter Klauslerによって設計されたものなど)を書いています。ここで説明するように、フィットネスに比例した選択を実装したいと思います(PDFリンク)。
ルーレットの選択では、ルーレットのホイールモデルに基づいて母集団のメンバーを選択します。円グラフを作成します。ここで、円全体に対するメンバーのスライスの面積は、総人口に対するメンバーのフィットネスの比率です。円周上のポイントがランダムに選択されているかどうかを確認できるように、適合度の高い母集団のメンバーは、選択される可能性が高くなります。これにより、自然淘汰が確実に行われます。
問題は、それを効率的に実装する方法がわからないことです。私は2つの方法を考えました。1つは信頼性が低く、もう1つは遅い方法です。
まず、遅いもの:
長さNのキーボードプールの場合、長さNの配列を作成します。配列の各要素には、実際には最小値と最大値の2つの要素が含まれています。各キーボードには対応する最小値と最大値があり、範囲はキーボードの適合性に基づいています。たとえば、キーボード0の適合度が10、キーボード1の適合度が20、キーボード2の適合度が25の場合、次のようになります。コード:
(この場合、必要な労力が少ないことを意味するため、適応度は低い方が良いです。)
次に、乱数を生成します。その番号がどの範囲に該当する場合でも、対応するキーボードは「強制終了」され、別のキーボードの子孫に置き換えられます。これを必要な回数繰り返します。
これに伴う問題は、それが非常に遅いことです。完了するにはO(N ^ 2)操作が必要です。
次に速いもの:
まず、キーボードの最低および最高の適合性を把握します。次に、(最低の適合度)と(最高の適合度)の間の乱数を生成し、生成された数よりも高い適合度ですべてのキーボードを強制終了します。これは効率的ですが、キーボードの半分だけを殺すことが保証されているわけではありません。また、「ルーレットホイール」の選択とは多少異なるメカニズムを備えているため、適用できない場合もあります。
だから問題は、効率的な実装とは何ですか?
この本の36ページ(リンク)にはやや効率的なアルゴリズムがありますが、問題は、ルーレットの選択を1回または数回だけ行う場合にのみ効率的であるということです。多くのルーレットの選択を並行して行う効率的な方法はありますか?
sql - SQL クエリを使用したルーレット ホイールの選択
ルーレット ホイールの選択を実装していますが、できるだけ多くのコードを SQL に保持したいと考えています。私の試みは以下のクエリをもたらしました。$1 は、SQL コードに送信する weight と同じ範囲の確率変数です (random() を 1 回だけ呼び出す方法が明確ではありませんでした)。重量は、ホイールの列のスロットのサイズです。random() は、乱数を返す SQLITE 関数です。クエリの全文は次のとおりです。
私の質問は、これはまだルーレット盤ですか? 基本的なアルゴリズムでは、すべての重みを合計してから、範囲 0..sum のランダムな値を選択する必要があります。これにより、どの行が選択されたかが決まります。代わりに、このルーチンは最初に 1 つの乱数に一致するすべての行をフィルター処理し、次にそれらの順序をスクランブルして最初のものを選択します。
微妙な変更の 1 つは、random() への 2 回目の呼び出しの代わりに $1 を使用することです。これにより、ルーチンがより公平になる可能性がありますが、そうであるかどうかはわかりません。これは、各行にフィルターをかけるかどうかの独自の機会が与えられたことを意味します。
ですから、明らかに異なる手順に従うため、このミラー ルーレット ホイールがどのくらいの価値があるかを尋ねていると思います。しかし、それは結果を反映していますか?
java - Java で書かれた GA
私は、本「ゲーム プログラマーのための AI テクニック」から取り上げたテクニックに基づいて、遺伝的アルゴリズムを書こうとしています。 2 次元配列でプログラム内でランダムに生成されます。
私は最近、疑似コードに出くわし、それを実装しようとしましたが、実行する必要があることの詳細に関していくつかの問題に遭遇しました。私は多くの本といくつかのオープンソース コードをチェックしましたが、まだ進歩するのに苦労しています。人口の合計適合度の合計を取得し、合計とゼロの間の乱数を選択し、その数が親よりも大きい場合はそれを上書きする必要があることを理解していますが、これらのアイデアの実装に苦労しています.
私のJavaは錆びているので、これらのアイデアの実装に助けがあれば大歓迎です。
flash - チャットルーレットのアーキテクチャ
チャットルーレットの背後にあるアーキテクチャについて説明してもらえますか? オーディオサポートのみを実装する同様のプロジェクトについて考えていました(初心者向け)。これをフラッシュサーバーにセットアップする最良の方法はありますか? もしそうなら、どのようにフラッシュに取り掛かるべきですか? flex 4 が必要ですか? 私は C++、C#、および Java の初心者経験がありますが、Web 用に何かを開発したことはありません。
また、ランダマイザーが参加者をどのように照合するのか疑問に思っていました. このようなコードをどのようにコーディングしますか。
ここでは明らかに無知であり、この問題に関するアドバイスをいただければ幸いです。コピーと貼り付けの解決策は期待していません。皆さんがこの問題にどのように取り組むかを聞いていただければ幸いです。
どうもありがとうございました
java - 遺伝的アルゴリズムのルーレット選択関数
そこで、遺伝的アルゴリズムのルーレット選択関数を次のように記述しました。
問題は、戻り条件を満たすためにのみ配置された空白文字列を返す場合があることです。これは一般的に問題ではありませんが、次のステップでクロスオーバー ステージが発生するため、実行中に GA が終了することがあります。何か案は?
selection - 遺伝的アルゴリズム-定常状態の選択とは何ですか?
私は遺伝的アルゴリズム、特にドーキンスイタチタイプの最終年度プロジェクトを行っています。定常状態の選択を行うために、ルーレットの選択とトーナメントの選択を行いましたが、それが何であるか正確にはわかりません。オンラインで見つけた参照はすべてかなりあいまいです。
誰かがそれをどのように実装すべきか知っていますか?どんなポインタも素晴らしいでしょう。
どうもありがとう。
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文字)のソリューションが得られます。