Читайте также:
|
|
package ExampleParallelAction;
import jade.Boot;
import jade.core.Profile;
import jade.core.Runtime;
import jade.core.ProfileImpl;
import jade.wrapper.ContainerController;
import jade.wrapper.AgentController;
// Главная программа
public class Main
{
public Main() {}
// Запуск агентов получателя и отправителя
public static void main(String[] args)
{
// Загрузка JADE-системы
String arg[] = {"-gui"};
Boot boot=new Boot(arg);
// Создание агентного контейнера (для локального хоста)
Profile p = new ProfileImpl();
p.setParameter(Profile.MAIN_HOST, "1-fcd36d9673f14");
p.setParameter(Profile.MAIN_PORT, "1099");
p.setParameter(Profile.CONTAINER_NAME, "MyContainer");
Runtime rt = Runtime.instance();
ContainerController cc = rt.createAgentContainer(p);
// Создание и запуск Sequential-агента,
// который содержатся в главном контейнере
try
{
AgentController agent = cc.createNewAgent("AgentParallel", " ExampleParallelAction.ParallelAgent", null);
agent.start();
}
// Обработка исключительной ситуации
catch(Exception e) {e.printStackTrace();}
}
}
package ExampleParallelAction;
import jade.core.Agent;
import jade.core.behaviours.TickerBehaviour;
import jade.core.behaviours.ParallelBehaviour;
// Parallel-Агент
public class ParallelAgent extends Agent
{
// добавление поведения агента
protected void setup()
{
ParallelBehaviour s = new ParallelBehaviour(this, ParallelBehaviour.WHEN_ALL)
{
public int onEnd()
{
System.out.println(
"Parallel behaviour completed.");
myAgent.doDelete();
return super.onEnd();
}
};
// создание двух подповедений с общими данными
DataStore ds=new DataStore();
ds.put("1"," 0 ");
ds.put("2"," 0 ");
Subtask1 st1 = new Subtask1(this,6000);
st1.setDataStore(ds);
s.addSubBehaviour(st1);
Subtask2 st2 = new Subtask2(this,3000);
st2.setDataStore(ds);
s.addSubBehaviour(st2);
addBehaviour(s);
}
// Ticker-подповедение агента
private class Subtask1 extends TickerBehaviour
{
private int count=0;
// Конструктор
public Subtask1(Agent agent, long timeout)
{
super(agent, timeout);
}
// Действие агента (печать циклы обоих подповедений)
protected void onTick()
{
if (count<5)
{
count++;
String str2=(String)getDataStore().get("2");
String str1=" "+count+" ";
getDataStore().put("1",str1);
System.out.println("Cycle of behaviour 1 ="+str1+
" Cycle of behaviour 2 ="+str2);
}
else super.stop();
}
}
// Ticker-подповедение агента
private class Subtask2 extends TickerBehaviour
{
private int count=0;
// Конструктор
public Subtask1(Agent agent, long timeout)
{
super(agent, timeout);
}
// Действие агента (печать циклы обоих подповедений)
protected void onTick()
{
if (count<5)
{
count++;
String str1=(String)getDataStore().get("1");
String str2=" "+count+" ";
getDataStore().put("2",str2);
System.out.println("Cycle of behaviour 1 ="+str1+
" Cycle of behaviour 2 ="+str2);
}
else super.stop();
}
}
}
Дата добавления: 2015-11-14; просмотров: 102 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример реализации последовательности действий для мультиагентной системы в программной среде JADE | | | Пример реализации работы со службами AMS и DF для мультиагентной системы в программной среде JADE |