Не так давно я написал публикацию про генетический алгоритм и геном, состоящий из одной инструкции.


Хочу поделиться с читателями Geektimes видео от foo52ru, которое стало стимулом для экспериментов и во многом определило содержание моей работы.

Комментарии (29)


  1. Leeloush_Keer
    19.09.2017 11:50

    Я бы добавил что-то в духе "внезапная смерть". От рака, например.


    • разделить на самок и самцов, добавить половое размножение.
    • в перспективе погодные условия с различными дебаффами. Например: зима: -к скорости и потребляемой энергии.

    P.S. люблю наблюдать за подобными стимуляциями. Продолжайте обязательно :-)


    1. Alex_ME
      19.09.2017 20:22

      разделить на самок и самцов, добавить половое размножение.

      Можно больше полов со сложными и запутанными механизмами. Было бы интересно.


    1. foo52ru
      20.09.2017 00:00

      Различные погодные условия добавлены в следующем видео, где боты в свободном выгуле, предоставленные сами себе.
      www.youtube.com/watch?v=PCx228KcOow


  1. Arcanum7
    19.09.2017 12:56

    Опять Матрица…


  1. UncleJey
    19.09.2017 13:35

    Враждующие кланы! и PVP-online!
    Как вариант хищников, падальщиков и травоядных.
    Хотя это где-то было уже


    1. barbanel
      19.09.2017 14:35

      Караваны же!))
      Вы «И караваны грабить» забыли)


      1. UncleJey
        19.09.2017 16:01

        если вы про корованы, то это не тот сайт. Там нужно джва года ждать!


  1. Rusli
    19.09.2017 15:09

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


  1. dubakov
    19.09.2017 15:30
    -3

    Автор, судя по акценту это Иваново? Или что то близкое к нему?


    1. foo52ru
      19.09.2017 23:49

      Нижний Новгород


  1. Durimar123
    19.09.2017 17:29

    Просто замечательно!
    Вопрос, про видео www.youtube.com/watch?v=PCx228KcOow
    Родственники определяются по отличию на 1 ген, а что если проверка будет зависть от следующего числа в геноме? Т.е. не на 1 ген, а на N генов.
    Тогда клетки смогут беречь не только самых ближних, но и достаточно дальних родственников.
    Возможно такие образования будут более жизнеспособными.


    1. masterdak Автор
      19.09.2017 18:06

      Я передал foo52ru ссылку на этот пост. Надеюсь, он прочитает Ваш комментарий. К сожалению, он пока не зарегистрирован на Geektimes.

      От себя могу сказать, что Ваша идея хорошая.


    1. foo52ru
      19.09.2017 23:54

      Я пробовал разные варианты. Мир слишком маленький, нет изоляции одних ботов от других, поэтому геном у разных ботов не сильно отличается. Если за родственников принимать ботов с разницей в 2-3 гена, то будет только 2 колонии, сверху и снизу.


      1. Durimar123
        20.09.2017 12:54

        Весь смысл в том, что бы определение родственника было разным/мутирущим.
        Тогда, возможно, будет большое сообщество выживающее при «не поедании» родственников R>1, а в нем должны появится паразиты R=0 поедающие этих родственников, а также «нац анклавы» R=1.

        ps
        Но вы наверно правы — для появления N таких сообществ нужна или очень очень большая карта, или искусственное разделение «стенками» на какой-то период времени.

        pss
        вот и появилась идея объединять 2 разных мира :) из разных сейвов.


  1. evgenij_byvshev
    20.09.2017 07:13

    Интересная задумка. А продолжение планируется и где можно посмотреть код?


    1. masterdak Автор
      20.09.2017 07:17

      Да, у foo52ru много идей для продолжения. Код можно посмотреть здесь: yadi.sk/d/AKx5raiN3Lghrp


      1. evgenij_byvshev
        20.09.2017 09:15

        Спасибо за код!


  1. shteyner
    20.09.2017 13:25

    Хммм, я бы немного изменил модель:
    1) Нужно ввести вторую табличку со статами, которая будет изменятся независимо от генома, и таким образом может появится дифференциация по тканям. Статы нужны на подобие: КПД фотосинтеза, атака, защита, кпд поглощения органики, прочность (HP), скорость передвижения.
    2) В зависимости от статов клетка должна потреблять ресурсы. Скажем увеличим все ресурсы в 10 раз и поставим потребление КПД%/10 + ат + защ + HP/2 + скорость*5
    3) Добавим гравитацию — вся органика каждые 5 ходов падает на одну клетку

    Если честно оч. хотел бы посмотреть как это будет развиваться)


    1. foo52ru
      22.09.2017 18:21

      Идея с состояниями интересна. Например, параметр изменяется от 0 до 7, если 0, то максимальный КПД фотосинтеза и отсутствие защиты от нападения, если 7 — максимальная защита, но нет фотосинтеза. Бот сам выбирает своё состояние, как стволовая клетка.
      Например, если он окружён со всех сторон, то включает фотосинтез на максимум, если с краю, то включает защиту, а энергию получает от внутренних ботов. Получается своего рода дифференциация клеток.


      1. shteyner
        22.09.2017 18:40

        Ну, подход с одним параметром полностью меняет задумку. У меня, ткани должны будут сами сформироваться (а может и нет), при этом хз какие функции они будут на себя брать. Еще, наверное, нужно добавить возможность передавать органику без поглощения внутрь колонии. Т.е. добавить одно доп. действие. Только тогда нужно будет разделить убийство и поглощение, т.е. после убийства остаётся органика.
        В твоей же задумке, нет простора, либо это внутренний слой, либо внешний.


  1. san-x
    21.09.2017 00:15

    Оч круто! Давно хотел нечто подобное сделать, с блэк джеком и конкуренцией за ресурсы (чтобы взаимная агрессия и объединение в группы были необходимы для выживания), но дальше раздумий, как водится, не ушел… надеюсь, автор продвинется дальше.


    1. san-x
      21.09.2017 00:42

      Ох блин, только сейчас вторую часть глянул. Все, делать свою версию стало бессмысленным )


      По идеям отписал автору под видео.


      1. san-x
        21.09.2017 00:51

        Пардон, не успел отоедактировать…
        Вобщем, идеи пишу здесь:
        А что если степень оценки родства тоже сделать изменяемой? Мне кажется, жесткое условие «1 ген» мешает формированию более хитрых колоний с плотоядными щупальцами по бокам, листьями-фотосинтезерами вверху и минералоядными щупальцами внизу.
        Ну и можно добавить еще «рецепторов» на тему «обнюхивания» соседей — по цвету, кол-ву энергии и т.п.
        Больше информации на входе — больше простора для всяческой самоорганизации.


      1. san-x
        21.09.2017 19:24

        Продолжаю общаться сам с собой, в надежде, что камменты как-нибудь долетят до автора :)

        А еще есть ощущение, что надо избавиться от перезапуска мира с нуля (в т.ч. в случае полной смерти популяции), чтобы не терять бесследно удачные геномы.
        Какие идеи:
        а) увеличить мир до неприличных размеров, но сделать множественные отдельные области частично-изолированными друг от друга (аналог континентов, разделенных океанами, или просто долин, разделенных горными тяжелопереходимыми хребтами и т.п.), это позволит сосуществовать нескольким удачным геномам в примерно-одинаковых условиях (и до поры до времени не съедать друг друга), т.е. обеспечит разнообразие решений популяциями одной и той же задачи.
        б) пусть съеденные трупы с какой-то вероятностью передают часть генов пожирателю. так, удачный геном, не выживший в следствие слишком неудачного стечения обстоятельств, имеет шанс не сгинуть бесследно, а внезапно возродиться и продолжить развитие (если он достаточно жизнеспособен).
        в) внести элемент «самозарождения» жизни (на случай тотальной смерти всех популяций на карте), в виде периодического разбрасывания небольшого кол-ва случайных ботов со случайным геномом. В случае, если в этом месте жизнь активна — пришелец, скорее всего, будет съеден/затоптан/недопущен к ресурсам, но если там одна мертвечина вокруг — он имеет шансы начать здесь все с нуля (а с учетом п.«б» — может быть просто возродить древнюю популяцию).

        Также, есть ощущение, что надо избавиться от бОльшей части жестких ограничений, а внести их также в геном, и отдать на волю эволюции:
        а) степень мутогенности — не обязательно один ген, и только с заданной вероятностью… пусть будет хоть 1 ген со 100% вероятностью, хоть 10 генов, но с 0.0001%… понятно, что слишком мутогенные особи просто не дадут нормального потомства, слишком не-мутогенные — не смогут адаптироваться… но пусть эволюция решит, какая должна быть вероятность и степень мутации.
        б) апоптоз; что если ввести команду «сдохнуть»? бессмертие каждой особи интуитивно кажется губительным для колонии вцелом, а периодическое помирание даже здоровых — залогом адаптивности… природа давно решила так… а почему бы не смоделировать этот процесс? будет ли запрограммированная смерть в геноме давать более жизнеспособные колонии?
        в) о чем уже писал — также отдать на откуп эволюции метод оценки «чужой/свой»,
        г) добавить больше «входных портов» боту: научить их видеть «цвет» соседа, кол-во энергии, количество «своих» вокруг… может даже научить видеть дальше одной клетки…
        д) есть желание предложить также сделать изменяемым размер генома… например, через команды «увеличить геном» / «уменьшить геном»… возможно, эволюция нащупает более удачный баланс для данного мира, чем 64…

        Ну и организационно, сразу видится такая архитектура:
        1. на сервере повешать процесс-вычислитель, который просто берет из файла текущее состояние мира, пересчитывает его, сохраняет текущее состояние, сохраняет шаг истории;
        2. и сделать веб-сервер, с которого любой может:
        — следить за миром в рил-тайме, в т.ч. масштабировать мир (смотреть вцелом, масштабировать участки, и т.п.)
        — проигрывать любую часть истории (так же, разглядывая мир вцелом или увеличенные участки)
        — ну и там же — место для обсуждения (с таймкодами и гео-кодами… смотри, как на 100500-м терра-году от начала эры в координатах таких-то вот эти вон тех поедали)…

        И да, я догадываюсь, что я сам так и не взялся за идею именно изза своей буйной фантазии и слишком больших планов :)
        Но если хоть что-то из этого вдохновит автора развивать проект — буду с удовольствием наблюдать, и может даже помогу чем смогу.


        1. foo52ru
          22.09.2017 18:24

          Комменты долетели до автора :)
          Пока перевариваю.


  1. svedach
    22.09.2017 16:27

    Увлекаюсь данным направлением уже несколько лет.
    Некоторые результаты выложил в: www.youtube.com/watch?v=h_rDySVmZQw. Надеюсь не сочтут за спам или рекламу.
    Это была первая версия. Сейчас работаю над 3-ей версией, боты обладают разными сенсорами и могут поглощать различные типы пищи… В планах сделать онтогонистическую систему с хищниками и жертвами, но пока руки не доходят.


  1. wikipro
    23.09.2017 14:45

    Любопытно а можно мир в котором живут боты тоже сделать ботом реагирующим на ботов внутри, взаимодействующим сними, но не скрещивающимся? аналог Хозяина и симбионтов.


    1. foo52ru
      23.09.2017 15:17

      Можно, проблема, что идей больше, чем свободного времени :(


      1. san-x
        23.09.2017 16:00

        так это же прекрасно )
        вот если времени много, но идей нет — вот тогда что-то явно пошло не так )