2015年1月25日日曜日

遺伝的アルゴリズムでカブロボ制作① 遺伝子の設計

いよいよ遺伝的アルゴリズムでカブロボを作り始めたのですが、
一気につくろうと思うと気が遠くなるとおもいましたので、小分けにしてしてつくろうと思います。
まず最初に作るのは、遺伝子の設計です。



遺伝子は構想の時も書いたともうのですが、もう一度整理して書きます。
まず個体数は任意です。(仮に50としておきます。)
それぞれの個体に遺伝子を持たせるのですが、
一つの遺伝子で売り買いを両方共コントールするのは難しいと思いましたので、
1個体に2つの遺伝子をもたせます。
遺伝子はそれぞれ売りと買いをコントロールします。

どんな遺伝子をもたせるかというと、
0日前と1日前の上がり下がり、
1日前と2日前の上がり下がり、
.
.
.
34日前と55日前の上がり下がり、
55日前と89日前の上がり下がり、
を上がったら1下がったら0とします。
結局のところは0と1の配列を2つ作ります。
これがそれぞれ活性化したら売り、または買いを発動させるのですが、
それはまた評価関数を作るところで見ていこうと思います。

今回はここまでを作ります。

import random
def main():
    #遺伝子の初期化
    popSize = 50 #個体数
    geanLength = 10 #遺伝子長さ
    pop = []    #個体
    popGroup = []
    kaiGean = []    #買い遺伝子
    uriGean = []    #売り遺伝子
    enki = 0    #0or1
    for i in range(popSize):
        for j in range(geanLength):
            enki = random.randint(0,1)
            kaiGean.append(enki)
        for j in range(geanLength):
            enki = random.randint(0,1)
            uriGean.append(enki)
        pop.append(list(kaiGean))
        pop.append(list(uriGean))
        kaiGean =[]
        uriGean = []
        popGroup.append(list(pop))
        pop =[]
    print popGroup


    #遺伝子の初期化
if __name__ == '__main__':
    main()


これで遺伝子を2つ持つ個体が50個できたと思います。
では次回は肝心な評価関数をつくろうと思います。

0 件のコメント:

コメントを投稿