Pull to refresh

Comments 106

> Коллективный разум бактерий

Ни слова о хабре! :-) Картинка тоже напоминает.
Ахаха, ну у вас и аналогии я вам скажу, сударь! ;-)
Проработайте выход за границы получше, а то я навзрывал, чистое поле, ни одной бактерии (как после туалетного утенка), а он мне говорит 20 синих и 85 красных!
Ну вот, теперь их по 2500 (ваш максимум, я так понимаю), а на экране единицы счастливчиков :))
секундочку!) отлаживал в последний момент какая-то «кака» проскочила… сейчас поправим
А нет, простите, это не поправить, если не переписывать все.
Вероятно вы задали бактериям слишком сильный «пинок», они рвутся выйти за границу постоянно и их возвращают обратно. За поэтому они «мельтишат» постоянно и их не видно, даже если оставлять след. Нельзя так жестко издеваться над живой природой! :)
А что, если не возвращать? Бактерия вышла за границу — всё, для нас она умерла.
Надо подумать…
Тогда, мне кажется, края будут не совсем «естесственные»
Например при вихре будет погибать их слишком много.
UFO just landed and posted this here
Странно, но у меня после таких проделок почти все красные померли ^^
Тут все зависит от того, кому как повезет, кого больше погибнет.
UFO just landed and posted this here
После максимального вихря (вращение 100; втягивание 100) убрал вращение и красные и синии бактерии устремились по 4 углам — в итоге вымерли :(
Если не баг то вы генетический дрейф смоделировали — изменение состава популяции под воздействием случайных факторов.

Эту бы прогу да под нос креационистам! Хотя нет, разумных доводов они не слушают, какой-то там программе тем более не поверят.
Маленькое замечание — на скриншотах заметны JPEG-артефакты. И, кстати, чего картинки не в GIF или PNG?
Да, особенно заметно на большом рисунке.
Сейчас поменяю его.
Спасибо за замечание. Учту про png!
Может быть благодаря этим механизмам у нас сейчас 4 руки и три глаза.

0_о WTF?
Что, у вас не так? Да вы, батенька, мутант. :-)
вот так и создавались первые визуализации для winamp =)
грязноватая победа я вам доложу :-)
Кстати, в реальной жизни многие бактерии действительно ведут себя коллективно. Это в биологии называется quorum sensing.
Возможно я не там искал… Или не так. Я вот, что нашел:
quorum sensing — ощущение кворума способность бактерий сообщать и координировать поведение с помощью передачи сигналов молекулами.
На мой взгляд — это не совсем то.
Да, но в алгоритме этого нет. Тут вообще «роевого» взаимодействия нет.
Всё-таки время x3-x5 работает не совсем корректно. Нужно, чтобы этот ползунок управлял скоростью обновления информации на экране, а не производил вычисления на каждый n-й момент времени, а то при одинаковых условиях при x1 все помирают, а при x5 упираются в предел численности. Появляется неточность вычислений =/
Да, спасибо, я об этом написал.
Тут нет такого, как вы пишите: "… каждый n-й момент времени..."
Тут дело в оптимизации подсчетов. Если делать точные подсчеты, то слишком тормознуто получается, а для того алгоритма, что использую я есть влияние длины «скачка» бактерий между кадрами. Чем быстрее время, тем больше этот скачек.
У меня была грандиозная задумка создать симулятор эволюции, вывести кучу законов и вообще сделать из обезьяны человека, но никак руки не дошли (._.)
А тут, казалось бы, несложный движок (лишь наследование скорости), а уже вон какие статистические результаты :)
Меня это тоже поразило! Трудно представить, как будет, если ввести больше параметров!
Будьте бдительней, пожалуйста.
image
Пишем некий язык, на котором описываем поведение некое примитивной единицы «жизни». Делаем «компилятор», который нечасто случайным образом в случайное место вставляет случайную инструкцию нашего языка в каждую единицу «жизни». Создаём условия, например ограниченный размер памяти (так чтобы при большом количестве особей, они просто не помещались все сразу и перезаписывали друг друга) и ограничение по количеству «компилируемых» программ за цикл (чтобы единицы, которые начинали плодиться, достигнув некоторого количества «боролись» за «размножение»).

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

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

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

Я полагаю что мутации происходят редко. Я не прав? (Что значит «редко» опять же?) Я хотел подчеркнуть этим словом, что компилятор не должен встраивать случайную инструкцию в каждый цикл компиляции. Более частые мутации не ускорят эволюцию, а сделают неустойчивым или невозможным передачу адаптивных признаков. А вот «скорость» жизни и циклов может быть намного быстрее реальной.
А если всё это увязать вот с этими мощностями habrahabr.ru/blogs/p2p/112491/, которые думаю со временем будут только увеличиваться?
PS. А вот самым интересным будет наблюдать за «ихними» учёными, которые будут пытаться исследовать свой мир…
Мне иногда приходит в голову, что мы — всего лишь картинки на трехмерных мониторах в каком-нибудь четырехмерном мире. :D
А самое интересное, что, даже если это так, мы никак не можем этого проверить :(
Не до конца понимаю ваши слова.
В результате будет получаться куча программ, которые делают какие-то случайные вещи. А как выбирать среди них ту, что лучше?

По поводу цифровой эволюции. Года три назад в каком-то журнале столкнулся со статьей, в которой рассказывалось, что какие-то ученые создали компьютерный мир и населили его объектами, способными как-то там соображать. Каждый объект питается съедобными грибами. У каждого в жизни несколько целей — родить сына, посадить ядовитый гриб, что-то еще. И вот, писалось, что через несколько месяцев работы объекты даже выработали свой язык. Могу что-то путать, к сожалению ссылки найти не удалось… Может кто подскажет?
Вы описали генетическое программирование.

Такие исследования ведутся, правда про какие-либо интересные результаты в инете ничего не встречал. Возможно, просто не попадалось. Было бы очень интересно почитать про такое, да и сам давно хочу попробовать.
Dan Simmons, серия про Hiperion, неплохо раскрывает тему цифровой эволюции.
Да, да. В Гиперионе было схожее описание, и вы сами помните к чему это привело. Надо начинать!
Что самое занятное, и поныне находятся люди, готовые с пеной у рта утверждать: «Эволюция — ложь!»
Ваша программа, несмотря на её простоту, прекрасно демонстрирует базовые принципы естественного отбора. Особи, приспособленные к окружающим условиям благодаря незначительным случайным мутациям, выживают и передают свою приспособленность потомкам.
С другой стороны, в вашем случае передаются и приобретённые признаки, так как бактерия меняет направление движения не только в момент рождения. В реальности же приобретённые признаки не передаются. Я бы предложил сделать передачу приобретённых признаков отключаемой (то есть, лишить бактерии возможности менять направление движения; лишь новорожденные бактерии имеют незначительно отклоняющийся от родительского вектор движения) и ввести настраиваемый коэффициент мутации (значение возможного отклонения вектора движения для новорожденной бактерии относительно бактерии-родителя).
Всё равно маловато для самого интересного. Каждую такую единицу жизни нужно наградить способностью приобретать любой возможный (для «компьютерной» инструкции) признак: habrahabr.ru/blogs/artificial_intelligence/135628/#comment_4508553

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

Вспомнил, мне по нему давали интересную ссылку — мутация машинок

А вот была классная статья на хабре про генетический алгоритм. Стоит обязательно посмотреть интересующимся!
клац

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

Холодно что то на кухне стало после открытия окна. Пойду накину халатик.
Генетический алгоритм — штука более сложная. В данном случае у «подопытных» нет кроссовера, у них обычное деление.

Есть, кстати, и более интересная версия машинок. В своё время ссылка давалась на хабре.

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

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

Шерсть у мамонтов просто объясняется — наступают холода, те мамонты в генокоде которых совершенно случайно (случайная мутация) много шерсти :) выживают, те, у которых мало — нет, мутация становится направленной. А холода проходят и выживают те, у которых ещё и механизм линьки «предусмотрен» (случайно появился).
UFO just landed and posted this here
Собственно, к уже написанным ответам мне нечего добавить.
> Всё дело в том, что приобретённые признаки не передаются.

Вы отстали лет на 10, коллега. Сейчас новые течения в науке — читаем — эпигенетика.
Интересно, благодарю. Посоветуете что-нибудь почитать на данную тему?
UFO just landed and posted this here
Кстати, именно поэтому я предлагаю сделать приобретённые признаки отключаемыми. Пусть по умолчанию бактерии меняют вектор исключительно в момент рождения. Или же, как вариант, они будут способны менять его на протяжении жизни, но эти изменения не будут передаваться. До тех пор это, всё ж, не является полноценной демонстрацией естественного отбора, так как нарушается один из важнейших принципов — отсутствие передачи приобретённых признаков.
А есть у вас хороший пруфлинк вашего тезиса? Я бы почитал что-то такое. Интересно
Я бы порекомендовал почитать «Эгоистичный ген» и «Расширенный фенотип» Докинза. В доступной форме изложены современные представления.
| Что самое занятное, и поныне находятся люди, готовые с пеной у рта утверждать: «Эволюция — ложь!» Ваша программа, несмотря на её простоту, прекрасно демонстрирует базовые принципы естественного отбора.

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

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

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

Мозг отказывается верить. Вероятность вероятностью, но почему-то все говорят миллионы-миллиарды, в то время как вероятность 100кб файла стать изображением чьей-то попы меньше 1 / (2 ^ 200000).

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

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

Если речь идёт о каких-то глобальных процессах — то да, ко всему уже придумали теорию. Но живые контр-аргументы вокруг нас и с этим приходится жить. Либо верить в лапшу от землекопов, либо верить в лапшу от инженеров. Теория от инженеров мне ближе, вот и всё.
UFO just landed and posted this here
Вот мне не понятно, почему эти аттракторы такие красивые с точки зрения эстетики. Все животные на планете в какой-то мере «правильные», нет кривых ползующих-летающих амёб с щупальцами, хотя именно эта форма является наиболее оптимальной на мой взгляд…
У нас в голове зашито понятие красоты. Если взять какой-нибудь вид и генетически обработать, добавив лишнюю часть — человек сразу заметит, что это не нормально.
Сколько вы бы не отрицали, существует набор законов, по которым все эти мутации происходят, взять то же золотое сечение, его никто не отменял.

Вот эти законы всегда наводят на мрачные мысли, когда понимаешь, что о простой случайности и речи быть не может.
UFO just landed and posted this here
СРАНЬ ГОСПОДНЯ!!! O_O
Всё, всё молчу, больше не надо.
omfg!!! Где вы такое откопали??? :-)
А «голый землекоп»?
image
100% понравится любителям лысых котов :)
UFO just landed and posted this here
UFO just landed and posted this here
Про картинку попы да, согласен. Опять же — фильтры кто-то придумал.

>Ну да, отличий между волком и чихуахуа совсем-совсем немного :)
Я не про появление видов, а про эволюцию этих готовых видов. Ведь они то и делают, что вымирают. Морфический резонанс не считается за эволюцию.
UFO just landed and posted this here
Да-да. Ну, вполне себе конструктор.
Я тут камаз кирпичей уже наложил, давайте закроем вопрос? ;)
UFO just landed and posted this here
Может быть благодаря этим механизмам у нас сейчас 4 руки и три глаза

UFO just landed and posted this here
Теперь осталось только добавить эволюцию бактерий и увеличить скорость мутаций. ;)
Не мог не поставить эту картинку.
image

Интересная затея, на самом деле. Сильно напоминает клеточные автоматы. Автоматами можно симулировать любой алгоритм, может и амебами получится?
Хм, поглядел Википедию. И правда тесная связь с однородными структурами (клеточными автоматами).
Спасибо!
Да, с клеточными автоматами перекликается. Пожалуй стоит добавить ссылку на википедию.
Следующий шаг — чтоб красненькие были самками, а синенькие — самцами 8)
Специалисты оценили соответствие заголовка содержанию статьи.

ахаха
по-моему соответствует
А что не так? :-)
На мой взгляд, подходящее название — «Рисовалка прикольных узоров на ActionScript 3.0, без кода но со скриншотами». Вы, конечно, извините, но в описанном вами алгоритме отсутствуют какого либо признаки коллективного разума и роевого интеллекта. Ваша программа по сути — аналог игры в «Жизнь», только с видоизмененными правилами, которые укладываются в рамки примитивной мат.модели. Для того чтобы соответствовать названию, необходимо значительно усложнить алгоритм, добавив как минимум механизм взаимодействия бактерии с себе подобными, а не ограничиваться косвенной передачей признаков потомству.

Ничего личного, просто вещи надо называть своими именами. Готов словить кучу неаргументированных минусов, как это принято в последнее время на Хабре. Желаю удачи.
Думаю, что код здесь был бы лишним. Однако готов предоставить его всем желающим.
Про примитивную мат модель — согласен. Это сложно даже назвать мат моделью.
Я понимаю ваш скептицизм, но все модели, шуточные, как эта, или серьезные, как например сложные нейронные сети работают по определенным правилам, и любые «феномены», которые можно наблюдать поддаются логическим объяснениям, пусть даже на первый взгляд кажется удивительными.
Не до конца понимаю, почему для вас «привыкание к течению», которое изначально не заложено в алгоритм не может хотя бы на несколько мгновений показаться примитивным коллективным разумом, стремящимся сохранить численность. Может быть вызовет хотя бы какие-то аналогии с реальной жизнью? нет? Странно :-) Ну, каждому свое
UFO just landed and posted this here
Спасибо большое, теперь мне понятно, что имел ввиду предыдущий оратор :-)
Тут, мне кажется уже «спор понятий».
Если читать википедию про роевой интеллект (к сожалению четкого определения там нет) — бактерии обладают некоторыми признаками, хотя не всеми. Тут нельзя не согласиться.
Однако бактерии эти это и не совсем генетический алгоритм.
В целом да, это не роевой интеллект. Но я бы не хотел этому давать название «рисовалка картинок», тем более, что картинки не такие уж и впечатляющие получились.
Смыслом было — предложить задуматься о роевом интеллекте, о выживании в природе, приспособлении на простом примере, который меня, например, немного впечатлил. Судя по обилию комментариев мне это немного удалось.
По вашим комментариям складывается впечатление, что вы оперируете не систематическим материалом, а статьям, надёрганным отовсюду в интернете. Вы вчера недавно начитались разных слов, которые смутно понимаете и хотите их всем рассказать и всё ими обозвать и ко всему применить. Не надо этого делать, пожалуйста. Пожалейте послепраздничный мозг. Ваша программа — алгоритмический hello world школьного уровня, не нужно больше ебть мозг словами из википедии.
я и не претендую на создание искусственного интеллекта в этой программе и не придаю ей великий смысл.

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

Если бы каждая точка меняла свой вектор движения основываясь на анализе движения соседей, можно было бы говорить о подобии коллективного разума.
в принципе да, с одной стороны коллективного ничего нет, а с другой — без «коллектива» нет и никакого привыкания. Т.е. в целом привыкает не одна бактерия, а приспосабливается весь коллектив, правда со значительными жертвами!
я бы назвал это статистический разум тогда)
UFO just landed and posted this here
Хорошая идея! Но тут на слабых компьютерах и так подтормаживает все, еще пара сотен точек может дорогого стоить: Flash это все-таки не C++ ;-)

Сейчас я выложу в конце статьи исходники. Любой желающий может добавить и изменить то, что там хочет. Код хоть и кривоватый, но более-менее понятный.
UFO just landed and posted this here
Ну вот, сразу оскорбления :-)
Однако не исключено, что так. Но партиклы партиклам рознь. Здесь нужно посчитать для каждого партикла — сколько других вокруг него. На оптимизацию здесь я хоть и не совсем забил, но забил не до конца. Кое что делаю. Но моем компьютере 10 килобактерий держит нормально, когда как если делать в тупую, то и 1000 не держит. Рядом стоит компьютер по слабее, на нем ситуация похуже.
Классная тема. В свое время делал нечто подобное для системы «хищник-жертва». Одна из проблем заключалась в том, что при небольшом количестве объектов наблюдалось заметное отклонение от равномерного распределения, и были явно видны кластеры. limon_spb Вы как-нибудь это учитывали?
Спасибо!
Не до конца понимаю о распределении чего вы говорите. Поясните, пожалуйста.

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

С разрешения автора хотелось бы покурить исходники и сделать еще один параметр наследуемым — максимальное ускорение (изменчивость скорости). По идее после этого можно будет говорить о том, что некоторые из бактерий станут более или менее приспосабливаемыми к изменениям.
Спасибо!
Пожалуйста, курите сколько хотите! В конце статьи я выложил их.
Только не сильно материте меня :-)
Я убийца… Запустил вихрь с вращением и втягиванием по 100 и убил всех бактерий… Нет мне прощения…
Всё, уйду в монастырь! Женский… Настоятелем.
Честно говоря, прочитав название, ожидал увидеть что-то в духе интеллекта роя мелких роботов из чудесного «Непобедимого» Станислава Лема.
Эх…
Sign up to leave a comment.

Articles