Читайте также:
|
|
package ExampleSequenceAction;
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("AgentSequential", " ExampleSequenceAction.SequentialAgent", null);
agent.start();
}
// Обработка исключительной ситуации
catch(Exception e) {e.printStackTrace();}
}
}
package ExampleSequenceAction;
import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.core.behaviours.SequentialBehaviour;
import jade.core.behaviours.DataStore;
// Sequential-Агент
public class SequentialAgent extends Agent
{
// добавление поведения агента
protected void setup()
{
SequentialBehaviour s = new SequentialBehaviour(this)
{
// Действие агента по завершению (удаление агента)
public int onEnd()
{
System.out.println(
"Sequential 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; просмотров: 47 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример реализации детерминированного конечного автомата для мультиагентной системы в программной среде JADE | | | Пример реализации параллельных действий для мультиагентной системы в программной среде JADE |