Как мне создать среду для моего генетического алгоритма? - PullRequest
2 голосов
/ 12 января 2012

Я пишу генетический алгоритм в python об оптимальной серии ходов для виртуального организма, который даст ему наиболее случайно размещенную пищу в 2D-сетке. У него нет интеллекта; он просто движется по шаблону, т.е. по кругу или квадрату. Мой код для создания 2D-массива для среды, в которой обитают организмы, таков:

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

(board [4] [5] означает 4,5 в x, y; а значение board [4] [5] равно 0 или 1, в зависимости от занято ли пространство. Прямо сейчас программа действительно просто назначает нулевое значение для каждого пробела, указывающее, что там нет ни одного человека)

Это просто говорит "индекс назначения списка вне диапазона". Как я могу это исправить? Кстати, кто-нибудь знает лучший способ создания 2D-среды для организмов?

Ответы [ 2 ]

3 голосов
/ 12 января 2012

сейчас ваш массив - это только один элемент, и вы индексируете вне массива.Попробуйте это

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

вместо вашей сетки.Теперь вы получите сетку 5 на 5, и теперь вы можете индексировать сетку [3] [4].

2 голосов
/ 12 января 2012

Вероятно, потребуется много оценок вашей фитнес-функции, поэтому эффективная реализация может быть очень полезной для вас. Numpy предлагает многомерные массивы из коробки.

numpy.zeros((5, 5))

это даст вам массив 5x5, заполненный нулями. Numpy также предлагает полезные вещи, такие как подсчет вхождений значения, что будет намного быстрее, чем в чистой реализации Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...