Искусственная жизнь. Борьба кланов. Технические детали модели.

  Рет қаралды 28,223

foo52ru ТехноШаман

foo52ru ТехноШаман

2 ай бұрын

В ролике описываю некоторые технические детали проекта "Борьба кланов", где происходит эволюция виртуальных клеток, способных создавать многоклеточные организмы.
1:14 последовательность выполнения
5:07 движение энергии внутри организма
11:34 устройство генома
Поддержать канал можно на Boosty ( boosty.to/foo52ru )

Пікірлер: 374
@robdemo51
@robdemo51 2 ай бұрын
Я раньше не замечал, но звуки в видео подобраны очень качественно. Даже сложные вещи с такой атмосферой интересно смотреть, будто какой-то древний магический механизм собираю)
@justafish_
@justafish_ 2 ай бұрын
Как по мне из за этих звуков и отсутствия музыки атмосфера в последних видосах стала какой то давящей
@PJutch
@PJutch 2 ай бұрын
@@justafish_ мне нормально вс1 видео, кроме заставки "Wallcraft" в начале. До скримера она не дотягивает, но звук жутковатый)
@404notfound2
@404notfound2 2 ай бұрын
Как ты сказал, так и услышал. Ты прав. А то голос , как пердеда😂 любя😊
@boy4en660
@boy4en660 2 ай бұрын
Таки кого я вижу...
@user-us3ss1jo9h
@user-us3ss1jo9h Ай бұрын
Мистический триллер)
@baronfox8829
@baronfox8829 2 ай бұрын
Помню ты говорил в одном из прошлых видео что это будет скучно, но нет, это было очень интересно, будто на урок по информатике сходил, я к сожалению не программист и не имею представления какие можно предложить интересные альтернативы твоим алгоритмам, но я уверен тут есть другие люди, намного умнее которые предложат множество интересных идей, надеюсь ты не будешь забрасывать проект, мне нравиться смотреть за развитием твоих проектов и твоего канала
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Нравится - займись программированием. По минимуму тут ни чего сложного. Научись кусотром двигать точку по экрану, или графики/линии рисовать.
@baronfox8829
@baronfox8829 2 ай бұрын
@@progressive_agriculture Да дело в том что я не считаю программирование такой уж полезной профессией, все нужные программы для обычного человека уже созданы, если создаешь игры то там скорее лотерея в том заметят ли твою игру, ведь есть столько хороших проектов которые умирают из-за того что их не заметили, я и так на самом базовом уровне понимаю как код устроен, этих знаний мне хватает в повседневной жизни например Картинку вытащить, скачать оригинал видео, убрать защиту от пиратства с игры или найти ключ внутри (обычно это очень нишевые игры где защита считай от обычных людей), иногда делаю мелкие модификации для игры чисто для себя, один раз даже смог скачать то что было удаленно используя одну уязвимость что я нашел в сайте, звучит круто, но это не так круто на самом деле, просто для меня важно что бы я лично сам считал профессию полезной для людей что ли, а тут дело в том что я явно не буду одним из тех кто создает передовые технологии, а буду кем то кто например создает очередной аналог скайпа для компании что бы их беседы были конфиденциальными или что то такое, то есть по факту буду делать велосипед, мне это не нравиться, я люблю создавать то чего ещё не было, а придумать то чего ещё не было очень затруднительно, хотя конечно есть несколько нишевых областей где я заметил что нет реально нужных программ и то, тогда не было, может сейчас уже есть, например в игре crossout есть рейды и они случайно сменяются каждый час на другие, какие следующие будут ты не знаешь, дело в том что одни выгоднее чем другие и потому было бы хорошо иметь прогу которая смогла бы уведомлять тебя о том какие сейчас рейды без твоего личного захода в игру, один чел даже сделал одну, но он её забросил и в конце концов она перестала работать, ведь игра не стояла на месте в отличии от программы, а исходный код он никому не захотел отдавать, учитывая тот факт как редко я встречаю случаи когда действительно нет специализированных программ для любой ситуации я считаю что профессия программиста это из рода создания велосипеда, что мне и не нравиться
@Doctor_Sad
@Doctor_Sad 2 ай бұрын
Один из самых интересных видеороликов, наконец то получили ответы на сложные вопросы)
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Не все... Ой, не все! На чем написано? Многоточность есть? Какова скорость? Как производится формирование видео записи? И т.д....
@user-oe3oh3eu8d
@user-oe3oh3eu8d 2 ай бұрын
Объяснения доступны и приятны глазу. Супер!
@user-or6fu5dc4s
@user-or6fu5dc4s 2 ай бұрын
Теперь всем стало ясно, для чего нужна предельность скорости света- чтобы успеть обсчитать процесс😂
@user-or6fu5dc4s
@user-or6fu5dc4s 2 ай бұрын
И это не шутка
@user-vm1hi7bo5s
@user-vm1hi7bo5s 2 ай бұрын
@@user-or6fu5dc4s Да, без этого никак, скорость света должна быть конечной. Иначе совсем банальные вещи, такие как два направленных друг на друга зеркала, создают неразрешимый парадокс. Это примерно как неостановимая сила сталкивается с неразрушимой стеной.
@Lux-Sphinkx
@Lux-Sphinkx 2 ай бұрын
Это настолько невероятно и чудно Такая дикая сложность и простота Немыслимый контент сколько труда любви и времени чудо
@ertitup-ch9vg
@ertitup-ch9vg 2 ай бұрын
Это то видео для которого я захожу на ютуб
@busy_beaver
@busy_beaver 2 ай бұрын
Очень качественно сделан ролик. Спасибо! Было интересно.
@AntonDudko1988
@AntonDudko1988 2 ай бұрын
Приветствую ТехноШаман и всех зрителей! Вопрос/предложение: В реальном мире организм жив пока у него есть энергия\пит. в-ва, но в данной симуляции при отсутствии клетки ростка или семени весь организм по цепочке отмирает. Что мешает организму вернув цепочку энерго передачи к изначальной клетке не создать новый росток, или даже лучше не дожидаться возврата к изначальной клетке а создать её на первой энерго избыточной клетке от конца ростка. На подобии создания почек у растений у основания поврежденной ветви, или продолжении роста поврежденных кораллов. Таким образом тело организма не превратиться в статичный путь транспорта энергии а будет способен к восстановлению\адаптации, и избыток энергии не будет смертельным.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
У него есть понятие семян. придется еще одно понятие вводить.
@foo52ru
@foo52ru 2 ай бұрын
Можно и так сделать. Я как то убрал смерть в случае, когда энергию некуда пересылать. Клетка просто энергию в землю скидывала. Со временем в почве накапливался переизбыток энергии и клетка уже погибала по другой причине. Но в этом варианте мир чаще погибал, а когда выживал, то визуально был не очень интересный. Я переодически меняю правила и смотрю, как всё будет развиваться.
@bearmike_360KB
@bearmike_360KB 2 ай бұрын
Сам увлекаюсь кодом и внимательно слежу за проектом. Огромное спасибо за сегодняшнее видео. Идея использования генома до сих пор меня удивляет. Потому крайне интересно смотреть на этот результат.
@user-px2rw3bt4l
@user-px2rw3bt4l 2 ай бұрын
Классный формат и подача! Такие видео очень полезны, ждем продолжения Занимаюсь симуляцией производственных процессов, для этих целей активно используется ECS (entity component system) на базе архитипов. Есть ощущение, что для ваших задач может быть полезно. Из доступных/готовых решений, что используем мы в своих проектах: Arch и Flecs.
@alexandr_s
@alexandr_s 2 ай бұрын
Такты работы мира можно просчитывать для каждой клетки параллельно. 1. расчет действий 2. определение конфликтов 3. разруливание конфликтов по правилам или рандому для начала 4. фиксация нового состояния после такта Этот алгоритм не только ближе к реальности, но и гораздо более производительный при многопоточной реализации
@user-db2th5em3v
@user-db2th5em3v 2 ай бұрын
Графика это прекрасно. Визуализация процесса это то, на что заточен мозг человека, но до определенных пределов. Наверняка, не менее интересным было бы смотреть на графики и иметь возможность манипулировать ими в анализе. Наверняка интерпретация визуализации не всегда похожа на результаты из таблиц данных
@foo52ru
@foo52ru 2 ай бұрын
У меня реализована возможность сохранять данные симуляции в csv-файле. Но никак руки не дойдут до анализа данных, нагенерированных симуляцией :(
@user-db2th5em3v
@user-db2th5em3v 2 ай бұрын
@@foo52ru , как знать, может таблицы и анализ поможет сформулировать новые вводные для экспериментов
@user-gf2yq5vn6f
@user-gf2yq5vn6f 2 ай бұрын
Атмосфера завораживающая! Лайк!
@stas_v
@stas_v 2 ай бұрын
Очень просто и доходчиво. Захотелось самому повторить. Спасибо!
@user-ul6ik9cp8d
@user-ul6ik9cp8d 2 ай бұрын
Супер! Обожаю твои видео про то, как работают твои симуляции Сейчас смотрю (пока только 3 минуты :D) Решил внезапно своё мнение вставить: я у себя просто перед каждым новым шагом симуляции перемешиваю порядок всех ботов тасованием Фишера Йетса, работает достаточно быстро и справедливо по-моему
@foo52ru
@foo52ru 2 ай бұрын
хорошая идея
@ustredzo
@ustredzo 2 ай бұрын
Очень хотелось посмотреть как раз про устройство системы на этом уровне, большое спасибо!
@FAL0C
@FAL0C 2 ай бұрын
Братан, хорош, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Это немного с другого канала 😁
@FAL0C
@FAL0C 2 ай бұрын
@@progressive_agriculture главное, что контент в кайф 😏
@foo52ru
@foo52ru 2 ай бұрын
@@progressive_agriculture с какого?
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
@@foo52ru Я на этом сталкиваюсь @ExtremeCode
@foo52ru
@foo52ru 2 ай бұрын
@@progressive_agriculture не совсем понял. У нас есть какие то одинаковые ролики?
@BSpont
@BSpont 2 ай бұрын
Круто, спасибо за детали, очень интересно так долго наблюдать за проектом
@duard8652
@duard8652 2 ай бұрын
Оч классно! Спасибо!
@nikitasssprogramming8710
@nikitasssprogramming8710 2 ай бұрын
Это мы так долго ждали
@replay3069
@replay3069 2 ай бұрын
Это просто офигенно!
@Ground1981
@Ground1981 2 ай бұрын
Спасибо ! Круто 👍
@yobi3d
@yobi3d Ай бұрын
Спасибо вам большое! Очень познавательно 👍
@turdakhov
@turdakhov 2 ай бұрын
Спасибо за ваши видео! Коммент в поддержку!
@user-gc9pw2uo6m
@user-gc9pw2uo6m 2 ай бұрын
Успехов!
@igorshingelevich7627
@igorshingelevich7627 2 ай бұрын
Спасибо!
@user-si2iw8hl1q
@user-si2iw8hl1q 2 ай бұрын
читаю комменты и просто не понимаю ........ вы КТО? Вы зачем пишите вообще?) Ни один не задал вопроса по теме .... И уж тем более свои идеи..... То что делает этот человек - гениально......
@leok2640
@leok2640 2 ай бұрын
Твои идеи и вопросы по теме? М?
@sergeyfamiliy2781
@sergeyfamiliy2781 2 ай бұрын
По голосу, с монотонным и без интонации звучанием , понятно что это ИИ-учитель со сверхинтеллектом разработанный в Нашей РОССИИ!
@greatorb61
@greatorb61 2 ай бұрын
​@@sergeyfamiliy2781чего
@user-sc4gc5mt1h
@user-sc4gc5mt1h 2 ай бұрын
Люди оставляют комментарии ради поддержки канала. Алгоритмам Ютуба важно количество, а не качество. Решение писать лишь "конструктивные" комментарии уменьшит их общее количество и распространение ролика соответственно.
@user-yf5zn9us5z
@user-yf5zn9us5z 2 ай бұрын
очень сильно на ютубе не хватает разделение комментариев по категориям. Например, категории "просто поддержка" (по умолчанию), идеи, другие проекты и т.д.
@alexnorton1305
@alexnorton1305 2 ай бұрын
Молодец. Посвящать часть своей жизни чему-то, а результатом делиться с другими говорит о личных качествах.
@drago285
@drago285 28 күн бұрын
Привет Шаман! Есть у меня для тебя и твоих нейронок интересная идея, точнее загадка. Играют в шахматы двое, один читает мысли, другой прыгает во времени. Оба знают только правила игры и то как ходят фигуры. Читающий мысли узнает планы и стратегию прыгуна как только тот окажется перед ним возвращаясь из будущего. Прыгающий во времени может когда угодно вернуться в любую секунду от начала игры до того момента в котором сам находится. И он знает что играет с чтецом мыслей. Игра прекращается как только объявлен шах и мат. Кто победит? Это типа неразрешимая загадка, но я подумав над ней несколько дней прихожу к выводу что если бы эта игра начиналась снова и снова, не зависимо сохранялся бы опыт и знания от предыдущей выигрывал бы за частую один и тот же - читающий мысли. Кто прочёл это - ставь лайк что бы автор увидел.
@Shedshebolda
@Shedshebolda 18 күн бұрын
Интересная идея
@gt34m62
@gt34m62 2 ай бұрын
Возможно, я не правильно понял принцип фаз A и B, но вроде можно просто было сделать буфер для энергии, куда попадала бы перемещаемая энергия. А в конце хода она уже передавалась из этого буфера самой клетке. Т.е этим мы просто не дадим конкретной еденице энергии перемещаться более одного раза за ход.
@foo52ru
@foo52ru 2 ай бұрын
По моим прикидкам на бумажке, скорость в одну сторону будет клетка за ход, в обратную сторону - клетка за два хода
@gt34m62
@gt34m62 2 ай бұрын
@@foo52ru разве? Это ведь будет (должно) работать просто как перекладывание всех энергии на одну клетку.
@user-wz7ov1xt6x
@user-wz7ov1xt6x Ай бұрын
У тебя просто талант!!
@dofidf3570
@dofidf3570 2 ай бұрын
Здравствуй. У меня есть предложения по поводу Очередности клеток и Перемещения энергии. 1) Начнем с очередности: Так как подразумевается в симуляции, что все действия происходят одновременно, то нам понадобятся 2 списка: • Первый список (ПС) - список клеток участвующих в цикле; • Второй список (ВС) - список новых клеток (добавляются в конец ПС при новой итерации цикла). ПС можно обходить: от 1 до N с шагом 1 (то как показано в видео). А можно еще обходить таким образом: a) заведем простое число P, где P > N и N - количество элементов в ПС; b) заводим переменную: текущий индекс (ТИ) равную 0; c) вычисляем индекс клетки в ПС по формуле: ТИ = (ТИ + P) mod N, где mod - это остаток от деления (11 mod 3 = 2). Таким образом мы будем «прыгать» по клеткам из ПС в псевдослучайном порядке и если сделать N таких «прыжков», то мы побываем во всех клетках без повтора. И при каждой итерации цикла будем начинать не с клетки из предыдущего цикла, а с новой: - из этого следует, что не будет отдаваться предпочтение какой-либо клетки; - больше случайности будут добавлять новые клетки из ВС, присоединённые к ПС; - больше случайности можно добавить путем использования при каждой итерации цикла нового простого числа P (можно использовать список простых чисел). ВС при таком подходе необходимо использовать так как при увеличении количества клеток в ПС (кода еще полностью не обошли его): часть клеток не будет задействована, а другая часть пойдет по второму кругу. ВС также поможет находить клетки, которые пытаются встроится на одну и туже область, тут как поступить решает автор, единственное что я придумал: - это либо отдавать предпочтение раньше появившиеся клетки в ВС (при разных P порядок появление в ВС тоже псевдослучайный); - или при добавлении в ВС проверять не претендует ли другая клетка на туже область. 2) Перемещение Энергии: Для перемещения энергии можно использовать такой же механизм как в реальных клетках. Немного теории, адаптированной к нашей ситуации: - у клетки есть Накопитель Энергии (НЭ): в единицах или штуках; - у клетки есть Степень Требования Энергии (СТЭ): от 0 до 100% с шагом 0.1% (думаю такой шаг будет нормальным); - у клетки есть Степень Наследования Энергии (СНЭ): от 0 до 100% с шагом 0.1%; - клетка берет/передает энергию со всех соседей вокруг разом; - при делении клетка передает долю НЭ в зависимости от СНЭ. Объяснение: - НЭ - это то сколько есть энергии у клетки, которую она вырабатывает/тратит/передает, при 0 клетка умирает, возможен верхний лимит (в зависимости от автора); - СТЭ - это доля НЭ, которую клетка берет/передает соседям, тут такой смысл если: • СТЭк клетки меньше соседней СТЭс, то передаем долю НЭ соседней, долю считаем как: доля = СТЭс - СТЭк; • СТЭк клетки равна соседней СТЭс, то не передаем НЭ (по формуле выше это видно); • СТЭк клетки больше соседней СТЭс, то берем долю НЭ из соседней (формула выше); • СТЭк клетки значительно больше соседней СТЭс, то получаем раковую клетку (обычно так и происходит + ещё реплицируется постоянно). • Можно использовать в условиях (которые выше) не доли СТЭ, а конечное количество энергии (ККЭ), то есть: ККЭ = НЭ * СТЭ, а по результатам пересчитывать как передача среднего_значения( ККЭс - ККЭк ) или както по другому (тут решает автор). - СНЭ - это доля НЭ, которая передается при делении клетки наследнику (если можно так сказать): • так как было выше сказано при НЭ равно 0 клетка умирает, то при делении обязательно нужно передать часть НЭ; • причем передать такое количество НЭ, чтобы наследник смог некоторое время продержатся; • можно при делении изменить значение СНЭ у родителя, чтобы не объедать наследников или более сложного поведения, или выстроение магистрали с постоянным значением СНЭ, или при каждом делении уменьшать значение СНЭ пока клетка не сможет физически передать столько энергии и умрет, тут сложно прогнозировать что лучше; • можно поставить ограничение на количество делений (прям как в реальности ≈50). - Что касаемо передачи энергии от всех/всем соседей(ем), то можно: • каждому соседу по отдельности; • или вычислять общее кол-во передаваемой энергии от клетки, а соседи забирают её в зависимости от своей доли. - Реализация - 2 переменные (сколько получили (Дебет) и сколько потратили (Кредит)): • в начале: клетка увеличивает свой НЭ энергией, переданной от Предыдущего цикла; • в середине: тратит/передает энергию, на действия или передача соседям; • в конце: получает энергию, выработкой или от соседей. Таким образом при каждой итерации цикла мы получаем что все клетки передали/получили энергию соседям(ей). При таком решении клетки не будут умирать сразу, как только потеряют свою «цели жизни», а будут жить пока не израсходуют свой ресурс. Тут нужно подумать стоит ли пересчитывать сколько тратит каждая клетка энергии. Также этот метод можно использовать в передаче ресурсов между клетками. Надеюсь помог.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
При наличии буферов, чтоб энергия за 1 шаг не могла дальше 1 клетки сместиться, вся эта заумь ни к чему.
@Roid92
@Roid92 2 ай бұрын
а почему бы не высвободить память?) вместо массива из четырех чисел с направлениями передачи энергии можно использовать битовые флаги. нужно всего четыре бита. так же поступить и с родителем. в итоге в одно восьмибитное число спокойно помещается инфа о направлении к клетке родителю и о направлениях для передачи энергии. да и битовые операции должны выполняться быстрее - что может ускорить симуляцию))
@Grey_Slime
@Grey_Slime 2 ай бұрын
Звучит логично
@darkfrei2
@darkfrei2 2 ай бұрын
Для простоты объяснения же.
@Roid92
@Roid92 2 ай бұрын
@@darkfrei2 возможно. не пришла такая мысль, когда писал комментарий)
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Потому что памяти в современных компьютерах "немерено," А работа с битовыми операторами в 2 раза медленней, чем просто с числами. В таких симуляциях самое сложное добиться приемлемой скорости исполнения. Такая пробежка волны по экрану может десятки тысяч циклов занять. И исполняется 1 цикл за 10 сек, или 10 циклов за 1 сек - очень сильно влияют на желание этим заниматься вообще. Ждать результат в чашке Петри приятней, чем на дубовой роще.
@foo52ru
@foo52ru 2 ай бұрын
Боюсь современные компиляторы для значения boolean используют байт, а не бит. Но это не точно. Для генома мне нужен был массив байтов, но в Processing байт интерпретируется, как число от -128 до 127, а мне нужно было от 0 до 225. Наверно это как то можно исправить, но я не стал заморачиваться и использовал массив int
@igorkroshkin9354
@igorkroshkin9354 2 ай бұрын
Классно же :)
@user-cd9kj2rv1u
@user-cd9kj2rv1u Ай бұрын
Давно подписан, классный контент, уважение и успехов Вам!✨️👍💎
@MrQuazar
@MrQuazar Ай бұрын
фундаментальная проблема все подобных систем - пошаговое выполнение каждого этапа для каждой клетки, именно это дает преимущество на начальном старте. Возможно необходим костыль - иммунитет на Н-циклов чтобы на достаточном пробеге клетки набрали силу и приступили к соревнованию
@MrFEARFLASH
@MrFEARFLASH 2 ай бұрын
не знаю задумался ли автор, но это интересное пособие по решению разных задач возникающих в циклах)
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
И даже философии жизни и религии...
@dyvniy_vershitel
@dyvniy_vershitel Ай бұрын
Замечательная работа! Спасибо за подробный описание логики работы своей программы. Теперь Ваше дело непременно будет продолжено. Может и я смогу собраться с мыслями, чтобы реализовать это на видеокарте, или в ботнете.
@jaros.chashin
@jaros.chashin 2 ай бұрын
Если максимальное количество клеток определено заранее (даже если пока не доходило до того лимита) совсем новые души рождаться не смогут. Будет лишь реинкарнация старых. Умерла 4ая клетка и теперь ждёт пока какая-нибудь другая клетка её заново родит в эту очередь.
@user9x0Hj4
@user9x0Hj4 2 ай бұрын
Максимальное количество клеток определенно размером мира: на поле 100x100 не может быть больше 10 000 клеток.
@foo52ru
@foo52ru 2 ай бұрын
Всё верно. У меня реализован механизм реинкарнации душ. У каждой клетки есть прошлая жизнь. :)
@user-pf4so7sd5d
@user-pf4so7sd5d Ай бұрын
Я прям кайфую от представленного.
@alexorlov8875
@alexorlov8875 2 ай бұрын
Круто
@hpw-dev
@hpw-dev 2 ай бұрын
Хорошие визуализации
@user-qi6pv9jh7o
@user-qi6pv9jh7o 2 ай бұрын
Кста, вспомнил флешку garden of war Там боëвка основана на отрезании снабжения (у каждой территории, состоящей из граничащих покрашенных клеток, есть столица, в которой хранится голда, собираемая по 1 штуке с каждого шестиугольника каждый ход. Тратится она на содержание юнитов, и каждый юнит уровня Х абсолютно неуязвим для юнитов с таким же уровнем или слабее, а заодно защищает до 6 соседних клеток своего цвета(так сказать, зона контроля). Но чем выше уровень, тем ниже скорость, а снабжение вообще утраивается. Если столицу отрезать от территории с войском, то у новой территории появится новая с 0 голды, а и скорее всего затраты этой столицы превысят прибыль. Как только такое происходит, на следующий ход все юниты становятся гробами, а гробы территорией нежити. Нежить очень опасна, так как, несмотря на уровень силы 0, игнорирует зоны контроля и не требует снабжения, так что может всех окружать, создавая ещё больше гробов)
@KogothLetsPlays
@KogothLetsPlays 2 ай бұрын
Идея: Что если добавить клеткам нейроны, которые будут принимать решения о том нужно ли порождать новые клетки, и каким типам отдать предпочтение в зависимости от общих суммарных параметров всего тела? (размер тела, накопленная энергия всего тела, скорость получения энергии всем телом, какой тип энергии более доступен) Это может ограничить рост супер организмов или заставить их переключаться с солнца на переработку трупов. Нейроны как в нейросетях вместо генов, думаю будут более гибко обучаться управлению.
@pka_human
@pka_human 2 ай бұрын
Это очень хорошее предложение. Думаю нужен отдельный тип клетки хранящий определённое количество нейронов и собирать из таких клеток слои. Таким образом нейросеть будет формироваться по геному. Так-же появится забавная деталь, если повредить "мозговые" клетки можно нарушить поведение всего организма... огромнейший потенциал для эксперементов.
@Maturman
@Maturman 2 ай бұрын
Так уже есть в клетках условия. Они делают тоже самое, если что
@neutrinozh2070
@neutrinozh2070 2 ай бұрын
@@Maturman Вроде бы как эти условия выполняються только один раз (при порождении клетки). Нейросеть функционировала б на протяжении всей жизни клетки.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
​@@neutrinozh2070 Эти условия выполняются в каждом цикле симуляции.
@KogothLetsPlays
@KogothLetsPlays 2 ай бұрын
@@Maturman В клетках сейчас есть гены, которые всегда одинаковые отростки дают, а я говорю о том чтобы учесть параметры всего растения.
@user-qc2qb6lx9i
@user-qc2qb6lx9i 2 ай бұрын
Отличное видео, нужно начинать переписывать всё это на видеокарту и запускать обучаться где-нибудь в google collab))
@1382200
@1382200 Ай бұрын
Лайк, подписка, комментарий!
@47clere
@47clere 2 ай бұрын
Ккккайф!) название топ)
@grummusss
@grummusss 2 ай бұрын
У меня 2 идеи по такому проекту: Вместо того что бы симулировать передачу енергии каждой ход между клетками которые не являются носителем генома можно пересчитывать приток енергии к клеткам носителям генома при событиях приводящим к перераспределение енергии Не знаю как реализован геном но нету необходимостью давать каждому организму(отростку) копию всех данных генома. Например когда отросток создаёт 2 новых отростка без мутации то они оба будут подключены 1 геному различаясь только номером активного гена и тд. Также возможно разделить геном на более и менее стабильные части которые имеют иерархической порядок(то-есть есть типо корневая часть генома и дальнейшее части генома которые ссылаются на корневой геном/прошлую часть генома)
@acectent9335
@acectent9335 Ай бұрын
Возможно для передачи энергии в обратном направлении сделать буфер ссылками конечных потребителей, который будет обновляться каждую итерацию со стоимостью пути(можно еще и ген приоритета путей добавить). Ну и условие чтоб можно было использовать только накопленную энергию с прошлых ходов.
@TheVadych
@TheVadych 2 ай бұрын
Спасибо за видео. Для полноты картины не хватает вводной с описанием мира и типов клеток
@user-bj4hj9gy7r
@user-bj4hj9gy7r 2 ай бұрын
Проблема преимущества очереди исполнения будто бы решается двухэтапным выполнением - сначала все выставляют свои намерения, дальше все намерения резолвятся с разрешением конфликтов И проблема перемещения энергии может быть решена двухэтапным выполнением организмов - создаём намерение на передачу энергии, которое отменится при невозможности
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Проблема преимущества несколько надуманна. Она таковой является в самом начале только если в симуляции 1 не большой многоклеточный организм. Когда организм большой и/или их много, да еще после волны вымирания. Ведь, полагаю, свободные ячейки в начале списка заполняются новорожденными элементами. Иначе, в каждом цикле придется отрабатывать все элементы массива, при том что их столько же, сколько точек на карте. То объекты начнут отрабатываться в разнобой. Уж такой цельной последовательной волны точно не будет. А если последний элемент переносить в свободную ячейку в перед по списку вместо вымершей, там такой салат будет, что ни каких преимуществ ране/поздно рожденных не останется.
@user-bj4hj9gy7r
@user-bj4hj9gy7r 2 ай бұрын
@@progressive_agriculture в целом вся моделируемая система выглядит несправедливо из-за того что все равно существует приоритет исполнения и может случиться каша в случайный момент Нужен эксперимент с одинаковыми начальными данными - с разными способами приоретизации и без нее вовсе
@nowar452
@nowar452 2 ай бұрын
Очень интересные решения! Особенно с буферами! И алгоритм определения направления для передачи энергии с логичной и простой системой перенаправления - просто музыка! Классический вечный вопрос: не пробовали добавить механизм ретравирусов? Было бы крайне интересно, если бы клетки умели заставлять соседей копировать геном. Для одного организма разницы бы не было, но вот клетки-паразиты могли бы навести шороху. Правда, встаёт вопрос, будет ли такой механизм вносить хоть какие-то изменения с учётом основного принципа: геном исполняют только отростки...
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Если вирусов много, то они иногда и на отростки попадать будут. Другой вопрос, что это приведет к прекращению роста этой ветви и быстрому отмиранию.
@zix2421
@zix2421 2 ай бұрын
Это было очень интересно! Интересные решения в транспортировке энергии и геноме(условия). Вопрос: а как процессор справляется технически? Судя по видео, карта огромная, а вычислений много
@foo52ru
@foo52ru 2 ай бұрын
Карта 3840 на 2160. Для одного ролика обычно больше недели симуляции уходит. (примерно 2 миллиона шагов). Сейчас симуляции крутятся на двух ПК. Раз в день заглядываю, что там происходит
@ruru_farm6856
@ruru_farm6856 Ай бұрын
Творец!
@Artovna
@Artovna Ай бұрын
Извините, я на этом канале 5 минут после листания шортсов, вопрос: Борьба кланов будет в открытом доступе? Я так понимаю, что это симулятор эволюции, но когда публикация (Полноценная версия)?
@user-ze3ez3iy6c
@user-ze3ez3iy6c 2 ай бұрын
Безумно интересно, хочу скачать openGL и повторить! Из идей - добавить организмам размножение с участием двух родителей. *** Семечко движется, пока не врежется в какую либо живую клетку. Как врежется - копирует некоторые числа из её генома в свой, предварительно проверив, достаточно ли геномы различны. Ксли геномы не слишком похожи - размножению быть. Семечко копирует числа. Каждое из 672 чисел скопируется с шансом 50/50. Таким образом, семечко получает новый геном, производит с шансом 1/100 мутацию и приступает к его выполнению
@user-sm7xb9xt8l
@user-sm7xb9xt8l 2 ай бұрын
Крутяк
@user-cf3rm2xs5u
@user-cf3rm2xs5u 2 ай бұрын
если честно я бы посмотрел на мир где место в начале списка даёт приимущестово, ьыло бы интерсено посмотреть как органищмы к этому адоптируються
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Реальный мир не? Быть первыми в списке людей не дает преимущества по сравнению с последними?
@user-sd6xh2jo7k
@user-sd6xh2jo7k 2 ай бұрын
Что мешает сделать 2 массива - входной и результат, пото меняем их местами?
@euwaq
@euwaq 2 ай бұрын
превью крутое)
@ghost_n0
@ghost_n0 2 ай бұрын
Жесть, не думал что настолько много факторов нужно учитывать при создании корректной симуляционной системы
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
А там и не надо думать, хотя, можно. Оно само в процессе приходит, когда в одну сторону начинает расти активней, чем в остальные.
@Engineer_KO
@Engineer_KO 24 күн бұрын
Здравствуйте, я создал свой проект по типу первого "пруда" с ботами. Хочу поделится с сообществом, но не могу найти старую ВК группу на тему кибербиологии. Подскажите пожалуйста, где можно своим творчеством поделиться?
@Myself0094
@Myself0094 2 ай бұрын
Я бы порекомендовал портировать вычисления на Vulkan или cuda - они могут стать в разы быстрее. Вдобавок, можно распараллелить процессы дампа состояний и отрисовки кадров(если это не так), чтобы не перегружать симуляцию графическими процессами. По файлам дампов (json например) рисовать графику можно будет как после завершения симуляции, так и параллельно в отдельном потоке, что удобно.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Дамп будет занимать на порядок больше памяти, чем видео. В видео информации гораздо меньше, чем в дампе. А у вулкана и куда проблемы с рандомизацией. Она там или медленная, или далека от случайной. Тем более, что обсчет на видюхах больше рассчитан на абсолютно одинаковые действия без условий. Условия все портят. Они требуют разных действий для всех элементов.
@foo52ru
@foo52ru 2 ай бұрын
У меня нет опыта в программировании видеокарт. Я не являюсь профессиональным программистом. Сейчас программирую в среде Processing - это обрезанная Java для дизайнеров. Насколько я понимаю, видеокарты накладывают ряд ограничений на код, чего нет у процессора. Так что пока на процессоре. Хотя я встречал интересные проекты на видеокарте, работающие в реальном времени.
@Myself0094
@Myself0094 2 ай бұрын
@@progressive_agriculture Хм, я сейчас посчитал, дамп кадра из миллиона клеток с таким жирненьким геномом может занимать ~600мб. Если однобайтовый геном заменить полубайтовым и там понерфить чуток флаги и буферы, можно снизить до 350мб, что тоже не мало. Если уменьшить длину таблицы генов до 16, можно ужаться до 168байт на клетку и 168мегабайт на миллион клеток. Если поверх применить какой-нибудь дефлейт, можно скукожить результат еще процентов на 30, а то и больше, то есть дойти до 110-120мб, что уже гораздо проще и с ростом дампа будет увеличивать ратио компрессии, тк монотонность будет расти за счет большого числа одинаковых чисел. В итоге немаленькая эволюция системы в 200к прохождений линкед листа через нулевую клетку с дампом на каждые 20 проходов займет терабайт дискового пространства. Мда, похоже процессорным временем в данном случае действительно проще пожертвовать, чем памятью, т.к. стейт уж больно тяжел. Но вот на счет графики есть мысль, что состояние уж больно математично, поэтому существенную часть ветвлений можно заменить на математические операции а ля branch avoidance. Даже довольно сложные выражения в батче видеокарта потенциально может выполнять в десятки раз быстрее. Но от алгоритма конечно зависит.
@syntet8743
@syntet8743 Ай бұрын
foo52ru ТехноШаман 5:00 Есть идея о справедливом массовом ходе(шагах) организмов. Тебе надо создать иллюзию одновременности, это как в игре мафия, пока все участники не походят, действий не будет, и только когда город проснётся (это у тебя клетка 0) только тогда выполнится все запланированные действия. То есть будет одновременно убиты 2,3 клетки, рождены новые 2-3 клетки. Тогда преимущество первоочерёдных клеток будет полностью нивелировано.
@ViktorRussia14477
@ViktorRussia14477 Ай бұрын
Можно попробовать поэкспериментировать с ускорением и замедлением мутаций.
@fluffybobber
@fluffybobber 2 ай бұрын
Уважаемый техношаман, спасибо за разъяснения. Я как-то писал, что реализовывал схожие алгоритмы, даже в 3д. Вот сначала вы описываете список и объясняете недостатки, а потом предлагаете свой вариант с ссылками. Поясните пожалуйста почему ссылки ? При этом при добавлении элементов вы меняете ссылки у соседей, но разве это технически возможно, изменить ссылку? Разве это тогда не указатели ли? Подскажите пожалуйста почему вы противопоставляете свой метод списку, разве контейней с указателями на соседей не является классическим двусвязным списком? 😊
@QuaterfoilFikusS
@QuaterfoilFikusS 2 ай бұрын
ничего не понял, но звучит шикарно
@whitelrabbit
@whitelrabbit 2 ай бұрын
Подскажите пожалуйста, если я хочу такое повторить у себя и смотреть на такие вселенные, с чего мне начать? И готовое и сделать самому мне было бы очень интересно
@user-sc4ic3ey7i
@user-sc4ic3ey7i 2 ай бұрын
Научиться программировать
@1kvolt1978
@1kvolt1978 2 ай бұрын
Начни с простого - запрограммируй классическую конвеевскую "Жизнь".
@whitelrabbit
@whitelrabbit 2 ай бұрын
@@1kvolt1978 Спасибо большое
@Rizomus
@Rizomus 2 ай бұрын
У каждого цикла есть начальные условия (НУ) - результат изменений предыдущего цикла. Мы хотим исключить фактор последовательности обхода клеток, т.к. в нашей реальности все клетки действуют одновременно. Иными словами, при итерации по клеткам в рамках одного такта эволюционное правило, применяемое к клетке, должно опираться ровно на те же НУ, что и остальные. Поэтому имеет смысл в начале нового цикла делать, что называется, snapshot начальных условий и для каждой клетки, брать входные значения из него. Понятно, что при таком подходе будут возникать коллизии. Для их разрешения можно придумать дополнительный слой логики, либо отдавать приоритет рандомно. В последнем случае история будет похожа на развитие квантовой системы, которая также из состояния суперпозиции (все возможные варианты исхода) каждый такт "схлопывается" в какое-то одно (ну или разделяется по параллельным вселенным, если вам больше нравится Эверетт и т.п.)
@Shedshebolda
@Shedshebolda 2 ай бұрын
Ураааааааа
@crystalrain7776
@crystalrain7776 Ай бұрын
чел ты крут
@razvigor2819
@razvigor2819 2 ай бұрын
Теперь понятно, откуда описанные в предыдущих роликах проблемы. 32 генов банально не достаточно для кодирования тех возможностей, что потенциально заложены в геноме. А рудимент с 3 направлениями с заранее типизированными отростками добивает картину, т.к. чтобы просто закодировать все возможные варианты ветвления требуется 5*5*5=125 генов. А ведь еще и нужен запас на гены-условия, минимум столько же. Итого получается, что чтобы в данной структуре генома получить не урезанный по возможностям организм, необходимо не 32 гена, а 256. Решить эту проблему частично можно возвратом к коротким генам цифровых деревьев, увеличив число строк за счет их длины. Более оптимальное, имхо, решение: выделение нетипизированных побегов, которые выберут кем стать сами, по проверке параметров энергонасыщенности и органики в месте своего появления, тогда потребуется меньше генов, но вырастет размер самого гена на +6.
@user-ju7xj3qu6k
@user-ju7xj3qu6k 2 ай бұрын
ТехноШаман, твои проблемы являются следствием преждевременного изменения состояния клеток. Для преодоления этого можно ввести фазы подготовки к изменению и изменения состояния. На фазе подготовки мы рассматриваем состояние всех клеток "только для чтения" и формируем дельту состояния для каждой из них. А на фазе изменения состояния мы эту дельту применяем, в условиях запрета на чтение состояний других клеток.
@Losinkyilos
@Losinkyilos 2 ай бұрын
Интересно, какие методы для решения таких же задач предпринял бы ИИ.
@NickProkhorenko
@NickProkhorenko 2 ай бұрын
Ничего не понял, но очень интересно.
@VErshov.
@VErshov. 2 ай бұрын
Считай мы в расчёте
@nothing4542
@nothing4542 2 ай бұрын
Благодарю за технический ролик, но мне все ещё интересно сколько ресурсов компьютера ест такая симуляция?
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
В идеале, 100% потока, а если паралелить вычисления, то и 100% процессора. А памяти в зависимости от сложности объектов и размера поля. В силу любопытности экспериментатора - "а что будет если объекты сложней? А что будет, если полянка по больше?" память тоже можно утилизировать на 100%. Видеокарта 5%. Тут для нее работы нет. На диске тоже считаные мегабайты занимает.
@foo52ru
@foo52ru 2 ай бұрын
В приделах 3 шагов симуляции в секунду. Для ролика надо где то неделю, что бы пара миллионов шагов просчиталось.
@nothing4542
@nothing4542 2 ай бұрын
@@foo52ru благодарю
@Rocalic
@Rocalic 2 ай бұрын
3:57 а что насчёт противоположной стороны от родительской клетки?
@Rocalic
@Rocalic 2 ай бұрын
Или например выбирать случайные из списка?
@foo52ru
@foo52ru 2 ай бұрын
Можно и с противоположной стороны. Но возможны неприятные моменты. Например: Клетка создаёт новую клетку. Управление сразу передает на новую клетку. Новая клетка создаёт клетку. Управление сразу передает на новую клетку. Новая клетка создаёт клетку. Управление сразу передает на новую клетку. .... Если энергии было много, то за один шаг симуляции сразу возникнет длиннющая ветка. Если новую клетку в списке ставить перед родителем, то очередь до неё дойдёт только на следующем шаге симуляции. Ветка будет расти - одна клетка за шаг симуляции.
@Rocalic
@Rocalic 2 ай бұрын
@@foo52ru нет, в смысле, например, на тайкоде клетка 7 создаёт клетку между пятой и четвёртой.
@chillbear7051
@chillbear7051 2 ай бұрын
А может сделать гексагональную сетку?
@foo52ru
@foo52ru 2 ай бұрын
Можно, но немного сложнее. По моим представлениям, это кардинально ничего не меняет, но должно выглядеть более красиво и естественно
@shoxruX_wantxo
@shoxruX_wantxo 2 ай бұрын
ТехноШаман на какой программе происходит визуализация?
@Relat_Mensal
@Relat_Mensal 2 ай бұрын
Ужас как сложно, завтра опять пересмотрю и попытаюсь Все понять
@user-ze3ez3iy6c
@user-ze3ez3iy6c 2 ай бұрын
Посчитал... Поле размером 8192х8192. Что бы в каждой клетке хранить геном, понадобится 42 Гб оперативы
@xelizy
@xelizy 2 ай бұрын
128GB + Xeon + 4090.
@Valentin_I
@Valentin_I Ай бұрын
Такие данные очень хорошо и быстро сжимаются. Можно из оперативы доставать блоками, их распаковывать, обсчитывать, сжимать обратно.
@UsualNerd
@UsualNerd 2 ай бұрын
Если новое состояние клеточного автомата строить исключительно на основе старого (read-only), то порядок перебора клеток никак не может повлиять на результат. По какой-то причине этот способ не подошёл, и в вашем варианте состояние только одно, и по мере вычислений изменяет само себя?
@KTonberry
@KTonberry 2 ай бұрын
Представим ситуацию, когда две или больше клеток конкурируют за какой-то ресурс. Какая из них "победит" в новом состоянии? Либо получится, что все воспользовались ресурсом, что нелогично, если ресурс конечный, либо та, для которой расчёт произошёл позже всех, т. к. результат её действий перезапишет результаты остальных. Поэтому порядок перебора будет влиять и в таком случае.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
@@KTonberry 1 клетка победит. Ни чего страшного. Если 2 воробья бросаются на 1 зернышко, то достается, обычно, одному. А вот куда в очереди попадет потомок - это вопрос. Но он уже будет конкурировать и с предком и соседом, при том, сместившись. Опять же, на следующем такое каждая из клеток окажется в своем новом состоянии исполняя свою часть генома. Шанс того, что 2 соседа будут стремиться к одному и тому же - занять клетку, объесть ее, отрастить потомка - не велик.
@foo52ru
@foo52ru 2 ай бұрын
Это не клеточный автомат. Или я не правильно понимаю, что такое клеточный автомат
@UsualNerd
@UsualNerd 2 ай бұрын
@@foo52ru Так и есть, в вашем случае это не клеточный автомат, потому что клетки вычисляют своё новое состояние S(t+1) на основе не только старого S(t), но и самого себя, т.е. рекурсивно, отсюда и неопределённости.
@user-hr9vz7zm9o
@user-hr9vz7zm9o 17 күн бұрын
предлагаю добавить новую клетку такую как лунная клетка она будет потреблять и выробатывать2/3 от обычной солнечной но если добавить четыре периода сменяющие друг друга каждые 50 циклов работы клеток 1 период - утро: солнечные клетки работают на 80%, лунные на 20% 2 период - день: солнечные клетки работают на 100%, на 0% 3 период - вечер: и солнечные и лунные клетки работают на 50% 4 период - ночь: солнечные работают на 0%, лунные на 100% таким образом все виды без лунных клеток не получающие по другому энергию будут вымирать ночью, а без солнечных днем. также можно добавить клетки-клыки которые будут отстреливаться и лететь по прямой оставляя за собой энергетическую дорожку а встречая другую клетку заменять ее на энергетическую дорожку и тем самым соединяя два организма в один также можно добавить воздух и сделать так чтобы он распределялся равно мерно по всей карте в воздухе будет три вещества: кислород, азот, углекислый газ лунной и солнечной клетке нужен углекислый газ для работы они его перерабатывают в кислород семечку, отростку, клыку нужен кислород для работы органическому корню(красной клетке) и энергетическому корню(синей клетке) нужен и кислород и углекислый газ но им нужна прохлада кислород выравнивает температуру углекислый газ повышает температуру азот понижает температуру можно добавить также клетку которая будет перерабатывать все газы в энергию и на оборот для тех случаев когда не хватает газов но эта клетка будет потреблять большое количество энергии можно кислород раскрашивать зеленым, азот - синим, углекислый газ красным
@igorcoolman
@igorcoolman 2 ай бұрын
а можно как-то использовать где-нибудь Чи́сла Фибона́ччи - элементы последовательности : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, то-есть следующее число это сложение текущего с предыдущим.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Их не используют. В больших системах они сами вылазят как неотъемлемое свойство вселенной.
@INGVAR_K
@INGVAR_K 2 ай бұрын
ОНО ЖИВОЕ!
@melrim3958
@melrim3958 2 ай бұрын
Техношаману. Энергия не является веществом, энергия также не является полем. Энергию следует понимать как процесс перехода материи из одного состояния в другое. Условия для энергии, или цепного запуска изменений, соблюдаются всегда. Мы называем этот набор условий материальным миром. Вы говорите, что в многоклеточном организме движется энергия!? Что там движется? Является ли процесс моделирования в компьютере материальным миром?
@tohtarbekovabzal189
@tohtarbekovabzal189 2 ай бұрын
Это звучит очень круто, желаем вам удачи! Вы лучший!
@Maturman
@Maturman 2 ай бұрын
А если мутациям дать возможность не просто менять геном, а создавать его участки. Т. е. Был геном с одним условием - стало 2, было 4 условия, стало 3. А чтобы не стало слишком много условий храниться, то чем их больше тем чаще она удаляется. Можно, например для КАЖДОГО условия сделать шанс удаления, чтобы всё было относительно нормально
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Можно, но тогда это будет на порядок сложней написать. Сейчас все объекты одинаковые по структуре, а там все будут разные. И работать такая тема сразу после написания станет медленней.
@Maturman
@Maturman 2 ай бұрын
@@progressive_agriculture С чего бы? Он же не проверяет код каждый раз, а проходится по нему последовательно. Просто идея реализации неограниченного количества условий для клетки.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
@@Maturman Потому что структура генома и последовательность действий четко заточена на размер таблицы генома. А если количество условий меняется произвольно от клетки к летке, то структура вычислений будет разная. размер таблички будет разный да и количество табличек у одной клетки может быть разным. А это значит, что больше вычислений, больше сложность. Дольше обсчитывать. Даже на первом элементе. Клетка одна, учитывать возможную сложность надо уже с первого цикла.
@Maturman
@Maturman 2 ай бұрын
@@progressive_agriculture Естественно, если больше условий, то и больше вычислений. И так и не понял вас¯\_(ツ)_/¯
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
@@MaturmanСейчас количество условий одинаковое. Количество генов у всех клеток одинаковое. Структура программы простая. Скорость выше. Ошибок меньше. Добавляем возможность иметь больше условий - усложняется структура программы. Скорость работы падает. Размерность генома меняется. Растет время на обсчет - скорость падает. Повышается сложность обработки генома - падает скорость. Растут ошибки. В целом. Сложней, медленней, косячней. Попробуй все это удержи в голове и расчитай! Вот возьми и попробуй! 😉
@ataksanimation176
@ataksanimation176 2 ай бұрын
А техношаман не думал о веб версии такой симуляции - или непотянет?
@ovoshchkiber1769
@ovoshchkiber1769 2 ай бұрын
А что если вместо буферов А и Б создать в клетке boolean переменную и при передаче енергии менять её значение, при ходе клетки если переменная==true, то передавать енергию и менять значение переменной клетки в которую передали енергию на false
@SIM31r
@SIM31r 2 ай бұрын
Круто конечно. Но хотелось бы организмы с небольшим умом, нейросеть из десятка нейронов и пусть думаю этим ))
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Всему свое время. Половину времени жизни на зкмле ни каких сейронов не было вообще. Были одноклеточные без нервов и мозгов. Торопиться не надо!
@YaShoom
@YaShoom 2 ай бұрын
17:18 интересно, как это трактовать? Как недоработку, когда организм не умерает благодаря его эксплуатации из-за правила смерти не от недостатка энергии, а от исчезновения семян? Или как то, что это симбиоз и на самом деле одиночки спасают организм от переизбытка энергии?
@foo52ru
@foo52ru 2 ай бұрын
Как неожиданный забавный эффект.
@AllSC2Replays
@AllSC2Replays 2 ай бұрын
Удалось определить какие-то закономерности, при разных начальных параметрах ИЖ повторяет одни и те же этапы?
@foo52ru
@foo52ru 2 ай бұрын
По разному. Бурные изменения сменяются неким стабильным состоянием, которое может нарушится со временем и опять поиск нового стабильного состояния.
@gok-pro
@gok-pro 2 ай бұрын
Коммент пишу чисто для продвижения ролика, а так интересно было бы узнать на чем ты все это пишешь? Какой язык, библиотеки и тд?
@foo52ru
@foo52ru 2 ай бұрын
язык Processing. Библиотеки не используются
@akotchnev
@akotchnev 2 ай бұрын
По-моему, нужно хранить ДВА списка клеток. В первом хранится текущее состояние. Во втором вычисляется состояние следующего шага. При этом следующий шаг вычисляется основываясь только на инфе из первого списка. В этом случае порядок прохождения списка вообще не будет иметь значения (т.е. не будет проблемы, о которой автор рассказывает на первых минутах видео). Или я что-то не правильно понял? И возможно лучше вообще использовать не список, а карту всех клеток поля. Но я так понимаю, что список используется, чтобы улучшить производительность, которая страдает из-за выбора неудачного языка программирования или алгоритма.
@pka_human
@pka_human 2 ай бұрын
Тоже изначально так подумал, но прикол вот в чём. Допустим у нас есть некие две клетки, клетки находятся близко но не касаются (фактически между ними одна клетка) . Каждая из клеток хочет сделать ответвление в сторону соседней как можно быстрее. Вопрос, какая из клеток породит ещё одну? Вот зачем автор рассказывал о приоритетах, проблему с приоритетами нужно решить справедливо для всех клеток. Насколько я знаю у него в симуляции используется, как вы выразились "два списка" (вообще по правильному они называются буферы). При опоре на текущее состояние в попытке создать новое всё-равно будет всплывать проблема приоритетов. Это не "игра в жизнь", это нечто гораздо более сложное.
@EVpatiy_
@EVpatiy_ 2 ай бұрын
Когда многопоточная оптимизация?
@Roid92
@Roid92 2 ай бұрын
многопоточность подразумевает асинхронную составляющую, а у автора синхронный алгоритм. да и на сколько я понимаю, используется процессинг, который не предусматривает многопоточности... казалось бы - можно считать одновременно организмы на разных концах карты - но это перестанет работать при появлении первого суперорганизма. а они появляются чуть ли не в каждой симуляции. и в итоге просто не целесообразно тратить кучу времени на реализацию многопоточности, когда прирост в скорости будет не постоянный, а только на начальной стадии симуляции... как говорится - овчинка выделки не стоит...)
@user-wi4hz9lo7p
@user-wi4hz9lo7p 2 ай бұрын
@@Roid92 Спасибо, тоже мучился этим вопросом. Подскажи а перевод вычислений на видеокарту возможен? и если да, как это повлияет на производительность?
@Myself0094
@Myself0094 2 ай бұрын
@@Roid92 ну вообще смысл может быть, если отрисовка фреймов для видео происходит последовательно в процессе симуляции. Дампить стейт каждые сколько-то итераций основного цикла симуляции в одном потоке грубо говоря и рисовать фреймы, читая дамп в другом потоке может быть более выгодно. Если сделать все это например на CUDA, то и то и другое станет ощутимо быстрее
@user-wi4hz9lo7p
@user-wi4hz9lo7p 2 ай бұрын
@@Myself0094 но опять вылезает проблема синхронизации между потоками ((( Спасибо что уделил время👍
@Roid92
@Roid92 2 ай бұрын
@@Myself0094 отрисовка кадра выполняется практически моментально после полного расчета следующего шага (либо шага отдельно взятого организма). кадр ведь составлен из простейших примитивов, на двумерной плоскости. тут тупо ведь простейшая математика и условные переходы во всех их многообразии, никаких векторных величин, а тем более алгоритмов трасировки нет... грубо говоря отрисовка кадра в этом всем мероприятии занимает меньше 1% времени... и отсюда вытекает вопрос, стоит ли вообще думать в эту сторону, если скорость работы в лучшем случае увеличится на 1%, а скорее всего наоборот даже упадет. ведь всей симуляции постоянно нужно что-то записывать в энергонезависимую память (а это только через процессор). так же простейшие математические операции выполняются процессором быстрее, чем графическим ядром (название ядра как бы намекает, да?) а вообще у меня есть огромное подозрение, что это не запись экрана на видео - а отдельно сгенерированные кадры каждого шага, которые потом сложены в секвенцию из обычных картинок на постобработке. причем возможно у автора генерируются несколько изображений сразу для каждого кадра (с разным видом карты: организмы, энергия, органика в почве и т.д.). на выходе несколько секвенций идеально засинхронизированных. все остальное в видео - постобработка и монтаж). такой подход позволяет спокойно держать одну симуляцию неделями, не боясь перебоев электричества и тому подобного. я бы вообще запускал такую симуляцию на условной малинке без монитора, и просто раз в день забирал с нее картинки))
@sabbat8310
@sabbat8310 2 ай бұрын
Спасибо за видео! Вечер обещает быть интересным :)
@Eugeny_Goncharuk
@Eugeny_Goncharuk 2 ай бұрын
Миллионы лет эволюции за 19 минут.
@Occultist_
@Occultist_ 2 ай бұрын
Симуляции конечно круты, но вот ощущение, что ну как-то вот все организмы - колониальные одноклеточные. Можно ли в теории смоделировать такие процессы, как формирование именно многоклеточных организмов, то есть, когда клетки будут приобретать разные свойства в рамках некоего общего организма, подчиняясь единой цели?
Параллельные миры. Небольшой эксперимент.
1:00
foo52ru ТехноШаман
Рет қаралды 62 М.
Роевой интеллект. Муравьиный алгоритм.
20:57
foo52ru ТехноШаман
Рет қаралды 365 М.
I Need Your Help..
00:33
Stokes Twins
Рет қаралды 144 МЛН
She’s Giving Birth in Class…?
00:21
Alan Chikin Chow
Рет қаралды 6 МЛН
How many pencils can hold me up?
00:40
A4
Рет қаралды 18 МЛН
Германия . Откуда богатство ?
7:40
Анатолий Хацаев
Рет қаралды 125
Искусственная жизнь. Борьба кланов 7.
34:27
foo52ru ТехноШаман
Рет қаралды 43 М.
31 portals of impossible shape
35:50
optozorax
Рет қаралды 608 М.
Искусственная жизнь. Борьба кланов.
19:23
foo52ru ТехноШаман
Рет қаралды 519 М.
Эволюция "цифровых деревьев". Версия2.
16:38
foo52ru ТехноШаман
Рет қаралды 87 М.
3D printed Nintendo Switch Game Carousel
0:14
Bambu Lab
Рет қаралды 4,7 МЛН
wyłącznik
0:50
Panele Fotowoltaiczne
Рет қаралды 23 МЛН
Which Phone Unlock Code Will You Choose? 🤔️
0:14
Game9bit
Рет қаралды 12 МЛН
Kalem ile Apple Pen Nasıl Yapılır?😱
0:20
Safak Novruz
Рет қаралды 1,2 МЛН
Не обзор DJI Osmo Pocket 3 Creator Combo
1:00
superfirsthero
Рет қаралды 889 М.