Pull to refresh

Comments 11

Мимолетно глянув на гифку в превью, подумал было, что это скрин глобальной карты из игры Factorio
Честно говоря, не очень понятен ответ на главный вопрос: какими механизмами возникает коллективная эмерджентность муравейника. В Вашей реализации вся оптимизационная и интеллектуальная часть выполнена Вами, а в swarm intelligence эти штуки как раз возникают в результате коллективного взаимодействия.
стоило бы добавить:
  • пища=энергия на перемещение
  • обмен информацией о количестве еды («нужна помощь»)
  • рождение/гибель особей при разных условиях — голод (не добежал до гнезда с пищей или не догадался сожрать что несёт), утонул (потому что не в курсе про воду)

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

Нужна симуляция нескольких групп, а так же возникновения конфликта между ними(на почве недостатка ресурсов), было бы интересно посмотреть на борьбу нескольких муравейников, с фунцией разграбления.
Как говориться «Только три вида животных собирают армии и идут войной друг на друга: люди, вороны и муравьи…», ворон можно упустить.
Один из первых багов, с которыми мне пришлось столкнуться: муравьи безумно бегали по паттерну, заключённому в квадрате в поисках травы на голой земле. Эта проблема возникла, потому что на тот момент я ещё не реализовал обновление памяти. У муравьёв были воспоминания о местоположении пищи, и как только они подбирали траву и снова осматривались, формировались новые воспоминания.


*sarkazam* Видимо тот кто программировал нашу вселенную допустил такой же баг…

Муравьиные круги
UFO just landed and posted this here
Я бы на вашем месте, реализовывал это все методом конечного автомата с памятью.
Либо пошел интереснее и возможно построил бы граф или дерево из конечных автоматов.

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

п.с.
Есть у меня мысль использовать один-два рекурентных слоя для нейронки. Такая нейронка легко пишется в принципе на любом языке, с двумя входами координат еды, и несколько входов о текущем местоположении и возможно состояний. И того 4+ входных данных.
На выходе должны получать выходной вектор направление, скорость и действие, которое сущность должна выполнить. Прошлое помним за счет рекурентных данных. Проблема только в том, что рекурентные сети я не умею обучать. Но тут в идеале, обучение с подкреплением подойдет. Да и для большого количества ботов, допустима большая погрешность. Пусть она даже будет свыше 30%. По этому ее глубокой и сложной делать не надо даже. вход -декодирующий слой — рекурентный слой — кодирующий слой — выход.
Sign up to leave a comment.

Articles

Change theme settings