Хочу поделиться с читателями Geektimes видео от foo52ru, которое стало стимулом для экспериментов и во многом определило содержание моей работы.
Комментарии (29)
Rusli
19.09.2017 15:09Для интересного результата важно правильно подобрать частоту мутации. Если она слишком низкая, эволюция будет слишком медленной. Если слишком высокая, то удачные варианты будут уничтожаться, не успевая как следует укорениться.
Durimar123
19.09.2017 17:29Просто замечательно!
Вопрос, про видео www.youtube.com/watch?v=PCx228KcOow
Родственники определяются по отличию на 1 ген, а что если проверка будет зависть от следующего числа в геноме? Т.е. не на 1 ген, а на N генов.
Тогда клетки смогут беречь не только самых ближних, но и достаточно дальних родственников.
Возможно такие образования будут более жизнеспособными.masterdak Автор
19.09.2017 18:06Я передал foo52ru ссылку на этот пост. Надеюсь, он прочитает Ваш комментарий. К сожалению, он пока не зарегистрирован на Geektimes.
От себя могу сказать, что Ваша идея хорошая.
foo52ru
19.09.2017 23:54Я пробовал разные варианты. Мир слишком маленький, нет изоляции одних ботов от других, поэтому геном у разных ботов не сильно отличается. Если за родственников принимать ботов с разницей в 2-3 гена, то будет только 2 колонии, сверху и снизу.
Durimar123
20.09.2017 12:54Весь смысл в том, что бы определение родственника было разным/мутирущим.
Тогда, возможно, будет большое сообщество выживающее при «не поедании» родственников R>1, а в нем должны появится паразиты R=0 поедающие этих родственников, а также «нац анклавы» R=1.
ps
Но вы наверно правы — для появления N таких сообществ нужна или очень очень большая карта, или искусственное разделение «стенками» на какой-то период времени.
pss
вот и появилась идея объединять 2 разных мира :) из разных сейвов.
evgenij_byvshev
20.09.2017 07:13Интересная задумка. А продолжение планируется и где можно посмотреть код?
masterdak Автор
20.09.2017 07:17Да, у foo52ru много идей для продолжения. Код можно посмотреть здесь: yadi.sk/d/AKx5raiN3Lghrp
shteyner
20.09.2017 13:25Хммм, я бы немного изменил модель:
1) Нужно ввести вторую табличку со статами, которая будет изменятся независимо от генома, и таким образом может появится дифференциация по тканям. Статы нужны на подобие: КПД фотосинтеза, атака, защита, кпд поглощения органики, прочность (HP), скорость передвижения.
2) В зависимости от статов клетка должна потреблять ресурсы. Скажем увеличим все ресурсы в 10 раз и поставим потребление КПД%/10 + ат + защ + HP/2 + скорость*5
3) Добавим гравитацию — вся органика каждые 5 ходов падает на одну клетку
Если честно оч. хотел бы посмотреть как это будет развиваться)foo52ru
22.09.2017 18:21Идея с состояниями интересна. Например, параметр изменяется от 0 до 7, если 0, то максимальный КПД фотосинтеза и отсутствие защиты от нападения, если 7 — максимальная защита, но нет фотосинтеза. Бот сам выбирает своё состояние, как стволовая клетка.
Например, если он окружён со всех сторон, то включает фотосинтез на максимум, если с краю, то включает защиту, а энергию получает от внутренних ботов. Получается своего рода дифференциация клеток.shteyner
22.09.2017 18:40Ну, подход с одним параметром полностью меняет задумку. У меня, ткани должны будут сами сформироваться (а может и нет), при этом хз какие функции они будут на себя брать. Еще, наверное, нужно добавить возможность передавать органику без поглощения внутрь колонии. Т.е. добавить одно доп. действие. Только тогда нужно будет разделить убийство и поглощение, т.е. после убийства остаётся органика.
В твоей же задумке, нет простора, либо это внутренний слой, либо внешний.
san-x
21.09.2017 00:15Оч круто! Давно хотел нечто подобное сделать, с блэк джеком и конкуренцией за ресурсы (чтобы взаимная агрессия и объединение в группы были необходимы для выживания), но дальше раздумий, как водится, не ушел… надеюсь, автор продвинется дальше.
san-x
21.09.2017 00:42Ох блин, только сейчас вторую часть глянул. Все, делать свою версию стало бессмысленным )
По идеям отписал автору под видео.
san-x
21.09.2017 00:51Пардон, не успел отоедактировать…
Вобщем, идеи пишу здесь:
А что если степень оценки родства тоже сделать изменяемой? Мне кажется, жесткое условие «1 ген» мешает формированию более хитрых колоний с плотоядными щупальцами по бокам, листьями-фотосинтезерами вверху и минералоядными щупальцами внизу.
Ну и можно добавить еще «рецепторов» на тему «обнюхивания» соседей — по цвету, кол-ву энергии и т.п.
Больше информации на входе — больше простора для всяческой самоорганизации.
san-x
21.09.2017 19:24Продолжаю общаться сам с собой, в надежде, что камменты как-нибудь долетят до автора :)
А еще есть ощущение, что надо избавиться от перезапуска мира с нуля (в т.ч. в случае полной смерти популяции), чтобы не терять бесследно удачные геномы.
Какие идеи:
а) увеличить мир до неприличных размеров, но сделать множественные отдельные области частично-изолированными друг от друга (аналог континентов, разделенных океанами, или просто долин, разделенных горными тяжелопереходимыми хребтами и т.п.), это позволит сосуществовать нескольким удачным геномам в примерно-одинаковых условиях (и до поры до времени не съедать друг друга), т.е. обеспечит разнообразие решений популяциями одной и той же задачи.
б) пусть съеденные трупы с какой-то вероятностью передают часть генов пожирателю. так, удачный геном, не выживший в следствие слишком неудачного стечения обстоятельств, имеет шанс не сгинуть бесследно, а внезапно возродиться и продолжить развитие (если он достаточно жизнеспособен).
в) внести элемент «самозарождения» жизни (на случай тотальной смерти всех популяций на карте), в виде периодического разбрасывания небольшого кол-ва случайных ботов со случайным геномом. В случае, если в этом месте жизнь активна — пришелец, скорее всего, будет съеден/затоптан/недопущен к ресурсам, но если там одна мертвечина вокруг — он имеет шансы начать здесь все с нуля (а с учетом п.«б» — может быть просто возродить древнюю популяцию).
Также, есть ощущение, что надо избавиться от бОльшей части жестких ограничений, а внести их также в геном, и отдать на волю эволюции:
а) степень мутогенности — не обязательно один ген, и только с заданной вероятностью… пусть будет хоть 1 ген со 100% вероятностью, хоть 10 генов, но с 0.0001%… понятно, что слишком мутогенные особи просто не дадут нормального потомства, слишком не-мутогенные — не смогут адаптироваться… но пусть эволюция решит, какая должна быть вероятность и степень мутации.
б) апоптоз; что если ввести команду «сдохнуть»? бессмертие каждой особи интуитивно кажется губительным для колонии вцелом, а периодическое помирание даже здоровых — залогом адаптивности… природа давно решила так… а почему бы не смоделировать этот процесс? будет ли запрограммированная смерть в геноме давать более жизнеспособные колонии?
в) о чем уже писал — также отдать на откуп эволюции метод оценки «чужой/свой»,
г) добавить больше «входных портов» боту: научить их видеть «цвет» соседа, кол-во энергии, количество «своих» вокруг… может даже научить видеть дальше одной клетки…
д) есть желание предложить также сделать изменяемым размер генома… например, через команды «увеличить геном» / «уменьшить геном»… возможно, эволюция нащупает более удачный баланс для данного мира, чем 64…
Ну и организационно, сразу видится такая архитектура:
1. на сервере повешать процесс-вычислитель, который просто берет из файла текущее состояние мира, пересчитывает его, сохраняет текущее состояние, сохраняет шаг истории;
2. и сделать веб-сервер, с которого любой может:
— следить за миром в рил-тайме, в т.ч. масштабировать мир (смотреть вцелом, масштабировать участки, и т.п.)
— проигрывать любую часть истории (так же, разглядывая мир вцелом или увеличенные участки)
— ну и там же — место для обсуждения (с таймкодами и гео-кодами… смотри, как на 100500-м терра-году от начала эры в координатах таких-то вот эти вон тех поедали)…
И да, я догадываюсь, что я сам так и не взялся за идею именно изза своей буйной фантазии и слишком больших планов :)
Но если хоть что-то из этого вдохновит автора развивать проект — буду с удовольствием наблюдать, и может даже помогу чем смогу.
svedach
22.09.2017 16:27Увлекаюсь данным направлением уже несколько лет.
Некоторые результаты выложил в: www.youtube.com/watch?v=h_rDySVmZQw. Надеюсь не сочтут за спам или рекламу.
Это была первая версия. Сейчас работаю над 3-ей версией, боты обладают разными сенсорами и могут поглощать различные типы пищи… В планах сделать онтогонистическую систему с хищниками и жертвами, но пока руки не доходят.
wikipro
23.09.2017 14:45Любопытно а можно мир в котором живут боты тоже сделать ботом реагирующим на ботов внутри, взаимодействующим сними, но не скрещивающимся? аналог Хозяина и симбионтов.
Leeloush_Keer
Я бы добавил что-то в духе "внезапная смерть". От рака, например.
P.S. люблю наблюдать за подобными стимуляциями. Продолжайте обязательно :-)
Alex_ME
Можно больше полов со сложными и запутанными механизмами. Было бы интересно.
foo52ru
Различные погодные условия добавлены в следующем видео, где боты в свободном выгуле, предоставленные сами себе.
www.youtube.com/watch?v=PCx228KcOow