У меня есть следующее требование в JADE. Мне нужно создать несколько агентов, задача которых состоит в генерации случайных чисел. Другой агент-получатель собирает все генерируемые случайные числа и суммирует их для принятия решения. Это отправитель агент класс расширяет tickerbehaviour и его тик метод OnTick выглядит следующим образомКак добавлять сообщения (целочисленные значения) от нескольких агентов в другом агенте с использованием JADE
protected void onTick()
{
ACLMessage msg_LoadDetails = new ACLMessage(ACLMessage.INFORM);
msg_LoadDetails.addReceiver(new AID("LoadCoordinator", AID.ISLOCALNAME));
msg_LoadDetails.setContent(String.valueOf(getLoad()));
LoadConv.send(msg_LoadDetails);
//load = (int)(Math.random()*1000+1);
}
Класс приемника расширить циклическую поведение и способ его действия заключается в следующем
public void action()
{
ACLMessage msg_IncomingLoadDetails = LoadCoordinator.receive();
if(msg_IncomingLoadDetails!=null)
totalLoad = Integer.parseInt(msg_IncomingLoadDetails.getContent());
if(totalLoad>500)
{actioncommand = "off";}
else
{actioncommand = "on";}
System.out.println("The current load is:" +totalLoad+ "; the load will be switched " +actioncommand);
block();
}
Проблема здесь в том, что полученные значения предназначены только для одного агента, который я создаю (из консоли). Я хочу получать значения для всех созданных агентов. Требует ли мне создания массива агентов? Как читать значения из многих сообщений агента? Может кто-нибудь, пожалуйста, помогите с кодом, чтобы сделать это, поскольку я новичок в JAVA и JADE?
поведение клеща выполняет OnTick метод каждые 5 сек. Я знаю, что это не суммирует значения. Я хотел бы знать, как я могу получать значения от всех агентов, а затем суммировать их. –
Метод Agent.receive() получает самое старое сообщение в очереди агента. Я создал 2 агента отправителя, каждый отправляет случайное целое каждые 5 секунд. И получатель получает от обоих отправителей, вот журнал с моей консоли: http://pastebin.com/D8sN1fUY –
Это работает следующим образом: стартеры отправителя и получателя, получатель пытается получить сообщение, но очередь пуста. Поэтому его поведение блокирует и ждет сигнала. Затем оба отправителя отправляют свои номера. Приемник получает сигнал о новых сообщениях и вызывает его поведение. Он находит сообщение в очереди, получает его и показывает. Затем снова запускается поведение, находит второе сообщение в очереди, получает его и показывает. –