Эффективные методы моделирования жизни

Прочитав довольно много статей об искусственной жизни (тема, которую я считаю очень интересной), а также несколько вопросов прямо здесь, по SO, я начал экспериментировать с идеей создания (очень, очень, очень) простого симулятора. Даже графика не требуется. Если я упустил из виду вопрос, не стесняйтесь указать мне на него.

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

Мой первый вопрос относится к ассоциациям. Что SO рекомендует как эффективный способ справиться с такими вещами? Я думал о мульти-карте с относительно простой настройкой ключа, который он хочет (еда, еда, отдых и т. д.), А другой бит (извините, мой разум потерял), который он связывает с этой потребностью.

Например, у нас есть холодильник. В холодильнике есть еда (обычный базовый объект). Изначально у человека холодильник не ассоциируется с едой, но он ассоциирует еду с голодом. Поэтому, когда его голод нарастает, он начинает произвольно искать пищу. Если поблизости нет еды, он «использует» предметы для поиска пищи. Поскольку у него нет известных ассоциаций с едой, он волей-неволей использует вещи (вероятно, ищет ближайший объект и расширяется). Как только он использует / открывает холодильник, он видит еду, устанавливая связь (читайте: вставляя пару «еда, холодильник»), что в холодильнике есть еда.

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

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

В любом случае, любые комментарии приветствуются.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
796
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

К первому вопросу:

Насколько я понимаю, у вас отношения «один ко многим». Так что да, мне кажется подходящим мультикарта.

На второй вопрос:

Да, я считаю, что универсальный интерфейс для объектов уместен. Возможно, используйте что-то похожее на ОТДЫХ для управления состоянием объекта.

Жизнь с лиспом (sbcl) :)

Ответ принят как подходящий

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

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

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

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

Это всего лишь набросок, но, возможно, он может дать вам несколько интересных идей, с которыми можно поиграть. Повеселись! ;-)

О, большое спасибо. Я даже не подумал об отражении, хотя теперь я думаю об этом, это идеально подошло бы.

Peter C. 07.12.2008 05:12

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

Подкаст был FLOSS еженедельно 31 с Рэндалом Шварцем и Лео Лапортом.

Другие вопросы по теме