И так, в своей первой статье расскажу про одну интересную программку которую я написал на днях, программа является очень упрощенной версией симуляции эволюционного процесса. Суть такая, есть бот, бот имеет параметры энергии, и скорости, все, на этом переменные значения заканчиваются, почему переменные узнаем чуть позже.
Бот
Весь функционал бота это нахождение еды и, в последствии, передвижение к ней, никого не напоминает?)) На передвижение бот тратит энергию, зависимость траты энергии от скорости может быть выражена абсолютно разными формулами, с которыми достаточно интересно экспериментировать. Когда энергия бота кончается, он умирает. Так как же восполнять энергию? На этот вопрос я и спешу ответить: На поле присутствует еда, которая со временем восполняется, восполнение можно так же задавать формулами, но традиционной стала такая схема, если на поле еды меньше 25 единиц, то восполняется одна еда за тик (единица времени), если меньше 15 единицы, тогда две за тик, еда появляется в рандомной точке на поле. Одна единица еды восстанавливает 100 энергии, чтоб вы примерно могли понимать отношение энергии, скорости и полезности еды, я нагружу вас некоторыми значениями.
Для первого эксперимента была взята формула расчета энергии к скорости такая, потеря энергии равна скорости, по факту более быстрые боты имели преимущество, потому что боту со скоростью 6, чтобы пройти участок в 6 единиц расстояния требовался один тик, а боту со скоростью 1, чтобы пройти расстояние в 6 требуется 6 тиков.
Теперь сориентирую вас в примерном понимании скорости, поле имеет вид прямоугольника со сторонами 640 и 480, сам бот имеет форму круга диаметром в 7.
Эволюция
Теперь про самое важное: Эволюцию. Когда энергия бота достигает 400 единиц - каждый тик бот имеет шанс родить ребенка, шанс составляет 10%. Шанс того что ребенок будет абсолютно идентичен родителю 3/4, а 1/4 того, что ребенок родится с мутацией, мутация здесь влияет лишь на параметр скорости, мутация может дать ребенку случайную скорость в диапазоне от 'скорость родителя -5' до 'скорость родителя +4'.
В основные понятия я вас посвятил, теперь про начало симуляции, поле заполняется определенным количеством ботов, в первом эксперименте я использовал 12 штук, и определенным количеством еды, я использовал 40, так много начальной еды нужно чтоб боты разродились на детей, что немного ускорило бы процесс эволюции.
Первый эксперимент
И так целью первого эксперимента было доказательство теории эволюции, эксперимент не ставил целей открыть что то новое, а нес чисто демонстративный характер. И вообщем то он удался, на карту были запущены 12 ботов, начальная энергия каждого была 200 единиц, начальная скорость каждого варьировалась от 4 до 6. После 1 минуты симуляции, средняя скорость ботов составляла уже 12, и до остановки симуляции только увеличивалась, эксперимент доказал что более совершенные организмы вытесняют менее совершенных.
Думаю что на первую статью материала хватит, разве что пара скриншотов:
Теперь прикреплю gif файл для наглядности
Думаю на этом все, скоро будет еще статейка про формулы потребления энергии от скорости, надеюсь вам понравилось