Игра с человеком

Вы получили в ходе эволюции программу, которая победила всех своих кибернетических соперников. Теперь самое время сыграть с ней самому. Для этого создайте еще один класс, где также будет метод evaluate, который рисует доску и просит пользователя сделать ход. Добавьте в файл gp.py класс humanplayer: class humanplayer: def evaluate(self,board):

#       Получить мою позицию и позиции других игроков me=tuple(board[0:2])

others=[tuple(board[x:x+2]) for x in range(2,len(board)-1,2)]

#       Нарисовать доску for i in range(4):

for j in range(4): if (i,j)==me:

print ‘O’, elif (i,j) in others:

print ‘X’, else:

print ‘.’, print

#       Показать ходы, для справки

print ‘Ваш последний ход %d’ % board[len(board)-1] print ‘ 0’ print ‘2 3’ print ‘ 1’

print ‘Введите ход: ‘,

#       Вернуть введенное пользователем число move=int(raw_input( ))

return move

Начинайте игру в интерактивном сеансе: >>> reload(gp)

<module ‘gp’ from ‘gp.py’>

>>> gp.gridgame([winner,gp.humanplayer( )])

. O . .

. X

Ваш последний ход -1 0

1

Введите ход:

Если программа хорошо эволюционировала, то победить ее будет довольно трудно. Ваша программа почти наверняка научилась не ходить два раза подряд в одном направлении, поскольку это влечет немедленную гибель, но то, в какой мере она освоила другие стратегии, зависит от конкретного прогона evolve.

Направления развития

Эта статья была лишь кратким введением в генетическое программирование – обширную и быстро развивающуюся дисциплину. Вы ознакомились с самыми простыми задачами, когда на построение программы уходят считанные минуты, а не дни, но те же принципы можно распространить и на более сложные проблемы. Наши популяции состояли из очень небольшого количества программ по сравнению с тем, что встречается в реальных задачах. Обычно популяция насчитывает тысячи или десятки тысяч особей. Рекомендую попробовать свои силы на более трудных задачах и увеличить размер популяции, но будьте готовы ждать несколько часов или дней, пока программа будет работать. В следующем разделе мы наметим несколько направлений развития простой модели генетического программирования для различных приложений.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100