今回は突然変異を作成します。
突然変異も以前作成した、ナップザック問題の時に作ったコードを流用しようと思ったのですが、
今回は一個体あたり、2つの遺伝子を持っていて、そのうちひとつのみを変異させて、
2つセットに戻して、ひとつの個体として個体群に格納する。
といった少々流用しにくい形になっているため、作りなおしました。
import random def main(): popGrope = [] mutprob = 0 # scoOrGean = 1 popSelect = 0 uriOrKai = 0 preMutGean = 0 afterMutEnki = 0 afterMutGean = 0 enkiSelect = 0 #突然変異 if random.SystemRandom().random() < mutprob: popSelect = random.SystemRandom().randint(0,len(popGrope)-1) uriOrKai = random.SystemRandom().randint(0,1) preMutGean = popGrope[popSelect][uriOrKai] afterMutEnki = random.choice([-1,1]) enkiSelect = random.SystemRandom().randint(0,popnum-1) afterMutGean = preMutGean[:enkiSelect] + [afterMutEnki] +\ preMutGean[enkiSelect+1:] afterMutPop = popGrope[popSelect] afterMutPop[uriOrKai] = afterMutGean popGrope.append(afterMutPop) #突然変異
0 件のコメント:
コメントを投稿