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

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

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 Ай бұрын
Таки кого я вижу...
@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 Да, без этого никак, скорость света должна быть конечной. Иначе совсем банальные вещи, такие как два направленных друг на друга зеркала, создают неразрешимый парадокс. Это примерно как неостановимая сила сталкивается с неразрушимой стеной.
@alexandr_s
@alexandr_s 2 ай бұрын
Такты работы мира можно просчитывать для каждой клетки параллельно. 1. расчет действий 2. определение конфликтов 3. разруливание конфликтов по правилам или рандому для начала 4. фиксация нового состояния после такта Этот алгоритм не только ближе к реальности, но и гораздо более производительный при многопоточной реализации
@AntonDudko1988
@AntonDudko1988 2 ай бұрын
Приветствую ТехноШаман и всех зрителей! Вопрос/предложение: В реальном мире организм жив пока у него есть энергия\пит. в-ва, но в данной симуляции при отсутствии клетки ростка или семени весь организм по цепочке отмирает. Что мешает организму вернув цепочку энерго передачи к изначальной клетке не создать новый росток, или даже лучше не дожидаться возврата к изначальной клетке а создать её на первой энерго избыточной клетке от конца ростка. На подобии создания почек у растений у основания поврежденной ветви, или продолжении роста поврежденных кораллов. Таким образом тело организма не превратиться в статичный путь транспорта энергии а будет способен к восстановлению\адаптации, и избыток энергии не будет смертельным.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
У него есть понятие семян. придется еще одно понятие вводить.
@foo52ru
@foo52ru 2 ай бұрын
Можно и так сделать. Я как то убрал смерть в случае, когда энергию некуда пересылать. Клетка просто энергию в землю скидывала. Со временем в почве накапливался переизбыток энергии и клетка уже погибала по другой причине. Но в этом варианте мир чаще погибал, а когда выживал, то визуально был не очень интересный. Я переодически меняю правила и смотрю, как всё будет развиваться.
@user-db2th5em3v
@user-db2th5em3v 2 ай бұрын
Графика это прекрасно. Визуализация процесса это то, на что заточен мозг человека, но до определенных пределов. Наверняка, не менее интересным было бы смотреть на графики и иметь возможность манипулировать ими в анализе. Наверняка интерпретация визуализации не всегда похожа на результаты из таблиц данных
@foo52ru
@foo52ru 2 ай бұрын
У меня реализована возможность сохранять данные симуляции в csv-файле. Но никак руки не дойдут до анализа данных, нагенерированных симуляцией :(
@user-db2th5em3v
@user-db2th5em3v 2 ай бұрын
@@foo52ru , как знать, может таблицы и анализ поможет сформулировать новые вводные для экспериментов
@Lux-Sphinkx
@Lux-Sphinkx Ай бұрын
Это настолько невероятно и чудно Такая дикая сложность и простота Немыслимый контент сколько труда любви и времени чудо
@bearmike_360KB
@bearmike_360KB 2 ай бұрын
Сам увлекаюсь кодом и внимательно слежу за проектом. Огромное спасибо за сегодняшнее видео. Идея использования генома до сих пор меня удивляет. Потому крайне интересно смотреть на этот результат.
@drago285
@drago285 25 күн бұрын
Привет Шаман! Есть у меня для тебя и твоих нейронок интересная идея, точнее загадка. Играют в шахматы двое, один читает мысли, другой прыгает во времени. Оба знают только правила игры и то как ходят фигуры. Читающий мысли узнает планы и стратегию прыгуна как только тот окажется перед ним возвращаясь из будущего. Прыгающий во времени может когда угодно вернуться в любую секунду от начала игры до того момента в котором сам находится. И он знает что играет с чтецом мыслей. Игра прекращается как только объявлен шах и мат. Кто победит? Это типа неразрешимая загадка, но я подумав над ней несколько дней прихожу к выводу что если бы эта игра начиналась снова и снова, не зависимо сохранялся бы опыт и знания от предыдущей выигрывал бы за частую один и тот же - читающий мысли. Кто прочёл это - ставь лайк что бы автор увидел.
@Shedshebolda
@Shedshebolda 15 күн бұрын
Интересная идея
@user-px2rw3bt4l
@user-px2rw3bt4l 2 ай бұрын
Классный формат и подача! Такие видео очень полезны, ждем продолжения Занимаюсь симуляцией производственных процессов, для этих целей активно используется ECS (entity component system) на базе архитипов. Есть ощущение, что для ваших задач может быть полезно. Из доступных/готовых решений, что используем мы в своих проектах: Arch и Flecs.
@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 не совсем понял. У нас есть какие то одинаковые ролики?
@ertitup-ch9vg
@ertitup-ch9vg 2 ай бұрын
Это то видео для которого я захожу на ютуб
@busy_beaver
@busy_beaver 2 ай бұрын
Очень качественно сделан ролик. Спасибо! Было интересно.
@user-ul6ik9cp8d
@user-ul6ik9cp8d 2 ай бұрын
Супер! Обожаю твои видео про то, как работают твои симуляции Сейчас смотрю (пока только 3 минуты :D) Решил внезапно своё мнение вставить: я у себя просто перед каждым новым шагом симуляции перемешиваю порядок всех ботов тасованием Фишера Йетса, работает достаточно быстро и справедливо по-моему
@foo52ru
@foo52ru 2 ай бұрын
хорошая идея
@user-gf2yq5vn6f
@user-gf2yq5vn6f 2 ай бұрын
Атмосфера завораживающая! Лайк!
@ustredzo
@ustredzo 2 ай бұрын
Очень хотелось посмотреть как раз про устройство системы на этом уровне, большое спасибо!
@jaros.chashin
@jaros.chashin 2 ай бұрын
Если максимальное количество клеток определено заранее (даже если пока не доходило до того лимита) совсем новые души рождаться не смогут. Будет лишь реинкарнация старых. Умерла 4ая клетка и теперь ждёт пока какая-нибудь другая клетка её заново родит в эту очередь.
@user9x0Hj4
@user9x0Hj4 2 ай бұрын
Максимальное количество клеток определенно размером мира: на поле 100x100 не может быть больше 10 000 клеток.
@foo52ru
@foo52ru 2 ай бұрын
Всё верно. У меня реализован механизм реинкарнации душ. У каждой клетки есть прошлая жизнь. :)
@MrQuazar
@MrQuazar Ай бұрын
фундаментальная проблема все подобных систем - пошаговое выполнение каждого этапа для каждой клетки, именно это дает преимущество на начальном старте. Возможно необходим костыль - иммунитет на Н-циклов чтобы на достаточном пробеге клетки набрали силу и приступили к соревнованию
@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
@stas_v
@stas_v 2 ай бұрын
Очень просто и доходчиво. Захотелось самому повторить. Спасибо!
@nikitasssprogramming8710
@nikitasssprogramming8710 2 ай бұрын
Это мы так долго ждали
@yobi3d
@yobi3d Ай бұрын
Спасибо вам большое! Очень познавательно 👍
@gt34m62
@gt34m62 2 ай бұрын
Возможно, я не правильно понял принцип фаз A и B, но вроде можно просто было сделать буфер для энергии, куда попадала бы перемещаемая энергия. А в конце хода она уже передавалась из этого буфера самой клетке. Т.е этим мы просто не дадим конкретной еденице энергии перемещаться более одного раза за ход.
@foo52ru
@foo52ru 2 ай бұрын
По моим прикидкам на бумажке, скорость в одну сторону будет клетка за ход, в обратную сторону - клетка за два хода
@gt34m62
@gt34m62 2 ай бұрын
@@foo52ru разве? Это ведь будет (должно) работать просто как перекладывание всех энергии на одну клетку.
@replay3069
@replay3069 2 ай бұрын
Это просто офигенно!
@user-pf4so7sd5d
@user-pf4so7sd5d Ай бұрын
Я прям кайфую от представленного.
@user-gc9pw2uo6m
@user-gc9pw2uo6m 2 ай бұрын
Успехов!
@grummusss
@grummusss Ай бұрын
У меня 2 идеи по такому проекту: Вместо того что бы симулировать передачу енергии каждой ход между клетками которые не являются носителем генома можно пересчитывать приток енергии к клеткам носителям генома при событиях приводящим к перераспределение енергии Не знаю как реализован геном но нету необходимостью давать каждому организму(отростку) копию всех данных генома. Например когда отросток создаёт 2 новых отростка без мутации то они оба будут подключены 1 геному различаясь только номером активного гена и тд. Также возможно разделить геном на более и менее стабильные части которые имеют иерархической порядок(то-есть есть типо корневая часть генома и дальнейшее части генома которые ссылаются на корневой геном/прошлую часть генома)
@turdakhov
@turdakhov Ай бұрын
Спасибо за ваши видео! Коммент в поддержку!
@alexnorton1305
@alexnorton1305 Ай бұрын
Молодец. Посвящать часть своей жизни чему-то, а результатом делиться с другими говорит о личных качествах.
@duard8652
@duard8652 2 ай бұрын
Оч классно! Спасибо!
@Ground1981
@Ground1981 2 ай бұрын
Спасибо ! Круто 👍
@acectent9335
@acectent9335 Ай бұрын
Возможно для передачи энергии в обратном направлении сделать буфер ссылками конечных потребителей, который будет обновляться каждую итерацию со стоимостью пути(можно еще и ген приоритета путей добавить). Ну и условие чтоб можно было использовать только накопленную энергию с прошлых ходов.
@MrFEARFLASH
@MrFEARFLASH 2 ай бұрын
не знаю задумался ли автор, но это интересное пособие по решению разных задач возникающих в циклах)
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
И даже философии жизни и религии...
@BSpont
@BSpont 2 ай бұрын
Круто, спасибо за детали, очень интересно так долго наблюдать за проектом
@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 В клетках сейчас есть гены, которые всегда одинаковые отростки дают, а я говорю о том чтобы учесть параметры всего растения.
@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 клетки сместиться, вся эта заумь ни к чему.
@user-cd9kj2rv1u
@user-cd9kj2rv1u Ай бұрын
Давно подписан, классный контент, уважение и успехов Вам!✨️👍💎
@user-qc2qb6lx9i
@user-qc2qb6lx9i 2 ай бұрын
Отличное видео, нужно начинать переписывать всё это на видеокарту и запускать обучаться где-нибудь в google collab))
@igorshingelevich7627
@igorshingelevich7627 2 ай бұрын
Спасибо!
@TheVadych
@TheVadych Ай бұрын
Спасибо за видео. Для полноты картины не хватает вводной с описанием мира и типов клеток
@user-qi6pv9jh7o
@user-qi6pv9jh7o 2 ай бұрын
Кста, вспомнил флешку garden of war Там боëвка основана на отрезании снабжения (у каждой территории, состоящей из граничащих покрашенных клеток, есть столица, в которой хранится голда, собираемая по 1 штуке с каждого шестиугольника каждый ход. Тратится она на содержание юнитов, и каждый юнит уровня Х абсолютно неуязвим для юнитов с таким же уровнем или слабее, а заодно защищает до 6 соседних клеток своего цвета(так сказать, зона контроля). Но чем выше уровень, тем ниже скорость, а снабжение вообще утраивается. Если столицу отрезать от территории с войском, то у новой территории появится новая с 0 голды, а и скорее всего затраты этой столицы превысят прибыль. Как только такое происходит, на следующий ход все юниты становятся гробами, а гробы территорией нежити. Нежить очень опасна, так как, несмотря на уровень силы 0, игнорирует зоны контроля и не требует снабжения, так что может всех окружать, создавая ещё больше гробов)
@dyvniy_vershitel
@dyvniy_vershitel Ай бұрын
Замечательная работа! Спасибо за подробный описание логики работы своей программы. Теперь Ваше дело непременно будет продолжено. Может и я смогу собраться с мыслями, чтобы реализовать это на видеокарте, или в ботнете.
@user-wz7ov1xt6x
@user-wz7ov1xt6x Ай бұрын
У тебя просто талант!!
@user-ze3ez3iy6c
@user-ze3ez3iy6c Ай бұрын
Безумно интересно, хочу скачать openGL и повторить! Из идей - добавить организмам размножение с участием двух родителей. *** Семечко движется, пока не врежется в какую либо живую клетку. Как врежется - копирует некоторые числа из её генома в свой, предварительно проверив, достаточно ли геномы различны. Ксли геномы не слишком похожи - размножению быть. Семечко копирует числа. Каждое из 672 чисел скопируется с шансом 50/50. Таким образом, семечко получает новый геном, производит с шансом 1/100 мутацию и приступает к его выполнению
@igorkroshkin9354
@igorkroshkin9354 2 ай бұрын
Классно же :)
@hpw-dev
@hpw-dev 2 ай бұрын
Хорошие визуализации
@1382200
@1382200 Ай бұрын
Лайк, подписка, комментарий!
@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 ай бұрын
очень сильно на ютубе не хватает разделение комментариев по категориям. Например, категории "просто поддержка" (по умолчанию), идеи, другие проекты и т.д.
@user-bj4hj9gy7r
@user-bj4hj9gy7r 2 ай бұрын
Проблема преимущества очереди исполнения будто бы решается двухэтапным выполнением - сначала все выставляют свои намерения, дальше все намерения резолвятся с разрешением конфликтов И проблема перемещения энергии может быть решена двухэтапным выполнением организмов - создаём намерение на передачу энергии, которое отменится при невозможности
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Проблема преимущества несколько надуманна. Она таковой является в самом начале только если в симуляции 1 не большой многоклеточный организм. Когда организм большой и/или их много, да еще после волны вымирания. Ведь, полагаю, свободные ячейки в начале списка заполняются новорожденными элементами. Иначе, в каждом цикле придется отрабатывать все элементы массива, при том что их столько же, сколько точек на карте. То объекты начнут отрабатываться в разнобой. Уж такой цельной последовательной волны точно не будет. А если последний элемент переносить в свободную ячейку в перед по списку вместо вымершей, там такой салат будет, что ни каких преимуществ ране/поздно рожденных не останется.
@user-bj4hj9gy7r
@user-bj4hj9gy7r Ай бұрын
@@progressive_agriculture в целом вся моделируемая система выглядит несправедливо из-за того что все равно существует приоритет исполнения и может случиться каша в случайный момент Нужен эксперимент с одинаковыми начальными данными - с разными способами приоретизации и без нее вовсе
@nowar452
@nowar452 2 ай бұрын
Очень интересные решения! Особенно с буферами! И алгоритм определения направления для передачи энергии с логичной и простой системой перенаправления - просто музыка! Классический вечный вопрос: не пробовали добавить механизм ретравирусов? Было бы крайне интересно, если бы клетки умели заставлять соседей копировать геном. Для одного организма разницы бы не было, но вот клетки-паразиты могли бы навести шороху. Правда, встаёт вопрос, будет ли такой механизм вносить хоть какие-то изменения с учётом основного принципа: геном исполняют только отростки...
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Если вирусов много, то они иногда и на отростки попадать будут. Другой вопрос, что это приведет к прекращению роста этой ветви и быстрому отмиранию.
@zix2421
@zix2421 2 ай бұрын
Это было очень интересно! Интересные решения в транспортировке энергии и геноме(условия). Вопрос: а как процессор справляется технически? Судя по видео, карта огромная, а вычислений много
@foo52ru
@foo52ru 2 ай бұрын
Карта 3840 на 2160. Для одного ролика обычно больше недели симуляции уходит. (примерно 2 миллиона шагов). Сейчас симуляции крутятся на двух ПК. Раз в день заглядываю, что там происходит
@alexorlov8875
@alexorlov8875 2 ай бұрын
Круто
@ghost_n0
@ghost_n0 2 ай бұрын
Жесть, не думал что настолько много факторов нужно учитывать при создании корректной симуляционной системы
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
А там и не надо думать, хотя, можно. Оно само в процессе приходит, когда в одну сторону начинает расти активней, чем в остальные.
@47clere
@47clere 2 ай бұрын
Ккккайф!) название топ)
@ruru_farm6856
@ruru_farm6856 Ай бұрын
Творец!
@ViktorRussia14477
@ViktorRussia14477 Ай бұрын
Можно попробовать поэкспериментировать с ускорением и замедлением мутаций.
@Myself0094
@Myself0094 2 ай бұрын
Я бы порекомендовал портировать вычисления на Vulkan или cuda - они могут стать в разы быстрее. Вдобавок, можно распараллелить процессы дампа состояний и отрисовки кадров(если это не так), чтобы не перегружать симуляцию графическими процессами. По файлам дампов (json например) рисовать графику можно будет как после завершения симуляции, так и параллельно в отдельном потоке, что удобно.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Дамп будет занимать на порядок больше памяти, чем видео. В видео информации гораздо меньше, чем в дампе. А у вулкана и куда проблемы с рандомизацией. Она там или медленная, или далека от случайной. Тем более, что обсчет на видюхах больше рассчитан на абсолютно одинаковые действия без условий. Условия все портят. Они требуют разных действий для всех элементов.
@foo52ru
@foo52ru 2 ай бұрын
У меня нет опыта в программировании видеокарт. Я не являюсь профессиональным программистом. Сейчас программирую в среде Processing - это обрезанная Java для дизайнеров. Насколько я понимаю, видеокарты накладывают ряд ограничений на код, чего нет у процессора. Так что пока на процессоре. Хотя я встречал интересные проекты на видеокарте, работающие в реальном времени.
@Myself0094
@Myself0094 Ай бұрын
@@progressive_agriculture Хм, я сейчас посчитал, дамп кадра из миллиона клеток с таким жирненьким геномом может занимать ~600мб. Если однобайтовый геном заменить полубайтовым и там понерфить чуток флаги и буферы, можно снизить до 350мб, что тоже не мало. Если уменьшить длину таблицы генов до 16, можно ужаться до 168байт на клетку и 168мегабайт на миллион клеток. Если поверх применить какой-нибудь дефлейт, можно скукожить результат еще процентов на 30, а то и больше, то есть дойти до 110-120мб, что уже гораздо проще и с ростом дампа будет увеличивать ратио компрессии, тк монотонность будет расти за счет большого числа одинаковых чисел. В итоге немаленькая эволюция системы в 200к прохождений линкед листа через нулевую клетку с дампом на каждые 20 проходов займет терабайт дискового пространства. Мда, похоже процессорным временем в данном случае действительно проще пожертвовать, чем памятью, т.к. стейт уж больно тяжел. Но вот на счет графики есть мысль, что состояние уж больно математично, поэтому существенную часть ветвлений можно заменить на математические операции а ля branch avoidance. Даже довольно сложные выражения в батче видеокарта потенциально может выполнять в десятки раз быстрее. Но от алгоритма конечно зависит.
@Artovna
@Artovna Ай бұрын
Извините, я на этом канале 5 минут после листания шортсов, вопрос: Борьба кланов будет в открытом доступе? Я так понимаю, что это симулятор эволюции, но когда публикация (Полноценная версия)?
@user-cf3rm2xs5u
@user-cf3rm2xs5u 2 ай бұрын
если честно я бы посмотрел на мир где место в начале списка даёт приимущестово, ьыло бы интерсено посмотреть как органищмы к этому адоптируються
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Реальный мир не? Быть первыми в списке людей не дает преимущества по сравнению с последними?
@QuaterfoilFikusS
@QuaterfoilFikusS 2 ай бұрын
ничего не понял, но звучит шикарно
@Rizomus
@Rizomus 2 ай бұрын
У каждого цикла есть начальные условия (НУ) - результат изменений предыдущего цикла. Мы хотим исключить фактор последовательности обхода клеток, т.к. в нашей реальности все клетки действуют одновременно. Иными словами, при итерации по клеткам в рамках одного такта эволюционное правило, применяемое к клетке, должно опираться ровно на те же НУ, что и остальные. Поэтому имеет смысл в начале нового цикла делать, что называется, snapshot начальных условий и для каждой клетки, брать входные значения из него. Понятно, что при таком подходе будут возникать коллизии. Для их разрешения можно придумать дополнительный слой логики, либо отдавать приоритет рандомно. В последнем случае история будет похожа на развитие квантовой системы, которая также из состояния суперпозиции (все возможные варианты исхода) каждый такт "схлопывается" в какое-то одно (ну или разделяется по параллельным вселенным, если вам больше нравится Эверетт и т.п.)
@user-sm7xb9xt8l
@user-sm7xb9xt8l Ай бұрын
Крутяк
@syntet8743
@syntet8743 Ай бұрын
foo52ru ТехноШаман 5:00 Есть идея о справедливом массовом ходе(шагах) организмов. Тебе надо создать иллюзию одновременности, это как в игре мафия, пока все участники не походят, действий не будет, и только когда город проснётся (это у тебя клетка 0) только тогда выполнится все запланированные действия. То есть будет одновременно убиты 2,3 клетки, рождены новые 2-3 клетки. Тогда преимущество первоочерёдных клеток будет полностью нивелировано.
@user-ju7xj3qu6k
@user-ju7xj3qu6k 2 ай бұрын
ТехноШаман, твои проблемы являются следствием преждевременного изменения состояния клеток. Для преодоления этого можно ввести фазы подготовки к изменению и изменения состояния. На фазе подготовки мы рассматриваем состояние всех клеток "только для чтения" и формируем дельту состояния для каждой из них. А на фазе изменения состояния мы эту дельту применяем, в условиях запрета на чтение состояний других клеток.
@razvigor2819
@razvigor2819 Ай бұрын
Теперь понятно, откуда описанные в предыдущих роликах проблемы. 32 генов банально не достаточно для кодирования тех возможностей, что потенциально заложены в геноме. А рудимент с 3 направлениями с заранее типизированными отростками добивает картину, т.к. чтобы просто закодировать все возможные варианты ветвления требуется 5*5*5=125 генов. А ведь еще и нужен запас на гены-условия, минимум столько же. Итого получается, что чтобы в данной структуре генома получить не урезанный по возможностям организм, необходимо не 32 гена, а 256. Решить эту проблему частично можно возвратом к коротким генам цифровых деревьев, увеличив число строк за счет их длины. Более оптимальное, имхо, решение: выделение нетипизированных побегов, которые выберут кем стать сами, по проверке параметров энергонасыщенности и органики в месте своего появления, тогда потребуется меньше генов, но вырастет размер самого гена на +6.
@fluffybobber
@fluffybobber Ай бұрын
Уважаемый техношаман, спасибо за разъяснения. Я как-то писал, что реализовывал схожие алгоритмы, даже в 3д. Вот сначала вы описываете список и объясняете недостатки, а потом предлагаете свой вариант с ссылками. Поясните пожалуйста почему ссылки ? При этом при добавлении элементов вы меняете ссылки у соседей, но разве это технически возможно, изменить ссылку? Разве это тогда не указатели ли? Подскажите пожалуйста почему вы противопоставляете свой метод списку, разве контейней с указателями на соседей не является классическим двусвязным списком? 😊
@Engineer_KO
@Engineer_KO 21 күн бұрын
Здравствуйте, я создал свой проект по типу первого "пруда" с ботами. Хочу поделится с сообществом, но не могу найти старую ВК группу на тему кибербиологии. Подскажите пожалуйста, где можно своим творчеством поделиться?
@Losinkyilos
@Losinkyilos 2 ай бұрын
Интересно, какие методы для решения таких же задач предпринял бы ИИ.
@euwaq
@euwaq 2 ай бұрын
превью крутое)
@user-sd6xh2jo7k
@user-sd6xh2jo7k 2 ай бұрын
Что мешает сделать 2 массива - входной и результат, пото меняем их местами?
@NickProkhorenko
@NickProkhorenko 2 ай бұрын
Ничего не понял, но очень интересно.
@crystalrain7776
@crystalrain7776 Ай бұрын
чел ты крут
@user-hr9vz7zm9o
@user-hr9vz7zm9o 14 күн бұрын
предлагаю добавить новую клетку такую как лунная клетка она будет потреблять и выробатывать2/3 от обычной солнечной но если добавить четыре периода сменяющие друг друга каждые 50 циклов работы клеток 1 период - утро: солнечные клетки работают на 80%, лунные на 20% 2 период - день: солнечные клетки работают на 100%, на 0% 3 период - вечер: и солнечные и лунные клетки работают на 50% 4 период - ночь: солнечные работают на 0%, лунные на 100% таким образом все виды без лунных клеток не получающие по другому энергию будут вымирать ночью, а без солнечных днем. также можно добавить клетки-клыки которые будут отстреливаться и лететь по прямой оставляя за собой энергетическую дорожку а встречая другую клетку заменять ее на энергетическую дорожку и тем самым соединяя два организма в один также можно добавить воздух и сделать так чтобы он распределялся равно мерно по всей карте в воздухе будет три вещества: кислород, азот, углекислый газ лунной и солнечной клетке нужен углекислый газ для работы они его перерабатывают в кислород семечку, отростку, клыку нужен кислород для работы органическому корню(красной клетке) и энергетическому корню(синей клетке) нужен и кислород и углекислый газ но им нужна прохлада кислород выравнивает температуру углекислый газ повышает температуру азот понижает температуру можно добавить также клетку которая будет перерабатывать все газы в энергию и на оборот для тех случаев когда не хватает газов но эта клетка будет потреблять большое количество энергии можно кислород раскрашивать зеленым, азот - синим, углекислый газ красным
@Shedshebolda
@Shedshebolda 2 ай бұрын
Ураааааааа
@chillbear7051
@chillbear7051 2 ай бұрын
А может сделать гексагональную сетку?
@foo52ru
@foo52ru 2 ай бұрын
Можно, но немного сложнее. По моим представлениям, это кардинально ничего не меняет, но должно выглядеть более красиво и естественно
@igorcoolman
@igorcoolman 2 ай бұрын
а можно как-то использовать где-нибудь Чи́сла Фибона́ччи - элементы последовательности : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, то-есть следующее число это сложение текущего с предыдущим.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Их не используют. В больших системах они сами вылазят как неотъемлемое свойство вселенной.
@VErshov.
@VErshov. 2 ай бұрын
Считай мы в расчёте
@Relat_Mensal
@Relat_Mensal Ай бұрын
Ужас как сложно, завтра опять пересмотрю и попытаюсь Все понять
@user-ze3ez3iy6c
@user-ze3ez3iy6c Ай бұрын
Посчитал... Поле размером 8192х8192. Что бы в каждой клетке хранить геном, понадобится 42 Гб оперативы
@xelizy
@xelizy Ай бұрын
128GB + Xeon + 4090.
@Valentin_I
@Valentin_I Ай бұрын
Такие данные очень хорошо и быстро сжимаются. Можно из оперативы доставать блоками, их распаковывать, обсчитывать, сжимать обратно.
@nothing4542
@nothing4542 2 ай бұрын
Благодарю за технический ролик, но мне все ещё интересно сколько ресурсов компьютера ест такая симуляция?
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
В идеале, 100% потока, а если паралелить вычисления, то и 100% процессора. А памяти в зависимости от сложности объектов и размера поля. В силу любопытности экспериментатора - "а что будет если объекты сложней? А что будет, если полянка по больше?" память тоже можно утилизировать на 100%. Видеокарта 5%. Тут для нее работы нет. На диске тоже считаные мегабайты занимает.
@foo52ru
@foo52ru 2 ай бұрын
В приделах 3 шагов симуляции в секунду. Для ролика надо где то неделю, что бы пара миллионов шагов просчиталось.
@nothing4542
@nothing4542 2 ай бұрын
@@foo52ru благодарю
@melrim3958
@melrim3958 2 ай бұрын
Техношаману. Энергия не является веществом, энергия также не является полем. Энергию следует понимать как процесс перехода материи из одного состояния в другое. Условия для энергии, или цепного запуска изменений, соблюдаются всегда. Мы называем этот набор условий материальным миром. Вы говорите, что в многоклеточном организме движется энергия!? Что там движется? Является ли процесс моделирования в компьютере материальным миром?
@whitelrabbit
@whitelrabbit 2 ай бұрын
Подскажите пожалуйста, если я хочу такое повторить у себя и смотреть на такие вселенные, с чего мне начать? И готовое и сделать самому мне было бы очень интересно
@user-sc4ic3ey7i
@user-sc4ic3ey7i 2 ай бұрын
Научиться программировать
@1kvolt1978
@1kvolt1978 2 ай бұрын
Начни с простого - запрограммируй классическую конвеевскую "Жизнь".
@whitelrabbit
@whitelrabbit 2 ай бұрын
@@1kvolt1978 Спасибо большое
@UsualNerd
@UsualNerd 2 ай бұрын
Если новое состояние клеточного автомата строить исключительно на основе старого (read-only), то порядок перебора клеток никак не может повлиять на результат. По какой-то причине этот способ не подошёл, и в вашем варианте состояние только одно, и по мере вычислений изменяет само себя?
@KTonberry
@KTonberry 2 ай бұрын
Представим ситуацию, когда две или больше клеток конкурируют за какой-то ресурс. Какая из них "победит" в новом состоянии? Либо получится, что все воспользовались ресурсом, что нелогично, если ресурс конечный, либо та, для которой расчёт произошёл позже всех, т. к. результат её действий перезапишет результаты остальных. Поэтому порядок перебора будет влиять и в таком случае.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
@@KTonberry 1 клетка победит. Ни чего страшного. Если 2 воробья бросаются на 1 зернышко, то достается, обычно, одному. А вот куда в очереди попадет потомок - это вопрос. Но он уже будет конкурировать и с предком и соседом, при том, сместившись. Опять же, на следующем такое каждая из клеток окажется в своем новом состоянии исполняя свою часть генома. Шанс того, что 2 соседа будут стремиться к одному и тому же - занять клетку, объесть ее, отрастить потомка - не велик.
@foo52ru
@foo52ru 2 ай бұрын
Это не клеточный автомат. Или я не правильно понимаю, что такое клеточный автомат
@UsualNerd
@UsualNerd Ай бұрын
@@foo52ru Так и есть, в вашем случае это не клеточный автомат, потому что клетки вычисляют своё новое состояние S(t+1) на основе не только старого S(t), но и самого себя, т.е. рекурсивно, отсюда и неопределённости.
@ruby_linaris
@ruby_linaris 2 ай бұрын
вместо хранения прошлой-следующей в списке "всех", хранить только указатель на клетку (картотека живых клеток) (можно просто битовой картой, раз матрица статическая, и хранить индекс первой незаполненной), можно распараллелить, и хранить N списков-N картотек, например, 2х2, порождающий 4-е картотеки, (k00, k 01, k10, k11) разбивая карту на 4 равноправные непересекающиеся подкарты-полосы, для минимизации взаимного влияния от соседних полос. но возникает проблема синхронизации, которая может просадить быстродействие полностью, упростим: каждая подкарта может отправлять запрос к процессам рождения, уничтожения, которые, уже в свою очередь, получают управление после того как все подкарты отработают свой цикл. а вставлять/убирать (отдельным от подкарт циклом) уплотняя карты живых... работая исключительно с началом и концом свободных позиций... хм... с энергией что-то странное ... лучше сразу разбить на мир энергетических, мир транспортных и мир жующих... и просто контролировать, чтобы не было однофамильцев. и...?! зачем симулировать передачу энергии? если есть источник, есть путь, есть приемник ... то можно успокоится, и ждать когда что-то поломается, тогда уже перерисовать путь передачи энергии, и отправить все запросы на очистку и освобождение. с aG-table мое предложение модификации... If_P_aG If_P_aG If_P_aG Cmd_aG1_aG2, те проверка первого условия - первый ген или команда, на второе условие его ген или команда, третье - аналогичное, а потом рандомно либо команду, либо замену гена, как условие "иначе".
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Втыкать новорожденных, или смещать на границе подвижных можно отдельным потоком в цикле в процессе отработки по заявкам от больших массивов. Делать их очень много очень маленьких - нет смысла. Не более, чем 2-4 чисел ядер у процессора. В современных реалиях порядка 16/64 полей. Опять же, если в конкретный момент существует 4 элемента, бить их на 64 процесса смысла нет. Должно быть некое минимальное количество, что параллелить.
@INGVAR_K
@INGVAR_K 2 ай бұрын
ОНО ЖИВОЕ!
@PJutch
@PJutch 2 ай бұрын
Ну, моя попытка сделать симуляцию с одноклеточными организмами с исполняемым геномом) привела к такому алгоритму с очерёдностью: 1. Каждая клетка решает, что она будет делать 2. Для каждой ячейки соседи, начиная со случайного и далее по часовой стрелке, пытаются с ней взаимодействовать. Можешь молодец, не можешь - ход впустую. Важный хак: мы не удаляем убитые клетки, а просто ставим флаг. И если организм передвинулся мы делаем копию и ставим флаг на старой 3. Все клетки, которые нужно удалить удаляются Таким образом все направления +- равноправны. Даже если клетки движутся против порядка обхода, может передвинуться только организм рядом с пустой ячейкой. Если 2 организма атакуют друг друга, умирают оба (О, а я кажется понял почему я не мог заставить закон сохранения энергии работать!) Я правда пока смотрел реализацию, нашёл в ней 2 проблемы: 1. Клетка может уйти от атаки если походит раньше. А если позже не может. Надо наверное атаковать в отдельную фазу или сделать разный флаги для "ушёл" и "умер". 2. Если организм размножился/походил, то его сосед по часовой стрелке имеет сильно больше шансов убить его/потомка, чем сосед против часовой стрелки. Стоит рандомизировать не только начало, но и направление обхода. Делать вообще случайный порядок, мне кажется, медленно, а то, что чем ближе организм к другому, тем проще ему помешать, можно считать фичей)
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Делай общий список ячеек и не придется соседей обходить для их активации. По мере смертей и дефрагментации списка объектов они все перемешаются и закономерности преимуществ не станет. А то в твоей схеме возможна ситуация, когда все соседи вокруг заставят одного 4 раза, или 8 раз выполнять действия за цикл. А это вообще анрил! Опять же. В реальной жизни действие на долю секунды раньше приводит к преимуществу. Так что, все возможно.
@PJutch
@PJutch 2 ай бұрын
@@progressive_agriculture ​ ну, та симуляция получилась неинтересная и я её уже с год не трогал. Про 8 раз выполнять действие за цикл я немного не понял. У меня так разрешаются только перемещение, размножение и атака. При этом организмы только добавляются или помечаются как мёртвые и ячейка не освобождается. Поэтому для каждой ячейки может выполниться только 2 действия - перемещение/размножение и потом атака. Но вообще, кто-то здесь написал поддерживать список объектов и перемешивать их каждый цикл. Это самый честный и вменяемый вариант.
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
@@PJutch Ты писал - "Для каждой ячейки соседи, начиная со случайного и далее по часовой стрелке, пытаются с ней взаимодействовать." Тогда, представь, что "каждая ячейка" выбранные тобой для отработки объекты 4 подряд находятся вокруг некоторого до кого очередь еще не дошла. И каждый из очередных будет его заставлять взаимодействовать. 4 раза заставят. Я не перемешиваю. Просто, если кто-то помер, на его место переносится последний элемент в списке, список уменьшается на 1, отработка передается перенесенному. А если новый рождается, то он добавляется в конец списка. Список увеличивается на 1. В итоге множества смертей и рождений списки перемешиваются так, что в сейве потом концов не найти. У меня есть 4 действия, которые исполняются с некоторой вероятностью: поворот, шаг вперед, съесть, размножиться. только одно действие выполняется за шаг. Вот вероятность действия переносится в геноме. Она же и мутирует с вероятностью 1/1000. Есть 3 вида живности: плесень(еда) - медленно растет во все стороны сплошным ковром. Бактерии -ползают и едят плесень. Корни(хищные растения) - медленно растут, ветвятся, передают друг другу энергию, раз в 10 шагов съедают бактерию вплотную к корню. На полянке в размер экрана 1920х1080 пытаются выжить. А плесень растет в зависимости от "радиации" которая меняется по очень длинной синусоиде. Цикл радиации начинал с 100тыс. Сейчас около 20млн тактов обсчета живности.
@PJutch
@PJutch 2 ай бұрын
@@progressive_agriculture ну так суть в том, что их этих взаимодействий удачны всегда максимум 2. Вообще можно после 1 сразу останавливаться. Если список без перемешивания, то если 2 организма рядом в списке одновременно родили, то потомки тоже будут рядом в списке, и из-за этого могут быть какие-то артефакты... Вообще мне кажется, алгоритм обновления не так сильно важен, и развиваться будут примерно одинаковые организмы. Но это уже бы надо проверить экспериментально.
@Eugeny_Goncharuk
@Eugeny_Goncharuk 2 ай бұрын
Миллионы лет эволюции за 19 минут.
@Occultist_
@Occultist_ 2 ай бұрын
Симуляции конечно круты, но вот ощущение, что ну как-то вот все организмы - колониальные одноклеточные. Можно ли в теории смоделировать такие процессы, как формирование именно многоклеточных организмов, то есть, когда клетки будут приобретать разные свойства в рамках некоего общего организма, подчиняясь единой цели?
@PJutch
@PJutch 2 ай бұрын
Кстати, забыл спросить, а почему выбрана такая система распределения энергии? Можно же распространять её, например, диффузией. Правда тогда нужно как-то по-другому понимать, когда организму умирать или уметь создавать новые отростки... Вообще было бы интересно сделать, чтобы организмы развивали свою систему распределения энергии со всякими регуляторами и аккумуляторами... Хотя я подозреваю победит что-нибудь простое, вроде спамь генераторами и не парься, но ведь не факт)
@foo52ru
@foo52ru 2 ай бұрын
Можно диффузией, тогда энергия будет равномерно распределена по всему организму. Но в этой модели основными потребителями являются только небольшое количество активных клеток, которые порождают новые. Что бы не сдерживать рост, вся энергия переправляется к ним.
@PJutch
@PJutch Ай бұрын
@@foo52ru кстати с диффузией энергия от суперорганизмов будет равномерно распределяться по поверхности, а не скапливаться в линиях. Это наверное может к вымиранию привести.
@shoxruX_wantxo
@shoxruX_wantxo Ай бұрын
ТехноШаман на какой программе происходит визуализация?
@ataksanimation176
@ataksanimation176 Ай бұрын
А техношаман не думал о веб версии такой симуляции - или непотянет?
@gok-pro
@gok-pro 2 ай бұрын
Коммент пишу чисто для продвижения ролика, а так интересно было бы узнать на чем ты все это пишешь? Какой язык, библиотеки и тд?
@foo52ru
@foo52ru 2 ай бұрын
язык Processing. Библиотеки не используются
@YaShoom
@YaShoom 2 ай бұрын
17:18 интересно, как это трактовать? Как недоработку, когда организм не умерает благодаря его эксплуатации из-за правила смерти не от недостатка энергии, а от исчезновения семян? Или как то, что это симбиоз и на самом деле одиночки спасают организм от переизбытка энергии?
@foo52ru
@foo52ru 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Сейчас количество условий одинаковое. Количество генов у всех клеток одинаковое. Структура программы простая. Скорость выше. Ошибок меньше. Добавляем возможность иметь больше условий - усложняется структура программы. Скорость работы падает. Размерность генома меняется. Растет время на обсчет - скорость падает. Повышается сложность обработки генома - падает скорость. Растут ошибки. В целом. Сложней, медленней, косячней. Попробуй все это удержи в голове и расчитай! Вот возьми и попробуй! 😉
@SIM31r
@SIM31r 2 ай бұрын
Круто конечно. Но хотелось бы организмы с небольшим умом, нейросеть из десятка нейронов и пусть думаю этим ))
@progressive_agriculture
@progressive_agriculture 2 ай бұрын
Всему свое время. Половину времени жизни на зкмле ни каких сейронов не было вообще. Были одноклеточные без нервов и мозгов. Торопиться не надо!
@snickersdestroyer
@snickersdestroyer 2 ай бұрын
Ех хочется 2х часовую версию без коментариев. Посмотреть как ячейки бегают суетятся
@Rocalic
@Rocalic 2 ай бұрын
3:57 а что насчёт противоположной стороны от родительской клетки?
@Rocalic
@Rocalic 2 ай бұрын
Или например выбирать случайные из списка?
@foo52ru
@foo52ru 2 ай бұрын
Можно и с противоположной стороны. Но возможны неприятные моменты. Например: Клетка создаёт новую клетку. Управление сразу передает на новую клетку. Новая клетка создаёт клетку. Управление сразу передает на новую клетку. Новая клетка создаёт клетку. Управление сразу передает на новую клетку. .... Если энергии было много, то за один шаг симуляции сразу возникнет длиннющая ветка. Если новую клетку в списке ставить перед родителем, то очередь до неё дойдёт только на следующем шаге симуляции. Ветка будет расти - одна клетка за шаг симуляции.
@Rocalic
@Rocalic 2 ай бұрын
@@foo52ru нет, в смысле, например, на тайкоде клетка 7 создаёт клетку между пятой и четвёртой.
@ovoshchkiber1769
@ovoshchkiber1769 2 ай бұрын
А что если вместо буферов А и Б создать в клетке boolean переменную и при передаче енергии менять её значение, при ходе клетки если переменная==true, то передавать енергию и менять значение переменной клетки в которую передали енергию на false
@klaxwork1208
@klaxwork1208 Ай бұрын
Я уже задавал вопрос, но, все-таки, задам его снова. Не сделаете ли такую жизнь на основе не генома, а нейросети? Пускай начнется с малой, буквально штук 10-15 входных нейронов, один-два слоя скрытых с 10-15 нейронами, и десяток выходных нейронов. Ну или сколько там будет действий конечных для каждой клетки... Сначала только одиночные клетки, а там, глядишь, и до растений доберетесь... :)
Эволюция цифровых деревьев
8:57
foo52ru ТехноШаман
Рет қаралды 212 М.
Параллельные миры. Небольшой эксперимент.
1:00
foo52ru ТехноШаман
Рет қаралды 62 М.
Joven bailarín noquea a ladrón de un golpe #nmas #shorts
00:17
I Need Your Help..
00:33
Stokes Twins
Рет қаралды 122 МЛН
Работа с NavigationStack в SwiftUI и настройка внешнего вида NavigationBar и NavigationBackButton.
33:33
iOS разработка и подготовка к собеседованию
Рет қаралды 52
Искусственная жизнь. Борьба кланов 7.
34:27
foo52ru ТехноШаман
Рет қаралды 42 М.
День сантехника // Коппа // Капельный полив
22:21
Сергей Бистяйкин / Sergey Bistyaykin
Рет қаралды 343
How much charging is in your phone right now? 📱➡️ 🔋VS 🪫
0:11
ПРОБЛЕМА МЕХАНИЧЕСКИХ КЛАВИАТУР!🤬
0:59
Корнеич
Рет қаралды 3,3 МЛН
iPhone 15 Pro vs Samsung s24🤣 #shorts
0:10
Tech Tonics
Рет қаралды 9 МЛН
#miniphone
0:18
Miniphone
Рет қаралды 11 МЛН