PDF de programación - JADE - Movilidad

Imágen de pdf JADE - Movilidad

JADE - Movilidadgráfica de visualizaciones

Publicado el 31 de Julio del 2017
868 visualizaciones desde el 31 de Julio del 2017
865,9 KB
13 paginas
Creado hace 7a (19/09/2016)
JADE - Movilidad

Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
[email protected]

ISISTAN –Fac. Cs. Exactas – UNICEN

Tandil, Argentina



Movilidad desde RMA

19/09/2016

1

Movilidad en JADE

 Movilidad intra-plataforma



 Estados del ciclo de vida del agente

 En transito



 Ontología

 jade-mobility-ontology

 Conceptos y acciones necesarias para la movilidad.
 move-agent, clone-agent, Mobile-agent-description…



 Agent.doMove(Location l)
 Agent.doClone(Location l, String name)



 beforeMove(), afterMove(), beforeClone(),

afterClone()

Movilidad en JADE

 Agent.doMove(Location l)

 Location es una interface abstracta.



 El agente debe consultar por posibles

Location al AMS.
 Mediante REQUEST ACL

 WhereIsAgentAction

 setAgentIdentifier(AID)

 QueryPlatformLocationsAction

 MobilityOntology: jade-mobility-ontology

 SLCoded



19/09/2016

2

Envío de mensaje al AMS

ACLMessage req = new ACLMessage(ACLMessage.REQUEST);
req.addReceiver(getAMS());
req.setLanguage(codec.getName()); // SLCodec
req.setOntology(onto.getName()); // MobilityOntology

myAgent.getContentManager().fillContent(



myAgent.send(req);

req,
new Action(getAMS(),


new QueryPlatformLocationsAction()));

Recepción de mensaje del
AMS

ACLMessage resp = blockingReceive();

ContentElement ce = getContentManager().extractContent(resp);

Result result = (Result) ce;

jade.util.leap.Iterator it = result.getItems().iterator();

while (it.hasNext()) {

}

loc = (Location)it.next();

...
myAgent.doMove(loc);

19/09/2016

3

Agentes e inteligencia

Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
[email protected]

ISISTAN –Fac. Cs. Exactas – UNICEN

Tandil, Argentina



Hasta ahora…

?

Beh1

Beh2

Beh3

Ambiente

19/09/2016

4

Aprendizaje y razonamiento


Reinforcement learning

KDD

Planning

Programación

evolutiva

Mucho más..

Razonamiento
argumentativo

Motores de
inferencia

Razonamiento

basado en reglas

Jess - Java Expert
System Shell

Taller de sistemas multiagentes
Prof. Dr. Ariel Monteserin
[email protected]

ISISTAN –Fac. Cs. Exactas – UNICEN

Tandil, Argentina



19/09/2016

5

Jess - Java Expert System Shell

 Razonador basado en reglas para la

plataforma Java.
 Basado en el lenguaje de programación CLIPS.



 Provee programación basada en reglas.

 Sistemas Expertos



 Permite embeber la funcionalidad Jess dentro

código Java.

Elementos básicos

 Hechos

 Representan conocimiento



 Reglas

 Indican que acción debe realizarse cuando se cumple

cierta condición.



 Preguntas

 Realizan consultas sobre la base de conocimiento.



19/09/2016

6

Elementos básicos

 Literales

 agente
 Variables

 ?a
 (bind ?x “hola”)

 (bind $?estuche (create$ lapiz boli goma))
 (defglobal ?*var* = primero)

 Funciones

 (nombreFuncion parámetro1 parámetro2 …)
 (deffunction nombre_funcion (parámetros)

expresiones
)

 (deffunction fact (?n)



(if (= ?n 0) then 1
else (* ?n (fact (- ?n 1)))
))

 (fact 5)

Elementos básicos


 Funciones predefinidas

 (++ <variable>) (-- <variable>)

 (assert <fact>+)

 (assert-string <string-expression>)

 (batch <filename>)

 (bind <variable> <expression>*)

 (eval <lexeme-expression>)

 (facts [<module name>])

 Estructuras:

 if, while, for, try/catch



http://herzberg.ca.sandia.gov/jess/docs/70/functions.html

19/09/2016

7

Motor de inferencia

Motor de
inferencia

facts

Memoria
de trabajo

pure facts

shadow facts

(facts)
(assert <fact>+)
(retract <expression>+)

Clase Java

 Ciclo de inferencia

Se buscan todas las posibles reglas aplicables, es decir, que son
compatibles con la memoria de trabajo. Algoritmo RETE (Algoritmo
de Redundancia Temporal)
Se selecciona una de las reglas según un orden de preferencia.
Se aplica la regla seleccionada y se actualiza la memoria.

1.

2.

3.


Hechos

 Hechos ordenados

 Jess> (assert (vivienda ocupada))



<Fact-0>

Jess> (assert (puerta abierta)) <Fact-1>

Jess> (facts)



f-0 (MAIN:: ((vivienda ocupada))
f-1 (MAIN:: ((puerta abierta))
For a total of 2 facts in module MAIN.

 Hechos no ordenados

 Template que declara la estructura (slots) de los hechos

 (deftemplate automobile "A specific car." (slot make)

(slot model) (slot year (type INTEGER)) (slot color
(default white)))

 Shadow facts

 public class Account implements Serializable {

// Atributos y métodos interesantes
}

 (deftemplate Account (declare (from-class Account)))
 (bind ?a (new Account))

19/09/2016

8

Reglas

 Estructura IF-THEN



(defrule nombreRegla (condición) => (acción))



 (defrule apagarLuces

(and



(vivienda vacia)
(luz encendida))

(printout t "La vivienda esta vacia. Las luces deben
estar apagadas." crlf)
(retract-string "(luz encendida)")
(assert (luz apagada))



=>



)



 Jess> (assert (vivienda vacia))

<Fact-0>


Jess> (assert (luz encendida))

Jess> (run)



<Fact-1>

La vivienda esta vacia. Las luces deben estar
apagadas.

 Usar test si se quiere disparar una regla basandose en una función

Integración Jess - JADE

 Motor de inferencia
 Clase jess.Rete



 batch(String): equivalente a (batch archivo), carga un archivo .clp.
 run(), run(int): equivalentes a (run [integer]), ejecuta el motor de

inferencias.

 reset(): equivale a (reset).
 clear(): equivale a (clear), borra reglas, deffacts, defglobals, templates,

facts… menos funciones.

 assertFact(Fact): equivale a (assert (hecho)), añade un hecho que debe

estar definido de tipo Fact.

 assertString(“hecho”): a (assert (hecho)), añade un hecho que se pasa

como String.

 retract(Fact), retract(int): equivalen a (retract hecho), eliminan un

hecho.

 halt(): equivale a (halt), detiene la ejecución de las reglas.
 eval(String): cuyo parámetro es el código JESS que se quiere ejecutar
 listFacts(): devuelve todos los hechos de la memoria de trabajo en un

Iterator

 executeCommand(String): ejecuta el comando pasado como parámetro.

19/09/2016

9

De Jess a acciones

 Jess.Userfunction

 Permite definir funciones que serán invocadas desde

el código Jess.
 Rete.addUserfunction(Userfunction)


(retract-string "(c1)")
(retract-string "(c2)"))



public class JessAddBehaviour implements Userfunction {

public Value call(ValueVector arg0, Context arg1) throws

myAgent.addBehaviour(new JessBehaviour());
return Funcall.TRUE;
}

public String getName() {
return "addBehaviour";
}

(defrule add-behaviour
(and(c1)(c2))=>
(addBehaviour)

JessException {

Ejemplo PELICULA

(deftemplate important-date (slot dd) (slot mm) (slot description)

(slot name))

(deftemplate today (slot dd) (slot mm))



(assert (important-date (dd 18) (mm 07) (description cumple) (name

Juana)))

(assert (important-date (dd 19) (mm 09) (description aniversario) (name

Carola)))

(assert (important-date (dd 15) (mm 10) (description dia-de-la-madre)

(name Susana)))



(defrule important-day

(and (today (dd ?dd) (mm ?mm))

(important-date {dd == ?dd} {mm == ?mm} (description ?d) (name ?n)))

=>

(ActivateImportantDayBeh ?n)

)

19/09/2016

10

Ejemplo PELICULA

ControlBehaviour

Responder

Jess

defrule important-day

UserFunction

JessActivateImportantD

ayBeh

InitiatorNegotiationBe

haviour

Ejemplo PELICULA

public class ControlBehaviour extends TickerBehaviour {

private Rete jess;
private List<Date> list;
private int i = 0;

public ControlBehaviour(Agent a, long tick, List<String> items) {
super(a, tick);
jess = new Rete();
list = new ArrayList<Date>();


try {



}
catch (JessException je) {je.printStackTrace();}
catch (FileNotFoundException je) {je.printStackTrace();}

}

String jessFile = "rules-anniversary.clp";
FileReader fr = new FileReader(jessFile);
Jesp j = new Jesp(fr, jess);
jess.addUserfunction(new JessActivateImportantDayBeh(items));
// Ejecuta el parser (sin mostrar datos por consola)
j.parse(false);

19/09/2016

11

Ejemplo PELICULA

@Override
protected void onTick() {
try {
if (i < list.size()) {
// Actualiza la fecha
Calendar cal = Calendar.getInstance();
cal.setTime(list.get(i));
int mm = cal.get(Calendar.MONTH);
int dd = cal.get(Calendar.DAY_OF_MONTH);

jess.eval("(retract-string \"(today (dd ?d) (mm ?m))\")");
jess.eval("(assert (today (dd " + dd + ") (mm " + mm + ")))");
i++;
jess.run();
}
else
System.out.println("No hay mas fechas para cargar");
}
catch (JessException je) {je.printStackTrace();}

}

Ejemplo PELICULA



public class JessActivateImportantDayBeh implements Userfunction {
private List<String> items;
public JessActivateImportantDayBeh(List<String> items) {
this.items = items;
}

public Value call(ValueVector jessArgs, Context context)

String name = ((Value)jessArgs.get(1)).

myAgent.addBehaviour(new InitiatorNegotiationBehaviour(

return Funcall.TRUE;
}

public String getName() {
return "ActivateImportantDayBeh";
}
}

resolveValue(context).stringValue(context);

throws JessException {



new AID(name, AID.ISLOCALNAME), items));



19/09/2016

12

Jess - Java Expert
System Shell

Taller de sistemas multiagentes
Dr. Ariel Monteserin
[email protected]

ISISTAN –Fac. Cs. Exactas – UNICEN

Tandil, Argentina



19/09/2016

13
  • Links de descarga
http://lwp-l.com/pdf5914

Comentarios de: JADE - Movilidad (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad