こんにちは私は遺伝的アルゴリズムを研究しています。私は誰かが クロスオーバーステップで私を助けることができるかどうか疑問に思います。python-positionを変更せずにサブリストを取得
例:
dad=[1,2,3,4,5,6,7]
mom=[2,3,6,1,7,5,4]
私はお父さんのランダムなサブセットを選択したい、サブセットのサイズは、ランダムすることができます。例えば、[1,2,3]または[3,4,5]または[2,3,4]または[1,2]または[4,5]または[1,2,3,4]お父さんの元の順序でなければなりません。
たとえば、ランダムサブセットは[2,3,4,5] です。次に、私の子孫を[、2,3,4,5 ,,]にします。それから、私はママのリストを使って空の場所を埋めるつもりです。私はママのリストを繰り返したい。最初に2、2が既にリストに入っているので、2をスキップします。3、3も既にリストの子孫に入っているので、3をスキップします。6、6は子孫リストにないので、最初の利用可能な場所。だから子孫は今[6,2,3,4,5 ,,]です。結局、offspring
は[6,2,3,4,5,1,7]
すべてのヘルプははるかに高く評価されますする必要があります! 私が助けが必要な最も難しい部分は、この手順に到達する方法ですと考えています[,2,3,4,5,,]
おそらく私のためにママのリストを通した繰り返しです。
更新されたコード
dad=[1,2,3,4,5,6,7]
mom=[2,3,6,1,7,5,4]
upper=random.randint(0,len(dad)-1)
lower=random.randint(0,len(dad)-1)
slice=dad[lower:upper]
child=copy.deepcopy(dad)
j =0
for i in child:
if i not in slice:
child[j] = 0
j+=1
n=len(child)
h=0
k=0
while k <= len(child)-1:
if child[k] == 0:
if mom[h] not in slice:
child[k]=mom[h]
h+=1
k+=1
else:
h+=1
else:
k+=1
私はこれを正しく理解していますか?アルゴリズムの概要は一歩一歩はっきりしていますが、タスクを解決するためのコード*を1行書くことはできません。 pseduo乱数を生成するための** random **パッケージを探します。その最初のステップを得ることができます。 – Prune
*私たち*はどう見ているのですか?Pythonに質問してください。このプログラムは何をしていますか? (ヒント:あなたは私の提案のうち、下位と上位の値をチェックしていないので、完全に機能していません) – Prune
また、1文字の変数名でコードを読み取ったり、デスクチェックを行ったりすることはありません。 – Prune