Всем привет. В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.

Как это выглядит?

картинка кликабельна

На компьютере создаётся виртуальная среда со своими правилами и выпускается первая простейшая живность. Буду называть их ботами. Боты могут погибнуть или выжить и дать потомство. Потомок может слегка отличаться от предка.

Ну а дальше за работу принимается эволюция и естественный отбор.

А мне остаётся только наблюдать за развитием мира.

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

Поведением ботов управляет код, записанный в них.

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

Внутреннее устройство кода — это самое интересное в проекте.

Код должен быть простым и выдерживать различные модификации (случайное изменение любого элемента в коде) над собой без синтаксических ошибок.

К коду мы вернёмся позже, сначала опишу сам мир.

Описание «мира ботов»


Мир представляет из себя двухмерное, разбитое на квадраты поле. По горизонтали он замкнут по кругу, то есть если бот выйдет за левый край, то появится с правой стороны. Сверху и снизу движение ограниченно стеной. Мир, по задумке — это разрез водоёма, чем выше, тем больше энергии можно получить от Солнца. В нижней половине энергия Солнца уже не доступна. Собственно, этого уже достаточно. Я начинал эксперименты именно с таким миром.

Затем добавил «минералы» в нижней части из которых можно получить энергию. Чем глубже, тем больше «минералов» бот может получить. После этого нижняя часть мира тоже стала заселяться.

Боты могут перемещаться по восьми направлениям и прощупывать соседние с собой клетки.
Боты могут съедать других ботов, находящихся на соседней клетке.

Боты копят энергию и когда накопят заданное количество, от них отпочковывается их клон.
В клона записывается та же программа, что и в родителе, но в одном случае из четырёх случайным образом меняется один байт в программе. Это может никак не повлиять на поведение клона, так как не все команды в программе-геноме выполняются, большая часть генома может быть не задействована. Также это может вызвать ухудшение или улучшение способностей бота выживать в данном мире. В первом случае бот либо погибнет, либо не сможет оставить много потомков. В случае улучшения способностей бота, он с большей вероятностью оставит больше потомства, которое вытеснит менее удачных соседей.

Боты не умирают от старости. Бот может погибнуть, если запасы его энергии станут ниже нуля, если его съест другой бот и если он накопил максимальное количество энергии, должен отпочковать потомка, но окружён со всех сторон и не может этого сделать. После смерти, если он не был съеден, бот превращается в органику, которая начинает тонуть, пока не встретит препятствие. После этого органика остаётся в подвешенном состоянии. Органику могут поедать другие боты.

Здесь я дал краткое представление о виртуальном мире ботов, достаточное для понимания дальнейшего материала. Собственно сам мир не столь важен, можно экспериментировать с разными мирами. Куда интересней, как устроен код-геном

Код-геном


Код-геном представляет из себя цепочку чисел. Каждое число — это какая то команда (в простейшем случае). Также есть указатель текущей команды (далее УТК), который показывает, какая команда будет сейчас выполняться и после выполнения команды, указатель перемещается к следующей команде. Если указатель вышел за край цепочки, то он появляется с противоположной стороны, то есть цепочка команд замкнута по кругу. Изначально я выбрал размер цепочки в 64 ячейки и назначил некоторым числам первые команды. Если числу не соответствует никакая команда, то это число является безусловным переходом. Когда УТК укажет на ячейку с подобным числом, то он увеличивается(переходит по цепочке команд вперёд) на это число. То, что число без назначенной команды является безусловным переходом очень удобно. При экспериментах можно спокойно назначать на свободные числа новую команду или убирать старую. Так как у меня длина цепочки 64 ячейки, то доступных чисел тоже 64 (от 0 до 63).



На рисунке схематично изображен геном первого бота в виде замкнутой по кругу ленты. Все ячейки забиты командой 23. Это команда «фотосинтез». После её выполнения, бот получает энергию в количестве, зависящей от глубины, где бот находится. Также на рисунке изображена схема выполнения кода. Стоит отметить, что команда, кроме выполнения основной функции, также отвечает за изменение УТК. После выполнения такой простой команды, как «фотосинтез», УТК увеличивается на единицу. В данном примере будут последовательно выполнены все команды в коде-геноме.



Допустим, что при появлении нового бота произошла мутация и в ячейку под номером 1 записалось число 63. После появления нового бота, его УТК равен 0, выполниться команда «фотосинтез», УТК увеличиться на 1. Теперь считывается число из ячейки 1 — это число 63. Этому числу не присвоено никакой команды, поэтому это безусловный переход. Сдвигаем УТК на 63 ячейки вперёд и теперь УТК снова указывает на команду «фотосинтез», в нулевой ячейке. Так будет повторяться по кругу. Заметьте, что внешнее поведение бота ни чем не будет отличаться от родителя, но использоваться будут только две ячейки из 64.

Теперь рассмотрим более сложные команды, требующие параметров.

Всего в мире ботов есть восемь направлений. Если нам нужна функция поворота, то можем использовать 8 команд, по одной команде для каждого направления.

Но у нас всего 64 числа (0..63) и на все необходимые команды просто не хватит чисел. Поэтому будем ипользовать параметры.



Например, мы присвоили числу 25 команду «поворот». Когда УТК укажет на ячейку с числом 25 (повернуть), то мы также берём следующее число. Из этого числа мы узнаем, куда надо повернуть. Число может быть от 0 до 63, а направлений 8. Что бы узнать направление, мы делим параметр на 8 и берём остаток от деления. Получиться одно из 8 значений (0..7) — это и есть направление, куда надо повернуть. Количество доступных чисел (64) кратно 8. Поэтому вероятность выбора одинакова для всех направлений. После выполнения команды, УТК перемещается не на одну ячейку, а на две, перепрыгивая параметр.

Стоить заметить, что УТК может прийти к ячейке, которая в другой раз служила параметром. Теперь значение из этой ячейки будет командой. Это сильно усложняет анализ кода человеком, зато «виртуальная машина», выполняющая код бота очень проста в реализации.

Допустим, нам нужна команда «сколько у меня энергии?» При выполнении этой команды, если энергии больше, чем получено в параметре, то переходим по одному адресу, если меньше, то по другому. Энергии может быть от 1 до 1000, а параметр от 0 до 63. Что бы обойти это ограничение, то при выполнении этой команды, параметр умножается на 15. Получаем такие варианты:

0, 15, 30, 45, 60 ...... 945.

С полученным вариантом и сравниваем уровень энергии и по результатам сравнения к УТК прибавляется смещение. Значение смещений берётся из следующих ячеек после параметра.



Подробное истолкование картинки выше
Указатель текущей команды (УТК) равен 10.

Берём число из ячейки №10. Это 33, команда «сколько энергии?».
Берём число из следующей ячейки (УТК+1), это параметр, из него вычисляем число для сравнения.

14*15=210

Если энергии у бота больше или равно 210, то берется число по адресу УТК+2.
Там у нас число 23. Это число прибавляется к УТК.

10+23=33.

То есть УТК теперь равно 33 и следующей командой будет команда из ячейки №33

Если энергии у бота меньше, чем 210, то берется число по адресу УТК+3.
Там у нас число 8. Это число прибавляется к УТК.

10+8=18.

То есть УТК теперь равно 18 и следующей командой будет команда из ячейки №18

Некоторые команды, такие как «посмотреть», «сделать шаг», «съесть», «поделиться энергией» являются разветвителями. В зависимости от того, что было в клетке, на которое было направленно действие, дальнейшее выполнение кода пойдет по разным веткам.



Подробное истолкование картинки выше
Указатель текущей команды (УТК) равен 7.
Берём число из ячейки №7. Это 26, команда «шагнуть».
Берём число из следующей ячейки (УТК+1), это параметр, из него вычисляем направление для шага.

18 % 8 = 2

Если клетка, куда шагает бот, была пуста, то берется число по адресу УТК+2.
Там у нас число 0. Это число прибавляется к УТК.

7+0=7.

То есть УТК опять указывает на ячеёку №7. Бот будет двигаться в этом направлении, пока на пути не встретит препятствие.

Получился цикл.

Если на клетке была стена, то берется число по адресу УТК+3.
Там у нас число 3. Это число прибавляется к УТК.

7+3=10.

То есть УТК теперь равно 10 и следующей командой будет команда из ячейки №10 То есть число в этой ячейке только что было ссылкой, а теперь будет выполняться, как команда.

Если на клетке была органика, то берется число по адресу УТК+4.
Там у нас число 43. Это число прибавляется к УТК.

7+43=50. То есть УТК теперь равно 50 и следующей командой будет команда из ячейки №50
Если на клетке был чужой бот, то берется число по адресу УТК+5. Там у нас число 24. Это число прибавляется к УТК. 7+24=31.

То есть УТК теперь равно 31 и следующей командой будет команда из ячейки №31

Если на клетке была родня, то берется число по адресу УТК+6.
Там у нас число 59. Это число прибавляется к УТК.

7+59=66.

То есть УТК теперь равно 66. Указатель вышел за диапазон возможных адресов, вычитаем из него 64 и получаем 2 Следующей командой будет команда из ячейки №2

Реально бот сможет сделать шаг только в случае, если клетка была пуста, в других случаях бот останется на месте. Ну вот и всё. Таким образом бот получает информацию об окружающих его клетках. И поведение бота теперь не линейно, а зависит от окружения.

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

Ещё несколько моментов.

Все боты в памяти оперативной памяти соединены в круговую цепочку и управление по очереди передаётся от одного бота к другому. Код бота выполняется, пока не будет выполнена завершающая команда. К таким командам относятся: «шагнуть», «съесть», «фотосинтез», «поделиться энергией» и так далее. Остальные команды (безусловный переход, «посмотреть», «повернуться», «сколько энергии?» и так далее) могут выполняться до 15 раз, после чего управление передаётся другому боту.

Когда отпочковывается новый бот, он встраивается в цепочку ботов перед предком.

Что в итоге получилось


Ну а теперь скриншоты того, что получилось. Замечу, что картинки не столь интересно смотреть, как видео, где видно динамику развития мира. Многие интересные явления, такие как «пламяфилы» и «привидения» на статичных фотографиях выглядят не очень фотогенично, зато на видео завораживают. Для видео я использовал скриншот с каждого 25 хода. При этом, к сожалению, могут теряться некоторые любопытные моменты, такие, как короткие цикличные перемещения ботов

Скриншоты сделаны на разных стадиях разработки. Там, где задний фон меняется с белого до синего, я ещё не ввел «минералы».

Здесь показанны два режима отображения.

В стандартном режиме цвет зависит от способа получения энергии. Любители фотосинтеза зеленеют, любители «минералов» синеют, а мясоеды краснеют.
У всеядных может быть промежуточный цвет.

В режиме отображения энергии, чем больше энергии, тем бот краснее, чем меньше энергии, тем бот желтее.



Самое начало. Появляются «лабиринты», цепочки ботов



Начинают появляться первые колонии



Колонии уже сформировались. Можно увидеть розовых и сине-зеленых любителей разнообразного рациона.

Любопытные диагональные поселения хищников.



Любопытное шахматное расположение органики(трупиков ботов) посреди колонии.
Вид мира менялся, но «шахматный» порядок сохранялся. Подозреваю, что боты использовали только 4 направления из 8.



Вновь родившийся бот получает свой цвет от родителя. Потом, в зависимости от рациона, цвет может изменяться.

Здесь видны красные скопления ботов. Они не кого не кушают и не получают энергию от Солнца, иначе бы позеленели.

Энергию они получают от распределения энергии по колонии. Своего рода паразиты. Когда у колонии начинаются проблемы, то паразиты быстро погибают.



Режим отображения энергии открывает новые стороны мира. Видно, как по разному распределяется энергия внутри колоний. Центральная колония имеет чёткие границы с левого края, но с правой стороны границы не имеет. Также с краев видна колония, где энергия идет по диагонали (так как мир по горизонтали замкнут в круг, то это одна и та же колония).



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



Начало массового вымирания. Красные боты переполнены энергией и они должны отпочкавать потомка, но свободного места нет и они погибают. Поедать органику боты тоже перестали. В итоге органика(бледно-розовая) заполнила всю верхнюю часть мира.

Размер созданного мира маленький, так как большая часть работы и экспериментов проводилось на 7-дюймовом планшете, но для подобных экспериментов, чем масштабнее мир, тем лучше. На первой фотографии в статье использован скриншот с клона моего проекта, переписанного RomanoBruno на языке Java. Здесь уже другой масштаб и скорость работы выше. Ссылка на этот проект в конце статьи.

Мир бурно развивается в течении нескольких часов, затем скорость падает, мир находит некоторое стабильно состояние и в нём и пребывает. Скорее всего сказываются малые размеры мира и скудность возможностей.

Я решил взбодрить мир, который долго не менялся и произвёл «вспышку на Солнце». При этом у каждого второго бота в коде-геноме случайным образом меняется случайный байт.



Состояние мира перед вспышкой



Прошёл 21 ход после вспышки. Мир изрядно разрушен, большая часть ботов погибла.



Прошло ещё 347 ходов, мир возвращается к жизни.



Прошло более 2000 ходов и мир возвращается к прежнему виду, что стало для меня неожиданностью. Ожидал, что мир уже не будет прежним. Видимо, ни одна из спровоцированных мутаций не сделала бота лучше и все мутанты, со временем, погибли.

Заметьте, что небольшая колония синих ботов по центру с справой стороны, похоже не заметила катастрофы.

Что дальше


Сейчас у меня частично написан, но временно заморожен из за нехватки времени, проект нового мира.

Энергию можно будет получить, поедая «траву». Можно съесть всю «траву» в определённом месте и она там появятся только разрастаясь из тех мест, где осталась.
Количество энергии, соответственно, будет обратно-пропорционально зависить от количества ботов и боты не смогут заполонить собой весь мир. Это позволит создать больший по размерам мир с естественной изоляцией разных групп ботов. Боты будут вынужденны перемещаться в поисках доступной еды.

Код-геном будет работать на тех же принципах, но добавяться некоторые дополнительные возможности.

  • Регистры и операции с ними.
  • Прерывания, одноуровневый стек и команда ret
  • Способы коммуникации между ботами.

бизнес проект
<шутка> В будущем собираюсь выпустить чашки, поверхность которых выполнена в виде экрана, на котором отображается искусственный мир. Мир получает энергию, когда в чашку налит напиток правильного производителя. Если долго не поступало энергии, то мир чахнет и умирает.</шутка>

Заключение


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

Если Вас зацепила идея создания своего мира и экспериментов с ним, то присоединяйтесь, попробуйте создать свой мир.

Тот принцип построении кода-генома, который я описал, прост в реализации и можно легко модифицировать под разные миры.

Ссылки


Этот проект не единственный по данной тематике, но на момент создания я знал только об одном. Про него я прочитал в 93 году в журнале «Техника молодёжи». Статья меня зацепила. В то время у меня не было компьютера и я не предполагал, что когда-нибудь смогу реализовать подобное.
Ссылка на статью

Видео, где можно посмотреть разные варианты развития мира.

Проект написан на интерпретаторе Pixilang
yadi.sk/d/rLamoeyt3NBRwL

Также проект переписан RomanoBruno на языке Java и выложен на GitHub.

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


  1. RomanoBruno
    29.07.2018 13:44
    -1

    Самый сложный вопрос который меня беспокоит в этой теме:
    Что есть жизнь?


    1. RomanoBruno
      29.07.2018 15:23
      +2

      Для тех кто молча минусует поясню смысл вопроса.
      Возможно для вас вопрос «что такое жизнь?» очевиден. И тогда вы должны знать, что в биологии существует царство бесклеточных Acytota, куда кроме вирусов входят вирусоиды, вироиды, прионы и сателлитные РНК. То есть с позиции современной науки для жизни нет необходимости в клетке, достаточно небольших молекул.
      Можно абстрагироваться дальше и предположить, что сложность сравнимая с биологической может быть достигнута и в плазменных структурах. Тогда мы переходим из разряда молекулярных шовинистов и шовинисты ионные.
      А возможно для жизни вообще необязательна барионная материя, может быть достаточно информационной среды. И что жизнь определяется только вычислительной сложностью. Тогда проект Михаила можно рассматривать как жизнь без приставки «искусственная».
      Если для вас эта тема очевидна, то обозначьте свою позицию. Давайте подискутируем.


      1. Tsvetik
        29.07.2018 18:22

        Является ли тогда выключение программы массовым убийством?


        1. RomanoBruno
          29.07.2018 21:17
          +2

          Видимо да, остается надеяться что они не успевают этого осознать))


          1. dolovar
            30.07.2018 10:55

            В чем отличие вариантов «успели» и «не осознали»?
            Продлим, в чем отличие вариантов «выключивший узнал об успевании» и «не узнал»?
            При ответе можно вспомнить о приведенном выше упоминании вирусов.


        1. JPEG
          30.07.2018 01:16

          Смерть бота определена в терминах его мира. Нет мира — нет терминов, нет и смерти


        1. Chugumoto
          30.07.2018 08:02

          эм… а если в программе предусмотреть сохранение и последующую загрузку? :)


          1. bask
            30.07.2018 10:00
            +1

            Еретик! Раньше таких на кострах сжигали


            1. Chugumoto
              30.07.2018 10:15

              ну а что? типа ночь. всем спать :)


              1. tyomitch
                30.07.2018 11:42

                Засыпают боты, просыпается мафия?


              1. Qui-Gon
                30.07.2018 12:10

                Ага и еще ввести бэкап любого состояния и вы уже повелитель времени;)


                1. profesor08
                  30.07.2018 13:38

                  А еще запустить одни и те же состояния параллельно, и вот у нас уже мультивселенная.


                  1. FlameStorm
                    31.07.2018 14:41

                    Goddev


          1. AlphaGliese
            30.07.2018 10:01

            Тогда это, в некотором смысле, то, что мы знаем под словом — реинкарнация :) бот возрождается (правда это не перерожднение, а все-таки возрождение) и продолжает процесс свеого развития.


            1. Chugumoto
              30.07.2018 10:20

              ну… я бы не сказал… анабиоз? также без развития в процессе, а после продолжение с места остановки


          1. dolovar
            30.07.2018 11:00

            Отличная идея для реализации — дать боту возможность раз в N минут или перед принятием опасного решения сохраняться с возможностью восстановления после смерти.
            Плюс добавить модификатор интереса, при падении которого бот бросает игру.
            Плюс добавить бота-админа, который кикает или штрафует злоупотребляющих сохранениями.
            Плюс добавить бота-зрителя, который подписывается на трансляцию наиболее удачливых ботов-игроков и ставит лайки, привлекающие других зрителей.


          1. Femistoklov
            31.07.2018 08:15

            Но ведь после загрузки это будут уже другие боты


            1. Zenitchik
              31.07.2018 10:42

              Почему Вы так думаете?


              1. QWhisper
                31.07.2018 12:30

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


                1. Zenitchik
                  31.07.2018 12:54

                  Скорее, это старый спор про «тот же» или «такой же».


                1. Femistoklov
                  01.08.2018 08:02

                  Тут ещё вопрос, что значит «идентичны». Интуитивно кажется, что скопированное состояние не даст идентичности сознания.


      1. worldmind
        29.07.2018 19:26

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


        1. marsermd
          29.07.2018 20:21
          +6

          Холодильник понижает свою энтропию:)


          А то что при этом энтропия окружающего мира повышается — следует из второго начала термодинамики.


          1. worldmind
            30.07.2018 10:03

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


            1. Azya
              30.07.2018 11:57

              Живые организмы берут энергию откуда? Если холодильник будет питаться от солнечных батарей это что-то изменит?


              1. worldmind
                30.07.2018 12:11

                Ну да, одной энтропии видимо недостаточно, нужно ещё самоподдержание своих функций, некая саморемонтируемость, динамическая устойчивость к воздействиям определённого уровня.


                1. Azya
                  30.07.2018 12:14
                  +1

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


            1. zameshin
              30.07.2018 12:10
              +2

              Так и живой организм ни в коем случае не замкнутая система. Он потребляет энергию извне на уменьшение энтропии внутри/вокруг себя.


              1. InterceptorTSK
                30.07.2018 12:16

                Не совсем так.
                Потребляется энергия не на уменьшение, а на поддержание постоянного уровня энтропии. Своеобразная константа получается. Рост в данном случае можно исключить для простоты [при этом замедление роста — это опять нарушение].
                При этом, каким-то непостижимым образом, эта константа меняется скачкообразно во время размножения, например.
                При этом, некоторое живое может менять свою константу энтропии, когда переходит из незамкнутого состояния в замкнутое, и наоборот.

                В общем и целом не живому такие фееричные возможности даже и не снятся)


            1. trapwalker
              30.07.2018 13:00
              -1

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

              Жизнь — это одно из понятий, которые отлично распознаются и определяются в больших масштабах, но на некотором уровне выявляется серая область. которая из-за старика Гёделя не даёт определить всё на свете.


              1. Yuuri
                31.07.2018 01:28

                Бедный Гёдель, всё спокойно старику полежать не дадут.


                1. trapwalker
                  31.07.2018 12:40

                  Вы полагаете он все-таки вертится?


                  1. phenik
                    31.07.2018 14:51

                    А-то… после того, что натворил.


          1. panvartan
            30.07.2018 11:59

            А почему вы решили, что холодильник это не жизнь? Это такая же жизнь, как ваша нога, только пока мы можем делать холодильники и не можем ноги.


          1. Yuuri
            30.07.2018 12:21

            Холодильник понижает энтропию некоторого объёма внутри себя. С повышением своей энтропии (уплотнитель потрескался, лампочка перегорела, компрессор барахлит) он сделать ничего не в состоянии.


            1. marsermd
              30.07.2018 12:26
              +3

              Так и собака ничего не может сделать с тем, что у неё сердце остановилось.
              Я уж не говорю о клеточном апоптозе.


          1. RomanoBruno
            31.07.2018 01:47
            +1

            Холодильник понижает энтропию и именно поэтому в нем зарождается жизнь)


        1. RomanoBruno
          29.07.2018 21:39

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

          Единственное, что можно попробовать притянуть к мнению о том, что они не являются живыми — это их неспособность к самостоятельному размножению. Но с другой стороны, а кто вообще в живой природе способен к чему-то «самостоятельному»? Да никто. Ничего самостоятельного в живой природе вообще не существует. Всё живое находится в теснейшем союзе. Если нас лишить всех 50 триллионов обитающих в/на наших телах бактерий, то мы не только плодиться «самостоятельно» не сможем, мы и нескольких дней не проживем. Так что вирусы попросту входят в это сообщество всего живого, являясь полноправными, и более того — совершенно необходимыми творцами жизни. Напомним, что в теле всякого животного помимо бактерий живут еще и триллионы вирусов, многие из которых попросту необходимы для нашей жизни.


          1. worldmind
            30.07.2018 10:10

            Цитат с сайта рентв?
            Вот что говорит википедия:

            Согласно одному из определений вирусы представляют собой форму жизни, согласно другому вирусы являются комплексами органических молекул, взаимодействующими с живыми организмами. Вирусы характеризуют как «организмы на границе живого»[19]. Вирусы похожи на живые организмы в том, что они имеют свой набор генов и эволюционируют путём естественного отбора[61], а также в том, что способны размножаться, создавая собственные копии путём самосборки. Вирусы имеют генетический материал, однако лишены клеточного строения, а именно эту черту обычно рассматривают как фундаментальное свойство живой материи.


          1. worldmind
            30.07.2018 10:20

            Или вот:

            Жизнь — основное понятие биологии — активная форма существования материи, в некотором смысле высшая по сравнению с её физической и химической формами существования[1][2][3]; совокупность физических и химических процессов, протекающих в клетке, позволяющих осуществлять обмен веществ и её деление (вне клетки жизнь не существует, вирусы проявляют свойства живой материи только после переноса генетического материала в клетку).


            1. RomanoBruno
              30.07.2018 10:34
              +3

              А вы надо полагать с канала Спас?
              Любите Википедию, так любите хотя-бы англоязычную. До православной научные статьи лет через 50 доходят

              Non-cellular life is life that exists without a cellular structure for at least part of its life cycle.[1] Historically, most (descriptive) definitions of life postulated that a living organism must be composed of one or more cells,[2] but this is no longer considered necessary, and modern criteria allow for forms of life based on other structural arrangements.[3][4][5][3]

              The primary candidates for non-cellular life are viruses. A minority of biologists consider viruses to be living organisms, but most do not. Their primary objection is that no known viruses are capable of autopoiesis, which means they cannot reproduce themselves: they must rely on cells to copy them.[1][6][7][8][9] However, the recent discovery of giant viruses that possess genes for part of the required translation machinery has raised the prospect that they may have had extinct ancestors that could evolve and replicate independently. Most biologists agree that such an ancestor would be a bona fide non-cellular lifeform, but its existence and characteristics are still uncertain.[1][10][11][12][13]


              1. worldmind
                30.07.2018 10:55

                Прямо из вашей цитаты:

                A minority of biologists consider viruses to be living organisms, but most do not. Their primary objection is that no known viruses are capable of autopoiesis, which means they cannot reproduce themselves: they must rely on cells to copy them.

                надеюсь с переводом справитесь


                1. RomanoBruno
                  30.07.2018 11:01

                  Так и знал что уцепитесь))

                  Специально для Вас выделю то, что Вам нужно прочитать:
                  Historically, most (descriptive) definitions of life postulated that a living organism must be composed of one or more cells,[2] but this is no longer considered necessary, and modern criteria allow for forms of life based on other structural arrangements.

                  Найдете словарь перевести слова выделенные жирным?


                  1. worldmind
                    30.07.2018 11:12

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


                    1. RomanoBruno
                      30.07.2018 11:22

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


                      1. poxvuibr
                        30.07.2018 13:33

                        Вот эти все неклеточные формы жизни, они могут существовать без клеток?


                        1. RomanoBruno
                          30.07.2018 13:36

                          Да (РНК отлично размножается в определенных растворах).
                          А вот клетки без них может и могут но плохо и недолго.


                        1. vintage
                          01.08.2018 00:19

                          А семена могут существовать без земли?


                      1. worldmind
                        31.07.2018 12:49

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


                        1. RomanoBruno
                          01.08.2018 01:57

                          Ну как где? Читать научные статьи, смотреть научные видео. Желательно проверять год выхода перед прочтением/просмотром, чтобы не усваивать заведомо устаревшие сведения.
                          Когда Левенгук выступал с докладами о своих инфузориях, научное сообщество того времени свистело ему и обвиняло в шарлатанстве. Но потом бактерии признали жизнью.
                          Недавно жизнью признали РНК и еще некоторые полимеры.
                          Я не могу знать что признают следующим, но я вижу постоянное расширение границ как в биологии, так и в физике, и в астрономии и т.п.
                          Надеюсь все свои мысли я пояснил. Желаю вам всего только самого лучшего в вашей научной одиссее.


            1. QWhisper
              31.07.2018 12:33

              А что вы скажите про Прионы?


              1. worldmind
                31.07.2018 12:40

                Как я понимаю, по устройству они более примитивны чем вирусы, а в остальном схожи с ними.


      1. gleb_kudr
        30.07.2018 00:45

        Тут нет смысла дискутировать. Жизнь — это первичное (неопределяемое) понятие в биологии, так как ни одного полного и непротиворечивого определения ее не существует. Как время, пространство, точка или прямая в других науках.


      1. c0f04
        30.07.2018 00:58
        +1

        Жизнь могла возникнуть вообще в виде РНК, т.к. РНК может быть одновременно и набором генов, и ферментом. Самой себя теоретически ей может хватать для репликации и эволюции в первичном бульоне. ДНК же могло быть побочным продуктом, который оказался более удачным решением для хранения генома.

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


        1. BigBeaver
          30.07.2018 01:09

          Где-то было определение жизни как автокаталитической реакции. То есть то, что само поддерживает себя, то и жизнь)


          1. RomanoBruno
            30.07.2018 01:59

            Огонь например?


            1. BigBeaver
              30.07.2018 06:56

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


          1. phenik
            30.07.2018 08:31

            Автокаталитические реакции приводят к колебательным процессам. А в этой симуляции колебательные процессы возникают? По идее должны, так как есть боты поглощающие других ботов (условно «хищники»), есть боты поглощающие органику (условно «травоядные»), и есть боты фотосинтезирующие (условно «растения»). А это значит есть условия для реализации экологических моделей типа «Хищник — Жертва», «Травоядные — Трава», и подобных, с сопутствующими колебательными процессами, как одного из решений. Наблюдаются такие? Или там такого разделения ботов нет, и такие процессы не возникают?


            1. sergix
              30.07.2018 09:10

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


            1. RomanoBruno
              30.07.2018 10:39

              Если ускоренное видео посмотреть то наблюдаются иногда


      1. overtest
        30.07.2018 06:30
        +1

        Жизнь, как мне кажется, это то, что может меняться безгранично. Например, набор команд в данном проекте ограничен. Все «мутации» влияют только на порядок выполнения команд и их параметры, т.е. принципиально новая команда возникнуть не может, а значит боты не могут эволюционировать в этом направлении, как и в других, которые задуманы автором и будут оставаться неизменными. Сколько бы времени ни прошло, это будет всё тот же мир, в котором не появится ничего нового, пока не вмешается автор. А значит это не есть жизнь — жизни тут не более, чем в любой программе с некоторыми случайными параметрами.


        1. UncleJey
          30.07.2018 08:51

          У нас тут вроде как тоже всё в рамках обозначенных, но пока не доконца понятных алгоритмов.


          1. overtest
            30.07.2018 09:10

            Наши рамки если и обозначены, то на более низком уровне, чем в данной реализации. К примеру, автор реализует команду «фотосинтез», как неделимую данность, хотя в действительности это очень сложный процесс. Мне кажется, с целью осмысления «жизни» нужно использовать куда более простые «кирпичики». Если сразу начинать с таких сложных процессов, то получится интересный симулятор, не более.


            1. RomanoBruno
              30.07.2018 10:41

              вам уже ответили ниже)

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


              1. overtest
                30.07.2018 11:41
                +2

                Вы правы, но кол-во и разнообразие софта, однако ж, безгранично, или так только кажется.

                «Вот пианино. Клавиатура начинается и заканчивается. Клавиш всего 88. Они не бесконечны. Ты бесконечен, и бесконечна та музыка, которую ты извлекаешь из клавиш.» (Легенда о пианисте)

                Вообще, браться рассуждать о таких вещах — занятие рискованное, можно попасть в ловушку своих же рассуждений.


                1. RomanoBruno
                  30.07.2018 12:06

                  А зачем вы это написали тогда?
                  «т.е. принципиально новая команда возникнуть не может, а значит боты не могут эволюционировать в этом направлении, как и в других, которые задуманы автором и будут оставаться неизменными.»


                  1. overtest
                    30.07.2018 13:50

                    И сейчас считаю, что возможность «возникновения» новых команд в рамках этой симуляции задача не из невозможных, несмотря на то что список команд процессора ограничен. От сделало бы мир более «живым». А вообще, мы тут дискутируем, а не высказываем окончательные умозаключения.


                    1. RomanoBruno
                      30.07.2018 14:18

                      Так возникновение новых битов кроме 0 и 1 на компьютере невозможно.
                      Но программы то новые пишутся.

                      А вы пишете «будут оставаться неизменными». Это как?


                      1. overtest
                        30.07.2018 15:09

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


                        1. RomanoBruno
                          30.07.2018 16:12

                          и что, из сложных процессов нельзя создать бесконечное множество комбинаций?


                          1. overtest
                            30.07.2018 16:46

                            Отвечаю на ваш вопрос исключительно в контексте данной дискуссии. Если для вас комбинация «фотосинтез» + «поворот» представляется действительно новой командой, непохожей на предыдущие, тогда можно.


                            1. Zavtramen
                              31.07.2018 19:01

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


        1. vyo
          30.07.2018 10:50

          Как насчёт «безграничности» нашего мира? Да, в нём гораздо больше пространства для изменений, но о полной безграничности речи идти не может. В данном проекте реализована просто очень примитивная (по сравнению с нашим миром) модель, все аспекты которой той жизни доступны.

          ИМХО, полная безграничность возможна только в полном же хаосе.


          1. overtest
            30.07.2018 11:30

            Неспобность разума постичь границы или охватить всё многообразие мира можно считать безграничностью для данного разума. По меньшей мере, пока он эти границы не постигнет, их нет. В любом случае я сторонник более мелких кирпичиков — это дает больше свободы в рандомизации не только последовательности команд, но и их структуры, т.е. появление «новой» команды, что создаст куда большую иллюзию свободы. А так — они слишком велики для комбинаций.


      1. InterceptorTSK
        30.07.2018 10:30

        Есть же признаки живого и не живого. Чем больше признаков живого в рассматриваемом кандидате на живое — тем кандидат живее.

        И да, ваш вопрос ваще некорректен по-определению.
        Потому что вы задаете вопрос. ВОПРОС.
        Вопросы способны задавать высшие формы жизни, т.е. конечные автоматы крайне высокого уровня развития. Те что пониже вопросов не задают. Но тогда появляется вопрос — а что такое конечный автомат крайне высокого уровня развития?))


        1. RomanoBruno
          30.07.2018 10:46

          Так вот я как раз и пытаюсь составить список всех возможных вариантов признаков живого и неживого. И поверьте он уже не мал)

          А как влияет на корректность вопроса то, кто его задал?
          Вопрос просто есть, и он сам на себя не ответит.


          1. InterceptorTSK
            30.07.2018 11:12

            Ниже прочтите) Влияет логика теории типов и еще как влияет.
            У вас она одна, у меня другая.
            У муравья ее вообще нет.
            Мы никогда не поймем и даже не договоримся о сути вопроса, потому что сам вопрос не имеет почти никакого значения. Более значимо тут как раз таки что подразумевается под вопросом реально)) Я это объяснить запросто смогу. А вы — нет.
            Но тогда мы никак и никогда не договоримся даже о сути вопроса.

            И т.к. вы не можете объяснить реальную суть вопроса — ваш вопрос вообще теряет всякий смысл.


            1. RomanoBruno
              30.07.2018 11:28

              Я же объяснил суть вопроса во втором комментарии. Или что не так?


              1. InterceptorTSK
                30.07.2018 11:35

                Не так то, что мы сильно расходимся насчет того, что такое жизнь) Т.е. у вас есть абстракция «жизнь» и у меня есть абстракция «жизнь», НО ОНИ СИЛЬНО РАЗНЫЕ)
                Отсюда следует, что я либо должен, например, отвечать вам на вопрос оносительно вашей абстракции, либо относительно моей абстракции.

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

                Еще раз, у нас разные представления об абстракциях, а именно об абстракции «жизнь», но в таком случае, как мы можем об этом рассуждать, если мы рассуждаем о заведомо разных «вещах»?


                1. RomanoBruno
                  30.07.2018 11:39

                  Понял вас)
                  Так самое интересное сравнить как раз абстракции «жизнь» произвольных людей и посмотреть как они отличаются. Ведь кажется что все прекрасно понимают что это такое, а на деле получается что все понимают разное.


                  1. InterceptorTSK
                    30.07.2018 11:53

                    Вы совершенно точно уловили суть) Я рад. Без шуток.
                    Очень и очень у многих оное не получается) Рад безмерно.


          1. InterceptorTSK
            30.07.2018 11:14

            Признаки живого и не живого ищите у биологов. Тут не нужно выдумывать. Есть специалисты на это. Они уже все разгребли и вменяемые абстракции на сей счет уже создали.


          1. dolovar
            30.07.2018 11:14

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


            1. InterceptorTSK
              30.07.2018 11:18

              Еще раз. Я настаиваю на этом. Если про жизнь — к биологам. Они вам дадут исчерпывающий ответ.

              Как пример критерия жизни — изменчивость. Если вы создаете точные копии — то это уже не жизнь. Или например закрепление изменчивости, ну или мутация. Это еще один критерий жизни. Жизнь без мутаций не может быть жизнью. И т.д.

              И да, выше или ниже написано например про энтропию и то как она работает, а точнее работает с нарушениями законов термодинамики в живом. Это тоже критерий жизни.

              И т.д.


              1. RomanoBruno
                30.07.2018 11:35

                Вот у меня как раз на сегодня 3 неопровержимых фактора отсеялось из кучи шелухи:
                1. воспроизводимость
                2. изменчивость
                Все остальное спорно и не обязательно

                Про нарушение законов термодинамики это ересь, потому что никакие законы термодинамики не нарушаются — система не является замкнутой


                1. InterceptorTSK
                  30.07.2018 11:43

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


                  1. InterceptorTSK
                    30.07.2018 11:45

                    Но такая способность перехода туда-сюда возможна же только в одном случае)) Только если такая способность принудительно «запрограммирована». Магии тут нет никакой.
                    Всего навсего принудительно нарушаются законы термодинамики да и все тут) Ничего хитрого.


                1. InterceptorTSK
                  30.07.2018 11:50

                  Все остальное спорно и не обязательно
                  а вот биологи будут против
                  Вы опять расходитесь в том, что такое жизнь. И в данном случае разойдетесь в абстракциях уже не со мной, а со всем биологическим сообществом. Что как бы настораживает.


                  1. RomanoBruno
                    30.07.2018 12:38

                    Биологическому обществу я предлагаю рассмотреть такую цепочку.
                    Человек это жизнь? Безусловно да.
                    Человек с протезом ноги? Тоже.
                    Киборгизированный человек наподобии робокопа?
                    Человек сумевший перенести свою память и сознание на компьютерный носитель?
                    Датацентр, содержащий развернутые и работотающие сознания таких людей?
                    Юпитерианские мозги?

                    То есть например прилетев на чужую планету и обнаружив там гигантские залежи кремниевой (или нет) электроники, биологическое сообщество сможет вообще понять что это высокоразвитая цивилизация прошедшая полный путь эволюции начиная с химической, и продвинувшаяся гораздо дальше нашей?

                    А сможет ли она отличить такую цивилизацию от цивилизации развившейся на базе «проекта Михаила»?


                    1. InterceptorTSK
                      30.07.2018 12:50

                      Эти вопросы из разряда, чем отличается «искусственное» от «не искусственного».
                      Это тоже крайне значимый вопрос. И вовсе не тривиальный.
                      И этот вопрос с жизнью связан очень тесно) И связан опять же целиком и полностью через теорию типов, ибо проще нее быть ничего не может.
                      А значит искусственные штуки так или иначе будут повторять теорию типов создателя.


                    1. Moldovich
                      31.07.2018 14:57

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


                      PS
                      Человек с протезом и манекен с прикреплённой к нему отрезанной ногой человека — вполне себе разные вещи.


                    1. Zenitchik
                      31.07.2018 15:54
                      +1

                      То есть например прилетев на чужую планету и обнаружив там гигантские залежи кремниевой (или нет) электроники

                      Всё гораздо хуже. Прилетев на другую планету и найдя на ней что-то торчащее из земли и что-то бегающее — мы не сумеем определить, жизнь это или техника. Критериев нет.


                1. tyomitch
                  30.07.2018 12:33

                  Вот у меня как раз на сегодня 3 неопровержимых фактора отсеялось из кучи шелухи:
                  1. воспроизводимость
                  2. изменчивость
                  Все остальное спорно и не обязательно

                  Вышеупомянутое пламя опять оказывается живым?


                  1. RomanoBruno
                    30.07.2018 12:39

                    У него нет изменчивости, это один и тот же процесс окисления.


                1. phenik
                  30.07.2018 13:51

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

                  1. воспроизводимость
                  2. изменчивость
                  Все остальное спорно и не обязательно

                  А это к эволюции относится, она породила эти механизмы из факта конечного времени существования живых систем, то есть их постепенного разрушения и смерти. Этих форм воспроизводства много, они сами по себе эволюционировали, чтобы повысить эффективность отбора, с начало было копирование, затем деление, почкование, и наконец венец творения — половое размножение. Изменчивость, в виде воздействия вредных факторов внешней среды всегда существует, это одна из причин гибели живых организмов. В половом размножении добавился очень эффективный механизм изменчивости — перемешивание хромосом (мейоз).


              1. dolovar
                30.07.2018 12:53

                Так самое интересное сравнить как раз абстракции «жизнь» произвольных людей и посмотреть как они отличаются.

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

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

                Я настаиваю на этом. Если про жизнь — к биологам.

                Вы совершенно правы, если контекст вопроса — биология. Но являются ли биологи владельцами патента на термин?

                С точки зрения философа — мутабельность должна быть сбалансирована между выживанием сейчас и приспособлением к изменениям условий в будущем. По сути изменчивость определяет качество не особи, а вида. Можно добавить критерий, объединяющий воспроизводство и приспособление — живущий обязан являться представителем вида, которому присущи все качества жизни (общий генетический код, организация, метаболизм, рост, адаптация, реакции, воспроизводство и т.д.).

                С точки зрения физика тоже можно добавить обязательный критерий — живой обязан быть наблюдаем. Для военных, кстати, этот критерий тоже может быть важен.
                С точки зрения этики, единственный критерий — мне будет жалко, если оно прекратит существовать.
                С точки зрения религии — сильно зависит от религии.
                С других точек зрения критерии могут быть другими. В вопросе не хватает уточнения контекста.


                1. RomanoBruno
                  30.07.2018 13:03

                  мутабельность должна быть сбалансирована между выживанием сейчас и приспособлением к изменениям условий в будущем
                  Про будущее — это не к эволюции. Эволюция ничего не прогнозирует на будущее. Просто выжили те у кого скорости мутаций были оптимальны для предыдущих изменений среды. А в будущем это может сыграть наоборот.

                  Мне то все сойдет. Больше контекстов хороших и разных.)
                  Контекст военных например хорош. Даже не думал об этом))


                  1. InterceptorTSK
                    30.07.2018 13:17

                    Но откуда идет контекст военных? Кто воюет?
                    Только тот, у кого есть интеллект.
                    Остальные не воюют. Ибо зачем?

                    Под войнами понимается не биологическая доминантность, а именно организованная интеллектуальная доминантность.

                    Биологическое определение войны: организованная интеллектуальная доминантность определенного вида над определенными видами [возможно такими же] на определенном ареале с целью захвата жизненноважных ресурсов этого ареала.

                    Высокоорганизованные стайные животные, например, этим и живут.


                    1. RomanoBruno
                      30.07.2018 13:34

                      Думаю для войны как и для жизни в целом интеллект не нужен, а иногда и вреден.
                      В виде примера вам иммунная система.


                  1. dolovar
                    30.07.2018 14:00

                    Добавлю минимальный набор (спорная попытка) программиста — живое умеет воспроизводить себя и умирать.

                    Добавлю филологическое — если критерии существования столь многочисленные и разные, то можно предположить, что мы имеем дело с термином отсутствия противоположного, который обозначает не сущность, а отсутствие противоположных сущностей.


                    1. vintage
                      01.08.2018 07:33

                      То есть, если я бесплоден и научился продлевать жизнедеятельность неограниченно долго, то я не живой?


                      1. dolovar
                        01.08.2018 10:46

                        Если Вы — это объект в программе, который не создает свои копии (в каких-то условиях) и не прекращает свое существование (в каких-то условиях), то вряд ли программист назовет этот объект живым.

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

                        Вспоминается старый вирус Hobo, который при появлении дискеты в дисководе проверял её на наличие своей копии. Если копия есть, то увеличивал свой счетчик «детей» — два бродяги встретились и сделали ребенка. Если на дискете копия не найдена, то проверялся свой счетчик детей, один из которых мог быть выселен на дискету. После проверок сотни дискет, бродяга умирал от старости со всеми детьми. Подселение с дискеты на чистый комп не было реализовано, поэтому бродяги далеко не разбрелись, и даже не успели заинтересовать никого из производителей антивирусов. Не были реализованы мутации, адаптации, метаболизм или рост, но сделанного было достаточно, чтобы воскликнуть — оно живое!


                      1. Moldovich
                        01.08.2018 10:55
                        +1

                        тоже кстати навеяло мысль, что все мы теоретически мертвы —неживые, т.к. критериев нет оказывается)


                1. InterceptorTSK
                  30.07.2018 13:06

                  С точки зрения философа — мутабельность должна быть сбалансирована между выживанием сейчас и приспособлением к изменениям условий в будущем.
                  Точки зрения биолога и философа расходятся. Биолог может подкрепить свою точку зрения, философ — никак не может.
                  Биолог говорит следующее: нет никаких балансов и взглядов наперед. Есть цепь случайных событий и не более. Тот кто приобрел случайную мутацию и многократно размножился, с закреплением мутации и в последующем среднем времени не вымер — и определит новый вид.
                  Точка зрения философа берется на пустом месте, она умозрительна и не требует подтверждений фактами. Точка зрения биолога рассчитана и требует наличия подтверждающих фактов.
                  Я склоняюсь к биологам, но не исключаю философов как некий хлам. Зачем?

                  Если появится что-то более вменяемое в сравнении с биологической точкой зрения, я безболезненно переметнусь в этот новый лагерь)


                  1. dolovar
                    31.07.2018 10:36

                    я безболезненно переметнусь в этот новый лагерь

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


                    1. Zenitchik
                      31.07.2018 10:46

                      Не все точки зрения — это взгляды с разных сторон. Большинство их — это вообще не взгляд, а выдумка. Поэтому нужно фильтровать.


                      1. dolovar
                        31.07.2018 11:07

                        нужно фильтровать

                        Фильтр — инструмент, он не самоценен, польза или вред применения любого инструмента определяется ситуацией.


                        1. Zenitchik
                          31.07.2018 14:32

                          Фильтр — инструмент, он не самоценен, польза или вред применения любого инструмента определяется ситуацией.

                          Не вижу противоречия с тем, что я сказал.


      1. InterceptorTSK
        30.07.2018 11:04

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

        Вот смотрите, есть «пассатижи», что есть «пассатижи»? Это «инструмент». Что есть «инструмент»? Это «вещь». И так далее. Таким образом вы создадите ваши правила теории типов для ваших ботов, естественно такие сложные штуки как «инструмент» описывать не нужно. Для ваших ботов хватит банальных абстракций.
        Но сразу же встает вопрос. А куда это упрется? В ООП это упирается в «объект». В ООП «объект» является базовой абстракцией всего. А у живого как?) У живого базовых абстракций много, но не сильно много. У живого базовые абстракции — это чувства. Именно чувства не поддаются объяснению с точки зрения теории типов и каждое чувство — есть базовая абстракция, т.е. не имеющая родителя.

        С точки зрения теории типов что есть «время»? Т.е. что родитель абстракции «время»? Естественно это «процесс». Но какой? Процессы бывают периодическими, а бывают не периодическими. Не периодические процессы «времени» не зададут. Время можно задать только на периодических процессах. Идем далее. Что есть процесс? Это способность восприятия «бифуркации», т.е. именно чувственная способность видеть качественные изменения. Это базовая абстракция) «Периодичность» — ровно такая же базовая абстракция. Вот вы и словили уже что «бифуркация» и «периодичность» — это базовые абстракции, т.к. родителей у них нет. Но как быть с ООП? А все и тут просто. Наследуйте от «объекта» — «абстракцию», у вас это будет база. И навешайте в виде интерфейсов на «абстракцию» «бифуркация-able» и «периодичность-able» и у вас появится «время». В рамках теории типов интерфейсы потому и названы абстрактными абстракциями)

        При этом, поймите самое главное, ДЛЯ ТЕОРИИ ТИПОВ НЕ ВАЖНА РЕАЛИЗАЦИЯ ТИПОВ. Важна тут только логика, т.е. кто что из под чего наследуется и какие интерфейсы прицеплены. И все.

        Ну и добавьте реальную коммуникацию ботам, пусть общаются. Ограничьте у них память конечно же. И задайте ошибки копирования абстракций друг-другу.

        Почти чувства вы уже описали. У вас боты ходят-бродят, видят, всмысле как-то коммуницируют в ваших определениях и так далее. Это все и есть чувства. На эти чувства навешайте интеллект и у вас получится презабавная штукенция я вас уверяю) Тем более это не так сложно как кажется. Тем более все для этого уже есть и на самом деле уже давно придумано и реализовано.

        И последнее. Добивайтесь ТОЛЬКО реального интеллекта, а не той убогой байды которую называют «искусственным интеллектом» и которая к интеллекту вообще не имеет никакого отношения от слова совсем.


        1. max1muz
          30.07.2018 13:29
          +2

          Вы говорите автору — возьми и сделай настоящий интеллект. Причем вещаете как гуру, который этих интеллектов не одну сотню сделал. Забавно)


          1. InterceptorTSK
            30.07.2018 13:56

            Так точно. Возьми и сделай настоящий интеллект.
            И даже объяснение как сделать — приведено.

            Или вы из разряда людей, которые не понимают что такое ООП? Похоже что да.
            Давайте на пальцах, этот абсолютно тривиальный пример приводится всегда.
            Есть тарелка, вам нужно проявить интеллект относительно абстракции «тарелка».

            Т.к. мы рассматриваем теорию типов, то нужно искать родителя тарелки, а это посуда. У посуды есть тоже родитель — это емкость.
            У посуды и емкости и можете дальше лезть в абстракции пока не опухните — есть открытые интерфейсы, у емкости есть размер, объем и все те банальности какие захотите, главное что бы логика не нарушалась. Интерфейсы и объекты не требуют реализации вовсе.
            Итого, вы составляете иерархию объектов, шарп или джава подойдут наура, джава как наиболее быстро рулящий объектами язык тут предпочтительней конечно же.

            Собираете абстракции ручками в иерархии и начинаете обизъяньи скачки с перебором. Т.к. нет реализаций, то только перебор, эвристики, т.е. правил отбора заведомо предпочтительных вариантов нет, но вы можете их написать. На это есть некоторые теоремы теории типов, они вам сократят перебор.

            Вот и все))

            Так вы за примерно 0.000001 секунду получите «квадратную тарелку».

            В чом собственно проблема?


            1. max1muz
              30.07.2018 15:43
              +1

              Вы я вижу понимаете, что такое ООП. Хорошо. Пожалуйста, набросайте простой интеллект для примера, или выложите ссылки на ваши работы. Чтобы развить дискуссию.


              1. InterceptorTSK
                30.07.2018 16:55
                -1

                Минусов слишком много.
                А значит оно вряд ли востребовано.
                Ну а «квадратную тарелку» и с ней гору мусора вы и сами можете запросто получить. Попробуйте, это увлекательно) Рецепт приложен уже.


                1. max1muz
                  30.07.2018 17:43
                  +1

                  А так все интересно начиналось.


            1. fatronix
              30.07.2018 17:34

              Я вас разочарую, но ООП не должно следовать иерархиям рального мира. Довольно умозрительным, кстати.


              1. InterceptorTSK
                30.07.2018 19:40
                -1

                Да ладно?) Что вам тогда мешает разложить мир на полки? Или хотя бы кусочек мира?
                Почему вы пользуетесь «искусственным интеллектом», который ничего не может?
                Почему вы все еще надеетесь, что он вам даст ответ, что «пассатижи» — это «вещь» с вероятностью в 84%? Что мешает сразу собрать базу, где сразу написано, что пассатижи — это вещь 100%? Ну или проще — «пассатижи» — это «вещь».
                Что-то мешает ага? Попробуйте соберите такую базу)) Тот же гугл или яндекс у вас такую базу купит мгновенно за астрономические деньги.

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

                И покажите пруф, ну раз тут спрашивают за пруфы и прочее — где это написано, что ооп не должно следовать иерархиям реального мира?


                1. fatronix
                  30.07.2018 23:04
                  +2

                  И покажите пруф, ну раз тут спрашивают за пруфы и прочее — где это написано, что ооп не должно следовать иерархиям реального мира?

                  ООП следует той иерархии, которая решает поставленную задачу. В реальном мире вы не увидите никаких декораторов, FactoryObserver, ObserverFactory, Singletonов и т.п. В компьютерной игре одна тарелка может реализовывать Throwable, а другая — StaticObject только потому, что первой можно кидаться, а второй нет. Объекты вообще могут описывать сущности, которые не выходят за пределы этой программы.

                  Попытки подвести ООП-сущности под реальный мир — зачастую признак неопытности программиста и прямой путь к говнокоду. Код должен решать задачи, а не мимикрировать под реальный мир — один черт по итогу все превратится в машинный код.


                  1. InterceptorTSK
                    31.07.2018 07:51

                    только потому, что первой можно кидаться, а второй нет.

                    Вы сумасшедший?
                    Если объектом Plate можно обкидываться, т.е. объект Plate вообще имеет потенциальную возможность быть кинутым, то у него должен быть интерфейс IОбкидывание-able. И не факт, что вы будете обкидываться этим объектом. То чем можно пообкидываться — должно быть потенциально обозначено. Не нужно думать тут, что реализация интерфейса вообще должна быть. Ее может и не быть. В таком случае, интерфейс можете считать флагом объекта. Ну и реализуйте как положено Plate:IОбкидывание-able(INameable Вася, INameable Петя)
                    Само собой интерфейс IОбкидывание-able должен наследоваться от интерфейса IКинуть-able. Это же разные вещи.
                    Какие нахрен throwable и причом тут статикобжэкт??? Какое отношение они имеют к ооп вообще?
                    Вы объяснитесь хоть как-то. Полнейшее идиотство.


                    1. Zenitchik
                      31.07.2018 10:48

                      Вы втираете какую-то дичь.
                      Вам ответили

                      ООП следует той иерархии, которая решает поставленную задачу.

                      Совпадает эта иерархия с какой-то из иерархий реального мира или не совпадает ни с какой — зависит от решаемой задачи.


      1. ariklus
        30.07.2018 14:32

        В самом широком понимании — самореплицирующиеся сущности и их потомки (включая некоторые кристаллы и мемы, а также рабочих пчел). А сужать и подгонять определение можно сколько угодно.


    1. ncix
      29.07.2018 21:28

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


      1. RomanoBruno
        29.07.2018 21:36

        Мне очень нравится определение Фон Неймана для самокопирующихся автоматов. Правда он не называл это жизнью. По его мнению для таких агентов необходино 4 компонента:
        1. Устройство управления
        2. Чертеж
        3. Копировальная машина
        4. Сборочная фабрика

        Ну вот правда вирусы и РНК добавили изюминок в это определение. Точнее убрали))
        Оказалось что все необходимое для жизни кроме чертежа можно арендовать у других организмов.
        А так вообще в природе сложно найти организмы без симбионтов и паразитов. Например ничего крупнее бактерии не сможет жить без ДНК митохондрий. А некоторые вирусы неспособны размножаться без вироидов, как и наоборот.


        1. akkuraten
          30.07.2018 05:28

          Мне тоже определение паразитов в статье как нехищников показалось некорректным.


          1. BigBeaver
            30.07.2018 06:57

            Это социальные а не биологические паразиты.


    1. wtg
      29.07.2018 22:02

      > Что есть жизнь?
      это с одной стороны и очень сложный вопрос и с другой очень простой.
      Согласно современным представлениям это нечто что может в дарвиновскую эволюцию.
      Как анти пример можете рассмотреть кристаллы(само воспроизведение, деление и тп..). Когда и если мы найдем нечто что противоречит нашим представлениям об эволюции мы подправим формулировку, а пока так.


    1. Fracta1L
      30.07.2018 07:42

      По-моему, это чисто условная граница в иерархии самоорганизации материи (если такая иерархия вообще есть)


    1. odissey_nemo
      30.07.2018 10:37

      Жизнь — это форма существования белковой материи. Короче сказать сложно.


      1. RomanoBruno
        30.07.2018 10:56

        Вы слышали что рухнул Советский Союз?
        Уже необязательно опираться в научных дебатах на труды Маркса, Энгельса и других политических деятелей начала 19 века </sarcasm>


        1. odissey_nemo
          30.07.2018 11:53

          Мне это определение нравится краткостью и ёмкостью.
          Автор тут не при чём. Я его даже не указал, заметьте. Вы же пристрастны.
          Предполагаю, читаете РФ-макулатуру и подобные этому сайты. Это Ваш личный выбор, под воздействием внешних обстоятельств. Вряд ли такое мнение самозародилось, как жизнь на планете Земля. И спорить тут не о чем. А Энгельс — мой выбор, с младенчества :o) Тоже внушённый извне и прошедший проверку временем. Лет через 20 поговорим с Вами наравне уже.


          1. poxvuibr
            30.07.2018 13:50

            Мне это определение нравится краткостью и ёмкостью.

            Единственное, что нам сообщает определение, это что структуры, не состоящие из белков живыми быть не могут. Ну, то есть было принято волевое решение считать живым только то, в чём есть белки. Действительно коротко. Очень красноречиво демонстрирует уровень научных знаний о том, что такое жизнь на тот момент времени. Хорошо, что сейчас с этим получше.


            1. odissey_nemo
              30.07.2018 14:13

              Сарказм не конструктивен, т.к. вызывает подозрения в личной неожиданной заинтересованности. Спорить на тему что и как «сейчас» лучше, чем было — бессмысленно. Т.к. в прошлом (моём) Вы не были и судить существенно объективнее, чем я — не можете. Лет через 20 — тогда и поговорим)) Если не забудете((( Прощайте, дискуссии не получилось, совершенно неожиданно. А жаль!


              1. poxvuibr
                30.07.2018 14:28

                Сарказм не конструктивен, т.к. вызывает подозрения в личной неожиданной заинтересованности.

                Нет тут никакого сарказма. Определение короткое, потому что мало что нам сообщает, а мало что сообщает потому, что о жизни тогда мало что было известно. Про личную заинтересованность я не понял.


                Спорить на тему что и как «сейчас» лучше, чем было — бессмысленно.

                На тему того, когда учёные лучше понимали что такое жизнь — действительно бессмысленно. Сейчас понимают гораздо лучше, это факт.


                Т.к. в прошлом (моём) Вы не были и судить существенно объективнее, чем я — не можете.

                Я не понял как ваше прошлое связано с пониманием того, что такое жизнь, такое впечатление, что вы говорите о чём-то другом.


          1. RomanoBruno
            30.07.2018 14:31

            Ну начнем с того что надо убрать слово «белковой» так как сегодня живыми уже признаны организмы вообще не содержащие белков.
            Останется «Жизнь — форма существования материи»
            А это уже похоже на каноническое определение «веревка — есть вервие простое»


            1. poxvuibr
              30.07.2018 15:07

              Ну начнем с того что надо убрать слово «белковой» так как сегодня живыми уже признаны организмы вообще не содержащие белков.

              Это какие? Можно ссылку или ключ для погуглить?


              1. RomanoBruno
                30.07.2018 16:13

                Читайте выше, уже многократно обсудили


    1. crocodile2u
      30.07.2018 13:06

      Один миллиардер тоже задался этим вопросом, и однажды ему сказали, что в горах Тибета есть практически недоступный монастырь, в котором живет древний старец, и он знает ответ на этот вопрос. Миллиардер организовал экспедицию, они отправились в путь. Кто-то сорвался с ледника, кто-то погиб от переохлаждения, кто-то сошел с ума от экстремальных условий. Остался только наш герой, который дошел до своей цели и увидел золотой храм, в центре которого сидел на троне старец, поглаживая бороду.


      • Скажи, что такое жизнь?

      Старец посмотрел на него просветленно, улыбнулся чему-то своему и ответил:


      • Жизнь — это большая медленная река.

      Миллиардер подождал продолжения, но старец закрыл глаза и как будто заснул. Миллиардер пришел в бешенство:


      • Старый осел, какая к чертям река? Я шел сюда два месяца, угробил экспедицию, людей, и ты мне говоришь какую-то буддийскую чушь???!!!!

      Старец испугался, вскочил и скрылся в подвале храма. Через несколько минут голова его появилась в окошке на уровне пола, и он робко спросил:


      • А что, жизнь — это не большая медленная река?


      1. phenik
        30.07.2018 14:05

        Очень понравилась, то ли притча, то ли анекдот) в контексте споров о смысле жизни))


  1. Sabubu
    29.07.2018 14:15

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

    Также, может быть, стоило выбрать более простой метод управления: просто ввести N двоичных флагов вида «если справа кто-то есть, двигаться влево», «если справа кто-то есть, двигаться вправо» итд. И в ходе эволюции просто переключать эти флаги. При желании флаги можно заменить на числа, определяющие вероятность совершения действия.

    Ну и «вспышки на солнце» я бы устраивал почаще.


    1. foo52ru Автор
      29.07.2018 14:20

      Вычитание энергии за действие уже реализованно


  1. Roboart
    29.07.2018 14:25
    +1

    Приятно, что тема клеточных автоматов живет. есть развитие к непрерывному времени (float) youtu.be/ys5XtGDOoUw
    И как вариант 3d, добавить холмик-горку, свет по разному падает. Но тут лучше к Unity перебраться, пошире возможностей.
    А так успехов в мире клеточных автоматов!


    1. foo52ru Автор
      29.07.2018 14:27

      Правда с моём проекте нет клеточных автоматов. Или я что то в них не понимаю.


      1. Roboart
        29.07.2018 14:38

        Смотря по каким критериям оценивать. Что имеем: дискретное время-есть шаг времени, дискретный мир- есть квадратные клетки и мир состоящий из них, то что там внутри клетки что-то происходит вполне нормально, клетка меняет свое состояние(переходит в новое состояние). ваше перемещение бота это изменение одной клетки в ноль (условно) и переход другой в 1(условно), внутренняя кухня клетки может быть сложнее на порядок вашей(не к слову обидеть). Окрестность тоже наблюдаем, насколько понимаю 8 ячеек, дальше не смотрите.
        Клеточный автомат


        1. RomanoBruno
          29.07.2018 14:50

          внутренняя кухня клетки может быть сложнее на порядок вашей
          а можете пример привести?


          1. Roboart
            29.07.2018 14:58

            так уже привел в комментарии выше но еще тогда про вычисления
            3d cellular automata
            pdf примерно про это
            хотя чем проще тем народу больше нравится (это опять же не про автора, хотя его коммент по своему интересен, с точки зрения понимания сути происходящего)
            наверное ближе к пониманию простые формы


            1. RomanoBruno
              29.07.2018 15:04

              так а где там внутренняя кухня на порядок сложнее?
              все что касается Конвэя и подобных задается как-раз довольно простыми правилами, без всякой эволюции и естественного отбора

              п.с. последнее видео похоже на кварк-глюонную плазму)


              1. Roboart
                29.07.2018 15:17

                delta_a = Da * laplacian_a + q*a*c*(c-a) + p1 — (1.0f+p2)*a + a*a*b;
                delta_b = Db * laplacian_b + q*b*d*(d-b) + p2*a — a*a*b;
                delta_c = Dc * laplacian_c + q*a*c*(a-c) + p1 — (1.0f+p2)*c + c*c*d;
                delta_d = Dd * laplacian_d + q*b*d*(b-d) + p2*c — c*c*d;
                это коэффициенты клеточного автомата
                но это для эрудиции

                Видео еще раз посмотрите пусть игра «жизнь» вас не смущает это другое по природе своей)
                приятно куда то двигаться, тем более в клеточных автоматах/ с детства нравились еще на тетрадке без компа.


                1. RomanoBruno
                  29.07.2018 15:29
                  +1

                  Это видео смотрел много раз, завораживает)
                  Ну все же согласитесь, лапласианы посчитать это не то же самое что возиться с мутациями и естественным отбором?


                  1. Roboart
                    29.07.2018 15:49

                    думаю мы о разном, хорошо что написали статью может кто еще что-то сделает и на вашем примере ) Удачи
                    P.S. лапласиан узнали уже приятно, осталось формулы понять, они ведь не просто так появились и немного о другом чем видео.


                    1. Scratch
                      29.07.2018 18:14

                      laplacian_a
                      laplacian_b
                      laplacian_c
                      laplacian_d

                      Я тоже узнал!


          1. Roboart
            29.07.2018 15:05

            понял, вам как соавтору респект


  1. phenik
    29.07.2018 14:36

    Смотрится забавно, было бы интересно анимацию посмотреть. Но геном — не геном, а программа поведения ботов (конечный автомат). Геном должен задавать свойства ботов, например, получение энергии фотосинтезом, или потребление извне, сколько потомков максимально может оставить и тп. А повороты от стенок, сделать шаг, посмотреть и тд. это программа поведения — надстройка над геномом. Тогда больше на реальную эволюцию походило бы, если запастись большим набором генетических свойств, кот. будут меняться (мутировать). Но все равно это далеко до моделирования реальной эволюции, в ее процессе создаются новые гены, кот. ранее не было. Тем не менее, очень интересный проект.


    1. foo52ru Автор
      29.07.2018 14:45

      Спасибо за комментарий. Цели смоделировать эволюцию в реальном мире не было. Скорее она служила примером. В виртуальном пространстве можно самому создавать свои миры со своими правилами. Анимацию можно посмотреть в разделе «Ссылки»


    1. RomanoBruno
      29.07.2018 15:01

      Вы как-то невнимательно прочитали статью.
      Фотосинтез и другие виды получения энергии как раз определяется геномом, представленным в виде псевдо-программы. Этот геном мутирует, подвергается естественному отбору и т.д.
      А вот сколько потомков оставить это как раз фенотипические свойства. Нигде в биологических системах это не прописано в геноме — оставит сколько повезет.


      1. phenik
        29.07.2018 17:25

        А вот сколько потомков оставить это как раз фенотипические свойства. Нигде в биологических системах это не прописано в геноме — оставит сколько повезет.

        В геноме конечно нет, имелось ввиду, что это разные виды, а у разных видов может быть разное число потомков.
        Не увидел в тексте, где разделение на геном и программу поведения (фенотипические свойства).


    1. vintage
      30.07.2018 10:20

      В геноме не записан цвет ваших глаз, в геноме находится программа для создания белка соответствующего цвета и вторая программа запускающая первую лишь в клетках радужки глаз.


    1. Sayonji
      01.08.2018 11:46

      Я вначале подумал, что не хватает как минимум возможности иметь длиннее ленту команд и дольше думать взамен на трату энергии в единицу времени. Но потом осознал, что об этом следующая версия: боты смогут общаться, соответственно колонии может быть смогут научиться думать дольше комбинированно. Так и предлагаемые вами свойства: например, свойство «получение энергии фотосинтезом» будет регулироваться размером шапки колонии, которая будет плавать вверху и слать питательные клетки вниз. Точнее, не «будет регулироваться», а «будет возможность» такой штуке организоваться в рамкам правил. Будет или не будет я не знаю.


  1. Roboart
    29.07.2018 14:37

    еррор


    1. Roboart
      29.07.2018 14:39

      удалить этот коммент не там разместил


      1. Roboart
        29.07.2018 19:16

        попросил автора удалить комментарий поставили минус, сам его не могу удалить, нет кнопки, как у Электроника. Наверное поклонники неклеточных автоматов… а может и не автоматов, а просто неорганической жизни в 500 строчек кода плюс минус конечно. Сорри, это за минус единички. Можете вместе с этим удалить. Тоже вариант неплохой.


        1. artemev
          29.07.2018 19:23
          +2

          А с чего Вы взяли, что у автора такая кнопка есть?


          1. Geotyper
            29.07.2018 19:28
            +3

            Как у Электроника


          1. Roboart
            29.07.2018 19:32

            Спасибо!


  1. Tarson
    29.07.2018 14:49

    Графику на джаве кнопочками делали?
    У меня похожие (по виду) получались, когда очередной клон Жизни написал. Как раз кнопками псевдографику сделал

    спойлер


    1. RomanoBruno
      29.07.2018 14:53

      графику кнопочками? да вы ценитель)
      в соседнем проекте сейчас такая графика:

      Заголовок спойлера
      image


      1. nanshakov
        29.07.2018 16:21

        Это в вашем?


        1. RomanoBruno
          29.07.2018 16:23

          в параллельном
          github.com/CyberBiology/Genesis


          1. unclegluk
            30.07.2018 21:08

            Ух тыж ё. Как он грузит комп. Все вентиляторы на максимум взвыли.


            1. RomanoBruno
              30.07.2018 21:55

              У вас сколько ядер?


              1. unclegluk
                30.07.2018 22:15

                2 зеона по 4 ядра, 3 ГГц.


      1. nafgne
        29.07.2018 17:02

        как много кнопочек о_о


      1. Tarson
        29.07.2018 18:01

        А кнопками удобнее всего, когда поле не больше экрана. Не надо никаких масштабирований и графических преобразований, и интерактив удобный — кликнул мышкой, вот тебе сразу и отклик.
        Ради смеха и «змейку» с тетрисом в таком же стиле накорябал.

        github.com/Tarson/LIFE


  1. maisvendoo
    29.07.2018 15:07

    Нереально круто! Яростно плюсую


    1. foo52ru Автор
      29.07.2018 15:31

      Спасибо.


  1. evgenij_byvshev
    29.07.2018 15:55
    +1

    Отличная статья получилась! Жду статью про змеек!


    1. nehrung
      29.07.2018 22:59

      И очень медитативное видео!


  1. riky
    29.07.2018 16:36

    можно было бы использовать и значения > 64. просто делать переход также на val % 64.
    еще не понял решаете ли вы проблему зависания. например в клетке стоит goto +64. итого если программа дойдет до этого места то зависнет в бесконечном цикле. то есть бот перестанет что либо делать или достаточно что такое отсеивается естественным отбором?


    1. foo52ru Автор
      29.07.2018 16:58

      В новом проекте я использую длину генома 128 и 128 чисел (0..127). Зависнуть может но не с числом 64 (диапазон доступных чисел 0,,63), а с числом 0. Или будет несколько переходов, возвращающий указатель на старое место. Числу 0 можно назначить команду, я правда этого не сделал. Все подобные неудачные варианты отсеиваются естественным отбором. Энергия бота с каждым ходом убывает и без активных действий по пополнению энергии, бот превратится в органику.


  1. riky
    29.07.2018 16:41

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


    1. foo52ru Автор
      29.07.2018 17:12

      Да, проект старый. Только сейчас дошли руки статью написать. В новом варианте, который непонятно когда доделаю, геном расшириться до 128.


      1. Bookvarenko
        29.07.2018 18:29

        Может быть есть смысл выложить проект на гитхаб? Просто там удобнее следить за развитием проекта и помогать в меру сил.


        1. foo52ru Автор
          29.07.2018 18:36

          На старый есть ссылка в конце статьи. Проект был переписан на Java и выложен на гитхабе. Новый пока рано выкладывать. К тому же я предпочитаю один работать


  1. cuvera
    29.07.2018 16:54

    Пока у меня нет прав на плюсы, свидетельствую своё почтение автору! Это просто кайф!

    Самый сложный вопрос который меня беспокоит в этой теме:
    Что есть жизнь?


    Жизнь, кроме всего прочего, это индивидуальность, Позвольте своим ботам самостоятельно делать выводы и принимать решения.


  1. Bookvarenko
    29.07.2018 18:24

    Интересно сделано. А не было ли мысли преобразовать развёртку цилиндра в проекцию сферы с экватором, полюсами и сменой дня и ночи?


    1. foo52ru Автор
      29.07.2018 18:43

      В проекте есть смена времён года. Солнце то ярче светит, то хуже. Делать не на плоскости, а на сфере, по моему ничего не добавит, кроме сложности программирования. Скорее всего надо увеличивать размеры мира, увеличивать его сложность и разнообразие(день/ночь, экватор/полюса) и увеличивать количество команд, доступных ботам.


      1. solariserj
        30.07.2018 19:55

        А также как мне кажется «вспышки солнца» можно сделать локальными, а ля бомбы чтоб не полностью давила на мир


  1. Tsvetik
    29.07.2018 19:00

    Чтобы жизнь стала разумной нужно помимо генома добавить еще сознание.
    Геном — это наличие рук, ног, фотосинтезирующих органов или острых зубов.
    А в сознание в той или иной степени надо заложить стремление к самосохранению и размножению. Пусть для начала это будут вероятности срабатывания команд фотосинтеза, движения, размножения и т.п.


    1. foo52ru Автор
      29.07.2018 19:05
      +2

      Здесь скорее бактерии, чем разумная жизнь. Стремление к самосохранению и размножению не наделяет сознанием.


      1. sim31r
        30.07.2018 01:02

        Насекомые тоже частично ведут себя как автоматы, хоть и на основе нейронных сетей простых, но тем не менее глюки есть, пример муравьиный круг смерти


    1. andrew8712
      29.07.2018 20:34
      +2

      Хех, наделение подпрограммы сознанием тянет на все Нобелевки мира вместе взятые :)
      Мир Дикого Запада ждет своей реализации


  1. artemev
    29.07.2018 19:10

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

    Можно хэшировать геном при создании бота. Сравнивать хэши, наверно, будет быстрее, чем весь геном (хотя все зависит от реализации).


    ИМХО, нужно отделить свойства бота от поведения. Например, создать отдельный "геном" для перемещения или поведения в целом. А еще лучше, чтобы поведение зависело не только от генома, но и от внешних факторов (двигаться к источнику пищи/энергии, убегать от врагов и пр.). Тогда получится некое подобие интеллекта. Во всяком случае поведение будет более разнообразным.


    1. foo52ru Автор
      29.07.2018 20:15

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


      1. kryvichh
        30.07.2018 12:57

        а если: «посмотрел влево-вперёд-вправо и выбрал оптимальное* направление».
        *оценка оптимальности — заложить в геноме.

        Можно добавить ошибки распознавания: посмотрел влево, и с вероятностью 55% определил трупик, 40% — живой соперник, 5% — какая-то еда.


        1. foo52ru Автор
          30.07.2018 13:05

          Дело в том, что я ничего закладывать не хочу, пусть само появиться. Хотя, конечно, можно ввести такую команду. Сейчас бот может, даже в течении одного хода, посмотреть по всем 8 направлениям и шагнуть в первое попавшее пустое место. Что бы сравнивать направления, нужна память, которой сейчас у бота нет. В следующей версии я запланировал регистры и операции с ними. Вот тогда и может сформироваться оценка лучшего направления.


  1. AllanStark
    29.07.2018 19:33

    Да, действительно, когда-то в журнале «Техника молодежи» была интересная статья на данную тематику.
    Вот еще альтернативный источник для прочтения:
    zhurnalko.net/=nauka-i-tehnika/tehnika-molodezhi/1993-05--num6


  1. ssurrokk
    29.07.2018 19:33

    А накой мутация если вид и так успешен? Возмозно у успешных стоит снижать вероятность мутации


    1. artemev
      29.07.2018 19:38

      Тогда со временем останутся только самые успешные и дальше развития не будет или, по крайней мере, оно будет сильно замедлено.


    1. foo52ru Автор
      29.07.2018 20:18

      Здесь нет никакой функции, которая определяла бы, какой бот успешен, какой нет. Сам бот не мутирует, мутация может возникнуть у потомка с вероятностью 25%.


  1. vmchaz
    29.07.2018 19:50
    +2

    Можно расширить этот эксперимент: дать ботам сенсоры и нейросеть, топология которой также задаётся генетически. В этом случае будет возможность наблюдать сразу 2 вида эволюции — генетическую и «культурную».
    Но поле для эксперимента при этом должно быть существенно больше.


    1. foo52ru Автор
      29.07.2018 22:19
      +1

      Я думал об этом. Даже последний мой эксперимент касался обучение простейшей нейросети посредством естественного отбора.
      (некоторые утверждают, что у меня не нейросеть, а линейный классификатор )
      Но подбирались веса, а не топология. С изменяющейся топологией было бы куда интересней. Может быть потом решусь реализовать это.


      1. sim31r
        30.07.2018 00:57

        Если меняются веса, в чем сложность изменять топологию? Например обнулить нейрону все веса и он как-бы исчезает из управления, или задействовать нейрон сняв запрет на использование. Начать можно буквально с нескольких нейронов, чем больше, тем, конечно, интереснее.
        Добавлять-убавлять скрытые слои еще интереснее, но и сложнее…


        1. foo52ru Автор
          30.07.2018 09:09

          А что сделать со связями? Под топологией я понимаю не только количество нейронов, но и как они связанны друг с другом. В любом случае, это сложней, чем изначально заданная сеть


          1. BigBeaver
            30.07.2018 09:29

            Ну так все со всеми. Отсутствие связей имитируется нулевыми весами. Комбинаторная сложность, правда, зашкаливает, но можно ввести ограничения типа нерекуррентности и тд


      1. karnaval
        31.07.2018 13:14

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


  1. Igor_Sib
    29.07.2018 19:56

    Обожаю подобные статьи.

    А видео надо было озвучивать голосом Дроздова.


    1. foo52ru Автор
      29.07.2018 20:19
      +2

      Я там и музыку вначале поставил из «В мире животных», но Ютуб был недоволен, пришлось убрать


  1. jetcar
    29.07.2018 19:59
    -1

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


    1. foo52ru Автор
      29.07.2018 20:24
      +1

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


  1. F376
    29.07.2018 21:34
    +1

    1. Что думать о таких совпадениях? Когда ты минуту назад читал и смотрел про клеточные автоматы, полон мыслей, открываешь Habr — и на тебе!
    2. Вы же в курсе про «русских коров»?

    копипаста интернета
    В нынешнем (2002 — И.П.) году Microsoft затеяла игру для программистов многих стран мира. ...Microsoft создала террариум. Всем желающим предложили населить его растениями и животными — травоядными и хищниками.

    Программист задавал свойства существа (дальность зрения, максимальная скорость движения, сила атаки, сила защиты и т.п. — общая сумма была ограничена), алгоритмы его поведения (по какой траектории передвигаться; в каких случаях атаковать; есть все, что обнаружишь, или оставить немного на развод и т. п.). Трава росла. Травоядные ели траву. Хищники ели травоядных и друг друга.
    Тот, кто больше ел, больше размножался. Задача состояла в том, чтобы размножиться как можно больше, вытесняя конкурирующие разновидности хищников, травоядных и т.п. Игра показала, что россияне плохо умеют изготовлять хищников, зато у них замечательно получаются травоядные. В ходе игры российские «коровы» победили всех конкурентов — за счет уникальной стадности и редкостного умения пакостить травоядным представителям других наций. По сути, российские разработчики были единственными, кто додумался, как сделать травоядных по-настоящему стадными. По правилам игры, животным не разрешалось напрямую обмениваться информацией. Поэтому, пасущаяся с краю стада «корова» не могла сообщить коллегам об увиденной «траве» или приближающихся хищниках.

    Россияне придумали следующий алгоритм стадности. Если одна корова видела бегущую корову своего вида — она начинала бежать в том же направлении. Любопытно, что никто, кроме россиян, не додумался до такой идеи. По словам организаторов игры, именно эта не рассуждающая массовость принесла россиянам победу. Второе изобретение российских программистов было поизощреннее. Если в поле зрения их коровы не было травоядных своего вида — а сплошь чужаки, российская корова с максимальной скоростью съедала всю доступную траву, ничего не оставляя «на развод». И погибала от голода вместе с чужаками. Сложная смесь самопожертвования и ксенофобии.

    Обратите внимание — жертвуя собой, отечественные травоядные боролись не с хищниками. Они мешали хорошо жить травоядным чужой породы. Конечно, не совсем правильно выводить национальную психологию из несложной разработки нескольких программистов — хотя бы и победителей крупного международного соревнования. Наверное, описанные выше свойства отечественных творений — не общий принцип. Но, возможно, достаточно показательная иллюстрация.


  1. ncix
    29.07.2018 21:36

    Делал в школьные годы похожий проект. Только мир был динамический — полоса "света" двигалась по также как и у вас зацикленному миру. Правда у ботов был фиксированный код, но несколько переменных параметров. У ботов была врожденная способность двигаться к свету, тратя энергию. Фотосинтезировали они только на свету. Между собой правда они никак не взаимодействовали. Также были определенные условия почкования с умеренной мутацией параметров у клона.
    В итоге эмуляций популяция обычно делилась на животных, бегающих за светом, и растения, которые теряли возможность двигаться, взамен приобретая возможность "пережить" ночь.
    Проект делался на бейсике и прошло с тех пор уже лет двадцать...


  1. dim2r
    29.07.2018 21:54

    Тоже недавно таким занимался. Так увлекся, что чуть конференцию не пропустил. Модель основана на боте, который имеет набор модулей. Модули потребляют энергию и совершают полезную работу. При размножении набор модулей может мутировать. Энергия запасается во время кормёжки и потом используется другими модулями.


  1. TimeCoder
    29.07.2018 22:23

    Тут проскакивали слова про уменьшение энтропии (за счёт увеличения ее вовне). И правда, холодильник тоже так умеет. Мне все время не хватает слова энтропия, хочется рассуждать о степени сложности, уровне развития, разнообразности реакций и действий системы, назвать это уровнем организации, к примеру. Но от тепловой энтропии это как-то далеко. На интуитивном уровне понятно, что даже простейшая клетка — это «жизнь», а сложнейший кристалл с меньшей энтропией — это все-таки «не жизнь». Но вот как это формализовать… Было замечательное определение информации у Шрейдера, что-то про увеличение тезауруса системы. Я же определил бы жизнь так: это система, подверженная влияниям окружающего мира, и увеличивающая со временем свой тезаурус за счёт этого влияния. Камень со временем будет разрушаться, а даже сорняк — расти, проходить качественно разные стадии. Сотовый телефон от влияний мира только будет ломаться и разлагаться (веками), а человек, или животное накапливать опыт и эволюционировать. Поскольку планета аналогично прошла этапы от просто раскаленного шара до биосферы, ее тоже можно рассмотреть как живую систему (все признаки соблюдены). Тут возникает намек на наличие сознания у растений, планеты и пр. Что же, буквально это понимать конечно не стоит. Сознание можно рассмотреть как достигнутую степень развития системы, тезаурус системы, ее множество ответных реакций на внешние сигналы. Основной посыл в том, что изолированной системе в далёкой перспективе просто неоткуда взять возможностей для роста организованности (вспоминается Пригожин). Живая система — значит встроена в мир, в единую многоуровневую сеть перераспределения энтропии, формирующей высокоорганизованные системы.


    1. foo52ru Автор
      29.07.2018 22:50
      +2

      Живое не обязано обладать сознанием.


      1. irriss
        30.07.2018 07:01

        Но только сознание может задаться вопросом про живое


    1. Construct
      31.07.2018 13:15

      Сотовый телефон может получать обновления ПО, новые приложения и т.д. На нём также может быть запущено ПО с алгоритмами машинного обучения в составе, и «тезаурус» вполне будет расти.
      Не вижу разницы по этому определению.


  1. XT2
    29.07.2018 22:30

    Браво автору!

    Я в своё время нечто похожее делал, но больше были интересны мутации свойств, не прописанных явно в коде. Например, изначально не определено как может двигаться организм, что нужно идти к еде и т.д., а в процессе он сам тыкаясь получал ± запоминал результат и повторял его. Сейчас конечно это выглядит глупо, но когда учился было прикольно.

    А не пробовали запускать симуляцию с уже созданными геномами (случайно и по паттерну сгенерированных)? Или например два (или более) бота с сильно разными геномами. В этом случае думаю что колонии могут радикально отличаться.


    1. foo52ru Автор
      29.07.2018 22:38

      У меня тоже не прописано, что нужно идти к еде. Те кто к еде не идёт, умирали не оставив потомства, а у тех, кто родился у выживших, это в геноме записано.
      Запускать два разных генома не пробовал. Колонии и сейчас различаются. В следующем проекте, надеюсь масштабы мира позволят колониям долго развиваться в естественной изоляции друг от друга, что бы различия были более явными. Плюс расширенный состав команд и больший размер генома будут способствовать этому.


  1. uhf
    29.07.2018 22:39

    Смущает реализация механизма мутаций.
    В геноме бота, каждая ячейка — это инструкция, или параметр инструкции. Чисто интуитивно, вероятность того, что изменение одной команды окажется полезной мутацией и улучшит программу — очень мала. Так не самозародятся структуры типа вложенных циклов, множественных ветвлений, подпрограмм, и т.д. Ну, или нужно бесконечно большое количество симуляций.
    Мне кажется, что геном живых существ ближе не к инструкциям, а к данным — параметрам конфигурации, и их мутация дает более линейный и предсказуемый эффект.


    1. foo52ru Автор
      29.07.2018 22:47

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


    1. RomanoBruno
      29.07.2018 23:10

      Так не самозародятся структуры типа вложенных циклов, множественных ветвлений
      Почему нет? Вполне себе зарождаются.
      Можете запустить программу и увидеть как боты делают что-то в цикле. Например бегают по кругам и более сложным траекториям, или в паузах между бегом фотосинтезируют.
      А множественные ветвления заданы определениями самих команд.


  1. deppla
    29.07.2018 22:47

    Дико интересно, спасибо за статью.


  1. oldboyii
    29.07.2018 22:47

    Такими вещами давно занимаются биологи — моделируют всякие системы и их эволюцию.


    1. RomanoBruno
      29.07.2018 23:11

      Ага. Только где картинки этих биологов?))


    1. artemev
      30.07.2018 00:41

      Только вот что-то статьи на Хабре они про это не часто пишут… Так что автору однозначто респект и уважение!


  1. DjSens
    29.07.2018 22:57

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


  1. forcam
    30.07.2018 00:43

    Очень большая просьба либо выложить полное видео, пусть оно будет хоть 12 часовым, хоть 24 часовым или сделать трансляцию онлайн на ютубе например. Либо выпускать серии, как в Доме-2))) Оооочень интересный проект.
    И да нужна максимальная приближенность к нашей земле, хотя наверное это в 2Д сложно реализовать.


  1. 9_pm
    30.07.2018 04:27

    Шикарно. Спасибо за статью ) Года два назад сам развлекался чем-то подобным. Вот тут описание моих экспериментов, если будет интересно.


  1. mmMike
    30.07.2018 07:04

    Забавно… народ таким развлекался когда то еще на PDP-11


  1. irriss
    30.07.2018 07:38

    Как видно в комментариях выше, такой игрушечный проект вызывает большой интерес и поднимает сложные вопросы «что есть жизнь?», например.

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

    Есть такое понятие «unprestatable», четко определить не возьмусь, но смысл в том что робот/программа/конечный автомат/искусственный интеллект/и т.д. (в широком смысле) неспособен решать творческие задачи и «выйти за рамки». А люди и даже животные [предполагается что] могут.

    Представим, например, робота пытающегося открыть банку с пивом. Неважно, зачем ему это надо, важно что он не был запрограммирован на открытие банки с пивом. У него, возможно, есть специальная подпрограмма для таких неожиданных ситуаций, но если она почему-то не дала результата, то робот «не догадается» взять камень и сковырнуть/срезать крышку — т.е. сделать что-то «креативное» чтобы достичь цели. Почему так? Допустим, робот понимает задачу и «начинает думать» — искать варианты решения и моделировать ситуации. По сути, это запуск программы перебора из бесконечного числа возможных «креативных» вариантов чтобы получить ответ на вопрос «как открыть это пиво». К сожалению, здесь есть фундаментальная проблема останова — возможно наш железный друг «задумается навсегда» и мы никак не сможем это предвидеть заранее (unprestatable).

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


    1. third112
      30.07.2018 08:32

      искусственный интеллект/и т.д. (в широком смысле) неспособен решать творческие задачи и «выйти за рамки». А люди и даже животные [предполагается что] могут.
      Как такое можно объяснить? ИМХО только мистикой: у людей и животных есть волшебная способность, а у машин ее быть не может.

      Представим, например, робота пытающегося открыть банку с пивом.
      Открывание банки с пивом — творческая задача? ;) — Ok. Предположим, что это так. У пещерных людей на протяжении многих поколений была задача добывания огня. Кто-то ее решил и научил других добывать огонь трением или ударами с искрами твердых камней. Аналогичное обучение робота в задаче с пивом допускается? Если допускается, то какой источник? М.б. инет? — Если да, то робот прочтет здесь:
      «не догадается» взять камень и сковырнуть/срезать крышку
      и последует этому совету. Не так ли поступают многие юзеры: ищут в гугле «как починить комп», «покрасить потолок» и т.д. — и «креативно» следуют найденному? ;)


      1. irriss
        30.07.2018 12:09

        Как такое можно объяснить? ИМХО только мистикой: у людей и животных есть волшебная способность, а у машин ее быть не может.


        Похоже на то. С какой целью ТС запилил свою программу, а первый комментатор задался вопросом про жизнь?

        Рано или поздно, наука развеет это волшебство, но останется другое, которое будет волновать людей, а [нынешних, фон-неймановских, может потом будут другие, лишенные этого недостатка] роботов — нет


        1. RomanoBruno
          30.07.2018 12:18

          За ТС не отвечу, а за комментатора вполне)

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


    1. Konachan700
      30.07.2018 09:10

      На мой взгляд, это просто один из форматов обучения. Медведь в туристической зоне лихо грызет банки со сгущенкой и тушенкой, найденные в припасах туристов. Такой же медведь в глухой тайге мимо этих банок пройдет и никогда не заинтересуется ими. А все потому, что первый в мусоре находил открытые банки с остатками содержимого, и знает, что это съедобно. Так же обезъяна с банкой пива — полностью дикая даже не попытается ее открыть — для нее это аналог камня, а вот живущая рядом с людьми уже знает, что внутри нечто вкусное, и будет делать попытки это достать. Такая обезьяна знает, что камнем можно бить твердые плоды, банка похожа на твердый плод, дальше понятно. Никакой «творческой магии» или необходимости в сознании.
      Так будет и с роботом. Зачем ему открывать абстракнтую пивную банку, если у него совсем нет информации, что это такое? Он точно так же опознает банку по ближайшему к ней объекту (камень), который уже есть в знаниях, и либо ничего не будет делать, либо использует не по назначению. А если он будет знать, зачем ему это, то тут всё будет зависить от возможностей его ПО и механики к выполнению сложных действий.
      Другой вопрос, что сегодняшние роботы слишком просты для их сравнения с теми же животными, но у эволюции было несколько миллионов лет и целая планета, а у человека всего 40 лет активной разработки и очень ограниченные бюджеты.


      1. irriss
        30.07.2018 12:03

        Вы абсолютно правы. Прежде всего, робот не задастся целью открыть банку с пивом, если его явно не запрограммировать.


        1. Konachan700
          30.07.2018 12:51

          Примерно как с любым обучаемым животным или человеком. Не «запрограммируй» ребенка в детстве быть человеком — он им и не будет. Более того, человек, попавший во младенчестве к обезьянам, будет в точности обезьяной по повадкам, а попав к собакам, будет бегать на четырех лапах, отлично выть и лаять. Да даже в во взрослом возрасте некоторые умудряются мешать краску камертоном, зажатым в шуруповерт — ну нет у них знаний в музыке, зато мешалку для краски они видели много раз. Чем робот, пытающийся забить гвозь бутылкой, лучше? Ну не знает он про молоток, и не знает, что бутылка бьеться. Последнее он поймет после пары разбитых бутылок, и возьмет микроскоп… Знания и опыт — вот весь фокус высших животных, у человека есть еще и расшаривание этих знаний — если зверь обязательно должен наступить на грабли сам, то человек может один раз наступить и потом из поколения в поколение передавать знания о граблях, не вынуждая каждую особь наступать самостоятельно.
          Робот в этом плане ничем не будет отличатся, будь у него нужное ПО и достаточно вычислительного ресурса.


          1. irriss
            30.07.2018 13:18

            Очень сложно говорить за человека и обезьян, потому что до конца непонятно «как это работает у них». А вот за современных роботов очень даже можно — все это начиная от контроллера в лифте и заканчивая самым большим суперкомпьютером сводится к машине Тьюринга и не выходит за ее теоретические ограничения. Unprestatable одно из них.

            То что вам кажется что человек это просто большой компьютер скорее всего ошибка, здесь количество не переходит в качество.


            1. Konachan700
              30.07.2018 14:07

              Абсолютно тоже самое, только вычислительная мощность на многие порядки больше за счет параллельности, больше входных данных, больше связей между отдельными вычислительными юнитами, и программа сложнее. Иначе все сведется к мракобесию и введению фантазийных сущностей типа души.
              В этом, кстати говоря, есть огромная философская проблема для общества — считать ли живым достаточно сложного робота? Ибо робот уровня простеньких рептилий возможен уже сейчас (не считая источника питания), все его реакции можно запрограммировать идентичными реальному существу. Так почему робота пинать можно (своего, конечно же), а змею — нет? Сложность тех же животных была, и остается поныне, запредельной для полного стопроцентного изучения, и в отсутствии знания можно легко приписывать им сознание, очеловечевать их, ну и так далее в лучших традициях любой веры. «Не знаем точно как это работает, но верим, что вот так» — и дальше натягивание совы на глобус. С роботами такое не катит, ибо их сложность хотя и тоже запредельная для обывателя, но их сделал человек и любое их поведение объяснимо без мракобесия и крайне сомнительных экстраполяций. Вот интересно, какую сторону займет мир в этом вопросе…


    1. Wizard_of_light
      30.07.2018 14:44

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


      1. InterceptorTSK
        30.07.2018 15:01

        А как вы понимаете «созидание»?)
        Типичная логическая дыра.

        Созидание — это интеллектуальное изменение чего-то или кого-то вокруг себя с понижением энтропии в созидаемом.
        Разрушение — это интеллектуальное изменение чего-то или кого-то вокруг себя с увеличением энтропии в разрушаемом.

        Данные процессы сопровождаются скачкообразными изменениями в энтропии. Что то что другое есть признаки «искусственного»

        Что есть «творческая задача?» Это комплекс созидательно-разрушительных [искусственных как мы выяснили] процессов, подчиняющийся некоему набору эвристиков, т.е. правил.

        Что такое эвристики? Это скопированные алгоритмы наборов действий, обязательно с ошибками.

        Реальное применение эвристиков — опыт.

        Комплексное рассуждение над эвристиками — мудрость.

        И т.д. и т.п.

        Ну и куда подевалась ваша речька с камушьками?))


        1. Wizard_of_light
          30.07.2018 16:56

          У меня те же определения, только без слова «интеллектуальное». Вы просто утверждаете, что это именно интеллектуальный процесс, а я утверждаю, что нет — и созидание (=локальное снижение энтропии), и разрушение (=локальное повышение энтропии) происходят в общем случае и в отсутствии интеллекта или жизни в нашем понимании. И могу привести примеры безинтеллектуального созидания и разрушения (разрушения-особенно легко). Те же процессы с участием интеллекта (= всего того что вы дальше описываете -эвристики, опыт и т.п.) — частный случай.
          Скачок энтропии — признак не интеллектуальных действий, а фазового перехода в системе. Я опять же могу привести примеры, в которых этот скачок происходит, а интеллектуальной деятельности нет. Кристаллизация и взрывное расширение, например.


          1. InterceptorTSK
            30.07.2018 17:35
            -1

            Ответьте на простой вопрос.
            Если вы «как речька» соберетесь разрушить плотину — вы будете набирать в рот воды и «точить водой» камни? Причем поливать водой камни будете хаотично да?
            Или все же используете как обезьяна минимум палку, а как человек тринитротолуоловую шашку или вообще ракету с вертолета?

            Слушайте, даже в этом убогом случае вы не будете бегать набирать воду в рот далеко, потому что у вас есть чувственные абстракции «близко»/«далеко», и по странному стечению обстоятельств даже по вашему беганью можно 100% сказать, что у вас есть зачатки интеллекта.

            Как бы вы не выкручивались в данном случае, заподозрить в вас интеллект все же выйдет)) Вы и сами не заметите как проколитесь на ровном месте.


            1. Wizard_of_light
              30.07.2018 22:13

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


              1. InterceptorTSK
                31.07.2018 10:32

                Вода каторая изумительно но крайне тупо [не интеллектуально] находит щщели в плотине и при этом обтачивает камни — неминуемо снесет плотину.
                Это условия этого вашего некоего «творчества», вовсе не мои.

                Но вы преумело спихнули на меня «снос плотины» ага?

                И да, посчитайте количество «бреда воспаленного сознания» в постах — у бредометра стрелка погнется. Угадаете на чьих будет гнуть стрелку?


  1. third112
    30.07.2018 08:13

    В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.
    ИМХО не хватает четких формулировок. 1) Какова цель данного эксперимента? 2) Определение искусственной жизни. Нпр., она должна моделировать реальную? Или м.б. альтернативной (к реальной)? Поэтому в комментах выше каждый стал высказывать свое мнение по вопросу «что есть жизнь?»


  1. ValikSirbik
    30.07.2018 09:13

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

    Опять же, если это особенности вашего мира, то вопрос снимается


    1. foo52ru Автор
      30.07.2018 09:13

      Энергии тратится одинаково. Это особенности мира.


  1. sergix
    30.07.2018 09:22

    Всегда хотел грабнуть со стаковерфлоу все посты содержащие код на выбранном языке и дать «ботам» возможность юзать код по очереди, т.е. первый цикл отбросить все не работающие не компилируещиеся, а остальные запускать с разными параметрами и стремиться к результату какому-то.
    Так вот, идея с геномом очень интересна, и возможно даже подойдет для создания такого случайного компилятора)


    1. sergix
      30.07.2018 10:16

      однако не хватает рейтинга команд — привело к размножению или улучшению энергетического баланса +1, впустую потратили тик -1. Так-же не понравилась полная рандомность параметров. Такой-же второй геном бы с параметрами, и рейтингом параметров приводящих к улучшению.


  1. spellman003
    30.07.2018 09:33

    Люди будут стараться написать всё более лучшие версии подобных игр, добавляя всё больше параметров, и учитывая всё больше факторов, и в конце напишут Матрицу (не математическую, а трилогии Вачовски)


  1. zmitrok62
    30.07.2018 09:33

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


    1. foo52ru Автор
      30.07.2018 09:36

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


      1. zmitrok62
        30.07.2018 09:40

        Тогда можно сделать «накопительную» систему обучения. Т.е. предок передает по наследству информацию или ее часть, о том, где или как «жить лучше». Бот, который соберет эту информацию от нескольких своих потомков — будет наиболее жизнеспособный.


        1. netricks
          31.07.2018 11:35

          Обучение опыту предка распространено только среди немногих видов высших животных, причем практически исключительно среди млекопитающих. Говорят, некоторые виды осминогов подходят к этому. Передача опыта — высокая форма интеллекта. Врядли это то, что следует моделировать при исследовании базовых законов эволюции.

          Разве что боты сами научаться этому.


          1. Zenitchik
            31.07.2018 11:40

            Говорят, некоторые виды осминогов подходят к этому.

            Нереально. Осьминоги умирают, оставив потомство.


            1. netricks
              31.07.2018 11:46

              Я совершенно точно не специалист по осьминогам… Ссылаюсь на фильм «Пришельцы со дна океана», или какой-то близкий по теме.


  1. stasiche
    30.07.2018 09:37

    Вау, наконец-то нашёл единомышленника) вот то, что я в своё время выложил в читабельную версию)
    tm.spbstu.ru/Моделирование_основных_принципов_биологических_систем(организмы_%2B_глюкоза)
    tm.spbstu.ru/Моделирование_основных_принципов_биологических_систем
    Если кого-то это тронет, обязуюсь найти более «взрослую” версию с перераспределением питательной среды, мембранами и прочим


    1. foo52ru Автор
      30.07.2018 09:41

      Единомышленников можете найти здесь vk.com/cyberbiology


      1. stasiche
        01.08.2018 07:15

        Вау! Спасибо)


  1. idelgujin
    30.07.2018 10:09

    Интересно, а если создать пропорционально молекулы всех элементов, создать для них благоприятную среду для возникновения жизни. Через какое время появятся живые существа? И появятся ли вообще?


  1. ZAMnoTEX
    30.07.2018 11:07

    Весьма занятно ) Особенно заинтересовала «вспышка на Солнце». Было бы интересно посмотреть статистику насчет таких катастроф. Например, как часто после катастрофы мир изменяется до неузнаваемости? И вообще, бывает ли такое?
    А еще я бы добавил влияние самой жизни на окружающую среду — например, чем больше фотосинтезирующих ботов, тем меньше концентрация CO2, тем хуже для фотосинтезирующих организмов, и т.п.


  1. dbaykov
    30.07.2018 11:39
    +1

    ТВОЙ БЫДЛОКОД НАС ОГОРЧАЕТ

    www.gamedev.ru/flame/forum/?id=142109


    1. RomanoBruno
      30.07.2018 11:40

      Наконец-то!))


  1. jimmyjonezz
    30.07.2018 11:42

    Всегда интересовала тема «Жизнь» на ПК. Я очень впечатлен прочитанным и увиденным. Еще больше удивило то, что это реализовано на pixilang. Реализация УТК так проста, что хочется кричать «браво».
    Посмотрел видео и заметил, что в некоторый момент времени, прослеживается цикличность некого этапа «жизни» той или иной колонии (?) — как будто этот этап попал в спираль и прокручивает себя n-ое количество раз, образуя закономерность (или что-то типа того).


  1. amarao
    30.07.2018 12:10

    Очень интригующе и мотивирующе. Хотя идея «умирать если не удалось размножиться» у меня вызывает много вопросов. Я понимаю, что хвосты этого растут из конрадовской жизни, но это мало похоже на нормальную биологию. Наоборот, чем больше энергии запасено, тем существу лучше.


  1. BkmzSpb
    30.07.2018 12:11

    Отличный проект, результаты впечатляют, подобные клеточные (или не совсем клеточные) автоматы меня всегда завораживали.
    Я понимаю всю сложность таких проектов (в том числе и вычислительную), и я вряд ли реализую что-то подобное в ближайшее время, но очень хочется увидеть версию, где взаимодействия будут вероятностными. Клеточная РПГ (или D&D). Правда это значительно усложнит рассчет каждого следующего шага. Но и привнесет непредсказуемые сценарии.

    Отдельно хочется отметить, что бессмертность автоматов может быть проблемой. Смерть способствует обновлению генофонда популяции. Можно было бы задать, эм, cumulative probability distribution смерти с помощью нескольких параметров — опорных точек (которые, естественно, мутируют согласно общим законам симуляции). Условно, с начала жизни до хода N шанс естественной смерит низок, а затем он начинает резко расти. Вероятностный подход так же создаст некоторую непредсказуемость, иначе, все особи одного вида будут погибать на условном 42-ом ходу (если доживут).

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

    Отдельное обращение к автору: даже если вы любите работать в одиночку, исходники на git* (а также описание/примеры/результаты/ссылки) могут помочь другим начинающим энтузиастам и просто интересующимся (таким как я) начать свой проект или попробовать ваши симуляции (разумеется, если нет других причин и ограничений на дистрибьюцию кода).


    1. tyomitch
      30.07.2018 12:41

      Но и привнесет непредсказуемые сценарии.

      Так они уже и так непредсказуемые.


    1. netricks
      30.07.2018 21:16

      Ну и рассуждения ради: насколько мне известно, геном сложного организма (да того же человека) устроен таким образом, что одни и те же участки контролируют сразу несколько свойств (в комбинации с другими участками генома).

      Собственно, подход автора к параметрам функций, если я его правильно понял, дает ровно такой результат.


      1. foo52ru Автор
        30.07.2018 21:18

        Совершенно верно. Один байт может служить как командой, так и параметром или смещением для другой команды


  1. Y1975
    30.07.2018 12:39
    -1

    Вы там поаккуратнее с ботами. А то прорвутся в «облака» и… 8-)


  1. modestguy
    30.07.2018 12:41

    Мне не даёт покоя мысль, что в будущем можно создать «слепок» мозга в виртуальном пространстве и что после смерти самого человека, его «двойник» может жить «там».


    1. solariserj
      30.07.2018 13:59

      В Черном Зеркале эпизод. Сан-Джунипер такое уже реализовали

      а в эпизоде. Белое рождество показано как можно злоупотребить слепком сознания.


      1. Al_Azif
        01.08.2018 08:41

        В фантастике бесчисленное кол-во раз.
        Из последнего прочитанного — Alastair Reynolds, у него целая серия книг с человечеством разбившимся на «косморасы», одна из раз, уперевшаяся в науку при смерти «носителя» скачивала разум в большую базу где тусовались все умершие. Огромный коллективный интеллект. А отголоски ещё в Дюне, да.
        У Гамильтона опять же, Пришествие ночи, кажется серия.


  1. saboteur_kiev
    30.07.2018 16:47

    Это игра Life версия 2?


  1. SCSL
    30.07.2018 21:20

    1. foo52ru Автор
      30.07.2018 21:31

      Мне часто присылают клоны моего проекта. Я не против, даже приветствую. Особенно нравится, когда меня упоминают.


  1. dart_w
    30.07.2018 21:21

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



  1. YaShum
    31.07.2018 13:23

    Если бы при нажатии по существу можно было бы просматривать её ДНК, то было бы намного интереснее следить за ними и стали бы понятнее причины их поведения.
    Кстати, я видел ваш проект с видом сверху, так вот, этот из статьи (с видом сбоку) намного интереснее наблюдать, так как тут чаще происходит соприкосновение различных видов.


  1. darkfrei
    31.07.2018 21:20

    Давненько натыкался на эти видео на ютубе. Можно ли добавить ботам ячейку памяти? Сами пишут, сами читают воспоминания, но всё это стоит энергии чуть больше чем просто жить без воспоминаний. Будет ли хоть какое-то преимущство?


  1. ZeratoolSC
    31.07.2018 23:45

    Был удивлен, когда, прочитав рассказ Грега Игана Кристалльные ночи, обнаружил Вашу статью. Тема один в один. Удачи в дальнейшем развитии проекта!


  1. Tinki-Vinki
    31.07.2018 23:45

    Симулятор для эволюционного биолога.


    1. RomanoBruno
      01.08.2018 00:42

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


      1. phenik
        01.08.2018 04:34

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


        1. RomanoBruno
          01.08.2018 12:25

          По-моему реальные модели просто намного узкоспециализированнее а не сложнее. Или у вас конкретные примеры есть?