Читайте также:
|
|
package ExampleFSM;
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);
// Создание и запуск FSM-агента,
// который содержатся в главном контейнере
try
{
AgentController agent = cc.createNewAgent("AgentFSM", "ExampleFSM.FSMAgent", null);
agent.start();
}
// Обработка исключительной ситуации
catch(Exception e) {e.printStackTrace();}
}
}
package ExampleFSM;
import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.core.behaviours.FSMBehaviour;
// FSM-Агент
public class FSMAgent extends Agent
{
private static final String STATE_A = "A";
private static final String STATE_B = "B";
private static final String STATE_C = "C";
private static final String STATE_D = "D";
private static final String STATE_E = "E";
private static final String STATE_F = "F";
// добавление поведения агента
protected void setup()
{
FSMBehaviour fsm = new FSMBehaviour(this)
{
// Действие агента по завершению (удаление агента)
public int onEnd()
{
System.out.println("FSM behaviour completed.");
myAgent.doDelete();
return super.onEnd();
}
};
fsm.registerFirstState(new NamePrinter(), STATE_A);
fsm.registerState(new NamePrinter(), STATE_B);
fsm.registerState(new RandomGenerator(3), STATE_C);
fsm.registerState(new NamePrinter(), STATE_D);
fsm.registerState(new RandomGenerator(4), STATE_E);
fsm.registerLastState(new NamePrinter(), STATE_F);
fsm.registerDefaultTransition(STATE_A, STATE_B);
fsm.registerDefaultTransition(STATE_B, STATE_C);
fsm.registerTransition(STATE_C, STATE_C, 0);
fsm.registerTransition(STATE_C, STATE_D, 1);
fsm.registerTransition(STATE_C, STATE_A, 2);
fsm.registerDefaultTransition(STATE_D, STATE_E);
fsm.registerTransition(STATE_E, STATE_F, 3);
fsm.registerDefaultTransition(STATE_E, STATE_B);
addBehaviour(fsm);
}
// OneShot-Поведение агента
private class NamePrinter extends OneShotBehaviour
{
// Действие агента (печать поведения)
public void action()
{
System.out.println("Executing behaviour "+ getBehaviourName());
}
}
private class RandomGenerator extends NamePrinter
{
private int maxExitValue;
private int exitValue;
private RandomGenerator(int max)
{
super();
maxExitValue = max;
}
// Действие агента
// (печать поведения и генерация кода завершения)
public void action()
{
System.out.println("Executing behaviour "+ getBehaviourName());
exitValue = (int) (Math.random() * maxExitValue);
System.out.println("Exit value is "+exitValue);
}
// Действие агента по завершению (возврат кода завершения)
public int onEnd() {return exitValue;}
}
}
Результаты работы программы
Executing behaviour A
Executing behaviour B
Executing behaviour C
Exit value is 1
Executing behaviour D
Executing behaviour E
Exit value is 2
Executing behaviour B
Executing behaviour C
Exit value is 2
Executing behaviour A
Executing behaviour B
Executing behaviour C
Exit value is 2
Executing behaviour A
Executing behaviour B
Executing behaviour C
Exit value is 1
Executing behaviour D
Executing behaviour E
Exit value is 2
Executing behaviour B
Executing behaviour C
Exit value is 1
Executing behaviour D
Executing behaviour E
Exit value is 1
Executing behaviour B
Executing behaviour C
Exit value is 2
Executing behaviour A
Executing behaviour B
Executing behaviour C
Exit value is 2
Executing behaviour A
Executing behaviour B
Executing behaviour C
Exit value is 2
Executing behaviour A
Executing behaviour B
Executing behaviour C
Exit value is 0
Executing behaviour C
Exit value is 1
Executing behaviour D
Executing behaviour E
Exit value is 3
Executing behaviour F
FSM behaviour completed
Дата добавления: 2015-11-14; просмотров: 44 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример реализации онтологии для мультиагентной системы в программной среде JADE | | | Пример реализации последовательности действий для мультиагентной системы в программной среде JADE |