2012-01-12 9 views
2

私は、Pythonで遺伝的アルゴリズムを書いて、バーチャル生物のための最適な一連の動きについて書いています。これは、2Dグリッドで最もランダムに配置された食べ物を得ることになります。それは知性を持っていません。それは単にパターン、すなわち円または正方形で動く。生物内に存在する環境のために2次元配列を作成するための私のコードはこれです:遺伝的アルゴリズムの環境を作成するにはどうすればよいですか?

grid = ([]) 
for i in range(5): 
    grid[i]=0 
    for j in range(5): 
     grid[i][j]=0 

(ボード[4] [5]は、x、yの4,5手段と、ボードの値[4]スペースが占有されているかどうかは、 に応じて[5]が0または1であることを示します。現在、プログラムは実際には各空間にゼロ値を割り当てています。リスト割り当てインデックスが範囲外です。 "どうすればこの問題を解決できますか?ところで、生物のための2D環境を作成するためのよりよい方法を知っている人はいますか?

+1

問題はGenetic Programmingの[Artificial Ant Problem](http://www.cs.ucl.ac.uk/staff/ucacbbl/bloat_csrp-97-29/node2.html)に似ています。興味があれば、この問題はPythonで[DEAP](http://deap.googlecode.com)で実装されています。次に[link](http://code.google.com/p/deap/source/browse/examples/gp_ant.py)の例を示します。 – CmdNtrf

答えて

3

あなたの配列は1つの要素に過ぎず、配列の外側にインデックスを作成しています。お試しください。

grid = [[[] for x in xrange(5)] for y in xrange(5)] 

グリッドの代わりに使用してください。これで、5×5のグリッドが表示され、グリッド[3] [4]にインデックスを付けることができます。

+0

ありがとう!正常に動作します。 – OverflowedStack

2

フィットネス機能の評価が必要な場合が多いため、効率的な実装は非常に有益です。 Numpyは、多次元配列をすぐに提供します。

numpy.zeros((5, 5)) 

これは、ゼロで塗りつぶされた5x5の配列を与えます。 Numpyは、純粋なPythonの実装よりも速くなる、値の出現をカウントするような素晴らしいものも提供しています。

+0

ありがとうございます。私は怒らないようにしよう。 – OverflowedStack

関連する問題