Добавить / добавить агента в очередь в Anylogic

У меня есть смешанная модель в Anylogic, где некоторые из моих агентов должны добавлять части (которые также являются агентами) в QUEUE моделирования дискретных событий.

Получение агентов из ОЧЕРЕДИ осуществляется через queue1.removeFirst();, но я не могу найти эквивалента, чтобы что-то добавить. Я пробовал addAgentToContents, но безуспешно ...


person jacandau    schedule 25.04.2016    source источник


Ответы (1)


Вы не можете напрямую добавить агента в очередь.

Либо вы помещаете перед ним исходный объект и устанавливаете для его свойства «Arrival defiend by» значение «inject ()». Также установите для его типа «Новый агент» значение «Часть». Когда ваш агент хочет добавить часть в очередь, вы вызываете source.inject(), и часть будет добавлена ​​в очередь.

В качестве альтернативы, если вы уже создали частичный агент, вы можете использовать порт своего агента и связать его со своей очередью с помощью коннектора. Оба объекта находятся в библиотеке «Агенты».

надеюсь это поможет

person Benjamin    schedule 26.04.2016
comment
Спасибо, Бенджамин. Я пытался установить соединение, но мне все равно нужно как-то отправить деталь. Есть метод send, но он справляется только с сообщениями ... вы знаете, как это сделать? - person jacandau; 26.04.2016
comment
Сообщение может быть любого типа, а не только строкой. Если вы проверите Javadoc для метода send для порта, он сообщит вам, что параметр msg имеет тип Object, что означает, что это может быть что угодно. - person Benjamin; 26.04.2016
comment
Завершено с использованием блока процесса Enter для отправки агента детали обратно в диаграмму процесса. - person jacandau; 26.04.2016
comment
это третий вариант, о котором я забыл упомянуть ... В AnyLogic всегда есть несколько способов добиться чего-то, и это часто зависит от вашей существующей структуры. - person Benjamin; 26.04.2016
comment
@jacandau как вы связали агента с очередью? Я использовал соединитель для подключения агента и очереди, что приводит к этой ошибке Исключение во время выполнения дискретного события: root.queue.input: InPort может быть подключен только к OutPort - person Tameen Malik; 07.08.2016