SamSuka
foo52ru ТехноШаман
foo52ru ТехноШаман

boosty


Исходник проекта про альтруизм

Моделирование того, как альтруистичное поведение может фиксироваться в геноме.
Этот механизм называется Родственный отбор или Kin selection.
В симуляции наибольшее распространение получает тот вариант гена, который, в данных условиях, обеспечивает наибольшее своё распространение в следующем поколении.
При этом он может действовать в ушерб своего носителя.
Боты, если нет добычи, стараются держаться на расстоянии друг от друга.
Добычу видят на небольшом расстоянии и устремляются к ней.
При поедании добычи издают крик.
Дальность крика определяется значением в гене.
Интерфейс
Кнопками MODE можно переключать 4 режима:
- добыча даёт 500 единиц энергии
- добыча даёт 1000 единиц энергии
- добыча даёт 1500 единиц энергии
- добыча даёт 1500 единиц энергии, но сняты ограничения на порождение потомков
С помощью добычи я старался удерживать популяцию в размере 1800 особей.
Поэтому, чем больше энергии даёт добыча, тем реже она появляется на карте и тем больше расстояние между участками с добычей.
Именно из за увеличения расстояния возрастает средняя дальность крика.
Кнопка SCALE служит для зума. Можно при дальнем зуме кликнуть по карте и кнопкой SCALE приблизить это место, для наблюдения.
Вместо кнопки SCALE можно использовать клавишу ПРОБЕЛ.
При ближнем зуме можно перемещаться по карте с помощью клавиш со стрелками.
Кнопка GRAPH включает/отключает отображение гистограммы.
Кнопка SPEED позволяет ускорить симуляцию. При ускоренном режими карта не отображается, но график переодически обновляется, что позволяет следить за прогрессом.
Кнопка PAUSE включает/отключает паузу.
Кнопка SAVE включает/отключает сохранение скриншотов в папке world. Сохранение происходит только при отключенном SPEED, то есть в медленном режиме.
Размер сохранённых картинок 7680 × 4320 и занимают они много места на диске ( 1-2 Мб).
Для видео я сохранял их с прозрачным фоном.
Что бы сохранять с прозрачным фоном,
нужно в коде в функции void fullStep() изменить
pg.background(#626881);
на
pg.background(0,0);
Кнопка SAVE_G каждый 500 шаг сохраняет скриншот графика в папке graph.
Работает и в медленном и в быстром режиме.
Код написан в среде Processing
altruismFinal.zip

Исходник проекта про альтруизм

Comments

<div ><div><span class="text">Konstantin Hanusiak, В этом проекте геном представляет из себя одно число. От этого числа зависит дальность крика. Значения числа можно понять по цвету клетки.Снизу интерфейса есть шкала из кружочков, показывающих цвет при разном значении гена. Изменение значения гена в программе не предусмотрено</span></div><div></div></div>

foo52ru ТехноШаман

<div ><div><span class="text">подскажите пожалуйста как увидеть полностью и поменять геном уже существующей клетки</span></div><div></div></div>

Konstantin Hanusiak

<div ><div><span class="text">Спасибо  </span></div><div></div></div>

Evgenii Donskov


More Creators