一気につくろうと思うと気が遠くなるとおもいましたので、小分けにしてしてつくろうと思います。
まず最初に作るのは、遺伝子の設計です。
遺伝子は構想の時も書いたともうのですが、もう一度整理して書きます。
まず個体数は任意です。(仮に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 件のコメント:
コメントを投稿