問題タブ [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.
python - 私の遺伝的アルゴリズムの問題点
遺伝的アルゴリズムがどのように機能するかを理解しようとしています。何かを書いてみることで学んだことはすべてそうですが、私の知識は非常に限られており、これが正しいかどうか確信が持てません。
このアルゴリズムの目的は、人口の半分がすでに感染している場合、群れの半分が病気に感染するのにどれくらいの時間がかかるかを調べることです. これは私の頭の中で思いついた例にすぎないので、これが実行可能な例であるかどうかはわかりません.
どうすれば自分の知識を向上させることができるかについて、いくつかのフィードバックをいただければ幸いです。
コードは次のとおりです。
algorithm - 古典的な 0-1 ナップザックを解決するために、遺伝的アルゴリズムと動的プログラミングのどちらが最適な方法ですか?
次のような問題があるとしましょう:
- ナップザックの容量 = 2,000 万
- アイテム数 = 500
- 各アイテムの重量は1億から2000万の間の乱数です
- 各アイテムの利益は1~10の乱数
では、私の問題に最適な方法はどれですか? GAまたは動的計画法?
初心者なので簡単な説明をお願いします。...
algorithm - 特定の遺伝的アルゴリズムのコスト関数
私は遺伝的アルゴリズムを作成するタスクを割り当てられています。これは、相互接続の程度を最小限に抑えてコンポーネントを 2 つの機器ラックに割り当てることを目的とする割り当て問題です。
基本的に私がしなければならないことはA、コンポーネント接続の隣接リストであるマトリックスを読み取ることです。componentと componentcij間の接続数を表します。毎回対称である必要があります。母集団があり、すべての値は 2D 配列に格納されています。これが私の実装です。ij
読み込まれた行列Aは隣接行列であり、人口はアイテムをビン化する方法を決定するものです。読み込まれた行列の対応する要素が配置されている場合、ラックはbin0およびであり、同じ規則が の場合に適用されます。bin1population[cij] = 0Abin0population[cij] = 1
ここでの問題は、最小量の相互接続を与える母集団行列の行を見つけることです。これは、異なるビン内のコンポーネント間の重みの合計です。
これは、基本ケースのイメージです。

...A読み込まれたマトリックスが右側にあり、母集団が下に表示され、マトリックス内の要素Aがビニングされる方法が中央に表示されます。まだペナルティを計算できます。これは教授によって与えられた制約です。また、各ビンにいくつの要素があるかを判断することもできますが、これまでの説明と図に示されているようにコストを計算することはできません。まだこれは私のコスト関数です:
アイデアはm、計算全体と要素のどこにいるかを追跡し、行と列をスキャンして母集団内の接続を探し、接続が見つかったときに、i交差するエッジの重みの合計としてその接続を反映する必要があることです。 2つのビン。現時点では、これは正しく機能しません。jcost[i]
c++ - C++ 非互換型: 対立遺伝子頻度の計算
入力ファイルは次のようになります。
1-1_サンプル1 GCCCATGGCT 2-1_サンプル1 GAGTGTATGT 3-1_サンプル1 TGTTCTATCT 1-1_サンプル2 GCTTAGCCAT 2-1_サンプル2 TGTAGTCAGT 3-1_サンプル2 GGGAACCAAG 1-1_サンプル3 TGGAAGCGGT 2-1_サンプル3 CGGGAGGAGAGA3
背景: 私は C++ に非常に慣れていないため、大学院での研究を補うために C++ を使用する方法を独学で学ぼうとしています。私は遺伝学の博士号候補で、さまざまな進化の歴史をモデル化し、それらが集団全体の対立遺伝子の頻度にどのように影響するかを研究しています。
質問: 入力ファイルから作成した「dna」配列からデータの特定の部分を抽出しようとしています。たとえば、ここでは別の配列 "Af" を作成しました。そこでは、いわば dna 配列の最初の "セル" のカウントを抽出しようとしています。これを行う目的は、特定の細胞グループのカウントを DNA アレイ全体と比較して頻度を計算できるようにすることです。これを行う方法がわかりません。「「FLOAT[1][1]」への「FLOAT」の割り当てに互換性のないタイプがあります」
さまざまなフォーラムでこれを調査するのに多くの時間を費やしましたが、このエラーが何を意味するのか、達成しようとしていることを達成する方法を理解できないようです。
したがって、私が視覚化している DNA 配列は、4 つの行 (A、C、G、T) があるように入力ファイルから作成されます。次に 10 列 (一連のヌクレオチドごとに 1 列)。次に、この「グリッド」が 3 回スタックされます (入力ファイルにリストされているように、サンプルごとに 1 つの「シート」(ここでのサンプルは母集団を意味し、母集団ごとに 3 人の個体が存在します))。したがって、このグリッドのスタックから、たとえば、最初のセル (サンプル 1 の位置 1 の A の数) を抽出したいと考えています。次に、この数をすべてのサンプルの位置 1 の A の総数と比較します。この頻度は、テストしているモデルにとって意味のある数値になります。
問題は、dna配列の一部を抽出する方法がわからないことです.この要約された例を理解したら、非常に大きな入力ファイルに適用し、一度に複数のセルを抽出したいと思うでしょう.
c++ - 「std::bad_alloc」のインスタンスをスローした後に Mergemap の終了が呼び出される
Mergemap ツールを実行して、2 つの遺伝子マップをマージしています。サンプル データをダウンロードし、サンプル入力データのマージ マップを実行しています。次のエラーが表示されます
誰でもこれを修正するのを手伝ってください
java - Java コレクション - シャッフル リピート アイテム
そうですね、私は大学のプロジェクトで GA アルゴリズムを実行していますが、クロスオーバーを行っているときに、100 であるはずの個人の長さが変更されていることに気付きました。
100 個の City オブジェクト (巡回セールスマンのバージョン) の ArrayList を作成し、そこから 100 個の ID 番号のパスを作成し、それを String[] に渡します。ID は 0 から 99 までです。ただし、Collections クラスを使用してシャッフルすると、シャッフルされますが、エントリも重複します。これがコードです。
}
これは現在のサンプル出力です (長くなったので最初の 3 つだけを掲載します)。1 つまたは 2 つの繰り返しを太字で示しています。もっとあるかもしれませんが、1つは多すぎます!
0: 60+74+94+39+13+76+42+60+59+27+3+19+13+44+90+33+3+84+94+66+26+15+30+65+ 75+37+82+86+97+60+54+10+72+22+87+59+68+82+58+33+94+13+70+58+54+31+93+25+91+ 10+94+14+89+73+39+67+12+41+99+46+28+62+32+96+37+46+9+81+33+36+42+ 77 +1+21+ 39+61+41+81+23+73+42+13+66+35+51+64+2+11+96+87+75+24+50+8+86+52+32+35+73+ 77 + 距離: 13781+834427040787
1: 2+89+43+7+58+32+71+44+96+63+2+57+12+34+53+43+94+14+97+18+91+40+18+86+ 46+70+46+46+46+98+50+0+45+44+94+34+17+ 89 +72+1+9+99+40+97+ 88 +3+12+38+5+ 41+2+26+74+96+33+33+29+16+74+18+10+13+96+12+16+76+77+2+0+ 89 +18+36+88+56+ 35+33+28+ 88 +35+86+61+98+99+66+31+90+23+86+45+74+2+88+80+84+19+33+81+23+90+ 37+ 距離: 14157+066270019255
2: 69+13+20+68+8+80+58+26+57+1+45+73+83+13+32+58+10+17+76+25+99+29+28+31+ 68+95+88+91+19+22+86+97+75+64+1+49+19+88+55+96+3+62+23+ 45 +31+63+39+52+70+ 70+35+2+86+49+34+49+7+2+72+37+37+81+46+23+82+7+35+65+74+64+80+43+48+3+ 5+46+35+30+94+55+47+ 45 +79+83+58+40+95+94+98+84+28+94+61+87+1+40+83+55+18+ 74+ 距離: 13178+332276530997
}
baseInd に 0 から 99 の出現が 1 つだけ含まれるようにしています。
それは間違いなく(多分!) それを引き起こしているシャッフルのようです。何か案は?
--- その他のコード ----
これは City オブジェクトを作成するメソッドです。.csv ファイルから読み取ります。上記のコードはシャッフルの前に 0 から 99 を出力するので、私はこれに関心がありません。
baseInd が作成された後に問題が発生し、出力のこの時点で出力が (ミューテーションまたはクロスオーバーを介して) 編集されていないため、問題に関連して実際に追加できるものは他にありません。
awk - 単一列の値に従って大きなファイルを分割する (AWK)
6 列目の値 (約 10*10^3 の一意の値) に従って、大きなファイル (10^6 行) を分割したいと思います。ただし、レコードの数が多いため、機能させることができません。簡単なはずですが、すでに何時間もかかっており、それ以上先に進むことができません。
私は 2 つのオプションを試しました:
オプション 1
オプション 2
これによりエラーは発生しませんが、作成されるファイルには「グループ化」値 $6 に対応する最後の行のみが含まれます
これは私のファイルの始まりですが、このファイルは非常に小さいため、エラーは発生しません。