2015年1月28日水曜日

遺伝的アルゴリズムでカブロボ制作④ 淘汰方法の設計

前回までで、遺伝子の初期化、遺伝子の評価のコードは完成しました。
あと残っているのは、淘汰、突然変異、交差なのですが、
今回は淘汰を作っていこうと思います。
淘汰は今まで作った遺伝的アルゴリズムのものと同様に、
評価で求められたスコアの良かった順に並べ替えて、
上から20%を残し、80%を淘汰するといったようなものをつくろうと思います。

def main():
    popsize
    elite
    topelite = int(elite * popsize)
    popGrope = []
    #淘汰開始
    score = []
    popScore = [(score[i],popGrope[i]) for i in range(popsize)]
    popScore.sort()
    popScore.reverse()
    ranked = [v for (s,v) in popScore]
#    popGrope = ranked[:topelite]
    return ranked[:topelite]
    #淘汰終わり


今まで一番シンプルなものになりました。
淘汰方法には他にも、トップは残して、2番手以降は生存確率をかけて残していくようなやり方もあるみたいです。
次回は突然変異を作ります。

0 件のコメント:

コメントを投稿