Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Пример реализации онтологии для мультиагентной системы в программной среде JADE

Пример реализации последовательности действий для мультиагентной системы в программной среде JADE | Пример реализации параллельных действий для мультиагентной системы в программной среде JADE | Пример реализации работы со службами AMS и DF для мультиагентной системы в программной среде JADE | Пример реализации работы с протоколом FIPA-Request для мультиагентной системы в программной среде JADE | Пример реализации работы с протоколом FIPA-ContractNet для мультиагентной системы в программной среде JADE | Пример реализации работы с протоколом FIPA-Subscribe для мультиагентной системы в программной среде JADE | Пример реализации работы с различными схемами и абстрактными дескрипторами онтологии для мультиагентной системы в программной среде JADE |


Читайте также:
  1. Boot (англ. загрузка. Пример: основной загрузочный сектор) -вирусы
  2. D.1. Примеры уязвимостей
  3. F48.1 Синдром деперсонализации-дереализации
  4. III. АНАТОМИЯ КРОВЕНОСНОЙ СИСТЕМЫ.
  5. III. После этого раненую конечность лучше всего зафиксировать, например, подвесив на косынке или при помощи шин, что является третьим принципом оказания помощи при ранениях.
  6. IV. АНАТОМИЯ ЦЕНТРАЛЬНОЙ НЕРВНОЙ СИСТЕМЫ.
  7. SWOT- анализ на примере ветеринарной аптечной сети.

Ниже приведен фрагмент мультиагентной системы управления процессом хранения, транспортировки, анализа и обработки объектов соответствующими агрегатами. Агент-получатель получает сообщение от агента-отправителя о том, что закончилось хранение объектов на складе.

 

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

mybiblioteka.su - 2015-2024 год. (0.142 сек.)