Читайте также:
|
|
Ниже приведен фрагмент мультиагентной системы управления процессом хранения, транспортировки, анализа и обработки объектов соответствующими агрегатами. Агент-получатель получает сообщение от агента-отправителя о том, что закончилось хранение объектов на складе.
package SheetProductsOntology;
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);
// Создание и запуск агентов получателя и отправителя,
// которые содержатся в главном контейнере
try
{
// если поведение агентов не связано с таймером
if(args[0].equals(”1”))
{
AgentController agent1 = cc.createNewAgent("AgentSender", "SheetProductsOntology.SenderAgent1", null);
agent1.start();
AgentController agent2 = cc.createNewAgent("AgentReceiver", "SheetProductsOntology.ReceiverAgent1", null);
agent2.start();
}
// если поведение агентов связано с таймером
if(args[0].equals(”2”))
{
AgentController agent1 = cc.createNewAgent("AgentSender", "SheetProductsOntology.SenderAgent2", null);
agent1.start();
AgentController agent2 = cc.createNewAgent("AgentReceiver", "SheetProductsOntology.ReceiverAgent2", null);
agent2.start();
}
}
// Обработка исключительной ситуации
catch(Exception e) {e.printStackTrace();}
}
}
package SheetProductsOntology;
// Понятия онтологии
public interface SPVocabulary
{
// Уровень 1 онтологии (сущность)
public static final String I = "Item";
// ----------------------------------------------
// Уровень 2 онтологии
// Концепт (постоянная сущность)
public static final String PI = "PersistentItem";
// Предикат (временная сущность)
public static final String TI = "TemporalItem";
// ----------------------------------------------
// Уровень 3 онтологии
// Концепты (объект, склад, агрегаты)
public static final String O = "Objects";
public static final String O_TYPE = "TypeO";
public static final String S = "Storage";
public static final String S_TYPE = "TypeS";
public static final String S_PERIOD = "PeriodS";
public static final String AM = "AggregateMove";
public static final String AM_TYPE = "TypeAM";
public static final String AM_PERIOD = "PeriodAM";
public static final String AA = "AggregateAnalysis";
public static final String AA_TYPE = "TypeAA";
public static final String AA_PERIOD = "PeriodAA";
public static final String AP = "AggregateProcessing";
public static final String AP_TYPE = "TypeAP";
public static final String AP_PERIOD = "PeriodAP";
// Предикаты (хранение, перемещение, обработка, анализ,
// трансформация)
public static final String BS = "BeginStoring";
public static final String BS_S = "S";
public static final String BS_O = "O";
public static final String ES = "EndStoring";
public static final String ES_S = "S";
public static final String ES_O = "O";
public static final String BM = "BeginMoving";
public static final String BM_AM = "AM";
public static final String BM_O = "O";
public static final String EM = "EndMoving";
public static final String EM_AM = "AM";
public static final String EM_O = "O";
public static final String BP = "BeginProcessing";
public static final String BP_AP = "AP";
public static final String BP_O = "O";
public static final String EP = "EndProcessing";
public static final String EP_A = "AP";
public static final String EP_O = "O";
public static final String BA = "BeginAnalysis";
public static final String BA_A = "AA";
public static final String BA_O = "O";
public static final String EA = "EndAnalysis";
public static final String EA_A = "AA";
public static final String EA_O = "O";
public static final String M = "Moving";
public static final String M_A = "AM";
public static final String M_O = "O";
public static final String M_PERIOD = "PeriodM";
public static final String P = "Processing";
public static final String P_A = "AP";
public static final String P_O = "O";
public static final String P_PERIOD = "PeriodP";
public static final String A = "Analysis";
public static final String A_A = "AA";
public static final String A_O = "O";
public static final String A_PERIOD = "PeriodA";
public static final String T = "Transformation";
public static final String T_O1 = "O1";
public static final String T_O2 = "O2";
}
package SheetProductsOntology;
import jade.content.onto.Ontology;
import jade.content.onto.BasicOntology;
import jade.content.onto.OntologyException;
import jade.content.schema.ConceptSchema;
import jade.content.schema.PredicateSchema;
import jade.content.schema.PrimitiveSchema;
// Онтология
public class SPOntology extends Ontology implements SPVocabulary
{
// Имя онтологии
public static final String ONTOLOGY_NAME = "SheetProducts";
// Экземпляр онтологии
public static Ontology theInstance = new SPOntology();
// Метод доступа к экземпляру онтологии
public static Ontology getInstance() {return theInstance;}
// Конструктор
public SPOntology()
{
super(ONTOLOGY_NAME, BasicOntology.getInstance());
ConceptSchema cs;
PredicateSchema ps;
try
{
// Добавление схемы в онтологию и связывание с ней класса (понятия)
add(new ConceptSchema(PI), PersistentItem.class);
add(new PredicateSchema(TI), TemporalItem.class);
add(new ConceptSchema(O), Objects.class);
add(new ConceptSchema(S), Storage.class);
add(new ConceptSchema(AM), AggregateMove.class);
add(new ConceptSchema(AA), AggregateAnalysis.class);
add(new ConceptSchema(AP), AggregateProcessing.class);
add(new PredicateSchema(BS), BeginStoring.class);
add(new PredicateSchema(ES), EndStoring.class);
add(new PredicateSchema(BM), BeginMoving.class);
add(new PredicateSchema(EM), EndMoving.class);
add(new PredicateSchema(BP), BeginProcessing.class);
add(new PredicateSchema(EP), EndProcessing.class);
add(new PredicateSchema(BA), BeginAnalysis.class);
add(new PredicateSchema(EA), EndAnalysis.class);
add(new PredicateSchema(M), Moving.class);
add(new PredicateSchema(P), Processing.class);
add(new PredicateSchema(A), Analysis.class);
add(new PredicateSchema(T), Transformation.class);
// Схема для концепта PersistentItem
cs = (ConceptSchema) getSchema(PI);
// Схема для концепта TemporalItem
ps = (PredicateSchema) getSchema(TI);
// Схема для концепта Objects
cs = (ConceptSchema) getSchema(O);
cs.addSuperSchema((ConceptSchema) getSchema(PI));
cs.add(O_TYPE, (PrimitiveSchema) getSchema(BasicOntology.STRING));
// Схема для концепта Storage
cs = (ConceptSchema) getSchema(S);
cs.addSuperSchema((ConceptSchema) getSchema(PI));
cs.add(S_TYPE, (PrimitiveSchema) getSchema(BasicOntology.STRING));
cs.add(S_PERIOD, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));
cs.addFacet(S_PERIOD, new PositiveIntegerFacet());
// Схема для концепта AggregateMove
cs = (ConceptSchema) getSchema(AM);
cs.addSuperSchema((ConceptSchema) getSchema(PI));
cs.add(AM_TYPE, (PrimitiveSchema) getSchema(BasicOntology.STRING));
cs.add(AM_PERIOD, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));
cs.addFacet(AM_PERIOD, new PositiveIntegerFacet());
// Схема для концепта AggregateAnalysis
cs = (ConceptSchema) getSchema(AA);
cs.addSuperSchema((ConceptSchema) getSchema(PI));
cs.add(AA_TYPE, (PrimitiveSchema) getSchema(BasicOntology.STRING));
cs.add(AA_PERIOD, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));
cs.addFacet(AA_PERIOD, new PositiveIntegerFacet());
// Схема для концепта AggregateProcessing
cs = (ConceptSchema) getSchema(AP);
cs.addSuperSchema((ConceptSchema) getSchema(PI));
cs.add(AP_TYPE, (PrimitiveSchema) getSchema(BasicOntology.STRING));
cs.add(AP_PERIOD, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));
cs.addFacet(AP_PERIOD, new PositiveIntegerFacet());
// Схема для предиката BeginStoring
ps = (PredicateSchema) getSchema(BS);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(BS_S, (ConceptSchema) getSchema(S));
ps.add(BS_O, (ConceptSchema) getSchema(O));
// Схема для предиката EndStoring
ps = (PredicateSchema) getSchema(ES);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(ES_S, (ConceptSchema) getSchema(S));
ps.add(ES_O, (ConceptSchema) getSchema(O));
// Схема для предиката BeginMoving
ps = (PredicateSchema) getSchema(BM);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(BM_AM, (ConceptSchema) getSchema(AM));
ps.add(BM_O, (ConceptSchema) getSchema(O));
// Схема для предиката EndMoving
ps = (PredicateSchema) getSchema(EM);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(EM_AM, (ConceptSchema) getSchema(AM));
ps.add(EM_O, (ConceptSchema) getSchema(O));
// Схема для предиката BeginProcessing
ps = (PredicateSchema) getSchema(BP);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(BP_AP, (ConceptSchema) getSchema(AP));
ps.add(BP_O, (ConceptSchema) getSchema(O));
// Схема для предиката EndProcessing
ps = (PredicateSchema) getSchema(EP);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(EP_AP, (ConceptSchema) getSchema(AP));
ps.add(EP_TYPE_O, (ConceptSchema) getSchema(O));
// Схема для предиката BeginAnalysis
ps = (PredicateSchema) getSchema(BP);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(BA_AA, (ConceptSchema) getSchema(AA));
ps.add(BA_O, (ConceptSchema) getSchema(O));
// Схема для предиката EndAnalysis
ps = (PredicateSchema) getSchema(EA);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(EA_AA, (ConceptSchema) getSchema(AA));
ps.add(EA_O, (ConceptSchema) getSchema(O));
// Схема для предиката Moving
ps = (PredicateSchema) getSchema(M);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(M_AM, (ConceptSchema) getSchema(AM));
ps.add(M_O, (ConceptSchema) getSchema(O));
cs.add(M_PERIOD, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));
cs.addFacet(M_PERIOD, new PositiveIntegerFacet());
// Схема для предиката Processing
ps = (PredicateSchema) getSchema(P);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(P_AP, (ConceptSchema) getSchema(AP));
ps.add(P_O, (ConceptSchema) getSchema(O));
cs.add(P_PERIOD, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));
cs.addFacet(P_PERIOD, new PositiveIntegerFacet());
// Схема для предиката Analysis
ps = (PredicateSchema) getSchema(A);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(A_AA, (ConceptSchema) getSchema(AA));
ps.add(A_O, (ConceptSchema) getSchema(O));
cs.add(A_PERIOD, (PrimitiveSchema) getSchema(BasicOntology.INTEGER));
cs.addFacet(A_PERIOD, new PositiveIntegerFacet());
// Схема для предиката Transformation
ps = (PredicateSchema) getSchema(T);
ps.addSuperSchema((PredicateSchema) getSchema(TI));
ps.add(T_O1, (ConceptSchema) getSchema(O1));
ps.add(T_O2, (ConceptSchema) getSchema(O2));
}
catch (OntologyException ex) {ex.printStackTrace();}
}
}
package SheetProductsOntology;
import jade.content.onto.Ontology;
import jade.content.onto.OntologyException;
import jade.content.abs.AbsPrimitive;
import jade.content.abs.AbsObject;
import jade.content.schema.Facet;
// фасета атрибута (слота) понятия (фрейма, класса)
public class PositiveIntegerFacet implements Facet
{
// Проверка правильности целых значений атрибутов понятий
public void validate(AbsObject abs, Ontology onto) throws OntologyException
{
try
{
AbsPrimitive p = (AbsPrimitive) abs;
if (p.getInteger() <= 0)
{throw new OntologyException("Integer value <= 0");}
}
catch (Exception e)
{throw new OntologyException("Not an Integer value", e);}
}
}
package SheetProductsOntology;
// класс (понятие) Item
public class Item {}
package SheetProductsOntology;
import jade.content.Concept;
// класс (понятие) PersistentItem
public class PersistentItem extends Item implements Concept {}
package SheetProductsOntology;
import jade.content.Predicate;
// класс (понятие) TemporalItem
public class TemporalItem extends Item implements Predicate {}
package SheetProductsOntology;
// класс (понятие) Objects
public class Objects extends PersistentItem
{
public String TypeO;
public Objects() {}
public Objects(String _TypeO) {TypeO = _TypeO}
public String getTypeO() {return TypeO;}
public void setTypeO(String _TypeO) {TypeO = _TypeO;}
}
package SheetProductsOntology;
// класс (понятие) Storage
public class Storage extends PersistentItem
{
public String TypeS;
public int PeriodS;
public Storage() {}
public Storage(String _TypeS, int _PeriodS)
{
TypeS = _TypeS; PeriodS = _PeriodS;
}
public String getTypeS() {return TypeS;}
public void setTypeS(String _TypeS) {TypeS = _TypeS;}
public int getPeriodS() {return PeriodS;}
public void setPeriodS(int _PeriodS) {PeriodS = _PeriodS;}
}
package SheetProductsOntology;
// класс (понятие) AggregateMove
public class AggregateMove extends PersistentItem
{
public String TypeAM;
public int PeriodAM;
public AggregateMove() {}
public AggregateMove(String _TypeAM, int _PeriodAM)
{
TypeAM = _TypeAM; PeriodAM = _PeriodAM;
}
public String getTypeAM() {return TypeAM;}
public void setTypeAM(String _TypeAM) {TypeAM = _TypeAM;}
public int getPeriodAM() {return PeriodAM;}
public void setPeriodAM(int _PeriodAM) {PeriodAM = _PeriodAM;}
}
package SheetProductsOntology;
// класс (понятие) AggregateAnalysis
public class AggregateAnalysis extends PersistentItem
{
public String TypeAA;
public int PeriodAA;
public AggregateAnalysis() {}
public AggregateAnalysis(String _TypeAA, int _PeriodAA)
{
TypeAA = _TypeAA; PeriodAA = _PeriodAA;
}
public String getTypeAA() {return TypeAA;}
public void setTypeAA(String _TypeAA) {TypeAA = _TypeAA;}
public int getPeriodAA() {return PeriodAA;}
public void setPeriodAA(int _PeriodAA) {PeriodAA = _PeriodAA;}
}
package SheetProductsOntology;
// класс (понятие) AggregateProcessing
public class AggregateProcessing extends PersistentItem
{
public String TypeAP;
public int PeriodAP;
public AggregateProcessing() {}
public AggregateProcessing(String _TypeAP, int _PeriodAP)
{
TypeAP = _TypeAP; PeriodAP = _PeriodAP;
}
public String getTypeAP() {return TypeAP;}
public void setTypeAP(String _TypeAP) {TypeAP = _TypeAP;}
public int getPeriodAP() {return PeriodAP;}
public void setPeriodAP(int _PeriodAP) {PeriodAP = _PeriodAP;}
}
package SheetProductsOntology;
// класс (понятие) BeginStoring
public class BeginStoring extends TemporalItem
{
public Storage s;
public Objects o;
public BeginStoring() {}
public BeginStoring(Storage _s, Objects _o)
{
s=_s; o=_o;
}
public Storage getS() {return s;}
public void setS(Storage _s) {s = _s;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) EndStoring
public class EndStoring extends TemporalItem
{
public Storage s;
public Objects o;
public EndStoring() {}
public EndStoring(Storage _s, Objects _o)
{
s=_s; o=_o;
}
public Storage getS() {return s;}
public void setS(Storage _s) {s = _s;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) BeginMoving
public class BeginMoving extends TemporalItem
{
public AggregateMove am;
public Objects o;
public BeginMoving() {}
public BeginMoving(AggregateMove _am, Objects _o)
{
am=_am; o=_o;
}
public AggregateMove getAM() {return am;}
public void setAM(AggregateMove _am) {am = _am;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) EndMoving
public class EndMoving extends TemporalItem
{
public AggregateMove am;
public Objects o;
public EndMoving() {}
public EndMoving(AggregateMove _am, Objects _o)
{
am=_am; o=_o;
}
public AggregateMove getAM() {return am;}
public void setAM(AggregateMove _am) {am = _am;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) BeginProcessing
public class BeginProcessing extends TemporalItem
{
public AggregateProcessing ap;
public Objects o;
public BeginProcessing() {}
public BeginProcessing(AggregateProcessing _ap, Objects _o)
{
ap=_ap; o=_o;
}
public AggregateProcessing getAP() {return ap;}
public void setAP(AggregateProcessing _ap) {ap = _ap;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) EndProcessing
public class EndProcessing extends TemporalItem
{
public AggregateProcessing ap;
public Objects o;
public EndProcessing() {}
public EndProcessing(AggregateProcessing _ap, Objects _o)
{
ap=_ap; o=_o;
}
public AggregateProcessing getAP() {return ap;}
public void setAP(AggregateProcessing _ap) {ap = _ap;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) BeginAnalysis
public class BeginAnalysis extends TemporalItem
{
public AggregateAnalysis aa;
public Objects o;
public BeginAnalysis() {}
public BeginAnalysis(AggregateAnalysis _aa, Objects _o)
{aa=_aa; o=_o;}
public AggregateAnalysis getAA() {return aa;}
public void setAA(AggregateAnalysis _aa) {aa = _aa;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) EndAnalysis
public class EndAnalysis extends TemporalItem
{
public AggregateAnalysis aa;
public Objects o;
public EndAnalysis() {}
public EndAnalysis(AggregateAnalysis _aa, Objects _o)
{aa=_aa; o=_o;}
public AggregateAnalysis getAA() {return aa;}
public void setAA(AggregateAnalysis _aa) {aa = _aa;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
}
package SheetProductsOntology;
// класс (понятие) Moving
public class Moving extends TemporalItem
{
public AggregateMove am;
public Objects o;
public int PeriodM;
public Moving() {}
public Moving(AggregateMove _am, Objects _o, int _PeriodM)
{am=_am; o=_o; PeriodM=_PeriodM;}
public AggregateMove getAM() {return am;}
public void setAM(AggregateMove _am) {am = _am;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
public int getPeriodM() {return PeriodM;}
public void setPeriodM(int _PeriodM) {PeriodM = _PeriodM;}
}
package SheetProductsOntology;
// класс (понятие) Processing
public class Processing extends TemporalItem
{
public AggregateProcessing ap;
public Objects o;
public int PeriodP;
public Processing() {}
public Processing(AggregateProcessing _ap,Objects _o,int _PeriodP)
{ap=_ap; o=_o; PeriodP=_PeriodP;}
public AggregateProcessing getAP() {return ap;}
public void setAP(AggregateProcessing _ap) {ap = _ap;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
public int getPeriodP() {return PeriodP;}
public void setPeriodP(int _PeriodP) {PeriodP = _PeriodP;}
}
package SheetProductsOntology;
// класс (понятие) Analysis
public class Analysis extends TemporalItem
{
public AggregateAnalysis aa;
public Objects o;
public int PeriodA;
public Analysis() {}
public Analysis(AggregateAnalysis _aa,Objects _o,int _PeriodA)
{aa=_aa; o=_o; PeriodA=_PeriodA;}
public AggregateAnalysis getAA() {return aa;}
public void setAA(AggregateAnalysis _aa) {aa = _aa;}
public Objects getO() {return o;}
public void setO(Objects _o) {o = _o;}
public int getPeriodA() {return PeriodA;}
public void setPeriodA(int _PeriodA) {PeriodA = _PeriodA;}
}
package SheetProductsOntology;
// класс (понятие) Transformation
public class Transformation extends TemporalItem
{
public Objects o1;
public Objects o2;
public Transformation() {}
public Transformation(Objects _o1, Objects _o2)
{o1=_o1; o2=_o2;}
public Objects getO1() {return o1;}
public void setO1(Objects _o1) {o1 = _o1;}
public Objects getO2() {return o2;}
public void setO2(Objects _o2) {o2 = _o2;}
}
package SheetProductsOntology;
import jade.core.Agent;
import jade.core.AID;
import jade.core.behaviours.OneShotBehaviour;
import jade.lang.acl.ACLMessage;
import jade.content.ContentManager;
import jade.content.onto.Ontology;
import jade.content.lang.sl.SLCodec;
// Агент-отправитель
public class SenderAgent1 extends Agent
{
// Получить идентификатор менеджера контента
public ContentManager manager = (ContentManager)getContentManager();
// Агент использует язык SL
public SLCodec codec = new SLCodec();
// Агент связан с нашей онтологией SPOntology
public Ontology ontology = SPOntology.getInstance();
// регистрация языка и онтологии, добавление поведения агента
public void setup()
{
manager.registerLanguage(codec);
manager.registerOntology(ontology);
addBehaviour(new SenderBehaviour(this));
}
// OneShot-Поведение агента
public class SenderBehaviour extends OneShotBehaviour
{
// Конструктор
public SenderBehaviour(Agent agent) {super(agent);}
// Действие агента (отправка сообщения)
public void action()
{
try
{
// Подготовить сообщение (отправка сообщения)
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.setSender(getAID());
msg.addReceiver(new AID("AgentReceiver", AID.ISLOCALNAME));
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
// Заполнить контент сообщения
EndStoring endstoring = new EndStoring(new Storage("Склад"), new Objects("Объект"));
manager.fillContent(msg, endstoring);
// Отправить сообщение
send(msg);
}
catch (Exception ex) {ex.printStackTrace();} }
}
}
package SheetProductsOntology;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import jade.content.ContentManager;
import jade.content.ContentElement;
import jade.content.onto.Ontology;
import jade.content.lang.sl.SLCodec;
// Агент-получатель
public class ReceiverAgent1 extends Agent
{
// Получить идентификатор менеджера контента
public ContentManager manager = (ContentManager)getContentManager();
// Агент использует язык SL
public Codec codec = new SLCodec();
// Агент связан с нашей онтологией SPOntology
public Ontology ontology = SPOntology.getInstance();
// регистрация языка и онтологии, добавление поведения агента
public void setup()
{
manager.registerLanguage(codec);
manager.registerOntology(ontology);
addBehaviour(new ReceiverBehaviour(this));
}
// Cyclic-Поведение агента
public class ReceiverBehaviour extends CyclicBehaviour
{
// Конструктор
public ReceiverBehaviour (Agent agent) {super(agent);}
// Действие агента (получение сообщения)
void action()
{
ACLMessage msg = receive(MessageTemplate.MatchPerformative(ACLMessage.INFORM));
if(msg!=null)
{
try
{
ContentElement ce = manager.extractContent(msg);
if(ce instanceof EndStoring)
{
EndStoring endstoring = (EndStoring) ce;
System.out.println("конец_хранения("+ endstoring.s.getTypeS()+", "+endstoring.o.getTypeO()+")");
}
}
catch (Exception ex) {ex.printStackTrace();}
}
}
}}
package SheetProductsOntology;
import jade.core.Agent;
import jade.core.AID;
import jade.core.behaviours.WakerBehaviour;
import jade.lang.acl.ACLMessage;
import jade.content.ContentManager;
import jade.content.onto.Ontology;
import jade.content.lang.sl.SLCodec;
// Агент-отправитель
public class SenderAgent2 extends Agent
{
// Получить идентификатор менеджера контента
public ContentManager manager = (ContentManager)getContentManager();
// Агент использует язык SL
public SLCodec codec = new SLCodec();
// Агент связан с нашей онтологией SPOntology
public Ontology ontology = SPOntology.getInstance();
// регистрация языка и онтологии, добавление поведения агента
public void setup()
{
manager.registerLanguage(codec);
manager.registerOntology(ontology);
addBehaviour(new SenderBehaviour(this, 1000));
}
// Waker-Поведение агента
public class SenderBehaviour extends WakerBehaviour
{
// Конструктор
public SenderBehaviour(Agent agent, long timeout) {super(agent, timeout);}
// Действие агента (отправка сообщения)
protected void onWake()
{
try
{
// Подготовить сообщение (отправка сообщения)
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.setSender(getAID());
msg.addReceiver(new AID("AgentReceiver", AID.ISLOCALNAME));
msg.setLanguage(codec.getName());
msg.setOntology(ontology.getName());
// Заполнить контент сообщения
EndStoring endstoring = new EndStoring(new Storage("Склад_слябов"), new Objects("Сляб"));
manager.fillContent(msg, endstoring);
// Отправить сообщение
send(msg);
}
catch (Exception ex) {ex.printStackTrace();} }
}
}
package SheetProductsOntology;
import jade.core.Agent;
import jade.core.behaviours.TickerBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import jade.content.ContentManager;
import jade.content.ContentElement;
import jade.content.onto.Ontology;
import jade.content.lang.sl.SLCodec;
// Агент-получатель
public class ReceiverAgent2 extends Agent
{
// Получить идентификатор менеджера контента
public ContentManager manager = (ContentManager)getContentManager();
// Агент использует язык SL
public Codec codec = new SLCodec();
// Агент связан с нашей онтологией SPOntology
public Ontology ontology = SPOntology.getInstance();
// регистрация языка и онтологии, добавление поведения агента
public void setup()
{
manager.registerLanguage(codec);
manager.registerOntology(ontology);
addBehaviour(new ReceiverBehaviour(this, 1000));
}
// Ticker-Поведение агента
public class ReceiverBehaviour extends TickerBehaviour
{
// Конструктор
public ReceiverBehaviour(Agent agent, long period) {super(agent, period);}
// Действие агента (получение сообщения)
protected void onTick()
{
ACLMessage msg = receive(MessageTemplate.MatchPerformative(ACLMessage.INFORM));
if(msg!=null)
{
try
{
ContentElement ce = manager.extractContent(msg);
if(ce instanceof EndStoring)
{
EndStoring endstoring = (EndStoring) ce;
System.out.println("конец_хранения("+ endstoring.s.getTypeS()+", "+endstoring.o.getTypeO()+")");
}
}
catch (Exception ex) {ex.printStackTrace();}
}
}}}
Дата добавления: 2015-11-14; просмотров: 68 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Варіанти завдань | | | Пример реализации детерминированного конечного автомата для мультиагентной системы в программной среде JADE |