Как разработать многоагентную симуляцию, управляемую часами - PullRequest
3 голосов
/ 25 июня 2009

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

Как я могу включить «текущее время моделирования» в этот тип мультиагентного интенсивного моделирования с передачей сообщений?

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

В науке о производстве тысячи бумаг используют многоагентное моделирование для решения некоторых проблем, связанных с производством. Однако я еще не нашел документ, в котором подробно описываются внутренняя работа или детали реализации этого моделирования.

К сожалению, использование кратчайшего времени процесса для дискретного пошагового включения в системе может оказаться невозможным, поскольку диапазон времени процесса составляет от 0,1 с до 24 часов. Есть вероятность, что мое моделирование будет использовано для последующих оценок в проекте, поэтому моделирование должно выполняться как можно быстрее - без опций для ночных прогонов моделирования.

Размер проблемы составляет около 500 ресурсов и 1000–10000 агентов по продуктам, большинство из них завершено и не участвует в дальнейшем обмене информацией или использовании ресурсов.

Следовательно, в результате связи новые события могут побудить агента сделать что-то до того, как произойдет его первоначальное событие «в следующий раз». Например, агент в настоящее время заблокирован на ресурсе продолжительностью один час. Однако другому агенту с более высоким приоритетом нужен этот ресурс сразу же и он просит первого агента освободить этот ресурс.

В каком-то смысле мне нужен способ создать гибрид классической имитации передачи сообщений и имитации дискретных событий.

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

Обновление

Это заняло некоторое время, но, похоже, мне удалось создать мини-фреймворк и объединить концепцию DES и агента в одну. Я уверен, что в этом нет ничего нового, но, по крайней мере, уникально: http://code.google.com/p/tidra-framework/, если вам интересно.

1 Ответ

4 голосов
/ 25 июня 2009

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

Хороший способ дополнить классический DES-взгляд на логические процессы (= агенты), которые взаимодействуют друг с другом через события, может состоять в том, чтобы смешать некоторые идеи с другими формализмами, используемыми для описания систем дискретных событий, таких как DEVS . В DEVS каждый объект может указывать продолжительность, в которой он будет находиться в определенном состоянии (например, агент, блокирующий ресурс), и будет прерываться только входящими сообщениями (и затем соответствующим образом изменять свое состояние, например, агент, освобождающий ресурс).

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

...