http://dj_begemot.livejournal.com/ ([identity profile] dj-begemot.livejournal.com) wrote in [personal profile] macroevolution 2013-04-12 08:35 pm (UTC)

Цель программы -- узнать, как поведет себя такой-то мир. Мир -- плоское дискретное поле ("в клеточку") примерно 200х200, края склеены (топология тора). Время -- тоже дискретно, симуляция идет пошагово. На каждом шаге поле в случайных местах с определенной вероятностью (параметр симуляции) возникает "еда".

На поле есть изначально какое-то количество "существ", которые умеют двигаться за один ход на любую ближайшую клетку, и видят ближайшие клетки (есть ли на них еда). Решение -- куда двигаться и двигаться ли вообще -- принимает простая нейронная сеть (однослойная, кажется), на вход которой подается состояние всех 8-и соседних клеток, плюс запас еды у самого существа (т.е. степень голодности).

Если у существа запас еды падает до нуля -- оно умирает и убирается с доски. Если запас еды превышает 2 первоначальных -- существо делится на два, коэффициенты нейронных сетей которых слегка подправляются случайным образом (это "мутации"). Изначально значения коэффициентов у нулевого поколения выбираются случайным образом.

Являются ли существа и мир разными программами -- нет. Но это разные модули программы. "Мир" знает о существах только то, что они есть в таких-то точках карты, и что если существо зашло на клетку с едой, то еду надо передать существу. Аналогично, существа о мире знают только про соседние ячейки -- все поле они не видят.

Post a comment in response:

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting