2016-06-30 9 views
0

Я работаю над jade для платформы с несколькими агентами в моем проекте.Jade Java Agent Communication

У меня есть контейнер для контейнеров и агентов, содержащий агенты.

Я хочу отправить данные из агента в контейнер агента или основной контейнер ..

Поскольку мой агент является клиентом, а мой главный контейнер будет сервером.

В архитектуре нефрита я понял, что контейнер будет содержать агент агентов.

Возможно ли это?

мне было интересно, есть APIs для отправки данных между агентами.

Заранее спасибо

ответ

0

Я не уверен, что это то, что вы пытаетесь достичь. Кто является конечным реципиентом ACLMessage, который вы отправляете от агента JADE? все ли агенты, которые находятся в целевом контейнере?

Просто для уточнения, контейнер, по существу, адрес, где агенты могут находиться, это не entitiy в себя, что может отправлять и получать сообщения. В рамках JADE агенты имеют «Inbox» для ACLMessages, в основном объект BlockingQueue, содержащий список полученных сообщений. агент может наблюдать собственный список и обрабатывать их по мере продолжения жизненного цикла. Контейнеры не обладают этой способностью.

ACLMessages могут быть направлены на конкретных агентов путем добавления receipients и другие детали. Агент, который ПОЛУЧАТЬ сообщения могут прослушивать определенный ACLMessages пути использования MessageTemplate, где можно конкретно выбирать сообщения из агента «Входящих» на основе критериев соответствия, например:

Messagetemplate mt = MessageTemplate.MatchPerformative(ACLMessage.INFORM); 
ACLMessage msg = myAgent.receive(mt); 

позволит агенту взять следующее сообщение ACLMessage.INFORM из его 'inbox'.

для дальнейших способностей, я предлагаю вам пройти через нефрит API.

Кроме того, для того, что я верю, что вы пытаетесь достичь, который послать сообщение всем агентам внутри контейнера. Вы можете запросить агент AMS для списка агентов, которые находятся на платформе, а затем отфильтровать их на ContainerID. здесь какой-то код, чтобы вы начали:

AMSAgentDescription[] agents = null; 
SearchConstraints sc = new SearchConstraints(); 
// if multiple searchs are done, isolate them based on the name of searching agent 
sc.setSearchId(getAID().getName()); 
sc.setMaxResults(new Long(-1)); // long value of -1 means get all agents 
agents = AMSService.search(this, new AMSAgentDescription(), sc); //Query AMS agent for available agents 

Этот код будет получить список всех доступных агентов на платформе, которые регистрируются с агентом AMS. Удачи и поста, если у вас возникли проблемы :)