С 2000 по 2006 год я работал в Tryllian, голландской компании, специализирующейся на мультиагентных системах. Компания сейчас не активна.
Первой идеей в Tryllian было создание поискового устройства на основе агентов (называемого Сплетней). Это было графическое клиентское приложение с несколькими яркими круглыми агентами с милыми глазами. У каждого агента был зазор в спине, в который можно было перетащить «рюкзак». Рюкзак может содержать поисковый запрос и ряд результатов поиска (URL, документы, изображения и т. Д.). Чтобы выполнить поиск, пользователь должен был перетащить агента с подготовленным рюкзаком на «портал в Интернет», который был своего рода дверью пристани с звездным фоном, как вы видите в научно-фантастических фильмах. Затем агент будет «телепортирован» на триллиановый сервер, где он будет направлен в «тематическую комнату» «агентом-дворецким», который живет на сервере. В комнате он мог взаимодействовать с другими агентами и обмениваться поисковыми интересами и результатами. Похоже, что вы все еще можете скачать Gossip здесь .
Позже Tryllian решил разработать Agent Development Kit (ADK), с помощью которого можно было бы легче создавать приложения-агенты, такие как Gossip. Он предложил основанную на задачах модель поведения агента программирования. Ваш агент получит много событий (agentStarted и т. Д.), А в обработчики событий может добавить задачи, которые, в свою очередь, также получат события (taskStarted и т. Д.) И могут запланировать более сложные действия (возможно, в форме подзадач). API был действительно довольно хорошо сделан.
Ключевой особенностью ADK была, на мой взгляд, мобильность кода, которую он предлагал; агенты могут не только перемещаться между виртуальными комнатами в своей локальной среде ARE (Agent Runtime Environment), но также могут перемещаться на другой сервер. Это включало сериализацию классов и решение для нескольких загрузчиков, которое было довольно революционным в то время (нам нравилось думать). Эта функция позволила создавать проекты, в которых вы вносите код в данные, а не обмениваетесь данными (накачка данных по-прежнему является основной характеристикой большинства корпоративных систем, о которых я знаю). Например, Tryllian разработал приложение для удаленного аудита, которое позволило аналитикам из аудиторской компании кодировать правила аудита в агент и безопасно отправлять их на сервер своего клиента для мониторинга процессов.
Я остановлюсь, прежде чем этот ответ начнет получать действительно long (-;
Это, вероятно, все немного больше, чем вы ожидаете достичь прямо сейчас. Если бы вы могли сформулировать свои вопросы более конкретно, я мог бы дать несколько советов о том, как настроить вашу мультиагентную систему (кстати, вопрос о том, как моделировать обмен сообщениями между агентами, также очень интересен - о, извините, я сказал, что остановлюсь. ..).
Какова будет цель вашей мультиагентной системы? Что бы сделал агент? Будет ли он работать на одной машине или распространяться? Будут ли агенты жестко заданы, конфигурируемы или полностью динамичны в своем поведении / правилах?
Последнее предложение: разумной отправной точкой для размышлений о моделировании простых агентов является чувство-план-действие , которое обычно ассоциируется с роботами.
РЕДАКТИРОВАТЬ: ответ на ваш комментарий
Модель агента Триллиана больше ориентирована на обмен сообщениями, чем на тесное взаимодействие с моделируемой физической средой. Глядя на пример сайта, который вы разместили, кажется, что производительность очень важна, особенно когда число агентов увеличивается. Вы не будете использовать сильные стороны агента Триллиана: мобильность кода, программирование на основе задач, универсальность, поэтому я думаю, что это не лучший инструмент для моделирования, подобного этому.
Вы упоминаете «сетка» против «гладкого» подхода. Я думаю, что при компьютерном моделировании вам всегда нужно будет представлять размер, координаты, скорость и направление агентов в какой-то дискретной системе координат. Таким образом, всегда будет какая-то сетка, но вы можете уменьшить ячейки, чтобы они казались более гладкими.
Может быть, есть какие-то полезные ресурсы в игровом домене? (спрайты, обнаружение столкновений и т. д.)
Удачи и веселья!