CHAPTER 5 COMPARING TECHNIQUES
5.3 Estimation of the hyper-parameter
5.3.1 Using DEoptim()
La concreci´on de la arquitectura de agente introducida anteriormente, y en especial el m´odulo de comunicaci´on, requiere de una herramienta que permita implementar in- teracci´on entre agentes. Durante el desarrollo de las investigaciones que originaron esta tesis, se dise˜n´o e implement´o un conjunto de primitivas de interacci´on [GTS05], con el objetivo de facilitar la implementaci´on de sistemas multiagente para entornos din´amicos y distribuidos.
El conjunto de primitivas mencionado fue dise˜nado como una extensi´on al lenguaje de programaci´on l´ogica Prolog, debido a que dicho lenguaje es uno de los m´as utilizados a la hora de implementar agentes inteligentes. Un objetivo de dise˜no de las primitivas propuestas corresponde a tratar de conservar el esp´ıritu de Prolog, es decir, proveer una especificaci´on de la soluci´on y ocultar lo m´as posible los detalles de implementaci´on. En esta tesis utilizaremos una versi´on extendida de las primitivas de interacci´on originalmente publicadas en [TG05] y en [TG06].
Del conjunto de primitivas de interacci´on propuestas, solamente el subconjunto aso- ciado con las primitivas de mensajes y eventos ser´an utilizadas en esta secci´on. Es decir, aquellas primitivas que permiten enviar mensajes, esperar a recibir mensajes y asociar a la llegada de un determinado mensaje la ejecuci´on de un predicado espec´ıfico. Estas prim- itivas permiten a los agentes intercambiar mensajes utilizando un formato compatible al utilizado por FIPA y, a su vez, le permiten abstraerse de implementaciones de bajo nivel a trav´es de la asociaci´on de predicados espec´ıficos a la llegada de cierto tipo de mensajes.
Las primitivas de mensajes y eventos propuestas son:
send msg(+M ensaje,−Resultado)
recv msg(?M ensaje,−Resultado)
recv msg(?M ensaje,+Espera,−Resultado)
bind msg(+M ensaje,+P redicado)
Las primitivasrecv msg/2 yrecv msg/3 son bloqueantes, es decir, una vez ejecutadas se quedan a la espera de un mensaje que cumpla con las caracter´ısticas requeridas. En el caso de recv msg/3, el par´ametro Espera indica el tiempo m´aximo en segundos que
espera dicha primitiva por el arribo de un mensaje. Una vez finalizado dicho tiempo, si no se recibi´o ning´un mensaje, la primitiva devuelve enResultadoel mensaje correspondiente. El formato de los mensajes intercambiados entre los agentes corresponde a una lista de par´ametros y valores, donde para enviar un mensaje se debe incluir obligatoriamente el par´ametroreceiver (receptor en ingles), indicando el agente a cu´al est´a destinado dicho mensaje. Mientras que, al momento de esperar por la llegada de un mensaje o asociar determinados mensajes a predicados espec´ıficos, es posible especificar los par´ametros e incluso los valores que debe tener el/los mensaje/s correspondiente/s.
El conjunto de primitivas dise˜nado e implementado en Prolog permitir´a procesar todos los mensajes recibidos de otros agentes as´ı como tambi´en enviar mensajes a estos agentes u otros. De esta forma, para lograr el comportamiento deseado por el m´odulo de comu- nicaci´on, simplemente se debe asociar la llegada de mensajes de un tipo especifico que se encuentre relacionado con las consultas contextuales (habiendo sido previamente definido y acordado con el cliente) a la llamada de un predicado responsable de procesarlas. Por ejemplo, si se ejecuta la sentencia:
bind( [sender(Cliente), protocol(f ipa query), ontology(contextual query),
perf ormative(query ref), content(CC), conversation id(Id) ],
procesar cc(Id,CC, Cliente) ).
se estar´a asociando la llegada de mensajes de un determinadoCliente perteneciente al pro- tocolo fipa query con la ontolog´ıacontextual query y cuyo acto comunicativo esquery ref
a la ejecuci´on del predicado procesar cc responsable de procesar la consulta contextual
CC.
El predicado procesar cc, incluido dentro del m´odulo de comportamiento, ser´a el en- cargado de procesar la consulta contextual y, en caso de determinar que puede resolverla, enviar la aceptaci´on correspondiente al cliente e iniciar la resoluci´on de la misma. Final- mente, una vez obtenida la respuesta a la consulta, ´esta es enviada al cliente a trav´es del m´odulo de comunicaci´on. A continuaci´on se muestra una versi´on simplificada de una posible implementaci´on de dicho predicado:
procesar cc( Id, CC, Cliente ) :−
puedo resolver(CC),
enviar aceptacion´ (Id, Cliente),
resolver(CC, Respuesta),
enviar respuesta(Id, Cliente, Respuesta).
El predicado puedo resolver utilizar´a el m´odulo de razonamiento para determinar si el SR es capaz de resolver la consulta. En el caso del predicadoresolver, ´este decidir´a co- mo resolver la consulta. Una alternativa es utilizando el m´odulo de razonamiento, pero como se mostrar´a en la siguiente secci´on, existe otra posibilidad. Finalmente, los pred- icados enviar aceptaci´on y enviar respuesta utilizan el m´odulo de comunicaci´on para enviar los mensajes correspondientes al cliente. Una versi´on simplificada del predicado
enviar respuesta es la siguiente:
enviar respuesta( Id, Cliente, Respuesta) :−
send msg ( [receiver(Cliente), perf ormative(inf orm result),
protocol(f ipa query), ontology(contextual query),
content(Respuesta), conversation id(Id) ] ).
La arquitectura de agente introducida en esta secci´on con el objetivo de implementar
SRs es general y a la vez concreta. Es general porque permite su utilizaci´on en distintos dominios de aplicaci´on, y es concreta porque establece claramente los componentes y las caracter´ısticas que posee un agente o SR. En esta subsecci´on se mostraron fragmentos de c´odigo que representan una versi´on simplificada de la implementaci´on de un SR.
En la siguiente secci´on se analizar´a el comportamiento de estos agentes (SRs) dentro de unGR y se introducir´a un mecanismo que permite obtener el funcionamiento deseado de los GRs asociado a las funciones de selecci´on y agrupamiento. Se extender´a, adem´as, esta versi´on simplificada de la implementaci´on, con el objetivo de permitir la interacci´on entre los SRs y la descomposici´on y distribuci´on de las consultas contextuales extendidas.