MECANISMOS DE VALORACIÓN DE REPUTACIÓN BASADOS EN SISTEMAS MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE TESIS DE GRADO EN INGENIERÍA INFORMÁTICA FACULTAD DE INGENIERÍA UNIVERSIDAD DE BUENOS AIRES TESISTA: Sr. Víctor Daniel PODBEREZSKI DIRECTOR: Prof. M. Ing. Lic. Jorge Salvador IERACHE Laboratorio de Sistemas Inteligentes MECANISMOS DE VALORACIÓN DE REPUTACIÓN BASADOS EN SISTEMAS MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE TESIS DE GRADO EN INGENIERÍA INFORMÁTICA Laboratorio de Sistemas Inteligentes FACULTAD DE INGENIERÍA UNIVERSIDAD DE BUENOS AIRES Sr. Víctor Daniel Podberezski Prof. M. Ing. Lic. Jorge Salvador Ierache Tesista Director Octubre 2007 MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Agradecimientos A M. Ing. Lic Jorge Salvador Ierache miembro del laboratorio de Sistemas Inteligentes por servirme de guía en la elaboración de esta tesis y fomentar mi interés en la investigación. A mis suegros por permitirme quedarme algunos días hasta altas horas en su casa armando esta tesis. A mis papas y mi hermano por soportar mi mal humor. A Valeria por aguantarme, hacerme compañía y empujarme siempre para adelante. ☺ Víctor Daniel PODBEREZSKI -i- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Resumen En esta tesis se propone una arquitectura de administración de reputación en sistemas multiagentes. Se presenta una ontología de reputación y protocolos de interacción que se complementa con la arquitectura. Se realizan pruebas abarcativas para constatar la adaptabilidad de la propuesta. Finalmente se realiza un análisis de los resultados obtenidos. Abstract This thesis research proposes a Multi-Agent reputation administration architecture. It also presents a reputation ontology and interaction protocols that are related with the architecture. A series of tests are made in order to check the adaptability of the proposal. Finally an analysis of the results is made. Víctor Daniel PODBEREZSKI - ii - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Índice de Contenidos Capitulo 1 Introducción .........................................................................................1 Capitulo 2 Estado del Arte .....................................................................................3 2.1 Introducción ................................................................................................................. 3 2.2 Agentes y sistemas multiagentes ................................................................................. 3 2.2.1 Agentes.......................................................................................................... 3 2.2.2 Sistemas multiagentes ................................................................................... 4 2.2.3 Interacción entre agentes ............................................................................... 6 2.2.4 Protocolos de comunicación ......................................................................... 8 2.3 Reputación ................................................................................................................... 9 2.3.1 Introducción .................................................................................................. 9 2.3.2 Definiciones ................................................................................................ 10 2.3.3 Tipo de paradigma ...................................................................................... 12 2.3.4 Fuentes de información ............................................................................... 12 2.3.5 Tipo de visibilidad ...................................................................................... 13 2.3.6 Granularidad del modelo............................................................................. 14 2.3.7 Asunción del comportamiento de los agentes ............................................. 15 2.3.8 Tipo de información intercambiada ............................................................ 15 2.4 Modelos de reputación ............................................................................................... 15 2.4.1 Sistemas de reputación on-line ................................................................... 15 2.4.2 S. Marsh ...................................................................................................... 16 2.4.3 Sporas e Histos. ........................................................................................... 17 2.4.4 Schillo et. al................................................................................................. 18 2.4.5 Abdul-Rahman y Hailes .............................................................................. 19 2.4.6 Sen y Sajja ................................................................................................... 20 2.4.7 AFRAS ........................................................................................................ 21 2.4.8 Carter et al. .................................................................................................. 21 2.4.9 Yu y Singh .................................................................................................. 23 2.4.10 Castelfranchi y Falcone............................................................................. 24 2.4.11 Esfandiary y Chandrasekharan.................................................................. 25 2.4.12 REGRET ................................................................................................... 26 2.4.13 NodeRanking ............................................................................................ 28 2.4.14 FIRE .......................................................................................................... 28 2.4.15 Resumen .................................................................................................... 29 2.5 Ontologías de reputación ........................................................................................... 31 Capitulo 3 Descripción del problema ................................................................... 32 3.1 Introducción ............................................................................................................... 32 3.2 Características de los sistemas de reputación. ........................................................... 32 3.3 Objetivo. .................................................................................................................... 33 Capitulo 4 Solución propuesta ............................................................................. 34 Víctor Daniel PODBEREZSKI - iii - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 4.1 Introducción ............................................................................................................... 34 4.2 Arquitectura de administración de reputación ........................................................... 34 4.2.1 Medición de reputación ............................................................................... 35 4.2.2 Actualización de reputación ........................................................................ 35 4.2.3 Pedido de reputación. .................................................................................. 35 4.2.4 Información de reputación .......................................................................... 35 4.2.5 Gestión e intercambio de información administrativa ................................ 35 4.3 Ontología de administración de reputación ............................................................... 36 4.3.1 Agentes........................................................................................................ 36 4.3.2 Fuente de información ................................................................................ 37 4.3.3 Tipo de contrato .......................................................................................... 37 4.3.4 Tema............................................................................................................ 38 4.3.5 Contrato a evaluar ....................................................................................... 38 4.3.6 Métrica: ....................................................................................................... 39 4.3.7 Escala: ......................................................................................................... 39 4.3.8 Unidad: ........................................................................................................ 39 4.3.9 Reputación: ................................................................................................. 40 4.4 Interacción entre agentes ........................................................................................... 41 4.4.1 Solicitud de reputación................................................................................ 42 4.4.2 Actualización de reputación ........................................................................ 45 4.4.3 Intercambio de información administrativa ................................................ 46 4.5 Componentes de la arquitectura ................................................................................. 48 4.6 Descripción de los módulos de la arquitectura .......................................................... 49 4.6.1 Administrador ............................................................................................. 49 4.6.2 Medidor ....................................................................................................... 51 4.6.3 Recopilador ................................................................................................. 52 4.6.4 Difusor ........................................................................................................ 55 4.6.5 Contacto ...................................................................................................... 56 4.6.6 Transformador ............................................................................................. 58 4.7 Interacción entre módulos de la arquitectura ............................................................. 59 4.7.1 Pedido de reputación ................................................................................... 59 4.7.2 Actualización de reputación ........................................................................ 61 4.7.3 Información de reputación .......................................................................... 62 Capitulo 5 Experimentación ................................................................................ 63 5.1 Objetivo ..................................................................................................................... 63 5.2 Escenarios de prueba ................................................................................................. 63 5.3 Reputación en sitio de subastas ................................................................................. 64 5.3.1 Características ............................................................................................. 64 5.3.2 Simulación .................................................................................................. 64 5.3.3 Resultados experimentales .......................................................................... 65 5.4 Reputación en cadena de suministros ........................................................................ 67 5.4.1 Características ............................................................................................. 68 Víctor Daniel PODBEREZSKI - iv - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 5.4.2 Taxonomía .................................................................................................. 68 5.4.3 Métricas ....................................................................................................... 69 5.4.4 Funciones de conversión de métricas.......................................................... 69 5.4.5 Intercambio de reputación. .......................................................................... 71 5.4.6 Simulación .................................................................................................. 71 5.4.7 Resultados experimentales .......................................................................... 74 5.5 Prototipo..................................................................................................................... 77 Capítulo 6 Conclusiones y futuras líneas de investigación ................................... 78 6.1 Conclusiones .............................................................................................................. 78 6.1 Futuras líneas de investigación. ................................................................................. 79 Capítulo 7 Referencias......................................................................................... 80 Apéndice A Ontologías........................................................................................ 87 A.1 Definición de ontologías ........................................................................................... 87 A.2 Tipos de ontologías ................................................................................................... 90 A.2.1 El grado de dependencia a una tarea o dominio......................................... 90 A.2.2 El nivel de detalle de sus axiomas.............................................................. 91 A.2.3 Meta-Level Ontologies............................................................................... 92 A.3 El problema de integración de ontologías ................................................................. 92 A.4 Áreas de Aplicación de las Ontologías ..................................................................... 94 A.4.1 Ingeniería del Conocimiento. ..................................................................... 94 A.4.2 Procesamiento de lenguaje natural. ............................................................ 94 A.4.3 Interoperabilidad entre sistemas de información heterogéneos. ................ 94 A.4.4 Búsqueda semántica en sitios Web. ........................................................... 95 A.4.5 Modelado de empresas. .............................................................................. 95 A.4.6 Aplicaciones en la Web Semántica. ........................................................... 95 A.5 Componentes de una ontologia ................................................................................. 95 A.6 Lenguajes para la representación de ontologías........................................................ 96 A.6.1 DAML y OIL: ............................................................................................ 97 A.6.2 FLogic: ....................................................................................................... 97 A.6.3 KIF: ............................................................................................................ 97 A.6.4 Loom: ......................................................................................................... 98 A.6.5 OCML: ....................................................................................................... 98 A.6.6 OIL: ............................................................................................................ 98 A.6.7 OWL:.......................................................................................................... 98 A.6.8 SHOE: ........................................................................................................ 99 A.6.9 SL: .............................................................................................................. 99 A.7 Herramientas para la creación de ontologías ............................................................ 99 A.7.1 Protégé 2000............................................................................................... 99 A.7.2 WebOde.................................................................................................... 100 A.7.3 KAON ...................................................................................................... 100 A.8 Diseño de ontologías ............................................................................................... 100 Víctor Daniel PODBEREZSKI -v- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE A.8.1 Metodología de Grüninger y Fox ............................................................. 101 A.8.2 Metodología Unschold y King ................................................................. 102 A.9 Referencias .............................................................................................................. 103 Apéndice B: Jade ............................................................................................... 106 B.1 Introducción ............................................................................................................ 106 B.2 Arquitectura............................................................................................................. 106 B.3 Descarga e instalación ............................................................................................. 107 B.3 Entorno de ejecución ............................................................................................... 108 B.3.1 Interfaz RMA ........................................................................................... 108 B.3.2 Agente Dummy ........................................................................................ 109 B.3.3 Interfaz DF ............................................................................................... 110 B.3.4 Agente Sniffer .......................................................................................... 111 B.3.5 Agente Instrospector................................................................................. 112 B.4 Agentes .................................................................................................................... 113 B.5 Comportamientos. ................................................................................................... 115 B.5.1 Primitive Behaviours ................................................................................ 115 B.5.2 Composite Behaviours ............................................................................. 116 B.6 Comunicación entre agentes ................................................................................... 116 B.7 Ontologías ............................................................................................................... 117 B.8 Manejo de Ontologías: Ontology Bean Generator. ................................................. 120 B.9 Referencias .............................................................................................................. 120 Apéndice C La reputación en la manufactura inteligente ................................... 122 C.1 Manufactura integrada por computador .................................................................. 122 C.2 La manufactura y el paradigma de agentes ............................................................. 123 C.3 La cadena de suministros. ....................................................................................... 126 C.4 Administración de la cadena de suministros mediante agentes .............................. 129 C.5 Reputación en la cadena de suministros.................................................................. 131 C.6 Modelos de reputación existentes en la administración de la cadena de suministros ....................................................................................................................................... 132 C.7 Referencias .............................................................................................................. 134 Apéndice D Código Fuente................................................................................ 138 D.1 Framework .............................................................................................................. 138 D.1.1 Administrador .......................................................................................... 138 D.1.2 Medidor .................................................................................................... 142 D.1.3 Recopilador .............................................................................................. 144 D.1.4 Contacto ................................................................................................... 147 D.1.5 Difusor...................................................................................................... 152 D.1.6 Transformador .......................................................................................... 153 Víctor Daniel PODBEREZSKI - vi - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE D.1.7 Timers ...................................................................................................... 154 D.2 Ontología................................................................................................................. 155 D.2.1 Agente ...................................................................................................... 155 D.2.2 Agente Administrador .............................................................................. 155 D.2.3 Agente de Reputación .............................................................................. 156 D.2.4 Agente Reputado ...................................................................................... 157 D.2.5 Agente Reputador..................................................................................... 158 D.2.6 Contrato .................................................................................................... 158 D.2.7 Escala ....................................................................................................... 159 D.2.8 Escala categórica ...................................................................................... 160 D.2.9 Escala numérica ....................................................................................... 160 D.2.10 Fuente de información............................................................................ 162 D.2.11 Fuente primaria ...................................................................................... 162 D.2.12 Fuente secundaria ................................................................................... 163 D.2.13 Información propagada .......................................................................... 163 D.2.14 Información sociológica ......................................................................... 163 D.2.15 Interacción directa .................................................................................. 164 D.2.16 Métrica ................................................................................................... 164 D.2.17 Observación directa ................................................................................ 165 D.2.18 Prejuicio ................................................................................................. 165 D.2.19 Reputación.............................................................................................. 166 D.2.20 Tema ....................................................................................................... 168 D.2.21 Tipo de contrato ..................................................................................... 169 D.2.22 Unidad .................................................................................................... 170 D.2.23 ReputationOntology ............................................................................... 171 D.3 Agente de reputación de ejemplo ............................................................................ 175 D.3.1 ReputationAgent ...................................................................................... 175 D.3.2 Administrador .......................................................................................... 176 D.3.3 CalculadorStandard_Porcentual ............................................................... 180 D.3.4 Contacto ................................................................................................... 181 D.3.5 Difusor...................................................................................................... 186 D.3.6 Medidor Motor ......................................................................................... 188 D.3.7 Recopilador Asistencia............................................................................. 191 D.3.8 Administrador Factory ............................................................................. 193 D.3.9 Cadena Agent ........................................................................................... 193 Apéndice E Trabajos preeliminares presentados a congresos ............................. 196 Víctor Daniel PODBEREZSKI - vii - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Índice de figuras FIGURA 1: ESQUEMA DE LA ARQUITECTURA DE REPUTACIÓN. ..................................................... 36 FIGURA 2: DIAGRAMA UML DE LA ONTOLOGÍA. .......................................................................... 41 FIGURA 3: SOLICITUD DE REPUTACIÓN ......................................................................................... 43 FIGURA 4: SOLICITUD DE REPUTACIÓN EN CASCADA .................................................................... 44 FIGURA 5: ACTUALIZACIÓN DE REPUTACIÓN ............................................................................... 46 FIGURA 6: QUERY INTERACTION PROTOCOL ................................................................................ 47 FIGURA 7: MÓDULOS DE LA ARQUITECTURA. ............................................................................... 49 FIGURA 8: PEDIDO DE REPUTACIÓN .............................................................................................. 60 FIGURA 9: ACTUALIZACIÓN DE REPUTACIÓN. ............................................................................... 61 FIGURA 10: INFORMACIÓN DE REPUTACIÓN. ................................................................................ 62 FIGURA 11: EVALUACIÓN DE REPUTACIÓN A TRAVÉS DEL TIEMPO. .............................................. 67 FIGURA 12: TAXONOMÍA DE LOS PRODUCTOS ............................................................................... 68 FIGURA 13: RESULTADOS EXPERIMENTALES SEGÚN TIPO DE MÉTRICA UTILIZADA. ...................... 76 Víctor Daniel PODBEREZSKI - viii - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Índice de tablas TABLA 1: RESUMEN DE MODELOS DE REPUTACIÓN ....................................................................... 31 TABLA 2: OPERACIONES DEL MÓDULO “ADMINISTRADOR” .......................................................... 51 TABLA 3: ATRIBUTOS DEL MÓDULO “ADMINISTRADOR” .............................................................. 51 TABLA 4: OPERACIONES DEL MÓDULO "MEDIDOR" ...................................................................... 52 TABLA 5: ATRIBUTOS DEL MÓDULO “MEDIDOR”.......................................................................... 52 TABLA 6: BASES DE CONOCIMIENTO DEL MÓDULO “MEDIDOR” ................................................... 52 TABLA 7: OPERACIONES DEL MÓDULO “RECOPILADOR” .............................................................. 55 TABLA 8: ATRIBUTOS DEL MÓDULO “RECOPILADOR” .................................................................. 55 TABLA 9: BASES DE CONOCIMIENTO DEL MÓDULO “RECOPILADOR” ............................................ 55 TABLA 10: OPERACIONES DEL MÓDULO “DIFUSOR” ..................................................................... 56 TABLA 11: BASES DE CONOCIMIENTOS DEL MÓDULO “DIFUSOR” ................................................ 56 TABLA 12: OPERACIONES DEL MÓDULO “CONTACTO” ................................................................. 58 TABLA 13: BASES DE CONOCIMIENTO DEL MÓDULO “CONTACTO” ............................................... 58 TABLA 14: OPERACIONES DEL MÓDULO “TRANSFORMADOR” ...................................................... 58 TABLA 15: ATRIBUTOS DEL MÓDULO “TRANSFORMADOR” .......................................................... 59 TABLA 16: BASES DE CONOCIMIENTO DEL MÓDULO “TRANSFORMADOR” .................................... 59 TABLA 17: RESULTADOS EXPERIMENTALES DE VALORES DE REPUTACIÓN EN SITIO DE SUBASTA. 66 TABLA 18: FUNCIONES DE CONVERSIÓN DE MÉTRICAS ................................................................. 70 TABLA 19: DISTRIBUCIÓN DE PROBABILIDADES. .......................................................................... 73 Víctor Daniel PODBEREZSKI - ix - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Capitulo 1 Introducción La utilización de modelos de reputación en sistemas informáticos se ha diseñado e implementado para extraer información sobre el comportamiento de actores que interactúan entre si. Estos actores son objeto de análisis para determinar su confiabilidad y respetabilidad. La reputación de estos actores determina el grado de confianza que se les tiene para fiarse de la información que nos brindan o en la delegación de ciertas tareas. Los sistemas de reputación pueden ser utilizados dentro de los sistemas inteligentes distribuidos para determinar la mejor manera de resolver un problema: la generación de una solución con más probabilidades de éxito entre un conjunto posible de soluciones donde distintos actores tienen la capacidad – o dicen tenerla – para completar una parte del plan de resolución. Dentro de los sistemas inteligentes distribuidos se encuentran los sistemas multiagentes, donde cada actor – un agente – cuenta con autonomía e interactúa, muchas veces, en un ambiente abierto donde coexisten objetivos diferentes. En este marco, la formación de una opinión sobre el comportamiento de un agente se convierte en algo crítico. Existe un gran conjunto de propuestas de modelos de reputación. Cada modelo fue propuesto para cubrir un conjunto de situaciones dadas. Siendo que no existen limitaciones en las situaciones que los sistemas multiagentes pueden abarcar, los modelos de reputación se multiplican para tratar de resolver escenarios específicos. El objetivo de este trabajo es presentar una arquitectura de reputación adaptable y flexible que sirva como modelo a la mayoría – sino a la totalidad – de las situaciones que puedan ocurrir en sistemas multiagentes. Para eso se realizó un análisis de los sistemas multiagentes, su organización y la aplicación de la reputación en diversas situaciones. Como resultado de ese estudio se presenta una propuesta de una arquitectura de reputación con los módulos que la componen, la interacción entre ellos, una ontología para la manipulación de la reputación y un protocolo para el intercambio de la misma. En el capítulo 2 se realizará un análisis de los temas que tienen relevancia en el desarrollo de esta tesis. Se comienza con los agentes y sistemas multiagentes. Luego se profundiza en las características de los modelos de reputación y un conjunto existente de modelos de reputación. Finalmente se presentan ontologías que pretenden modelizar la reputación. Víctor Daniel PODBEREZSKI -1- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE En el capítulo 3 se detalla el problema a resolver con las diferentes características del mismo. También se detalla el objetivo a concretar y el marco de trabajo en el que se efectúa. En el capítulo 4 se desarrolla una solución propuesta a la problemática presentada en el capítulo anterior. Se propone una arquitectura para la administración de la reputación, una ontología capaz de representar el conocimiento a intercambiar en la arquitectura y protocolos de interacción que reglen cómo se deben realizar la comunicación e intercambio de información entre los agentes. En el capítulo 5 se ofrecen dos escenarios de pruebas diferentes que sirven de marco rara comprobar el funcionamiento y la flexibilidad de la arquitectura propuesta. En el capítulo 6 se concluye el trabajo presentando las conclusiones obtenidas luego de la experimentación y las futuras líneas de investigación. Víctor Daniel PODBEREZSKI -2- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Capitulo 2 Estado del Arte 2.1 Introducción En el siguiente capítulo se realizará un desarrollo pormenorizado de los temas analizados para la elaboración de este trabajo. Se introduce a aquellos tópicos que conforman el marco de la cuestión. Se comienza definiendo y caracterizando a los agentes y sistemas multiagentes (Sección 2.2). Luego se reseñan y estudian las singularidades de los sistemas de reputación (Sección 2.3). Posteriormente se presentan un conjunto de modelos de reputación existentes (Sección 2.4) que abarcan un gran abanico de situaciones posibles. Finalmente se presentan algunas ontologías de reputación (Sección 2.5) que pretenden modelizar el conocimiento e intercambio de reputación. 2.2 Agentes y sistemas multiagentes 2.2.1 Agentes Existen diversas definiciones de los que es un agente. Una definición generalmente aceptada explica a un agente como un sistema de computación que se encuentra situado en un ambiente y es capaz de un comportamiento autónomo con la misión de cumplir sus objetivos de diseño [Russell & Norving 1995, Wooldridge & Jennings 1995, Wooldridge 2002] Como puede observarse esta definición es bastante amplia, pero aun así deja algunos puntos en claro. En primer lugar se habla de un sistema de computación donde se entiende a esto como un software diseñado por la mano del hombre para funcionar bajo cierta arquitectura. Luego se debe hacer hincapié en la palabra “ambiente”, entendiéndose a esta en un sentido amplio, pudiendo ser un entorno virtual como la world wide web o algo concreto y real como la exploración espacial o una planta industrial. Se solicita que el sistema sea autónomo es decir que puede tomar decisiones por cuenta propia sin la intervención humana o de otros sistemas. Por ultimo se exige que el agente tenga un objetivo por cumplir. La conclusión de este objetivo es altamente deseable pero no siempre es alcanzable. Normalmente un agente tiene un repertorio de acciones posibles. Este set de acciones representa la capacidad efectora del agente y es su capacidad de afectar al ambiente. No todas las acciones pueden ser ejecutadas en cualquier momento sino que están atadas a precondiciones que determinan si una acción determinada puede lanzarse. Víctor Daniel PODBEREZSKI -3- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Se define a un agente como inteligente si tiene la capacidad de realizar acciones autónomas flexibles con el objetivo de lograr el objetivo propuesto [Wooldridge & Jennings, 1995]. Se entiende a la flexibilidad como la suma de: - Reactividad: Percibir del ambiente y responder en tiempo a aquellos cambios que ocurren con el objeto de cumplir con el objetivo planteado. - Pro-actividad: Tomar la iniciativa en la realización de acciones orientadas a la resolución del problema - Sociabilidad: Ser capaces de interactuar con otros agentes o humanos para satisfacer sus objetivos de diseño. Existe otra definición, que incluye a la anterior y al menos alguna de las siguientes características [Wooldridge & Jennings, 1995]: - Nociones mentales: un agente tiene creencias, deseos e intenciones. - Racionalidad: realiza acciones a fin de lograr objetivos - Adaptabilidad o aprendizaje - Veracidad: un agente no es capaz de comunicar información falsa de propósito. La última definición es señalada como la definición fuerte de agente inteligente. Mientras que la primera es conocida como la definición débil. 2.2.2 Sistemas multiagentes Un primer acercamiento a un sistema multiagente lo define como sistema que busca lograr la cooperación de un conjunto de agentes autónomos para la realización de una tarea. La cooperación depende de las interacciones entre los agentes e incorpora tres elementos: la colaboración, la coordinación y la resolución de conflictos [Ferber 1999]. Una definición mas amplia y completa lo enuncia como un sistema en el que conviven un conjunto de agentes capaces de interactuar entre así donde cada uno de ellos tienen sus propios objetivos y deben cooperar o competir entre ellos para llevarlos a cabo. [Russell & Norvig 1995] Esta segunda explicación incluye a la primera como un caso particular. Es importante hacer notar que el utilizar varios agentes para la solución de problemas no implica únicamente dividir las tareas para cada individuo y esperar que se ejecuten, sino también que los agentes actúen entre sí para compartir, además, conocimientos y coordinar sus Víctor Daniel PODBEREZSKI -4- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE acciones reaccionando ante cambios en el entorno para llegar a un objetivo común o permitir que cada uno de ellos cumpla sus objetivos personales de la forma más eficiente. Estas acciones son fijadas por ellos mismos y no por entes externos. La meta entonces al crear sistemas multiagentes se encuentra no solamente en procesos de conocimiento individuales sobre cómo actuar de acuerdo al entorno sino en procesos sociales que trabajen sobre grupos de agentes, interactuando entre sí y además quizás con humanos aunque en mucha menor proporción (no se busca la idea de controlar remotamente sino interactuar para intercambios fugaces de información). En particular se buscan dos metas importantes que están dadas en negociar las acciones a realizar por cada uno y cooperar para llegar al fin utilizando el conjunto de posibilidades que da la cooperación (es bueno recordar que no siempre la suma de las partes es igual a cada parte por separado). Las características de un ambiente de un sistema multiagente son: - Provee una infraestructura especificando protocolos de comunicación e interacción. - Típicamente son abiertos y no tiene un diseñador centralizado. - Puede contener tanto agentes autónomos como distribuidos y pueden ser cooperativos o egoístas (actuando únicamente en el interés propio). - Generalmente son de contenidos extensos y complejos. - En ocasiones su topología es dinámica y cambiante Sobre el mismo se manejan además diferentes propiedades que lo caracterizan: - Conocimiento: Hasta que extensión es conocido el entorno por el agente. - Predictibilidad: Hasta que punto puede un agente predecir el entorno. - Control: Hasta que punto puede un agente controlar al entorno. - Historicidad: Si los estados futuros dependen de estados históricos pasados o solo del estado actual. - Teleológico: Si existen partes del mismo con un propósito. - Tiempo Real: Si puede el ambiente cambiar mientras los agentes están deliberando. Víctor Daniel PODBEREZSKI -5- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 2.2.3 Interacción entre agentes Dentro de un sistema de multiagentes es indispensable la existencia de la comunicación entre agentes. Como en todo proceso de comunicación existen dos partes: el emisor y receptor. Un agente debe ser capaz de asumir ambos roles. Los agentes se comunican para lograr mejores resultados para si mismos o para la sociedad en la que existen. Puede ocurrir que el agente no conozca la totalidad de un objetivo global sino únicamente parte de este dependiendo de si el agente es o no basado en el objetivo. La comunicación le puede permitir al agente coordinar sus acciones y comportamientos resultando en sistemas que son más coherentes. La coordinación es una propiedad de un sistema de agentes realizando una actividad en un ambiente compartido. El grado de coordinación de los agentes determina la capacidad de llevar a cabo sus objetivos disminuyendo al mínimo el tiempo de respuesta y la perturbación de los objetivos entre los agentes. La coordinación se puede dividir básicamente en dos grandes grupos. El primero de ellos, la cooperación, mide el grado de coordinación entre dos o más agentes no-antagonistas. El segundo, la competencia, mide la coordinación entre agentes que compiten entre si o entre agentes egoístas. La cooperación requiere un planeamiento donde los agentes involucrados se ponen de acuerdo en los próximos pasos a realizar para lograr cumplir un objetivo o parte del mismo, para lograr esto típicamente cada agente debe tener un modelo de los agentes participantes. El planeamiento puede ser distribuido donde el plan es armado por las partes o centralizado donde existe un único agente que determina el plan para el resto y luego lo comunica al resto de los agentes. Para esto se requiere la socialización. Por otro lado la negociación es el proceso en el cual los agentes antagonistas determinan qué acciones realizar o dejar de realizar en un determinado lapso de tiempo para evitar que las acciones de las partes tornen imposible la concreción de los objetivos de cada agente involucrado. Para una buena coordinación entre agentes es necesario que haya uno (o más) protocolos bien especificados que permitan a los agentes discutir cursos de acción. La coherencia del sistema se mide como la capacidad del mismo de funcionar comportándose como una unidad. En un sistema multiagente la dificultad reside en cómo lograr la coherencia global sin tener un sistema de control global explícito. Los agentes deben ser capaces de determinar por si mismo las metas que comparten con otros agentes, encontrar tareas en común, Víctor Daniel PODBEREZSKI -6- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE evitar conflictos y compartir conocimiento y evidencias. Para esto ayuda mucho la existencia de una forma de organización entre los agentes. También compromisos sociales pueden ser medios para alcanzar la coherencia. Deben existir en un estudio formal de la comunicación tres aspectos a tener en cuenta: La sintaxis (como están estructurados los símbolos de comunicación), la semántica (qué denotan los símbolos) y la pragmática (cómo los símbolos son interpretados). El significado es la combinación de la semántica y la pragmática. Los agentes se comunican con el objetivo de entender y ser entendidos. Por lo tanto es importante determinar las diferentes dimensiones de significado que están asociados a la comunicación: - Descriptivos Vs. Prescriptivos: Algunos mensajes describen fenómenos, mientras que otros prescriben comportamientos. Las descripciones son importantes para el ser humano pero difíciles de imitar por los agentes. Por este motivo la mayoría de los lenguajes de comunicación entre agentes están diseñados para intercambiar información acerca de actividades y comportamientos. - Significado Personal Vs. Significado por convención: Un agente puede darle un significado a un determinado mensaje pero éste puede diferir del significado aceptado por convención por otros agentes. Se debe tratar que los lenguajes se ajusten lo más posible a las convenciones, especialmente en sistemas abiertos donde un nuevo agente se puede introducir en cualquier momento. - Significados Subjetivos Vs. Objetivos: Similarmente al caso anterior, cuando el significado es determinado externamente al agente, un mensaje usualmente tiene un efecto explícito en el ambiente, que puede ser percibido objetivamente. El efecto puede ser diferente que el entendido internamente, por ejemplo, subjetivamente, por el emisor y receptor del mensaje. - Perspectiva del Emisor, Receptor o Sociedad: El mensaje puede ser expresado tanto desde el punto de vista del emisor, del receptor o de los observadores. - Semántica Vs. pragmática: La pragmática en la comunicación se ocupa de estudiar como los comunicadores usan la comunicación y en que circunstancias. Esto incluye consideraciones de los estados mentales de los comunicadores y el ambiente en el que existen, consideraciones que son externas a la sintaxis y la semántica de la comunicación. - Contexto: Los mensajes no pueden entenderse aisladamente, deben interpretarse como estados mentales de los agentes, el estado presente del ambiente y su historia (como Víctor Daniel PODBEREZSKI -7- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE llegaron al estado actual). La interpretación está afectada directamente por los mensajes y acciones previas del agente. - Cobertura: Lenguajes más pequeños son más manejables, pero deben ser lo suficientemente complejos para lograr que el agente transmita el mensaje deseado. - Identidad: Cuando una comunicación ocurre entre agentes, su significado depende de los roles e identidades de los agentes implicados. - Cardinalidad: Un mensaje enviado a un agente en particular debe ser entendido en forma diferente al mismo mensaje enviado en broadcasting. 2.2.4 Protocolos de comunicación Para lograr la comunicación en forma exitosa entre agentes se requiere la imperiosa existencia de un protocolo que diga qué es posible realizar y cómo realizarlo. El protocolo debe ser compartido por todos los agentes y debe ser conciso y limitado a una cantidad determinada de mensajes e interacciones posibles. Como en todo protocolo hay roles que determinan qué puede hacer un participante del mismo y cuando. Los roles que se pueden tomar son: Master, Slave y Peer. Un rol de Master es aquel donde el agente asume un estado activo realizando pedidos a otro (puede ser de información, o de proposición de un plan), en cambio un rol de Slave es la contraparte del Master, estado pasivo, donde es aquel que escucha y responde los pedidos. Por último el rol de Peer es aquel que puede tomar tanto el papel activo como pasivo. Los protocolos pueden permitir la comunicación de dos agentes (Protocolos de comunicación binarios) o la comunicación entre varios agentes (Protocolos n-arios de comunicación). En la comunicación de agentes se pueden utilizar un gran conjunto de protocolos. Hay protocolos especializados en la comunicación de información y conocimiento, también los hay para lograr una coordinación entre agentes. Los protocolos de interacción gobiernan el intercambio de una serie de mensajes entre agentes (una conversación). Se pueden distinguir diferentes tipos de protocolos de interacción, por ejemplo agentes egoístas o en conflicto de intereses tendrán como objetivo en su protocolo maximizar las utilidades del agente para aumentar su posibilidad de lograr sus metas. En el caso en el que agentes tengan objetivos similares o problemas comunes el objetivo del protocolo es el del alcanzar una performance global de coherencia entre los agentes sin violar la autonomía de las partes. Víctor Daniel PODBEREZSKI -8- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE En primer lugar se debe caracterizar qué es deseable en un protocolo para la coordinación de agentes. Para producir sistemas coordinados, la mayoría de las investigaciones en inteligencia artificial distribuida se han concentrado en técnicas para distribuir tanto el control como la información. El control distribuido determina la existencia de un grado de autonomía de acción y decisión entre los agentes. Dentro de esta visión el agente tiene una perspectiva limitada y parcial de la situación, aumentando el grado de incertidumbre y la dificultad a la hora de mantener un comportamiento global coherente En el esquema descrito las claves dentro del agente son el compromiso y la convención. El compromiso es visto como el empeño de realizar un determinado curso de acción, mientras que la convención provee un medio de manejar compromisos en circunstancias cambiantes. El compromiso provee un grado de predictibilidad pudiendo tener los agentes consideración de las futuras acciones de otros agentes cuando se enfrentan con dependencias interagentes, restricciones globales o conflictos por utilización de recursos. A medida que la situación cambia el agente debe evaluar si el compromiso actual aún es válido. La convención establece las condiciones bajo las que el compromiso debe ser reasignado y especifica las acciones asociadas que deben ser tomadas: tanto retener, rectificar o abandonar el compromiso. Si las circunstancias no cambian un agente cumplirá con honor sus compromisos. Estas obligaciones restringen las acciones subsecuentes del agente concernientes a tomar nuevos compromisos, dado que debe guardar los suficientes recursos para cumplir los ya tomados. La convención ayuda al agente a manejar sus compromisos, pero no especifica como debe comportarse frente a otros agentes cuando modifica algún compromiso contraído. Frente al caso de objetivos que son dependientes es importante que el agente comunique cualquier cambio sustancial que ocurra en el mismo. Por otra parte cuando el agente decide tomar una acción conjunta el grupo de agentes comprometidos debe informar cualquier cambio significativo que ocurra en su compromiso pues al trabajar como equipo y no comunicarlo puede poner en riesgo la conclusión exitosa del propósito. 2.3 Reputación 2.3.1 Introducción La reputación es un concepto ampliamente utilizado en nuestra vida cotidiana. Vamos a ver una obra de teatro porque una revista la calificó como Muy buena, comemos en un restaurante por que un amigo nos dijo que sus pastas son las mejores que probó en la vida, elegimos no ir más a un mecánico porque nos cobró caro y su arreglo se rompió a los dos días. Confiamos en ciertas instituciones, personas y en nuestro juicio para decidir qué hacer y cómo. Víctor Daniel PODBEREZSKI -9- MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE La reputación ha sido analizada desde distintas disciplinas como la sociología, la economía, la psicología y la filosofía. Dentro de la informática y las ciencias de la computación el concepto de la reputación es reciente y diversas metodologías comienzan a producirse en ámbitos académicos. El paradigma de agentes y el e-commerce dieron combustible al motor creativo. La necesidad de interactuar con otros agentes en busca de socios confiables en ambientes dinámicos y abiertos debe ser satisfecha. En la próxima sección (Sección 2.3.2) se analizará la reputación y sus distintos modelos. Por último (Sección 2.3.3) se detallarán un conjunto abarcativo de modelos propuestos para representar la reputación en un sistema informático. 2.3.2 Definiciones La confianza es la creencia que tiene un agente en que la contraparte realizará lo que prometió (siendo honesto y confiable) o que será reciproco (para el bien común de ambos) aun existiendo una oportunidad de desertar para conseguir rentabilidades más altas [Ramchurn et al 2004]. La reputación se puede definir como la opinión o perspectiva de alguien acerca de algo. [Sabater & Sierra, 2002b]. La reputación de un agente se conforma de acuerdo a su accionar en el tiempo. La reputación y la confianza están íntimamente ligadas. Un agente tenderá a tener desconfianza (confianza negativa o baja) hacia un agente con poca reputación. La reputación puede inducir a un vendedor a comportarse bien si sabe que será evitado por futuros compradores como resultado de su reducción de reputación producido por su mala conducta. [Ramchurn et al 2004] Los modelos de reputación intentan guiar la decisión de un agente en determinar cómo, cuándo y con quién interactuar [Ramchurn et al 2004] Zacharia y Maes delinearon las cualidades deseadas de un modelo de reputación con respecto a que delineamentos deben tenerse en cuenta al realizar las mediciones de reputación y cómo impacta esto en el comportamiento de los actores del sistema [Zacharia & Maes, 2000]. - Debe ser costoso cambiar de identidad en la comunidad. Esto debe prevenir la entrada de un agente al sistema para comportarse maliciosamente, retirarse y reingresar sin pérdida de utilidad o castigo a raíz del mal desempeño. - Nuevos ingresantes no deben ser penalizados teniendo inicialmente bajos valores de reputación. Si ingresantes reciben baja reputación serán menos favorecidos a pesar de ser totalmente confiables. Víctor Daniel PODBEREZSKI - 10 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Agentes con bajas calificaciones deben poder mejorar su reputación en forma similar a un nuevo ingresante. Esto permite a un agente corregir su comportamiento si demostró comportarse mal en el pasado. - Los costos de realizar transacciones falsas deben ser altos. Este impide a agentes construir su propia reputación. - Los agentes que tienen una reputación alta deberían tener más alta preeminencia que otros en la valoración de reputación que ellos atribuyen a otros agentes. Esto presupone que los agentes con reputación alta darán valoraciones verídicas y acertadas a quien le consulte. Sin embargo, esto es discutible. Si el agente reputador es competidor o tiene algun convenio con otro agente competidor del agente a reputar existe un conflicto de intereses. La preeminencia de una reputación contra la de otros puede conducir a la creación de monopolios o cárteles en el mercado. Otra crítica a esta aproximación declama que un buen agente vendedor, no tiene necesariamente que ser un buen calificador. - Los agentes deben ser capaces de proveer evaluaciones personalizadas. Esto presupone otorgar más que un simple valor de +1 o -1 para permitir una mayor evaluación de otro agente. - Los agentes deben ser capaces de guardar en memoria los valores de reputación y darle más importancia a los últimos obtenidos. Esto es necesario para mantener la medida de reputación lo más actual posible y ayudar a prevenir que un agente construya una buena reputación interactuando bien en un principio para luego comenzar a incumplir sus promesas. Existen varias aproximaciones a este concepto que en los últimos años con el advenimiento de los sistemas multiagentes y del e-commerce cobró gran ímpetu. Una categorización se hace necesaria y aquí se utilizará la propuesta por Jordi Sabater [Sabater 2003]. En esta se pueden clasificar a los sistemas de reputación según: - Tipo de paradigma - Fuentes de información - Tipo de visibilidad - Granularidad del modelo - Asunción del comportamiento de los agentes Víctor Daniel PODBEREZSKI - 11 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Tipo de información intercambiada A continuación se ahonda en cada uno de estos conceptos. 2.3.3 Tipo de paradigma Existen dos grandes grupos en esta clasificación: una aproximación cognitiva y una aproximación matemática. En los sistemas basados en modelos cognitivos, la confianza es construida mediante creencias subyacentes y es una función del grado de estas creencias [Esfandiari & Chandrasekharan 2001]. Estos métodos tratan de reproducir el mecanismo humano de razonamiento acerca de la confianza y la reputación. En ellos es tan importante la confianza obtenida como el medio por el cual se llegó a ella. Por otro lado se encuentran los modelos matemáticos que no se basan ni en asunciones ni en creencias. No se enfocan en procesos mentales en el sentido cognitivo sino en una forma más pragmática utilizando funciones de utilidad, probabilidades y la evaluación de interacciones pasadas. En estos métodos nos importa el resultado final que nos retorna la confianza y no la forma de obtenerla. 2.3.4 Fuentes de información Las fuentes de información utilizadas en un sistema de reputación para la determinación del valor de confianza pueden ser diversas. Desde la información propia recabada por la interacción directa hasta mediante la de terceros que pueden ser expertos o simplemente testigos. Otra fuente de información utilizada recientemente son los aspectos sociológicos del comportamiento del agente. La información que obtenga el agente dependerá de sus capacidades sensoriales y del ambiente donde se encuentre. Cuantas más fuentes de información se utilicen se podrán construir modelos más complejos que permitan una más acertada determinación de la reputación o una velocidad de aprendizaje mayor. Asimismo también impondrá una mayor complejidad en el diseño del agente y requerirá mas inteligencia del mismo. La experiencia por observación directa es sin lugar a dudas tradicionalmente la forma más relevante y confiable de obtener información para un sistema de reputación. En su forma más sencilla esta información se obtiene analizando los resultados de las pasadas interacciones con el posible socio. En una complejidad mayor, siempre y cuando el entorno lo permita, a la observación directa podría sumarse el análisis de resultados entre la interacción entre otros pares de agentes. Para eso debería poder interiorizarse en las características de la interacción y su resultado. En este segundo caso es posible que la información obtenida no sea exacta o esté sujeta a ruidos que no la hacen tan confiable como la anterior. La experiencia de terceros es la información que otros agentes tienen sobre un posible socio y están dispuestos a compartir. Esta información la pueden haber obtenido mediante la interacción directa o por otra interacción entre terceros. La experiencia de terceros es muy Víctor Daniel PODBEREZSKI - 12 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE abundante, pero se debe tener especial cuidado en su utilización. En primer lugar esta información no es tan confiable pues otros agentes pueden manipular u ocultar cierta información para su propio beneficio. Por otra parte los criterios para determinar la reputación podrían ser diferentes y por lo tanto no ser interpretados de la misma manera. A la hora de determinar a quien preguntarle sobre la reputación podría pensarse en consultar a pares o a agentes expertos que se ocupen primariamente de la elaboración de la valoración de reputación. La información sociológica se refiere al estudio de las relaciones sociales existentes y de los roles que ocupa cada agente en la sociedad a la que pertenece. Esta información no está disponible en todos los ambientes donde funcionan los sistemas multiagentes y requiere que exista una rica interacción entre los agentes para poder armar un modelo coherente. Los modelos que utilizan este tipo de información usan técnicas como el análisis de redes sociales. Las redes sociales entre agentes muestran las relaciones existentes entre los agentes y dan pautas que pueden ser utilizados para calcular la reputación entre ellos. Otro tipo de fuente de información puede ser el prejuicio. No es muy común su utilización en sistemas de valoración de reputación entre agentes. No debe ser tomado necesariamente en su acepción negativa, como una actitud hostil frente a otro, sino a la elaboración de un juicio previo sobre el otro en base a preconceptos propios. 2.3.5 Tipo de visibilidad La reputación puede ser vista como una propiedad global compartida por todos los observadores o como privada y subjetiva mantenida por cada individuo. En el primer caso el valor de la reputación es calculado a partir de las opiniones de los individuos que en el pasado interactuaron con el evaluado. Este valor esta disponible para todos los miembros de la sociedad y es recalculado cada vez que se inserta una nueva evaluación por parte de un agente. En el segundo caso cada agente mantiene para si un valor de opinión de reputación de a cuerdo a las fuentes de información que utiliza. En este escenario no se puede hablar de una reputación de un individuo x, sino de una reputación del individuo x de acuerdo al punto de vista del individuo y. Podrá ocurrir que un agente determinado tenga un alto valor de reputación para un grupo de agentes y para otros valores de reputación bajos. En sistemas donde coexisten gran cantidad de agentes y no es común la repetición en la interacción entre un par de agentes es preferible la primera aproximación. Ejemplos de esto son los sitios de internet de subastas on-line. Allí un usuario comprador tendrá diferentes necesidades y la reputación producto de otros usuarios le resultara muy útil. Sus deseos de compra irán variando, por ejemplo primero comprará una computadora y luego una colección de revistas deportivas. Estos artículos no se compran periódicamente y el universo de vendedores que ofrecen ambos productos posiblemente sea un conjunto vacio. Por lo tanto Víctor Daniel PODBEREZSKI - 13 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE mantener en privado la reputación no le brindará beneficios. Un problema serio en sistemas donde la reputación es global es la falta de personalización de la misma. Mismos comportamientos para distintos individuos puede ser para unos aceptables y para otros inaceptables. En escenarios complejos donde los agentes se enfrentan a situaciones subjetivas esta aproximación no será la adecuada. Otro problema de este tipo de aproximación se presenta en sistemas distribuidos donde la centralización de la reputación puede ocasionar, si este queda fuera de línea, el colapso de todo el sistema. Del otro lado se encuentran los modelos que mantienen la reputación como una propiedad subjetiva. Cada agente se encarga de administrar y mantener su propia fuente de reputación para cada miembro de la sociedad. Estos modelos funcionan para sistemas de escala pequeña o media y donde la repetición en la interacción entre pares de agentes es mediana a altamente posible. 2.3.6 Granularidad del modelo En nuestra vida cotidiana el pedido de referencia sobre algún asunto en particular no la realizamos a cualquier persona. Determinará el asunto en cuestión a quién le realizaremos nuestra consulta. Por ejemplo por un asunto legal consultaremos a un abogado y por un asunto de salud a un médico. No estaremos inclinados a preguntarle a un galeno sobre la mejor estrategia para preparar un juicio de un accidente de tránsito y menos al jurista sobre cómo curar las heridas producidas en el mismo. A quien le preguntamos por lo tanto depende del contexto de nuestra pregunta. En ciertas ocasiones este mismo comportamiento será deseable para una arquitectura de reputación en un sistema multiagente. Agregar a un mecanismo de valoración de reputación la capacidad de enfrentar situaciones contextuales agrega un nuevo grado de complejidad al mismo y puede agregar efectos secundarios que no son siempre necesarios y a veces indeseables. Un sistema de reputación de simple contexto está diseñado para asociar un único valor de reputación por agente sin tener en cuenta el contexto. Por el contrario un sistema de reputación de multi-contexto tiene los mecanismos necesarios para manejar varios contextos al mismo tiempo para cada agente de acuerdo al contexto. Un mecanismo sencillo para transformar un sistema de simple contexto en uno multi-contexto es tener simplemente varias instancias del modelo de simple contexto, uno por cada contexto deseado. Sin embargo esto requiere un planeamiento y una atención especial, pues ya de por si un sistema de reputación requiere almacenar mucha información y a medida que los contextos se multiplican también lo hacen los recursos necesarios. En ciertas ocasiones esta aproximación es inviable. Por lo tanto lo que realmente hace a un sistema multi-contexto es su capacidad de hacer uso inteligente de cada pedazo de información para calcular diferentes valores de Víctor Daniel PODBEREZSKI - 14 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE reputación para cada actividad diferente. Identificar el contexto correcto para cierta información o usar la misma información en varios contextos cuando es posible son ejemplo de las características que definen a un modelo multi-contexto. No muchos sistemas de reputación son multi-contexto. En un ambiente donde las capacidades de los agentes y sus acciones son limitadas se pueden lograr sistemas de simple contexto sin perder demasiada versatilidad. En sistemas de gran complejidad y diversidad de tareas esto puede ser altamente deseable. 2.3.7 Asunción del comportamiento de los agentes En un sistema ideal todos los agentes gustosos intercambiaran información de reputación y lo harán sin falsear su valor. Pero en sistemas competitivos ciertos agentes pueden pretender engañar al agente para beneficio propio. En ese aspecto pueden encontrarse varios niveles frente a esta amenaza. En un primer nivel se encuentran los sistemas que no tienen en cuenta este comportamiento. Se basan en que el peso de los agentes que entregan información correcta sobrepasará a los maliciosos. En un segundo nivel están los sistemas que consideran que agentes pueden ocultar información, pero nunca mentir. Por último, en un tercer nivel el sistema implementa un mecanismo para identificar y tratar con agentes mentirosos. 2.3.8 Tipo de información intercambiada Una última clasificación se puede establecer de acuerdo a la manera en que diferentes agentes intercambian información de reputación. Existen dos grandes grupos y su selección determina la forma y versatilidad del método. En un primer grupo se encuentran los mecanismos de reputación que utilizan valores booleanos. En el otro grupo se encuentran los grupos que utilizan valores continuos de medición. 2.4 Modelos de reputación A continuación se describen un conjunto de modelos de reputación propuestos por diversos autores y las diferentes arquitecturas propuestas. 2.4.1 Sistemas de reputación on-line La aparición de sitios de venta on-line con grandes comunidades de usuarios hizo necesario la creación de un mecanismo para reputar a cada comprador y vendedor para lograr evitar engaños y tratos injustos. Algunos de los sitios que realizan esto son eBay [ebay 2005], DeRemate [DeRemate 2005], MercadoLibre [MercadoLibre 2005]. En estos sitios luego de una transacción tanto el vendedor como el comprador pueden calificar a su contraparte con uno de tres posibles valores: Negativo (-1), Neutro (0) y Positivo (1). La reputación se calcula como la suma de todas las calificaciones que recibió un usuario. Además Víctor Daniel PODBEREZSKI - 15 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE de este valor, cada vez que se agrega una valoración se puede ingresar un mensaje de texto para explicar el motivo de la calificación. Se puede observar la reputación global y de los últimos 6 meses. Estos modelos consideran a la reputación como algo global, no dependiente del contexto y utilizan un único valor. La fuente de información es la proveniente de la interacción de todos los usuarios con el evaluado (información de terceros) y no provee un mecanismo para enfrentarse a usuarios que den información falsa. Una variante de este sistema es el utilizado por Microsoft en su MSDN [Microsoft MSDN 2005] que permite a los usuarios calificar un artículo con un valor entre 1 y 9 de acuerdo al grado de utilidad que le encontró. Un valor total de utilidad se calcula realizando un promedio entre todos los valores recibidos. 2.4.2 S. Marsh Este modelo es uno de los primeros propuestos sobre modelos de reputación y fue propuesto por Marsh en su tesis de doctorado [Marsh 1994]. La única fuente de información en este modelo es la interacción directa. Diferencia la confianza en tres tipos: - Confianza Básica: Modela la disposición general de confianza del agente. Esta confianza es independiente del agente con el que tenga que interactuar y se calcula mediante todas las interacciones que tuvo el agente en el pasado (sin importar con quien fue la interacción). Las buenas experiencias hacen que el agente tenga mayor predisposición a la confianza. La notación utilizada por el autor para esta variable es Txt - para representar la disposición a la confianza de un agente x en un momento t. Confianza general: Esta es la confianza que tiene un agente acerca de otro sin tener en consideración ninguna situación en particular. Simplemente representa la confianza t general en el otro agente. Se representa como Tx ( y ) indicando la reputación que un - agente x tiene del agente y en un momento t. Confianza situacional: Esta es el monto de confianza que un agente tiene sobre otro tomando en cuenta una situación en particular. La formula básica para calcular el valor de esta confianza es: t t t t Tx ( y, α ) = U x (α ) × I x (α ) × Tx ( y ) Donde “x” es el agente que esta evaluando, “y” es el agente evaluado y “α” la situación. t t U x (α ) representa la utilidad que x gana de la situación α. I x (α ) es la importancia de la t situación α para el agente x y Tx ( y ) es la estimación de confianza general después de t tomar en cuenta todo los datos relevantes con respecto a Tx ( y, α ) en el pasado. Por Víctor Daniel PODBEREZSKI - 16 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE ejemplo si “t” es el tiempo actual, el agente “x” tendrá en cuenta todas las situaciones T Tx ( y, σ ) con θ < T < t y σ similares o iguales a la situación α. θ y t definen una periodo de tiempo que el agente considera. Únicamente las experiencias ocurridas durante ese periodo son tenidas en cuenta para el cálculo. t Para calcular el valor Tx ( y ) el autor propone tres modelos estadísticos diferentes: el promedio, el máximo y el mínimo. Cada método identifica un agente con un comportamiento determinado: el optimista (toma el máximo), el pesimista (toma el mínimo) y el realista (que toma el promedio de los valores utilizando la fórmula 1 t Tx ( y ) = ∑ Tx ( y, α ) donde A es el conjunto de situaciones similares a la situación A α ∈A evaluada α dentro de la ventana de experiencia temporal analizada) Estos valores de confianza son utilizados para ayudar a un agente decidir si vale la pena o no cooperar con otro agente. Además de la confianza situacional, el mecanismo de decisión toma en cuenta la importancia y el riesgo asociado a la acción y la competencia percibida del agente destinatario. Para calcular el riesgo y la competencia percibida diferentes tipos de confianza son utilizados (básica, general y situacional). Finalmente el modelo también introduce el concepto de “reciprocidad” o “correspondencia” como modificador de los valores de confianza. La idea detrás de la reciprocidad es que si un agente “x” ayudo a un agente “y” en el pasado e “y” respondió en esa ocasión desertando (incumpliendo lo pactado) la confianza que tiene “x” sobre “y” se verá reducida. 2.4.3 Sporas e Histos. Sporas [Zacharia 1999] es una versión evolucionada de los sistemas de reputación on-line. En este modelo, únicamente las más recientes mediciones entre dos usuarios es considerado. Otra característica importante es que los usuarios con valores de reputación muy altos experimentan cambios de valoración de reputación mucho menores luego de cada actualización que los usuarios con reputación baja. Utilizando una aproximación similar al sistema Glicko [Glickman 1999] – un sistema computacional para evaluar las fuerzas relativas de jugadores en juegos de 1 contra 1 – Sporas incorpora una medición de la fiabilidad de la reputación de un usuario basado en la desviación estándar de los valores de reputación. Este modelo tiene las mismas características generales que los previamente comentados de reputación on-line. Sin embargo es más robusto a los cambios de comportamiento de un usuario y la medida de fiabilidad mejora la utilización del valor de reputación. Víctor Daniel PODBEREZSKI - 17 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Histos [Zacharia 1999] fue diseñado como respuesta a la falta de personalización de los valores de reputación que utiliza Sporas. El modelo puede trabajar con información directa (aunque de una forma muy primitiva) e información de terceros. Al contrario que en Sporas, el valor de reputación es una propiedad subjetiva asignada particularmente por cada individuo. El tratamiento de la interacción directa en este modelo de reputación se limita al uso de la más reciente experiencia con el agente a ser evaluado. La fortaleza del modelo recae en el uso de la información de terceros. Mediciones a pares son representadas como grafos dirigidos donde los nodos representan agentes y los arcos llevan información de la medición más reciente de reputación dado por un agente al otro. El nodo raíz representa el agente propietario del grafo. Esta es una estructura similar a la utilizada por la TrustNet de Schillo et al [Schillo et al 2000]. La reputación de un agente en el nivel X del grafo (con X > 0) es calculada recursivamente como el promedio ponderado de los valores de los agentes del nivel X-1 le dieron a ese agente. La ponderación es calculada mediante las reputaciones de cada agente que calificó al agente objetivo. Como se puede ver los agentes que han sido calificados directamente por el agente dueño del grafo tiene un valor de reputación igual al valor de medición. Esta es el caso base de la recursión. El modelo también limita la profundidad y el número de caminos que son tomados en cuenta para el cálculo. El valor de reputación no depende del contexto y no se presentan mecanismos especiales para manejar agentes mentirosos. Una contra de este modelo es utilizar el valor de reputación asignado a un testigo como mediada de su confiabilidad. Si un agente es bueno cumpliendo contratos, no significa que sea un confiable testigo. 2.4.4 Schillo et. al. El modelo de reputación propuesto por Schillo et al [Schillo et al 2000] está pensando para escenarios donde el resultado de una interacción entre dos agentes (desde el punto de vista de la confianza) es una impresión booleana: Buena o Mala; no existen niveles de satisfacción. Para el cláculo de la confianza se realiza un cálculo probabilístico que determina la probabilidad de que un agente B sea honesto en la próxima interacción con el agente A. Para eso se utiliza la siguiente formula: T(A,B) = e / n donde “n” es la cantidad de interacciones conocidas por A en las que participó B y “e” es el número de veces en las que se comportó de forma honesta en esas interacciones. La obtención del comportamiento pasado de un agente se consigue de dos formas: mediante la observación directa y la información de terceros. Dentro de la primera categoría se pueden encontrar dos casos particulares. En primer lugar se encuentran las interacciones directas entre el agente que evalúa y el evaluado. En segundo lugar se encuentran las interacciones en las que Víctor Daniel PODBEREZSKI - 18 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE el agente que evalúa no fue partícipe, pero fue testigo. Este último caso merece especial atención, pues requiere la capacidad del escenario de poder observar y seguir interacciones en las que uno no participa directamente. La información de terceros se recaba entrevistando a agentes conocidos antes. Para almacenar esto cada agente utiliza una estructura de datos propia llamada TrustNet. Una TrustNet es un grafo dirigido donde los nodos representan agentes testigos y los arcos almacenan información sobre las observaciones que el agente padre le informó acerca del accionar del agente hijo. En la entrevista el agente consultado retorna una lista con todas las interacciones que observó del agente analizado y su resultado. La razón de esto, pudiendo únicamente devolverle el valor precalculado de “e” y “n”, es que de esa forma el método previene que un agente entrevistado provea información falsa. De hacerlo, corre el riesgo de el agente al recibir la lista observe que una interacción que ambos observaron en el pasado tenga un resultado diferente, y por lo tanto inferir que la información que le pasa es errónea. Aun sin poder mentir el agente puede ocultar información favoreciendo la honestidad o deshonestidad de un agente comunicando solo un subconjunto de las interacciones observadas. El modelo presupone que únicamente un agente ocultará interacciones de resultado positivo. La solución dada establece un valor constante en la cantidad de información ocultada por cada agente. En este método el valor de confianza es subjetivo e independiente del contexto. 2.4.5 Abdul-Rahman y Hailes Este método de reputación [Abdul-Rahman & Hailes 2000] utiliza cuatro grados de creencia para calificar la confianza en un agente: Muy poco Confiable (MP), Poco Confiable (P), Confiable (C) y Muy Confiable (MC). Por cada posible socio y contexto el agente mantiene una tupla con el número de pasadas experiencias en cada categoría. Entonces, desde el punto de vista de la interacción directa, la confianza en un socio en un contexto dado es igual al grado que corresponde al máximo valor en la tupla. Por ejemplo, si la tupla asociada a un socio en un contexto dado es (0,0,4,3) la confianza asignada a ese socio será (C) confiable que corresponde al tercer elemento de la tupla. Si hay más de una posición en una tupla con el valor máximo, el modelo retorna un grado de incerteza de confianza de acuerdo a una tabla de situaciones patrones que cubren esos casos. Existen tres casos especiales que cubren todas las combinaciones posibles: Más bueno que malo, más malo que bueno e igual de bueno que de malo. En este modelo antes de combinar la información proveniente de los testigos esta se ajusta de acuerdo a la información anterior perteneciente a ese testigo y sus consecuentes resultados que validan esa información. Por ejemplo, supongamos que “a” informa a “x” que “b” es MC y la evaluación de “x” sobre su experiencia con “b” es simplemente C. La próxima vez que “a” de información a “x”, “x” ajustará la información teniendo en cuenta la diferencia antes notada. Víctor Daniel PODBEREZSKI - 19 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE El problema de esta aproximación es que no es posible diferenciar a aquellos agentes que están mintiendo de aquellos que dicen la verdad pero piensan diferente. Ciertamente existen escenarios donde esta diferencia no es importante (por ejemplo en el propuesto por el autor donde agentes recomiendan mercancías) pero puede ser en otros casos un limitante importante. Para combinar la información, el modelo le da más importancia a la información preveniente de agentes con puntos de vista más similares al propio. Esto es, darle más importancia a la información a la cual hay que realizarle muy pocos ajustes o aun mejor ninguno pues provienen de agentes que tienen una perspectiva similar en un contexto dado. Contrariamente a otros modelos de reputación donde la información de testigos es mezclada con información de interacción directa para obtener la confianza en un tema especifico, este modelo esta pensado para evaluar únicamente la confianza de la información dada por testigos. La experiencia directa es utilizada para comparar los puntos de vista de esos testigos con la percepción directa del agente y entonces ser capaz de ajustar la información proveniente de ellos convenientemente. 2.4.6 Sen y Sajja En el modelo de reputación de Sen y Sajja [Sen & Sajja 2002] dos tipos de experiencia directa son tenidos en cuenta: Interacción directa y observación. En el escenario donde el modelo es usado, la observación contiene ruido, por ejemplo la observación difiere algo de la performance acaecida. Únicamente la interacción directa otorga una percepción exacta de la realidad. El aprendizaje por refuerzo es el mecanismo elegido para actualizar la reputación. Debido al ruido de las observaciones directas, la regla utilizada para actualizar el valor de reputación cuando hay una nueva interacción directa tiene un efecto mayor que la regla utilizada para actualizar el valor cuando hay una nueva observación. El rango de reputación es entre 0 y 1. Un valor mayor a 0,5 representa un buen agente y un menor a 0,5 un mal agente. Los agentes pueden preguntar a otros agentes sobre la actuación de un posible socio. La respuesta es siempre un valor booleano que dice si el agente sobre el que se consulta es bueno o malo. El modelo está preparado para soportar mentirosos en la comunidad. Se asume que estos mentirosos falsean la información siempre. Eso significa que dirán que un agente es bueno cuando es malo y viceversa. Para decidir desde el punto de vista de un testigo de información si un socio es bueno o malo, el modelo utiliza el número de respuestas positivas y negativas recibidas de los testigos. Conociendo el numero de testigos y cuantos de ellos son mentirosos, el modelo provee un mecanismo para calcular a cuantos agentes hay que consultarles para asegurarse que la probabilidad de elegir un buen socio tenga al menos cierto valor. El subconjunto de agentes a ser consultados es seleccionado en forma aleatoria del conjunto de posibles testigos. Los autores aseguran que es fácil de agregar un proceso de selección más inteligente basado en el mecanismo de confianza. Víctor Daniel PODBEREZSKI - 20 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Por ser el objetivo de ese estudio estudiar cómo los agentes utilizan la reputación boca a boca para seleccionar un socio entre otros, los agentes únicamente utilizan la información de testigos para tomar decisiones. La experiencia directa se utiliza como información a ser comunicada a los otros. Los autores no indican como usar la información directa combinándola con la obtenida por los testigos para obtener la calificación final de reputación. 2.4.7 AFRAS La característica central de este modelo [Carbo et al 2002] es la utilización de variables difusas para la representación de la reputación. Cada vez que se obtiene un nuevo valor difuso (que indica el grado de satisfacción de la última interacción con un socio dado), el viejo valor de reputación y el nuevo valor de satisfacción son recalculados utilizando una suma ponderada. Los pesos de esta operación son calculados de un valor simple que llaman remembranza o memoria. Este factor le permite al agente dar más importancia a la última interacción o al valor anterior. El valor de remembranza es modelado como una función de la similaridad entre la reputación previa y la satisfacción de la última interacción; junto el valor de remembranza previo. Si la satisfacción de la última interacción y la reputación asignada al socio son similares, la relevancia de las experiencias pasadas se incrementa. Si la satisfacción de la última interacción y la reputación son diferentes entonces es la relevancia de la última experiencia la que aumenta. La noción de fiabilidad del valor de reputación es modelado mediante entornos difusos. Un entorno amplio difuso denota un grado de incerteza, mientras que un entorno angosto determina un valor de gran fiabilidad. Recomendaciones de otros agentes son sumados directamente con la experiencia directa. El peso dado a cada factor (viejo valor de reputación y nueva opinión) es dependiente de la reputación de quien recomienda. Recomendaciones prevenientes de un recomendador con alta reputación tienen el mismo valor de credibilidad que la experiencia directa. Por el contrario, opiniones prevenientes de recomendadores con mala reputación no son tenidas en cuenta. Para calcular la reputación de los recomendadores el agente compara la recomendación con el comportamiento real del agente recomendado después de la interacción y incrementa o decrementa la reputación del recomendador en base al resultado obtenido. 2.4.8 Carter et al. La idea principal detrás del modelo de reputación de Carter et al [Carter et al 2002] es que la reputación de un agente se basa en el grado de cumplimiento de los roles atribuidos a él por la sociedad. Todos los individuos tienen ciertos roles en la sociedad. Si la sociedad juzga que han cumplido sus roles, son premiados con una reputación positiva, en caso contrario son castigados con reputación negativa. Víctor Daniel PODBEREZSKI - 21 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Cada sociedad tiene su propio conjunto de roles. Como tal, la reputación atribuida como resultado de esos roles únicamente tiene sentido en el contexto de esa sociedad donde esos roles están definidos. De acuerdo a esto es imposible universalizar el cálculo de la reputación. Los autores formalizan el conjunto de roles dentro de una sociedad de intercambio de información y proponen métodos para calcular el grado de satisfacción con cada uno de esos roles. Una sociedad de intercambio de información es una sociedad de agentes que intentan intercambiar información relevante entre ellos con la intención de satisfacer la demanda de los usuarios. Ellos identifican cinco roles: - Proveedor de información social: Usuarios de la sociedad pueden contribuir regularmente con nuevo conocimiento sobre sus amigos a la sociedad. Este rol ejemplifica el grado de conectividad de un agente en su sociedad. Cada recomendación particular que realiza un agente tiene un peso asociada a ella. Este peso indica la fuerza de la recomendación y es el producto de un factor decreciente en el tiempo y la reputación del recomendador. El grado en el cual el rol de proveedor de información social es satisfecho por un usuario es calculado como la suma de todos estos pesos mapeados en el intervalo [0,1]. - Rol de interactividad: Se espera que los usuarios utilicen regularmente el sistema. Sin esa participación el sistema se hace inservible. El grado de satisfacción de este rol se calcula como el número de operaciones del usuario durante un cierto periodo de tiempo dividido por el número total de operaciones realizadas por todos los usuarios del sistema en el mismo periodo. - Proveedor de contenido: Los usuarios deben proveer a la sociedad objetos de conocimiento que reflejen su propia área de experticia. El grado de satisfacción se refleja por la calidad de los agentes de información que pertenecen al usuario. La calidad del agente es medida considerando que tan cercano es el tema del agente de información al interés del usuario. La idea es que los usuarios que crean agentes de información relacionados a sus áreas de experticia producirán contenido de mejor calidad de su interés en comparación con otros que no comparten ese interés. - Rol de realimentación administrativa: Se espera de los usuarios que provean información acerca del funcionamiento del sistema. Estas calidades incluyen la facilidad de uso, velocidad, estabilidad y calidad de la información. Se dice que un usuario satisface este rol si provee esta información. - Rol de longevidad: Se debe promover a los usuarios a mantener una alta reputación para lograr la longevidad del sistema. El grado de satisfacción de este rol es medido teniendo en cuenta la reputación promedio del usuario hasta el tiempo presente. Víctor Daniel PODBEREZSKI - 22 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Dado esto, la reputación general del usuario es calculado como una suma ponderada de los grados de cumplimiento de cada rol. Los pesos son enteramente dependientes de la sociedad específica. El valor de reputación de cada agente es calculado por un mecanismo centralizado que monitorea el sistema. Por lo tanto el valor de reputación de cada agente es un valor global compartido por todos los observadores. 2.4.9 Yu y Singh Yu y Singh [Yu & Singh, 2000; 2001a; 2001b] proponen un sistema basado en la teoría de Dempster-Shafer. En ella se postula que existen 3 conjuntos: confianza positiva {T}, confianza negativa {-T} y {T,-T} que es el grado de incerteza (ni confianza positiva ni negativa). La unión de estos conjuntos es el marco de discernimiento Ө = {T; -T}. Existe luego una función llamada asignación de probabilidad básica (bpa) que a cada conjunto de Ө le asigna una probabilidad de ocurrencia, tal que: m({T}) + m({-T}) + m({T,-T}) = 1 y m(Φ) = 0 Para calcular el valor que se debe asignar a cada uno de estas probabilidades Yu y Singh proponen un método que por simplicidad daremos como resuelto. En base a este proponen la existencia de dos confianzas la local y la total. La confianza local mide los resultados de las últimas interacciones directas con el agente a analizar. Y simplemente para ver si es digno de darle una tarea se puede realizar la comparación de m({T}) - m({-T}) > φ, siendo φ un valor umbral donde si esta comparación se cumple entonces el agente es digno de certidumbre. Por otro lado si no se tiene una historia de interacción con el agente analizado se debería consultar con el testimonio de otros agentes sobre sus experiencias. Para eso comienza a preguntarles a sus conocidos su opinión y si estos lo conocen le transmiten su rangos de confianza. En caso de no conocer el consultado al agente evaluado, remite una lista de sus conocidos al solicitante para que le consulte a éstos (Con esta lista quien solicita la información de confianza puede consultar a éstos y repetirse este proceso hasta llegar a una profundidad determinada). Una vez recolectados los testimonios de un conjunto de testigos A = {w1, w2,…wn} se procede a armar la confianza total: Como: Πa = Tw1 ¤ Tw2 ¤… ¤ Twn Donde: ¤ es la suma ortogonal. Πa es la nueva función m total al agente medido Víctor Daniel PODBEREZSKI - 23 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Twn es la función m del testigo n Para cada elemento será: Por ejemplo, si tengo el testimonio de 2 agentes tal que w1 m1({T}) = 0.8 m1({-T}) = 0 m1({T, -T}) = 0.2 w2 m2({T}) = 0.9 m2({-T}) = 0 m2({T, -T}) = 0.1 Entonces: Πa = Tw1 ¤ Tw2 M12({T}) = 0.72 + 0.08 + 0.18 = 0.98 M12({T, -T}) = 0.2 * 0.1 = 0.02 M12({-T}) = 0 De esta forma se realiza la misma comparación con un umbral que puede ser diferente para decidir si es confiable o no. 2.4.10 Castelfranchi y Falcone El modelo de confianza propuesto por Castelfranchi y Falcone [Castelfranchi & Falcone 1998] es un ejemplo claro de un modelo de reputación cognitivo. La base de este modelo es la fuerte relación entre confianza y delegación. Los autores afirman que “La confianza es el trasfondo mental de la delegación” En otras palabras, la decisión que lleva a un agente “x” a delegar una tarea al agente “y” está basada en un conjunto especifico de creencias y objetivos y su estado mental es lo que llamamos “confianza”. Por lo tanto “Sólo un agente con creencias y objetivos puede confiar” Para construir el estado mental de confianza, las creencias básicas que un agente requiere son: Víctor Daniel PODBEREZSKI - 24 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Creencia de competencia: El agente debe creer que el agente y puede realizar realmente la tarea. Creencia de dependencia: El agente cree que “y” es necesario para realizar la tarea o que es mejor descansar en y para realizarla. Creencia en la disposición: No únicamente es necesario que “y” pueda hacer la tarea, sino que además realmente la lleve a cabo. En caso de un agente intencional, la creencia en la disposición debe ser articulada y soportada por dos creencias mas: o Creencia de deseo: El agente cree que “y” ha decidido e intenta hacer A (donde A es la acción que permite G). o Creencia de persistencia: El agente cree que “y” es estable en sus intenciones de hacer A. Las primeras dos creencias componen lo que llaman como confianza central y juntos con la creencia en la disposición, la confianza. Soportada e implícita por las otras, otra creencia se levanta: - Creencia de cumplimiento: Si el agente “confia en y para G”, el agente decide: (i) no renunciar a G, (ii) no llevarlo a cabo personalmente, (iii) no buscar una alternativa a y (iv) perseguir G a través de “y”. Para resumir, la confianza es un conjunto de actitudes mentales que caracterizan la “delegacion” en la mente de un agente (x) que prefiere que otro agente (y) realice la tarea. “y” es un agente cognitivo, por lo tanto “x” cree que “y” intentara realizar la acción e “y” persistirá en esto. El grado de confianza es una función de la fuerza de las creencias de confianza. Cuanto mayor es la creencia de “x” en la competencia y disposición de “y”, mayor es la confianza de “x” en “y”. El grado de confianza es utilizado para formalizar una base racional para la decisión de depender y apostar por “y”. También relevante es el grado de importancia del objetivo que se quiere lograr mediante la delegación. El grado de confianza resultante es obtenido multiplicando el nivel de aquellas creencias y objetivos útiles a la relación de confianza. Si este valor excede cierto umbral y es además la mejor solución de todas las disponibles, entonces la decisión de delegar es la tomada. 2.4.11 Esfandiary y Chandrasekharan En el modelo propuesto por Esfandiari y Chandrasekharan [Esfandiari & Chandrasekharan 2001] dos mecanismos de adquisición de confianza son presentados. El primero está basado en la observación. Proponen el uso de redes bayesianas y conseguir la adquisición de la confianza mediante aprendizaje Bayesiano. En el caso más simple de una estructura conocida y una red Víctor Daniel PODBEREZSKI - 25 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE bayesiana totalmente observable, la tarea de aprendizaje se reduce a consideraciones estadísticas. El segundo método de adquisición de confianza se basa en la interacción. El acercamiento es igual al usado en [Lashkari et al 1994]. Hay dos protocolos principales de interacción, el protocolo exploratorio donde el agente les pregunta a los demás acerca de temas que conoce para evaluar su grado de confianza y el protocolo de consulta donde el agente pide consejo a agentes confiables. Una manera simple de calcular la confianza basada en la interacción numeroderespuestascorrectas . durante la etapa exploratoria es usando la formula Tint er = numerototalrespuestas Para manejar la información de testigos, cada agente construye un grafo directo etiquetado donde los nodos representan agentes y donde un arco (a,b) representa el valor de confianza que “a” tiene de “b”. Los arcos están ausentes en el caso de que el valor de confianza sea desconocido. En un grafo de estas características es posible que se creen ciclos que artificialmente disminuyan el valor de confianza y diferentes caminos que retornan valores contradictorios. Para resolver este problema, en vez de usar un valor simple de confianza el modelo usa un intervalo de confianza determinado por el mínimo y máximo valor de todos los caminos sin ciclos que conectan dos agentes. El autor afirma que el cálculo del intervalo de confianza es equivalente al problema del ruteo en una red de comunicación y, por lo tanto algoritmos distribuidos conocidos utilizados para resolver ese problema pueden ser aplicados exitosamente para esta situación. Para permitir la noción de confianza multi contextual los autores proponen la utilización de arcos “coloreados”, con un color por tarea o tipo de confianza. Finalmente los autores proponen un mecanismo de obtención de confianza utilizando instituciones, lo que llaman confianza institucionalizada. Esto es un concepto similar a la reputación de sistema en el modelo ReGreT [Sabater & Sierra 2002b]. La idea es explotar la estructura en el ambiente para arribar a los valores de confianza. No se brinda información acerca de cómo combinar los diferentes mecanismos de adquisición de confianza. 2.4.12 REGRET REGRET [Sabater & Sierra 2002a, Sabater & Sierra 2002b, Sabater 2003] es un mecanismo de reputación que permite tomar en cuenta tres tipos de dimensiones de reputación: La individual, la social y la ontológica. Víctor Daniel PODBEREZSKI - 26 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE La dimensión ontológica es la coexistencia de diferentes tipos de reputación y su combinación entre ellos para obtener nuevos tipos. Por ejemplo la reputación de una empresa de transporte aéreo estará compuesta por la reputación de su comida, personal a bordo, hora de llegada, entre otras. En general cada individuo tiene una estructura ontológica para combinar la reputación y diferente importancia a cada uno cuando estas son combinadas. Por ejemplo a un individuo en particular puede no importarle la comida de a bordo. Como cada miembro de la sociedad tiene su punto de vista, cada agente puede guardar diferentes impresiones de una misma interacción y además cada agente puede medir diferentes aspectos (tener su propia estructura ontológica), por lo tanto la reputación es una percepción subjetiva y personal. La dimensión individual se utiliza para calcular la reputación teniendo en cuenta las pasadas experiencias propias con el agente a evaluar dentro de un contexto. Para luego de cada interacción se realiza un registro de la impresión del resultado obtenido. Para esto se puede representar el conocimiento adquirido como la tupla: i = (a; b; o; φ; t;W) Donde “a” y “b” son los agentes que interactúan (siendo “a” quien está juzgando). “o” es la interacción que origino la impresión, “φ” es la variable juzgada, “t” el tiempo cuando fue registrado la impresión y W el valor de impresión entre -1 y 1. Donde se entiende que -1 es que el resultado es muy malo y 1 que es muy bueno. Un ejemplo podría ser (a; b; o1; hora de llegada; 17:16; 0,8) donde se estaría diciendo que la interacción “o1” entre “a” y “b” que se registró a las 17:16hs en cuanto a la hora de llegada fue calificada con 0,8 (un valor bastante alto de reputación). Para el cálculo de reputación teniendo en cuenta estas impresiones almacenadas se seleccionan aquellos registros en donde se involucra al agente a evaluar y que contengan las variables a juzgar y se las promedia en forma ponderada. Dándole más preeminencia a ciertas variables y a las impresiones más recientes que las más antiguas. La dimensión social se utiliza para conocer información de ciertos agentes gracias a la impresiones de otros agentes. El sistema establece la existencia de grupos de pertenencia al que un agente se subordina. Se tienen en cuenta la interacción del agente evaluado con los miembros de su grupo, la información que el grupo propio tiene con respecto al agente y finalmente la información que tiene el grupo propio del grupo del agente evaluado. Estos valores junto a la apreciación personal se suman convenientemente ponderados para obtener un valor de reputación final. Víctor Daniel PODBEREZSKI - 27 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE El sistema incorpora un módulo de credibilidad que permite a un agente medir la confiabilidad de un testigo y la información que brinda. 2.4.13 NodeRanking NodeRanking es un método de obtención de reputación propuesto por [Pujol & Sangüesa 2001, Pujol et al 2002a, Pujol et al 2002b, Pujol et al 2003]. Los autores afirman que el método es un mecanismo para clasificar la importancia de nodos en un grafo. Acotan que el problema no es nuevo en la literatura, pero que su solución se diferencia por ser realmente una metodología descentralizada. NodeRanking utiliza información sociológica para evaluar la confianza. Para eso utiliza una red social, una representación de las relaciones que existen dentro de una comunidad de la gente. Esta red social es representada mediante un grafo. El autor afirma que los enlaces que existen entre individuos en redes sociales son indicadores de reputación confiables, es decir ellos proporcionan una medida de la honradez de un individuo La calificación que NodeRanking crea está basada en la idea que cada nodo en el gráfico tiene asociado un grado de autoridad, que es siempre positivo. Al principio, todos los nodos tienen la misma autoridad. Después de ejecutar NodeRanking la medida de autoridad resultante es usada para deducir la reputación de un nodo dentro del gráfico. NodeRanking es capaz de calificar los nodos en un gráfico usando únicamente información local para calcular la información de reputación de un individuo. La autoridad de un nodo “i” es calculada en función de los nodos que apuntan a i, y el valor de autoridad por defecto se le asigna a los nodos no apuntados por ningún otro nodo en el grafo. Al modificar la autoridad de un nodo, calculada mediante su valor actual y el valor de los arcos de entrada, este cambio se propaga en sus arcos de salida e influye a los nodos con los que esta conectado. En definitiva es un algoritmo iterativo que, los autores aseguran, luego de un tiempo converge. Los valores de reputación son valores entre el rango continuo de 0 y 1. NodeRanking sigue la estrategia del caminante fortuito para explorar el grafo. Comienza en un nodo seleccionado al azar y procede seleccionando como próximo nodo a uno que puede ser alcanzado mediante el actual a través de un arco de salida. 2.4.14 FIRE FIRE [Huynh et al 2004a, Huynh et al 2004b] es un modelo de reputación y confianza integrada que tiene en cuenta cuatro tipos de de reputación: confianza de interacción, confianza basada en el rol, reputación de testigos y reputación certificada. Para la Confianza de interacción, se vale de la información obtenida por la interacción directa, y utiliza el Víctor Daniel PODBEREZSKI - 28 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE mecanismo propuesto por REGRET [Sabater & Sierra 2002a, Sabater & Sierra 2002b, Sabater 2003] en su dimensión individual. La confianza basada en el rol se calcula por una serie de reglas tipificadas por el usuario (el agente que va a determinar una reputación). En cada una de estas reglas se debe identificar el rol tomado por cada agente (el propio y el evaluado), el aspecto analizado, la performance esperada del agente (un valor entre -1 y 1) y el peso de esa regla en la evaluación general de la confianza basada en el rol (un valor entre 0 y 1). Por ejemplo, el agente toma el rol de “comprador” y el agente evaluado de “vendedor” y se analiza el aspecto de “calidad” y se espera que el valor sea -0,2 (que el vendedor entregue menor calidad de la prometida) y la influencia de esa regla es de 0,8 (alta). Para el cálculo total de este aspecto se realiza un promedio ponderado de cada una de las reglas que se aplican a un caso en particular. No se especifica la manera de asignar los roles. La reputación de testigos se obtiene consultando a otras agentes (testigos) sobre la reputación de un agente a evaluar. Para esto se propone una variante de la propuesta por [Yu & Singh, 2000; 2001a; 2001b] para la obtención de este valor. En este caso la información devuelta por cada agente retornado se ajusta al formato utilizado también en la confianza de interacción. Todos estos datos son promediados para el cálculo final de este valor. El último tipo de reputación tenida en cuenta, la reputación certificada, es presentada como un campo novel por sus autores. La reputación certificada son las mediciones de reputación presentadas por el agente evaluado sobre si mismo que obtuvo de otros agentes a través de otras interacciones [Huynh et al 2004a, Huynh et al 2004b]. Para hacer esto cada agente guarda en el historial propio los resultados de sus interacciones con los valores de reputación que le otorgó la contraparte (teniendo necesariamente que pedirle esta información). Este historial de accionar se lo entregará al agente que esta analizando su contratación. Los autores indican que esta es una información sesgada pues un agente solo puede entregar información positiva y ocultar la negativa. No obstante aseguran que esa información parcial es verdadera y válida. Para el cálculo final de la reputación realizan un promedio ponderado de todos los valores de reputación anteriores. 2.4.15 Resumen Se presenta a continuación una tabla (Tabla 1) que resume los modelos de reputación antes descriptos: Víctor Daniel PODBEREZSKI - 29 - Tipo de paradigma Fuentes de información Tipo de visibilidad Granularidad del modelo Asunción del comportamiento de los agentes Tipo de información intercambiada MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE S. Marsh AM ID Pr MC NA** NA** Sporas AM IT G SC N1 -1, 0 o 1 Histos. AM IT, ID Pr SC N1 NE* Schillo et. al. AM ID, OD, IT Pr SC N2 Booleana Abdul-Rahman y Hailes AM ID, IT MC N3 4 valores enteros Sen y Sajja AM ID, OD, IT Pr SC N3 Booleana AFRAS AM ID, IT Pr SC N3 Valor difuso Carter et al. AM IT G SC N1 Entre 0 y 1 Yu y Singh AM ID, IT Pr SC N1 3 valores entre -1 y 1 Castelfranchi y Falcone AC NE* Pr MC NE* NE* y AM ID, OD, Pr IT, P MC N1 Entre 0 y 1 REGRET AM ID, IT, IS, Pr P MC N3 Entre -1 y 1 NodeRanking AM IT G SC NA** NA** FIRE AM ID, IT, IS Pr MC N1 Entre -1 y 1 Esfandiary Chandrasekharan Pr * No explicitado ** No aplicable Referencias: AC: Aproximación Cognitiva. AM: Aproximación Matemática Víctor Daniel PODBEREZSKI ID: Interacción Directa OD: Observación Directa - 30 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE IT: Información de Terceros IS: Información Sociológica. P: Prejuicio. G: Global Pr: Privada MC: MultiContexto SC: Sin Contextos N1: Los agentes no mienten ni ocultan información N2: Los agentes no mienten pero pueden ocultar información N3: Los agentes pueden mentir Tabla 1: Resumen de modelos de reputación 2.5 Ontologías de reputación No existen disponibles gran cantidad de ontologías para la medición y administración de reputación. Trust ontology [Trust ontology 2006] es una ontología pequeña escrita en OWL/RDF [Dean et. Al. 2002] que permite a una persona decir cuanto confía en otra en una área especifica. Utiliza una única métrica consistente en una escala del 1 al 10. Christoph Görn [Görn 2006] extiende la ontología anterior presentándola como una tupla de 5 elementos del estilo “A confía en B en un tema C durante el tiempo T en un nivel L”. A y B son personas, C es el tema evaluado, T es un intervalo de tiempo en el que es válida la apreciación y L es el nivel de confianza en la escala de 1 a 10. Sara Casare y Jaime Sichman [Casare & Simão Sichman 2005] proponen una ontología completa que tiene en cuenta diferentes conceptos de la reputación, como la fuente de información, el rol de los agentes, la modificación en el tiempo del comportamiento; entre otras cosas, pero no tiene en cuenta diferentes métricas (únicamente discrimina en un comportamiento adecuado o inadecuado) y no presenta una descomposición temática del proceso a reputar. Víctor Daniel PODBEREZSKI - 31 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Capitulo 3 Descripción del problema 3.1 Introducción En este capitulo se presenta la situación que es abordada en esta tesis. En la sección 3.2 se detalla el problema a abordar con las diferentes características del mismo. La sección 3.3 detalla el objetivo a concretar y el marco de trabajo en el que se efectúa. 3.2 Características de los sistemas de reputación. Existe un principio que dice que los agentes no mienten a menos que se los programe para que se comporten de esa manera. Puede suceder que a veces no cumplan un contrato pactado, simplemente por que no son capaces (sea por una cuestión de diseño o por una situación imprevisible en el ambiente donde trabajan) o por haberlos desechado. Así como en la vida real aquellos compromisos que vamos cumpliendo o quebrantando nos van generando con terceros una reputación que puede ser favorable o no. Ese mismo concepto es deseable en la interacción entre agentes Hay una gran cantidad de propuestas de modelos de reputación pensados para el intercambio y administración de opiniones sobre la confianza de las capacidades de diferentes agentes. En el capítulo anterior se presentó un conjunto representativo. El intercambio de reputación puede ser utilizado en diversos escenarios y situaciones donde diferentes necesidades y restricciones se presentan. Cada uno de ellos con sus particularidades se ajustará mejor a un modelo dado o a alguna variante del mismo. Se debe poder generar apreciaciones de reputación sobre el comportamiento de un agente ante un contrato entre partes (tanto privado como un contrato social). La reputación es evaluada sobre un agente y es realizada por otro y es almacenada por un tercero para su posterior manipulación y consulta. La reputación puede ser originada mediante diferentes fuentes de información y se debe permitir discriminar entre diferentes contextos dentro de la medición para diferentes acciones de tal forma que se pueda almacenar diversos aspectos de cada uno de ellos (temas) en función de una taxonomía. La reputación debe poder ser almacenada en forma centralizada, descentralizada o una combinación de estas dos (por ejemplo ciertas variables del contexto de la reputación de los contratos medidos o administrados por agentes centralizados y otras almacenadas en forma privada por cada agente). Su valor puede ser absoluto o relativo. Víctor Daniel PODBEREZSKI - 32 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Debe ser posible consultar cuáles agentes administran cierto tema y la reputación de uno o más agentes sobre uno o más temas. Una cuestión importante también es la posibilidad de utilizar diferentes métricas para la medición de la reputación, pues diferentes modelos de reputación o incluso diferentes agentes manejan diferentes maneras de evaluar la confianza en un tercero. El mecanismo de cálculo debe poder establecerse y las formas de determinar que fuentes de información son confiables y ajustar las mediciones de otros según consideremos que es un estimador riguroso o no. Existe la necesidad de generar una ontología para el intercambio de reputación y los protocolos de comunicación adecuados para lograr un intercambio y consulta eficiente. 3.3 Objetivo. La mayoría de las soluciones presentadas abordan casos puntuales y utiliza modelos fijos y preestablecidos. Existe la necesidad de generar una arquitectura flexible para ser utilizada en la mayor cantidad de situaciones posibles. Se desea poder adaptar la solución para enfrentar a cambios de la realidad o ser plausible de reutilización en situaciones similares. Un ejemplo típico de esto es el analizado en [Podberezski & Ierache 2006] en la cadena de suministros industriales. Se desea poder integrar modelos de reputación existentes generando una arquitectura de reputación flexible, escalable y configurable según la situación a abordar. Víctor Daniel PODBEREZSKI - 33 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Capitulo 4 Solución propuesta 4.1 Introducción Se desarrolla en el transcurso del presente capitulo una solución encontrada a la problemática presentada en el capítulo anterior. Para eso se propone una arquitectura para la administración de la reputación y junto a ella se presenta una ontología capaz de representar el conocimiento a intercambiar en la arquitectura y protocolos de interacción que reglen como se deben realizar la comunicación e intercambio de información entre los agentes. 4.2 Arquitectura de administración de reputación Se propone una arquitectura flexible, escalable y abierta para la administración de la reputación que facilite la implementación y el mantenimiento de la reputación en diversas situaciones de acuerdo a sus características. La flexibilidad se entiende como su capacidad para adaptarse a las particularidades de cada escenario. La escalabilidad como la posibilidad de utilizarse en diversas escalas desde grandes comunidades de agentes hasta un grupo reducido de ellos. Por último la apertura marca la posibilidad de agregar nuevas características para hacer frente a escenarios que las requieran. Las principales operaciones que debe responder un agente de administración de reputación que haga uso de la arquitectura propuesta son las siguientes: a. b. c. d. Medición de reputación Actualización de reputación Pedido de reputación. Información de reputación Para lograr estos objetivos se debe contener además mecanismos para proveer el conocimiento para llevar a cabo los mismos, entre estos mantener las fuentes de información, métricas para la ponderación, formas de cálculo, taxonomía de la reputación entre otros datos posiblemente necesarios. En la figura 1 se puede observar un esquema que muestra la interface de cada agente de administración de reputación con el exterior, es decir con otros agentes que deseen interactuar con el. Víctor Daniel PODBEREZSKI - 34 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 4.2.1 Medición de reputación La medición de reputación consiste en el procedimiento que realiza un agente de reputación para obtener una medida de confianza a un agente. Para ello se basa en la información del comportamiento pasado y las relaciones sociológicas del agente estudiado más los prejuicios propios, o cualquier otro juicio que le sea útil para decidir si confiar en él. La finalidad de la obtención de la reputación es determinar si un agente es digno para delegarle una tarea específica o permitirle la realización de una acción. En ocasiones se deseará seleccionar a un agente entre un conjunto de posibles candidatos, en ese escenario el pedido de reputación se realizará para cada uno de los agentes aspirantes. 4.2.2 Actualización de reputación La Actualización de reputación es el proceso que realiza un agente para agregar una nueva percepción de confianza sobre el accionar de otro agente con respecto al cumplimiento de un acuerdo pactado o a una acción realizada. Esa percepción puede obtenerse mediante la observación directa del comportamiento del agente analizado con respecto a un tercero o hacia el agente mismo. O puede estar dada por información dada por un tercero. La actualización agrega nueva información que puede ser almacenada localmente por el agente o por un tercero. 4.2.3 Pedido de reputación. El pedido de reputación es el proceso por el cual un agente consulta a otro sobre la confianza que tiene sobre un tercero. Este proceso utiliza como parte la medición de reputación para construir un valor de confianza utilizando las opiniones de otros agentes. El pedido se puede realizar a agentes especializados en la administración de la reputación o a pares. 4.2.4 Información de reputación La información de reputación, por último, es el proceso de comunicar a otro agente una apreciación de reputación que se tiene sobre el comportamiento de un tercero sobre un tema específico. Puede producirse como respuesta a un pedido de reputación o como una parte de la actualización de reputación. En el caso de recibir un pedido de reputación y no tener información para comunicar, una alternativa es enviar una derivación a uno o varios agentes que pueden darla. 4.2.5 Gestión e intercambio de información administrativa Para la administración de la reputación se requiere un conjunto de información lindante que soporte los procesos de gestión de reputación. Debe poder ingresar, eliminar e intercambiar información como las métricas, tipos de contrato, temas, fuentes entre otras para mantener la coherencia y la flexibilidad de la arquitectura. Víctor Daniel PODBEREZSKI - 35 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Intercambio información administrativa Pedido de reputación Medición de la reputación Información de reputación Actualización de reputación Agente de administraci ón de reputación Agente de administraci ón de reputación Agente de administraci ón de reputación Agente de administraci ón de reputación Figura 1: Esquema de la arquitectura de reputación. 4.3 Ontología de administración de reputación A continuación, y antes de profundizar en la arquitectura, se presenta la ontología utilizada para representar el conocimiento dentro de la arquitectura de administración de reputación. Se describen los conceptos que componen la misma así como los axiomas que lo limitan y ponen en contexto. 4.3.1 Agentes Se Sigue la definición de [Russell & Norving 1995; Wooldridge 2002] y se considera a un agente a un sistema de computación que se encuentra situado en un ambiente y es capaz de un comportamiento autónomo con la misión de cumplir sus objetivos de diseño. Un agente debe poder ser identificado unívocamente para diferenciarlo de otros. Un Agente de reputación es un agente con capacidad de evaluar y administrar reputación sobre una cantidad de tipos de contratos y un conjunto de temas. Se pude subdividir en 2 grupos agentes administradores o agentes reputadores. Un Agente administrador es un agente de reputación que administra y almacena valores de reputación. Es capaz de solicitar o recibir información de reputación para su manipulación. Un Agente reputador es un agente de reputación que toma el rol de evaluar un aspecto del accionar de un agente reputado en la resolución de un contrato. Víctor Daniel PODBEREZSKI - 36 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Un Agente reputado es un agente cuyo accionar para la resolución de un contrato es objeto de reputación. Axiomas: - Un mismo agente no puede tomar el rol de reputador y reputado para la evaluación de un mismo contrato. - Sin embargo en diferentes contratos un mismo agente puede ser objeto de evaluación de reputación (agente reputado) o Agente administrador. - En el mismo contrato no hay restricción en que un mismo agente sea reputador y administrador. 4.3.2 Fuente de información Una fuente de información corresponde al medio por el cual fue obtenida una medición de reputación. Las fuentes de información pueden ser primarias o secundarias. Las fuentes de información primarias son aquellas que se obtienen por la evaluación de un contrato donde el agente reputador es testigo de su concreción. Bajo esta categoría el agente reputador puede ser un observador del contrato o ser partícipe directo del mismo. Las fuentes de información secundarias son aquellas que se construyen a partir de fuentes primarias e implican generalización, análisis, síntesis, interpretación o evaluación de las mismas. Se subdividen a su vez en: - Reputación propagada que es la obtenida de terceros - Reputacion sociológica que es construida de acuerdo al concepto que tiene la sociedad entera de un agente (generalmente de acuerdo a la posición o el papel del agente en la sociedad) - El prejuicio. Axiomas: - Un valor de reputación tiene corresponde a una fuente de información. 4.3.3 Tipo de contrato Agrupa a un conjunto de acciones, comportamientos o tópicos realizados por agentes a reputar de igual naturaleza. Diferentes tipos de contratos pueden ser almacenados o evaluados por diferentes agentes de reputación. Un tipo de contrato da un contexto a la acción evaluada. Una definición de contexto es “cualquier información que puede ser usada para caracterizar la situación de entidades (por ejemplo una persona, un lugar o un objeto) que son consideradas relevantes en la interacción entre un usuario y una aplicación, incluyendo al usuario y la Víctor Daniel PODBEREZSKI - 37 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE aplicación misma.” [Dey & Abowd, 2000a]. Esta misma definición es útil a nuestro análisis realizan algunos ajustes. Por lo tanto diremos que “El contexto es cualquier información que pueda ser utilizada para caracterizar una situación de entidades entre dos o mas agentes que interactúan entre si para lograr un objetivo dado.” Axiomas: - Un tipo de contrato tiene un conjunto de temas que lo conforman. - Agentes de reputación administran y reputan un conjunto de tipos de contrato. 4.3.4 Tema Faceta de un tipo de contrato que es calificada. Un tipo de contrato se divide en diferentes aspectos en función de una taxonomía que son medidos mediante la reputación. Estos temas a su vez pueden contener subtemas que también son medidos. La combinación de todos generan los temas de un tipo de contrato y conforman la evaluación del comportamiento de un agente en un contrato. Puede verse también como un atributo del contrato a evaluar. Entendiéndose a un atributo como una propiedad mensurable, física o abstracta, que comparten todas las entidades que pertenecen a una categoría de entidad que satisfacen un cierto predicado común [ISO-15939]. Por ejemplo si un tipo de contrato es proveer tubos para la construcción de tuberías, los temas a reputar podrían ser la calidad de los tubos, la atención brindada durante la concreción del contrato y el servicio post-venta. La calidad de los tubos podría subdividirse en la presión máxima que soportan, resistencia a la corrosión y la resistencia térmica entre otras características. Axiomas: - Diferentes tipos de contratos pueden contener mismos temas para la medición. - Diferentes temas pueden compartir subtemas de evaluación. - Diferentes agentes de reputación pueden administrar y almacenar reputación de diferentes temas. 4.3.5 Contrato a evaluar Un contrato a evaluar corresponde a las obligaciones adquiridas entre dos o más agentes que pactan un acuerdo sobre una declaración de voluntades común destinada a reglar sus derechos y obligaciones El resultado de este contrato es el objeto de evaluación del comportamiento de cada agente. A medida que se evalúan los contratos de un agente se modifica la reputación de cada uno de ellos de acuerdo a su accionar. Víctor Daniel PODBEREZSKI - 38 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE El contrato o hito a evaluar puede verse como una entidad. Donde una entidad puede definirse como un objeto que va a ser caracterizado mediante una medición de sus atributos [ISO-15939]. Axiomas: - Un contrato pertenece a un tipo de contrato. - Un contrato es calificado en 1 o mas mediciones de reputación. 4.3.6 Métrica: La métrica define el método de cálculo utilizado para medir la reputación de un tema de un contrato. Está compuesto por tipo de valor que utiliza y una escala. Axiomas: - Un agente de reputación utiliza un conjunto de métricas para la valorización de cada uno de los temas a reputar. - Una medición de reputación está dada por una escala determinada. 4.3.7 Escala: Una escala es un conjunto de valores con propiedades definidas [ISO/IEC ISO14598-1 1999]. Toda escala es de un cierto “Tipo de Escala”. Un Tipo de Escala Indica la naturaleza de la relación entre los valores de la escala [ISO 15939]. Ejemplos de tipos de escala son: Nominal, Ordinal, Intervalo, Ratio y Absoluta Una escala numérica es aquella donde los valores medidos son números que pueden ser expresados en unidades en un sentido estricto. La misma puede ser continua o discreta. Puede estar acotada a un intervalo y tener un salto entre valor y valor (lo que le da la máxima precisión. Tienen una unidad. Una escala categórica es aquella donde los valores medidos son categorías y no se pueden expresar en unidades en un sentido estricto. Axiomas: - Una métrica contiene una escala - Una misma escala puede ser utilizada en diferentes métricas. 4.3.8 Unidad: Una unidad es una medida patrón definida y adoptada por convención contra la cual son comparadas otras cantidades de la misma clase, para expresar magnitudes en relación a esa cantidad [ISO/IEC 15939 2002]. Víctor Daniel PODBEREZSKI - 39 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 4.3.9 Reputación: Es la opinión o perspectiva (valoración) sobre el comportamiento de un agente (agente reputado) por otro agente (agente reputador) acerca de un tema de un contrato, expresada en una métrica en particular. Contiene la fuente de información indicando como obtuvo esa opinión y quien es el agente que administra esa información (agente administrador). Axiomas: - Un mismo tema de un contrato puede ser almacenado por diferentes agentes administradores - Un mismo tema de un contrato puede estar medido con métricas diferentes - Un mismo tema de un contrato puede provenir de otra fuente de información y tener una valoración diferente. - Un mismo tema de un contrato, una misma fuente de información, un mismo agente reputador no pueden tener diferentes valoraciones con una misma métrica. - Una medición de reputación dada tiene una métrica, un tema, una fuente de información, un agente reputado, un agente Administrador y reputador. Como resumen se muestra en la figura 2 los conceptos y las relaciones entre ellos de la ontología. Víctor Daniel PODBEREZSKI - 40 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Figura 2: Diagrama UML de la ontología. 4.4 Interacción entre agentes En un modelo de reputación es fundamental determinar como serán las interacciones entre agentes participantes. En primer lugar se encuentran las interacciones para la administración de reputación y en un segundo plano las interacciones de configuración. El primer grupo incluye: 1. Solicitud de Reputación 2. Actualización de reputación 3. Intercambio de información administrativa Víctor Daniel PODBEREZSKI - 41 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE El segundo grupo de interacciones tiene que ver con el proceso de establecer una comunicación exitosa. Incluye la conexión, la negociación de un metalenguaje de comunicación, la verificación de la identidad entre otros aspectos. Para cada una de estas interacciones se debe contar con un protocolo que regle como será la dinámica de la comunicación. Se detallará a continuación las interacciones de administración de reputación: 4.4.1 Solicitud de reputación La solicitud de reputación es un protocolo interacción entre 2 agentes. El agente iniciador del mismo es el interesado en conocer la reputación de un tercero. El agente participante es quien recibe la solicitud y contestara, si así lo desea, con la información que tenga disponible sobre el agente consultado. La figura 3 detalla la interacción entre las partes y para su diagramación se utiliza una extensión de UML propuesta por [Odell2001]. Para la estructura de los mensajes se utilizara Agent Communication Language (ACL) [FIPA00061] de FIPA El agente que da comienzo a la interacción es el iniciador. El mismo emite un mensaje de solicitud de reputación (query-ref) [FIPA00037]. Este mensaje incluye el agente de quien se desea obtener la reputación, el contexto del contrato, el atributo a medir y la fecha de caducidad de la solicitud de reputación. Además cada interacción que utiliza este protocolo de interacción es identificada por un parámetro globalmente único, no nulo, asignado por el iniciador que determine unívocamente la instancia de comunicación. Los agentes participantes deben insertar este identificador en todos los mensajes de la conversación. Esto permite a cada agente a manejar sus actividades y estrategias de comunicación. El motivo de la fecha de caducidad es para evitar que un agente tenga que esperar un tiempo indeterminado por una respuesta que puede nunca llegar. De esta forma los agentes tienen un tiempo finito para decidir responder la solicitud de reputación. Cualquier mensaje que llegue luego de la fecha de caducidad es automáticamente rechazado por haber llegado tarde. Víctor Daniel PODBEREZSKI - 42 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Solicitud de reputación Iniciador Participante query-ref inform-reputation : inform inform-source : inform inform-unknown : inform Figura 3: Solicitud de reputación El agente participante al recibir el mensaje de pedido de reputación puede optar por ignorar el mensaje o proceder a realizar los mecanismos internos para el cálculo de la reputación solicitada. Los resultados de este proceso pueden ser 3 respuestas diferentes. La primera respuesta posible es la información de reputación. Esto se da en forma de información de reputación (inform-reputation de tipo inform) [FIPA00037]. Esta repuesta contiene la información de reputación recabada del agente bajo el contexto solicitado en el atributo solicitado en una métrica dada. La segunda respuesta posible es información de fuentes posibles a quien consultarle sobre ese mismo atributo de reputación consultado. Este respuesta se da en forma de información de fuentes (inform-source de tipo inform) [FIPA00037]. Este tipo de respuesta es útil para utilizar el protocolo en modelos de reputación como el propuesto por [Yu & Singh, 2000; 2001a; 2001b]. Por último la tercera respuesta posible es indicar el desconocimiento de la información solicitada. Para esto se envía un mensaje de Desconocido (inform-unknown de tipo inform) [FIPA00037]. De esta forma se indica que no esta disponible la información de reputación solicitada. Víctor Daniel PODBEREZSKI - 43 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE El protocolo explicado puede ser utilizado en cascada. Esto es: para satisfacer el pedido de reputación un agente puede decidir realizar él mismo pedidos reputación a un conjunto de pares para completar su conocimiento y llegar a un valor de confianza sobre el agente consultado. Este procedimiento puede verse en la figura 4. Hay que tener en consideración que dado que las solicitudes de reputación tienen una fecha de caducidad el proceso en cascada esta limitado y dependiendo de lo extenso del tiempo serán los niveles posibles de interconsultas. Solicitud de reputación Solicitud de reputación Iniciador Participante Participante2 query-ref query-ref inform-reputation : inform inform-reputation : inform inform-source : inform inform-unknown : inform inform-source : inform inform-unknown : inform Figura 4: Solicitud de reputación en cascada Si bien existen varios protocolos ofrecidos por FIPA para la interacción, no existe uno adecuado para la solicitud de reputación. El que más se le aproxima en su funcionalidad es el FIPA Query Interaction Protocol [FIPA00027]. Sin embargo este cuenta con un paso intermedio para rechazar o aceptar el pedido. Este paso extra se hace innecesario en nuestro protocolo, pues previendo la consulta de muchas fuentes este intercambio agrega sobrecarga al medio de comunicación innecesarios ya que si el agente que inicia la interacción no recibe la respuesta antes del vencimiento de la fecha de caducidad supondrá que la contraparte rechazó contestar la solicitud. Del mismo modo si recibe una respuesta estará seguro de la intención de la contraparte de responderle. Otra diferencia fundamental son las posibles respuestas a la solicitud. FIPA Query Interaction Protocol sólo brinda la réplica de la solicitud recibida o el fracaso en su respuesta. En el protocolo expuesto se requiere una respuesta posible más: un conjunto de agentes referidos a los que se les puede formular la misma pregunta. Víctor Daniel PODBEREZSKI - 44 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 4.4.2 Actualización de reputación La actualización de reputación es un protocolo interacción entre 2 agentes. El agente iniciador del mismo es el interesado en dar a conocer la reputación de un tercero. El agente participante es quien recibe la actualización y contestará, finalmente si acepta la información o la rechaza. La figura 5 detalla la interacción entre las partes y para su diagramación nuevamente se utiliza una extensión de UML propuesta por [Odell2001]. Para la estructura de los mensajes se sigue utilizando Agent Communication Language (ACL) [FIPA00061] de FIPA El agente que da comienzo a la interacción es el iniciador. El mismo emite un mensaje de actualización de reputación (request) [FIPA00037]. Este mensaje es un pedido de actualización de información que contiene un valor reputación de un atributo en una métrica de un agente analizado. Además se identifica la interacción con un parámetro globalmente único, no nulo, asignado por el iniciador que determine unívocamente la instancia de comunicación. Los agentes participantes deben insertar este identificador en todos los mensajes de la conversación. Esto permite a cada agente a manejar sus actividades y estrategias de comunicación. El participante recibe el pedido y considera si es apropiado para agregarla a su base de conocimientos. A partir de ahí surgen dos posibles resultados, la aceptación o el rechazo de la nueva información recibida. En caso de considerar que es conveniente la captación de la información y su inclusión en la base de conocimientos procede a agregarla e informa al iniciador mediante a un mensaje de aceptación del mismo que acepta la información recibida (Agree) [FIPA00037]. En caso de considerar que no es conveniente la captación se procede a informar a la contraparte de la impugnación y circunstancialmente indicar los motivos de la decisión (Refuse) [FIPA00037]. Víctor Daniel PODBEREZSKI - 45 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Actualización de reputación Iniciador Participante request refuse Agree Figura 5: Actualización de reputación El protocolo presentado es similar a Request Interaction Protocol [FIPA00026]. Aunque a diferencia del anterior como el pedido de actualización no requiere de la información del resultado de la operación entonces la segunda parte del protocolo de Pedido no es necesaria y en este caso se omite. 4.4.3 Intercambio de información administrativa El intercambio de información administrativa tiene como objetivo distribuir el conocimiento entre los agentes para la administración de la reputación. En ciertos modelos de reputación es necesario el intercambio de información administrativa entre agentes. Un ejemplo de ellos son las fuentes de reputación. Para estas interacciones se utiliza el protocolo de FIPA Query Interaction [FIPA00027]. En la figura 6 se puede observar un diagrama de su funcionamiento. El iniciador es el agente que quiere obtener cierta información administrativa, por ejemplo un listado de agentes que brindan información de reputación. El participante es el agente a quien el iniciador envía la consulta. El protocolo comienza cuando el iniciador envía un mensaje de Query-ref solicitando al participante cierta información, en el ejemplo un listado de agentes a quien preguntarle sobre algún valor de reputación dentro de una esfera del conocimiento especifica. Víctor Daniel PODBEREZSKI - 46 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE FIPA-Query-Protocol Iniciador Participante Query-if Query-ref refuse [refused] Agree [agreed and notification necessary] failure inform-t/f : inform [query-if] [agreed] inform-result : inform [query-ref] Figura 6: Query Interaction Protocol Recibida la petición el participante puede optar por rechazar el pedido (Refuse) o aceptarlo (Agree). En caso de aceptar y de responder inmediatamente con la información no es necesario el envío de este último mensaje, sino que puede proceder a responder con el resultado de la petición. Una vez recabada la información el iniciador responde al iniciador con la pesquisa realizada. En este caso podría no haber encontrado ningún agente que brinde ese servicio y en tal caso enviará un mensaje de Failure [FIPA00037] al iniciador. En caso de encontrar agentes que satisfacen el requerimiento procede a enviar un mensaje inform-result (inform) al iniciador con la lista de agentes a quien se le puede consultar sobre la reputación en la esfera de conocimiento deseada. Víctor Daniel PODBEREZSKI - 47 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 4.5 Componentes de la arquitectura La arquitectura propuesta está dividida en un conjunto de módulos que cumplen funciones especificas y que interactúan entre si para lograr los objetivos para una correcta administración de la reputación. Cada uno de estos módulos tiene una interface definida de modo que la modificación de uno no incida en los otros (Figura 7). Se detallan brevemente las principales tareas de cada de estos módulos. - Administrador: Encargado de administrar las diferentes operaciones para la gerenciación de la reputación. Es quien se encarga de recibir los pedidos del exterior y ordenar su cumplimiento. Escucha continuamente por nuevas solicitudes entre ellas: inserción y solicitud de reputación, información sobre taxonomias, agentes de administración, tipos de contratos y métricas disponibles. - Medidor: Responsable del cálculo de la reputación de un agente de acuerdo a la información de reputación disponible. Determina de acuerdo al contexto qué se debe medir y cómo se debe interpretar lo medido para la creación de un valor de confianza. Establece la taxonomía a medir y un método de evaluación o cálculo. Por cada tipo de contrato existe una forma de medir la reputación de un agente. - Recopilador: Gestiona la recopilación y divulgación de las diferentes mediciones de reputación de un tema en especial para un agente dado. Responsable de la unificación de las mediciones para su manipulación posterior. Por cada métrica y tema existe una forma de calcular la reputación del tema de un agente dado. - Difusor: Encargado de conocer y dar a conocer agentes qué administran un tema especifico de reputación. Además registra qué métricas utiliza cada uno de ellos para comprender los valores de reputación y cuales métricas se utilizan localmente para el almacenamiento. Se puede diferenciar a aquellos agentes que están dispuestos a compartir su conocimiento de aquellos que únicamente están dispuestos a recibirlo. - Contacto: Se encarga de compartir o solicitar valores de reputación sobre un agente en un determinado tema. Se pueden diferenciar dos comportamientos principales: contacto externo y contacto interno. El primero se encarga de solicitar o informar reputación a un tercero El segundo se ocupa de mantener la información administrada localmente. Además puede solicitar a otros agentes diferentes informaciones administrativas para mantener operativo el sistema (por ejemplo nuevas métricas, tipo de contrato y temas disponibles). - Transformador: Se encarga de la traducción de un valor de reputación de una métrica a otra. Por cada par de métricas disponibles existe una función de transformación y su inversa. Además se dispone de un nivelador que se ocupa de, en una misma métrica, para Víctor Daniel PODBEREZSKI - 48 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE un agente en particular modificar un valor de medida aumentando o disminuyendo (si esto es posible) su valor de acuerdo a si el agente considera que el agente reputador es más exigente o menos a la hora de realizar sus apreciaciones. Agente de administración de reputación Medidor Recopilador Difusor Contacto Transforma dor Administrador ENTORNO Figura 7: Módulos de la arquitectura. En las siguientes secciones se detallarán cada una de las partes de la arquitectura. 4.6 Descripción de los módulos de la arquitectura 4.6.1 Administrador La administración es la parte principal de la arquitectura. Existe una única instancia de la clase de administración que se encuentra continuamente monitoreando el ambiente en espera de solicitudes de los otros agentes. Implementa la capa de comunicación. Las operaciones que puede realizar son: Listado de operaciones Operación Descripción (+) Agregar Se ocupa de insertar una reputación nueva medición de reputación al sistema de un determinado agente. La misma consiste en un valor en una métrica evaluando un tema de un contrato. Genera un objeto de tipo Recopilación disparando la operación pasándole la Víctor Daniel PODBEREZSKI - 49 - Entrada - Fuente de información - Agente Reputado - Contrato -Tema - Métrica Salida Éxito o fracaso de la inserción. MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Listado de operaciones Operación Descripción reputación a ingresar. Entrada - Valor Salida (+) Informar Reputación Se ocupa de atender el pedido de otro agente de reputación de un agente en un tema determinado. Opcionalmente se podría solicitar el valor resultante en una métrica particular. Genera un objeto recopilación del tema a medir y llama a la operación Obtener reputación pasándole el agente a reputar. El tema a medir no debe tener subtemas asociados. - Agente reputado - Reputación (+) Pedir Reputación Se ocupa de atender el pedido de otro agente de reputación de un agente en un tipo de contrato determinado. Genera un objeto medición y llama a la operación Obtener reputación pasándole el tema y el agente a medir. - Agente reputado - Tema - Métrica (opcional) - Reputación - Tipo de contrato (+) Obtener Taxonomía - Tipo Contrato Se ocupa determinar que temas componen un o determinado tipo de contrato. - Tema Otra variante permite obtener para un tema en particular, que subtemas lo conforma. - Lista de Temas (+) Obtener Métricas Se ocupa de informar que métricas soporta el agente. (vacío) - Lista de métricas (+) Obtener Tipos Se ocupa de informar que (vacío) - Lista de tipos de Víctor Daniel PODBEREZSKI - 50 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Listado de operaciones Operación Descripción de contrato tipos de contrato soporta el agente (+) Obtener Temas Se ocupa de informar que temas administra el agente Entrada Salida contrato (vació) - Lista de Temas Tabla 2: Operaciones del módulo “Administrador” Los atributos con los que cuenta son: Listado de atributos Atributo Descripción Medidores Listado de medidores. Se almacena un medidor por cada tipo de contrato disponible a reputar. Recopiladores Listado de recopiladores. Se almacena un recopilador por cada tema y métrica con la que se puede reputar el mismo. Métricas Listado de métricas utilizadas. Tabla 3: Atributos del módulo “Administrador” 4.6.2 Medidor El medidor se ocupa de llevar adelante la medición de reputación de un agente para un determinado tipo de contrato. Por cada tipo de contrato se contará con un medidor. Un agente medidor se ocupa de calcular la reputación para un agente en un momento, por lo tanto de necesitar medirse más de un agente en un momento, deberá crearse una instancia de este módulo por cada agente que se quiera medir en un mismo momento. Las operaciones que puede realizar son: Listado de operaciones Operación Descripción Entrada (+) Obtener Se encarga de iniciar el - Agente Reputación proceso de obtener la reputado reputación de un agente para un tipo de contrato en particular. Dispara la recopilación de la reputación para cada tema que conforma la taxonomía y una vez Víctor Daniel PODBEREZSKI - 51 - Salida Reputación MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE transcurrido un tiempo establecido calcula la reputación con los valores obtenidos. (+) Obtener Taxonomía Retorna una lista de todos los (vacío) temas que conforman la taxonomía del tipo de contrato a medir. (-) Calcular Reputación Calcula la reputación en base a los datos recabados, la taxonomía del tipo de contrato y el método de cálculo propio del tipo de contrato. - Lista de reputación Listado de temas a consultar - Reputación Tabla 4: Operaciones del módulo "Medidor" Los atributos con los que cuenta son: Listado de atributos Atributo Descripción Tipo de contrato Descripción del tipo de contrato que el medidor se ocupa de calcular. Reputación Listado de reputación recuperada. Una instancia por cada tema del tipo de contrato. Tabla 5: Atributos del módulo “Medidor” Base de conocimientos asociadas: Base de conocimientos Conocimiento Descripción Taxonomías Conocimiento que mantiene una descripción de que temas y subtemas conforman un tipo de contrato. Bajo que criterios unificar los mismos para el calculo de la reputación de un tipo de contrato. Tabla 6: Bases de conocimiento del módulo “Medidor” 4.6.3 Recopilador El recopilador se encarga de organizar la obtención de información de reputación de un tema sobre un agente. Solicita por cada agente de administración que le informe sobre la reputación Víctor Daniel PODBEREZSKI - 52 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE del mismo, los colecta y luego se encarga de solicitar su depuración, transformación en la misma métrica y la nivelación. Por cada dupla de métrica y tema se contará con una instancia de un recopilador Listado de operaciones Operación Descripción (+) Obtener Se encarga de iniciar la Reputación Tema recopilación de reputación de un agente a reputar sobre un tema. Dispara el contacto con agentes administradores de ese tema. Depura, transforma y nivela las reputaciones recopiladas y finalmente las unifica en una única medición. Entrada - Agente Reputado Salida - Reputación - Lista de Fuente de información - Métrica (opcional) (-) Nivelar En base a un agente reputado - Agente Reputado y una medida de reputación modifica un valor de medida - Reputación aumentando o disminuyendo (si esto es posible) su valor de acuerdo a si el agente considera que el agente reputador es más exigente o menos a la hora de realizar sus apreciaciones -Reputación (-) Depurar - Listado En base los valores de Reputación reputación recolectados y al agente reputador de cada uno de ellos determina se ocupa de descartar aquellas mediciones de reputación que considere poco confiables, defectuosas, fuera de fecha o repetidas - Listado Reputación Víctor Daniel PODBEREZSKI - 53 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Listado de operaciones Operación Descripción (-) Actualizar En base a la reputación Apreciaciones recopilada, y una vez unificada para obtener la reputación resultante sobre el tema del agente reputado, junto con las diferentes reputación juntadas de los diferentes agentes reputadotes se ajustan las apreciaciones sobre las exigencias de los agentes (que son utilizadas para nivelar) Entrada - Agente Reputado Salida (vacio) - Valor Reputación - Listado Reputación (+) Agregar reputación Tema En base a la reputación de un - Reputación tema de un agente se procede a registrar la misma en la base de conocimiento. Obtiene a quien se le debe informar y se ocupa de llamar al modulo “Contacto” correspondiente para que agregue la reputación en donde sea necesario. De ser necesario realiza una transformación de métrica. (vacio) (-) Calcular Reputación Calcula la reputación en base a los datos recabados y las reglas de unificación del tema. - Lista de reputación - Reputación (-) Verificar Conocimiento de reputación Contrato Determina si un determinado tema de un contrato con un agente reputado ha sido ya registrado para una determinada fuente de información, agente reputador - Contrato - Reputación previamente registrada o no Víctor Daniel PODBEREZSKI - 54 - - Tema - Agente Reputador - Agente MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Listado de operaciones Operación Descripción Entrada Reputado Salida - Fuente de información. Tabla 7: Operaciones del módulo “Recopilador” Los atributos con los que cuenta son: Listado de atributos Atributo Descripción Tema (const) Tema que es recopilado. Métrica (const) Métrica que es utilizada para retornar la reputación recopilada. Reputación Listado de reputación obtenida en la medición. Transformadores Listado de transformadores de métrica. Tabla 8: Atributos del módulo “Recopilador” Base de conocimientos asociadas: Base de conocimientos Conocimiento Descripción Nivelación Conocimiento que mantiene discriminado por agente reputador, tema y métrica que modificación se debe realizar a un valor de reputación. El objetivo es uniformar los diferentes valores de reputación obtenidos para obtener las apreciaciones sobre las exigencias de los agentes. Unificación Conocimiento que permite unificar los diferentes valores de reputación recopilados de acuerdo a reglas establecidas para obtener un valor de reputación único correspondiente al tema para un agente reputado. Tabla 9: Bases de conocimiento del módulo “Recopilador” 4.6.4 Difusor Es el encargado de administrar y dar a conocer qué agentes administran los diferentes temas y cuales de ellos están dispuestos a compartir su conocimiento con el agente. Ademas a qué agentes se les debe comunicar las reputaciones sobre algún tema dado. Para realizar esta tarea además conoce que métricas utiliza cada uno de ellos para comprender los valores de reputación. Víctor Daniel PODBEREZSKI - 55 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Listado de operaciones Operación Descripción (+) Obtener Obtiene cuales son los Administradores agentes administradores de un Consulta determinado tema a los que se les puede consultar por valores de reputación. Entrada - Tema - Fuente de información (opcional) (+) Obtener Métricas Administrador Obtiene las métricas que utiliza un determinado agente administrador genéricamente y opcionalmente en un determinado tema. - Agente administrador (+) Obtener Administradores Información Obtiene cuales son los agentes administradores de un determinado tema a los que se les puede informar por nuevos valores de reputación. - Tema Salida - Listado de agentes administradores - Listado de métricas - Tema (opcional) - Listado de - Lista de Fuente agentes administradores de información (opcional) Tabla 10: Operaciones del módulo “Difusor” Base de conocimientos asociadas: Base de conocimientos Conocimiento Descripción Agentes Contiene el conocimiento de cuales son los agentes administradores administradores de reputación disponibles para cada tema. Entre ellos, aquellos a los que se le puede consultar y a aquellos a los que se les puede informar. Asimismo se cuenta con el conocimiento de cuales métricas están disponibles en cada agente para cada tema en particular. Dentro de este conocimiento se encuentran los temas y métricas que maneja internamente el propio agente. Tabla 11: Bases de conocimientos del módulo “Difusor” 4.6.5 Contacto Contacto se encarga de compartir o solicitar valores de reputación sobre un agente en un determinado tema. Se pueden diferenciar dos comportamientos principales: contacto externo y contacto interno. El primero se encarga de solicitar o informar reputación a un tercero El segundo se ocupa de mantener la información administrada localmente. Además puede solicitar a Víctor Daniel PODBEREZSKI - 56 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE otros agentes diferentes informaciones administrativas para mantener operativo el sistema (por ejemplo nuevas métricas, tipo de contrato y temas disponibles). Listado de operaciones Operación Descripción (+) Consultar Se ocupa de contactar al reputación agente de administración indicado para solicitarle el envío de reputación sobre un tema en especial acerca de un agente en particular. Dispara la interacción entre agentes para el pedido de reputación. Entrada - Agente de administración Salida - Reputación - Tema - Agente Reputado (+) Informar reputación - Reputación Se encarga de informar reputación a un agente de administración de reputación dado, acerca de un tema en particular por un contrato perteneciente a un tipo de contrato, en una métrica dada sobre un agente reputado. Dispara la interacción entre agentes para la información de reputación. (+) Solicitar métricas Dispara el pedido de métricas conocidas por un agente de administración de reputación. Si se indica un tema se obtienen las métricas utilizadas para reputar valores de reputación en él. - Agente de administración (+) Solicitar tipo de contratos Dispara el pedido de tipos de contratos administrados por un agente de administración de reputación. - Agente de administración - Listado de tipos de contrato (+) Solicitar temas Dispara el pedido de temas - Agente de - Listado de Víctor Daniel PODBEREZSKI - 57 - - finalización exitosa - Listado de métricas. - Tema (opcional) MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Listado de operaciones Operación Descripción administrados por un agente de administración de reputación. Entrada administración Salida temas Tabla 12: Operaciones del módulo “Contacto” Base de conocimientos Conocimiento Descripción Ontología de Conocimiento que permite generar un mensaje a enviar a otro administración de agente sobre el dominio de la reputación para solicitar o informar reputación situaciones de reputación dadas (valores de reputación, métricas, temas, tipos de contrato, etc). Tabla 13: Bases de conocimiento del módulo “Contacto” 4.6.6 Transformador El transformador se encarga de la traducción de un valor de reputación de una métrica a otra. Por cada par de métricas disponibles existe una función de transformación y su inversa. Listado de operaciones Operación Descripción Entrada (+) Transformar En base al valor de reputación - Reputación puesto en una métrica realiza una transformación a una segunda métrica utilizando una función de transformación asociada. Salida - Reputación Tabla 14: Operaciones del módulo “Transformador” Los atributos con los que cuenta son: Listado de atributos Atributo Descripción Métrica Origen Métrica en la que se encuentra expresada el valor de reputación a Víctor Daniel PODBEREZSKI - 58 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE transformar Métrica Destino Métrica en la que se transformará el valor de reputación pasada. Tabla 15: Atributos del módulo “Transformador” Base de conocimientos asociadas: Base de conocimientos Conocimiento Descripción Función de Función que determina el pasaje del dominio de la métrica de origen transformación a la métrica destino. Tabla 16: Bases de conocimiento del módulo “Transformador” 4.7 Interacción entre módulos de la arquitectura En la siguiente sección se ejemplifica la interacción entre los diferentes módulos de la arquitectura ante requerimientos de reputación entre agentes de reputación. 4.7.1 Pedido de reputación El pedido de reputación es el proceso por el cual un agente consulta a otro sobre la confianza que tiene sobre un tercero. Este proceso es muchas veces utilizado como parte del pedido de medición de reputación para construir un valor de confianza utilizando las opiniones de otros agentes. El pedido se puede realizar a agentes especializados en la administración de la reputación o a pares. Se presenta a continuación (Figura 8) la descripción de un circuito posible de pedido de reputación. Víctor Daniel PODBEREZSKI - 59 - h d g Contacto Contacto Contacto i e f Difusor hj Recopilador Recopilador Recopilador Administración a c Transformador Transformador b Medidir MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Figura 8: Pedido de reputación El agente de administración de reputación, recibe un pedido de reputación [a]. El módulo de administración recibe el pedido de reputación. En esa instancia conoce el agente y tipo de contrato a reputar. Verifica en primer lugar que conozca el tipo de contrato (Obtener Tipos de contrato). En caso afirmativo le delega al medidor adecuado la mensura de la reputación (Obtener reputación) pasándole el agente a medir [b]. El Medidor obtiene una lista de todos los temas que conforman la taxonomía del tipo de contrato a medir (Obtener Taxonomía). Para cada tema delega a un Recopilador la compilación del mismo (Obtener Reputación Tema) [c]. De acuerdo al tipo de contrato o tema se podrá restringir la fuente de información de la reputación utilizada. El recopilador le consulta al Difusor aquellos agentes a los que se les puede consultar por el tema en cuestión (Obtener Administradores Consulta) [d]. En base a la lista de agentes de consulta se le delega al Contacto por cada agente un pedido de información (Consultar reputación) [e] Contacto se ocupa de solicitar la reputación de un agente sobre un tema a un agente de administración [f]. Esto lo realiza utilizando el protocolo de solicitud de reputación. Al obtener la reputación se la comunica al Recopilador [g]. En caso de requerirse la apreciación propia de reputación también se ocupa el módulo de Contacto de llevarlo adelante. El Recopilador con todas las mediciones de reputación obtenidas de las distintas fuentes sobre el tema y agente reputado procede a nivelar (Nivelar) y depurar (Depurar) cada medición de reputación. Solicita al Transformador que [h] convierta cada una de las reputaciones a una métrica determinada (Transformar). Una vez consolidadas todas las reputaciones se procede a calcular la reputación (Calcular Reputación). Finalmente en base a la reputación recopilada, y una vez unificada se ajustan las apreciaciones sobre las exigencias de los agentes (Actualizar Apreciaciones). El Recopilador entrega al Medidor la reputación sobre el tema calculada [i]. Víctor Daniel PODBEREZSKI - 60 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE El Medidor recibe la recopilación de temas correspondientes al tipo de contrato a evaluar y calcula la reputación en base a los datos recabados, la taxonomía del tipo de contrato y el método de cálculo propio del tipo de contrato (Calcular Reputación). Finalmente entrega la reputación calculada al Administrador [j]. Esta reputación calculada es entregada a quien la solicitó. 4.7.2 Actualización de reputación La Actualización de reputación es el proceso que realiza un agente para agregar una nueva percepción de confianza sobre el accionar de otro agente con respecto al cumplimiento de un acuerdo pactado o a una acción realizada. La actualización agrega nueva información que puede ser almacenada localmente por el agente o por un tercero. Transformador Transformador hh d g c f Difusor a Administración e Recopilador b Contacto Contacto Contacto Se presenta a continuación (Figura 9) la descripción de un circuito posible de actualización de reputación Figura 9: Actualización de reputación. El agente de administración de reputación, recibe una actualización de reputación [a]. El módulo de administración recibe la solicitud (Agregar reputación). En esa instancia conoce, al agente reputado, agente reputador - pudiendo ser el mismo u otro- , tema, contrato, fuente de información, métrica y valor. Debe verificar que conozca el tema (Obtener Temas) y la métrica utilizada (Obtener Métricas). En caso afirmativo le delega al Recopilador adecuado el añadido de la reputación (Agregar reputación Tema) pasándole la información [b]. El Recopilador en base al tema consulta al Difusor a qué administradores de reputación se les debe informar (Obtener Administradores Información) y para cada uno de los destinatarios determina en que métrica se lo debe comunicar [c]. Una buena política es verificar si la Víctor Daniel PODBEREZSKI - 61 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE reputación a registrar no ha sido consignada anteriormente para evitar duplicar el hito (Verificar Conocimiento de reputación Contrato). Conociendo los agentes de administración destinatarios y las métricas que estos utilizan, de ser necesario se transforma las métricas para que sean entendidas por cada receptor (Transformar). Esto se realiza por medio del Transformador [d]. Por cada receptor se le delega a Contacto la transmisión de la reputación (Informar reputación) [e]. Contacto se comunica con el agente administrador y le envía la reputación utilizando el protocolo de actualización de reputación. Contacto luego informa al Recopilador el resultado del envío [g] - si fue satisfactorio o no – y este a Administración [h]. 4.7.3 Información de reputación La información de reputación es el proceso de comunicar a otro agente una apreciación de reputación que se tiene sobre el comportamiento de un tercero sobre un tema específico. Transformador Transformador hh g f c e Difusor a Administración d Recopilador b Contacto Contacto Contacto Se presenta a continuación (Figura 10) la descripción de un circuito posible de información de reputación Figura 10: Información de reputación. El agente de administración de reputación, recibe un pedido de reputación de un tema en particular [a]. El módulo de administración recibe la solicitud (Informar Reputación) de otro agente sobre un tema determinado de un agente determinado y opcionalmente en una métrica particular. Produce a verificar si conoce el tema solicitado (Obtener Temas) y la métrica (Obtener Métricas). En caso afirmativo delega al Recopilador la responsabilidad de recopilar la reputación. Víctor Daniel PODBEREZSKI - 62 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE El Recopilador recibe la instrucción de compilar la reputación del agente a reputar sobre el tema específico (Obtener Reputación Tema) [b]. Inicia esa tarea subscribiéndose a recabar la reputación según la fuente de información indicada. El recopilador le consulta al Difusor aquellos agentes a los que se les puede consultar por el tema y fuentes de información en cuestión (Obtener Administradores Consulta) [c]. En base a la lista de agentes de consulta se le delega al Contacto por cada agente un pedido de información (Consultar reputación) [d] Contacto se ocupa de solicitar la reputación de un agente sobre un tema a un agente de administración [e]. Esto lo realiza utilizando el protocolo de solicitud de reputación. Al obtener la reputación se la comunica al Recopilador [f]. En caso de requerirse la apreciación propia de reputación también se ocupa el módulo de Contacto de llevarlo adelante. El Recopilador con todas las mediciones de reputación obtenidas de las distintas fuentes sobre el tema y agente reputado procede a nivelar (Nivelar) y depurar (Depurar) cada medición de reputación. Solicita al Transformador que [g] convierta cada una de las reputaciones a una métrica determinada (Transformar). Una vez consolidadas todas las reputaciones se procede a calcular la reputación (Calcular Reputación). Finalmente en base a la reputación recopilada, y una vez unificada se ajustan las apreciaciones sobre las exigencias de los agentes (Actualizar Apreciaciones). El recopilador entrega a Administración la reputación sobre el tema calculada [h]. Capitulo 5 Experimentación 5.1 Objetivo Para comprobar el funcionamiento y la flexibilidad de la arquitectura propuesta se llevaron a cabo 2 escenarios de pruebas diferentes. Se intentó conjugar en estos la mayor cantidad de situaciones diferentes de forma tal de medir la efectividad de la propuesta. La medida del éxito se medirá en el aprendizaje con el transcurso del tiempo que lleve a un agente determinado a seleccionar mejores socios en quien delegar una determinada tarea o adquirir un determinado bien o servicio. 5.2 Escenarios de prueba Para probar la arquitectura se proponen 2 escenarios diferentes. El primer escenario corresponde a la reputación de un sitio de subastas online y el segundo a la reputación dentro de la cadena de suministros de una industria de manufactura. Víctor Daniel PODBEREZSKI - 63 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Para ambos escenarios se simuló la interacción de agentes y los resultados de las interacciones para la generación de la reputación. 5.3 Reputación en sitio de subastas El escenario del sitio de subastas corresponde a un conjunto de agentes que están interesados en la compra y venta de bienes y servicios. Únicamente se fijan en la reputación del agente contraparte sin discriminar el producto. 5.3.1 Características No se realiza una distinción entre el tipo de bien. Lo que se reputa es el comportamiento de la compra venta, sin importar el objeto de la transacción. Tanto el comprador como el vendedor pueden reputar a la contraparte luego de finalizada la operación. Existe una única métrica utilizada para expresar el valor de reputación. Esta métrica consta de 3 valores: -1, 0 y 1. La primera para indicar que el comportamiento de la contraparte fue negativo, el segundo si fue neutral y el último si fue positivo. La reputación de un agente es la suma de las reputaciones dadas por las contrapartes en los diferentes episodios de compra-venta. Existe un único agente administrador de reputación. Es el encargado de recibir los valores de reputación y responder las consultas. Los demás agentes se limitan a ser agentes reputadores y reputados. La única fuente generadora de información existente es la interacción directa. La reputación de un agente se calcula como la suma de todas las reputaciones individuales del mismo y es un número entero. Un valor negativo corresponde a una reputación negativa y una positiva a una reputación positiva. Cuanto mayor es la magnitud de la reputación, más fuerte es la apreciación (tanto para reputaciones positivas como negativas). La reputación es global, un mismo concepto sobre un agente es mantenido por todos los agentes federados. El escenario es similar al existente en el sitio de subastas online DeRemate [DeRemate 2005] 5.3.2 Simulación Para la simulación se generó un prototipo de la arquitectura conformado por un entorno de agentes. Estos agentes están separados en dos categorías: Compradores/Vendedores y Administradores de reputación. Los Compradores/Vendedores pueden solicitar u ofrecer un producto genérico a otro agente. Existe un único administrador de reputación que colecta las apreciaciones de los agentes compradores/vendedores generados por su interacción. El intercambio de un producto ocasiona la generación de una apreciación del comportamiento entre las partes. Se considera que un agente se comporta de la misma manera ya sea si es comprador o vendedor. Víctor Daniel PODBEREZSKI - 64 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE La simulación consta de un conjunto de episodios divididos en 2 fases: interacción y recolección de reputación. La primera fase corresponde a la transacción entre comprador y vendedor. El resultado de la misma es la generación de una apreciación por parte del comprador y el vendedor, que puede ser -1 0 y 1. Para la simulación la interacción entre los agentes en esta fase será el intercambio de un valor de apreciación que represente el comportamiento entre comprador y vendedor (y viceversa). Esto da como resultado 1 par de apreciaciones. Cada agente informa al administrador de reputación esta apreciación. La segunda fase corresponde a la consulta de reputación de todos los agentes para ver la evolución de su reputación. Esta consulta estará a cargo de un agente que le consultará la reputación de cada uno de los compradores/vendedores del entorno. Con el objetivo de la simulación se presentan tres tipos diferentes de agentes: - Agentes cumplidores: En el 70% de las interacciones se comportan de forma positiva. 20% de forma neutral y 10% negativa. - Agentes regulares: En el 20% de las interacciones se comportan de forma correcta. 60% de forma neutral y 20% negativa. - Agentes no cumplidores: En el 10% de las interacciones se comportan de forma positiva. El 20% de forma neutral y el 70% de forma negativa. Para la definición de los tres tipos de agentes y sus respectivos porcentajes se realizó una selección al azar de 300 agentes del sitio de subastas de DeRemate [DeRemate 2005]. Luego se dividió a los agentes en dos conjuntos en base a su reputación: Agentes Cumplidores y Regulales. Analizando los contratos de cada uno de ellos y el grado de cumplimiento de los mismos se midieron porcentajes similares a los utilizados (los mismos fueron redondeados a efectos de simplificar la simulacíon). El tercer grupo (agentes no cumplidores) se simuló inviertiendo los porcentajes de los agentes cumplidores. Esto se decidió asi pues el sistema elimina a los agentes no cumplidores y por lo tanto no se encontraban dentro de la muestra analizada. Para la simulación se utilizaron 90 agentes compradores/vendedores. 30 de cada tipo. Además se contaba con 1 agente administrador de reputación. Con el objetivo de simular el comportamiento del sistema se realiza la interacción entre todos los agentes compradores/vendedores y se analiza la evolución de la reputación de cada uno a través del tiempo. Para esto se utiliza la arquitectura de reputación propuesta con las características detalladas en la sección 5.3.1 5.3.3 Resultados experimentales Víctor Daniel PODBEREZSKI - 65 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Luego de la ejecución de la simulación, en la que se registraron un total de 8010 valores de reputación, se le solicitó al administrador de reputación que retornara la valoración total de cada uno de los agentes de compra/venta. Se recabó los siguientes valores (Tabla 17): Reputado Cumplidor 1 Cumplidor 10 Cumplidor 11 Cumplidor 12 Cumplidor 13 Cumplidor 14 Cumplidor 15 Cumplidor 16 Cumplidor 17 Cumplidor 18 Cumplidor 19 Cumplidor 2 Cumplidor 20 Cumplidor 21 Cumplidor 22 Cumplidor 23 Cumplidor 24 Cumplidor 25 Cumplidor 26 Cumplidor 27 Cumplidor 28 Cumplidor 29 Cumplidor 3 Cumplidor 30 Cumplidor 4 Cumplidor 5 Cumplidor 6 Cumplidor 7 Cumplidor 8 Cumplidor 9 Reputación 51 52 50 59 47 56 39 43 54 46 55 47 48 46 58 52 45 52 66 63 61 56 57 66 55 56 52 53 67 57 Reputado No Cumplidor 1 No Cumplidor 10 No Cumplidor 11 No Cumplidor 12 No Cumplidor 13 No Cumplidor 14 No Cumplidor 15 No Cumplidor 16 No Cumplidor 17 No Cumplidor 18 No Cumplidor 19 No Cumplidor 2 No Cumplidor 20 No Cumplidor 21 No Cumplidor 22 No Cumplidor 23 No Cumplidor 24 No Cumplidor 25 No Cumplidor 26 No Cumplidor 27 No Cumplidor 28 No Cumplidor 29 No Cumplidor 3 No Cumplidor 30 No Cumplidor 4 No Cumplidor 5 No Cumplidor 6 No Cumplidor 7 No Cumplidor 8 No Cumplidor 9 Reputación -58 -51 -65 -53 -52 -54 -43 -48 -57 -54 -57 -54 -38 -53 -46 -61 -59 -43 -48 -49 -53 -56 -48 -56 -58 -57 -57 -59 -70 -53 Reputado Regular 1 Regular 10 Regular 11 Regular 12 Regular 13 Regular 14 Regular 15 Regular 16 Regular 17 Regular 18 Regular 19 Regular 2 Regular 20 Regular 21 Regular 22 Regular 23 Regular 24 Regular 25 Regular 26 Regular 27 Regular 28 Regular 29 Regular 3 Regular 30 Regular 4 Regular 5 Regular 6 Regular 7 Regular 8 Regular 9 Reputación -12 4 -4 3 7 0 -8 0 -4 -10 -7 1 -2 -3 12 5 -3 3 2 2 -9 7 -4 -7 -4 -5 -3 7 -6 -11 Tabla 17: Resultados experimentales de valores de reputación en sitio de subasta. Como se puede apreciar al finalizar la iteración de los agentes la centralización hizo que se puedan diferenciar en tres grupos según el comportamiento de los agentes. Al existir un agente de administración centralizado las valoraciones de cada uno de los agentes se juntaron para poder construir las mismas. Esta construcción hubiese sido imposible de generar para cada uno de los agentes en forma independiente. El motivo de esto es que cada agente interactuó únicamente 1 vez con cada uno de los otros agentes. Aquellas agentes catalogados como “Cumplidores” acabaron con buenas valoraciones de reputación. Por otro lado los catalogados como “No Cumplidores” obtuvieron valoraciones Víctor Daniel PODBEREZSKI - 66 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE negativas. Finalmente los “Regulares” oscilaron entre valores positivos y negativos pero cercanos a la valoración neutra (0). En la figura 11 se muestra un gráfico que presenta la evolución de la reputación de 1 agente de cada tipo. Es evidente el aprendizaje del sistema hacia una correcta identificación del comportamiento de cada agente según su naturaleza. Progresión de reputacion 60 50 40 30 10 Cumplidor 13 No Cumplidor 15 Regular 2 0 It e ra ci ó n Reputación 20 -10 -20 -30 -40 -50 Iteración Figura 11: Evaluación de reputación a través del tiempo. Mediante este ejemplo se verifica que la arquitectura planteada se adapta y satisface este escenario. 5.4 Reputación en cadena de suministros El escenario de la cadena de suministros corresponde a un conjunto de agentes que están interesados en la compra y venta de bienes y servicios diferenciados. En este escenario se desea obtener la reputación para decidir quién es el mejor oferente para un tipo de contrato en particular. El escenario corresponde a un ejemplo académico utilizado por la cátedra de Manufactura integrada por computador I [CIM1 2005]. La reputación en la cadena de suministros se analiza se toma como ejemplo ya que fue analizado en [Podberezski & Ierache 2006a] Víctor Daniel PODBEREZSKI - 67 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 5.4.1 Características Se diferencia la apreciación de reputación entre el bien o servicio a adquirir. Cada bien o servicio a intercambiar es un tipo de contrato diferente. Cada tipo de contrato tiene su propia taxonomía de temas a reputar (algunos de ellos compartidos entre diferentes tipos de contratos). La reputación corresponde a un tema de un contrato específico entre dos partes. El único que reputa es el comprador. Existen varias métricas utilizadas para expresar un valor de reputación específico. Cada agente puede utilizar diferentes. Se utilizan funciones de transformación de reputación para cada métrica. La reputación se encuentra distribuida. Cada agente mantiene un registro de sus apreciaciones del comportamiento de los demás agentes para un contexto determinado. Para construir la reputación de un agente se utiliza la reputación local del mismo más la brindada por un conjunto de agentes reputadores dispuestos a compartirla. La reputación se calcula combinando los diferentes valores de reputación en los distintos temas que conforman un tipo de contrato. Para el ejemplo se proponen 2 tipos de productos que se pueden adquirir: Motor y harina. La adquisición de cada uno de ellos es un tipo de contrato diferente. 5.4.2 Taxonomía La taxonomía de reputación a utilizar para la calificación de los tipos de contrato es la presentada en la figura 12. Harina Motor Servicio post venta Asistencia técnica Calidad Producto Plazo de entrega Atención al cliente Figura 12: Taxonomía de los productos El servicio postventa Engloba asistencia que brinda al agente comprador el vendedor relacionado con la capacitación, guía, resolución de consultas, instalación y otras actividades. La asistencia técnica Víctor Daniel PODBEREZSKI - 68 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Incluye los servicios de mantenimiento, refacción y/o configuración que da el vendedor para el producto. La calidad del producto Mide las cualidades del producto y la satisfacción de los requerimientos depositados en ellos por parte del comprador. Plazos de entrega Mide la conformidad en los tiempos y forma de la entrega del producto solicitado. Atención al cliente Mide los servicios de pre-venta que realiza el vendedor, como podría ser orientación para la compra, información y/o muestra del producto que ayudan al comprador a tomar una decisión con respecto la conveniencia de comprar ese producto. Para los motores se tiene en cuenta servicio post-venta, asistencia técnica, calidad del producto, plazo de entrega y atención al cliente. Mientras que en la harina se tienen en cuenta los siguientes temas: calidad de producto, plazo de entrega y atención al cliente. 5.4.3 Métricas Para la clasificación se proponen la utilización de las siguientes métricas: Calificación de 1 a 10 Corresponde a los números enteros positivos mayores a 0 y menores o iguales a diez. Existe un orden entre ellos que establece que cuanto más cercano es el número a diez, mayor es la calificación de un tema. Calificación difusa por calidad Corresponde a 5 categorías de calificación de menor a mayor: Malo, Regular, Bueno, Muy Bueno y Excelente. Calificación porcentual Corresponde a un valor real entre 0 y 1. Calificación Booleana Corresponde a un valor booleano: 0 negativo y 1 positivo. 5.4.4 Funciones de conversión de métricas Para la transformación de métricas se proponen los mecanismos mostrados en la tabla 18. Víctor Daniel PODBEREZSKI - 69 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Calificación de 1 a Calificación Calificación 10 difusa por porcentual calidad Calificación de 1 a 10 Si valor <= 2 => Valor / 10 Malo si valor >2 y valor <= 4 => Regular Si valor > 4 y valor <=6 => Bueno Calificación Booleana Si valor < 5 => 0 Sino 1 Si valor > 6 y valor <=8 => Muy Bueno Sino Excelente Calificación Si valor = Malo difusa por => 1 Si valor = Regular calidad Si valor = Malo => 0,1 => 3 Si valor = Regular => 0,3 Si valor = Bueno => 5 Si valor = Bueno => 0,5 Si valor = Muy Bueno => 7 Si valor = Muy Bueno => 0,7 Si valor = Excelente => 9 Calificación Redondeo(Valor * 10) porcentual Si valor < 0,5 => 0 Si valor <= 0,2 => Malo si valor >0,2 y valor <= 0,4 => Regular Si valor > 0,4 y valor <=0,6 => Bueno Sino 1 Sino Excelente Si 0 => Malo Si 0 => 0,1 Sino Excelente Sino 1 Tabla 18: Funciones de conversión de métricas Víctor Daniel PODBEREZSKI Sino 1 Si valor = Excelente => 0,9 Si valor > 0,6 y valor <=0,8 => Muy Bueno Calificación Si 0 => 1 Booleana Sino 10 Si valor = Malo o valor = Regular o valor = Bueno => 0 - 70 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 5.4.5 Intercambio de reputación. Para el escenario se determinó que el tema “plazo de entrega” será administrado localmente por cada agente. El resto de los temas será tratado de forma descentralizada. La administración local únicamente tendrá en cuenta la información por interacción directa entre agentes y no será compartida ni comunicada a otro agente. La administración descentralizada corresponde a la utilización de la información local sobre un determinado tema y a la consulta a otros agentes conocidos sobre información de la misma materia. 5.4.6 Simulación Para la simulación se generó un prototipo de la arquitectura conformado por un entorno de agentes. Cada agente será un comprador/vendedor. El intercambio de un producto ocasiona la generación de una apreciación del comportamiento entre las partes. El único comportamiento registrado es el del comprador. La simulación consta de un conjunto de episodios divididos en 2 fases: interacción y recolección de reputación. La primera fase corresponde de la transacción entre comprador y vendedor y la segunda a la medición de la reputación de todos los agentes del ambiente para evaluar su evolución conforme pasa el tiempo. El resultado de la misma es la generación de una apreciación por parte del comprador acerca del vendedor. Esta apreciación, a efectos de la simulación, será transmitida del vendedor al comprador y representa como es que el mismo se comporta en la interacción. No obstante para simular la apreciación subjetiva del agente las apreciaciones podrán subir o bajarse en 1 valor de la escala de la medición de acuerdo a un parámetro del agente. Con el propósito de simplificar del experimento se supone que todos los agentes venden los 2 tipos de productos. Para la simulación se deben tener en cuenta diversas dimensiones que determinan el futuro de la generación de la reputación personal de cada agente sobe otro agente reputado sobre un tipo de contrato en particular. Entre ellas: - ¿Qué temas prioriza un agente a la hora de seleccionar un tipo de contrato en particular? - ¿A quién se le consulta sobre un tema en particular? - ¿En qué métrica almacena y analiza cada tema? - ¿Cómo se comportan los agentes ante sus obligaciones contraídas? Definimos 4 tipos de agentes según la priorización del tema en un contrato: Víctor Daniel PODBEREZSKI - 71 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Agente apurado: Dentro de las consideraciones le da el 50% de importancia al plazo de entrega. Luego al resto la misma importancia - Agente exigente: Dentro de las consideraciones le da el 50% de importancia la calidad del producto. Luego al resto la misma importancia - Agente personal: Dentro de las consideraciones le da el 50% de importancia la atención al cliente. Luego al resto la misma importancia - Agente Standard: Le asigna la misma cantidad de importancia a todos los temas. En cuanto a la consulta de los temas se determinó que cada agente conoce 4 agentes diferentes a los que les consulta sobre el comportamiento de los demás agentes. Cada agente es conocido por la misma cantidad de agentes. El cálculo de la reputación se realizará por medio de un promedio ponderado entre los diferentes temas que lo conforman. Definimos 4 tipos de agentes con respecto a cómo analizan y almacenan la reputación: - Agentes porcentuales: Almacenan y analizan la reputación en forma porcentual. - Agentes difusos: Almacenan y analizan la reputación en forma difusa - Agentes de 1 a 10: Almacenan y analizan la reputación en calificación de 1 a 10. - Agentes booleanos: Almacenan y analizan la reputación en forma booleana. Con respecto al comportamiento de los agentes ante sus contratos estarán medidos por la métrica de 1 a 10. La conversión a la métrica correspondiente la realizará el agente comprador. Se definen 4 tipos de agentes: - Agentes detallistas: Prefieren brindar calidad del producto ante todo. Dejando en segundo plano los demás temas. - Agentes expeditivos: Para ellos lo más importante es el plazo de entrega. Dejando en segundo plano los demás temas. - Agentes parejos: A todos los temas le dan la misma importancia - Agentes amables: Para ellos lo más importantes es la atención al cliente. Dejando en segundo plano los demás temas. Una subcategoría dentro del comportamiento los divide en: - Agentes de primer nivel: El tema principal tiene una distribución de probabilidad de resultado según la tabla 19.A. Las demás según la tabla 19.B. Si es un agente parejo tiene todos los temas según la tabla 19.B. Víctor Daniel PODBEREZSKI - 72 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Agentes de segundo nivel: El tema principal tiene una distribución de probabilidad de resultado según la tabla 19.B. Las demás según la tabla 19.C Si es un agente parejo tiene todos los temas según la tabla 19.C. - Agentes de mala calidad: El tema principal tiene una distribución de probabilidad de resultado según la tabla 19.C. Las demás según la tabla 19.D Si es un agente parejo tiene todos los temas según la tabla 19.D. A Valor 1 2 3 4 5 6 7 8 9 10 Total B % C 0 0,025 0,025 0,05 0,05 0,1 0,2 0,25 0,2 0,1 Valor 1 2 3 4 5 6 7 8 9 10 % 0,025 0,05 0,05 0,1 0,1 0,25 0,25 0,1 0,05 0,025 Valor 1 2 3 4 5 6 7 8 9 10 1 Total 1 Total D % 0 0,05 0,1 0,15 0,2 0,2 0,15 0,1 0,05 0 Valor 1 2 3 4 5 6 7 8 9 10 % 0,1 0,2 0,2 0,15 0,1 0,05 0,05 0,05 0,05 0,05 1 Total 1 Tabla 19: Distribución de probabilidades. Con el objetivo de simular el comportamiento del sistema se realiza la interacción entre todos los agentes compradores/vendedores y se analiza la evolución de la elección del vendedor seleccionado y sus características a través del tiempo. Para esto se utiliza la arquitectura de reputación presentada con las características destacadas en las secciones anteriores. Se proponen la existencia de 16 agentes en el sistema compradores/vendedores. De los cuales: Según el comportamiento en cuenta a la medición de reputación - 1 Agente es apurado y porcentual - 1 Agente es apurado y difuso - 1 Agente es apurado y 1 a 10 - 1 Agente es apurado y Booleano - 1 Agente es exigente y porcentual - 1 Agente es exigente y difuso - 1 Agente es exigente y 1 a 10 - 1 Agente es exigente y Booleano - 1 Agente es personal y porcentual Víctor Daniel PODBEREZSKI - 73 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - 1 Agente es personal y difuso - 1 Agente es personal y 1 a 10 - 1 Agente es personal y Booleano - 1 Agente es Standard y porcentual - 1 Agente es Standard y difuso - 1 Agente es Standard y 1 a 10 - 1 Agente es Standard y Booleano Según el cumplimiento de sus obligaciones - 1 Agente es detallista de primer nivel - 1 Agente es expeditivo de primer nivel - 2 Agentes son parejos de primer nivel - 1 Agente es amable de primer nivel - 2 Agentes son detallistas de segundo nivel - 2 Agentes son expeditivos de segundo nivel - 1 Agente es parejo de segundo - 1 Agente es amable de segundo - 1 Agente es detallista de mala calidad - 1 Agente es expeditivo de mala calidad - 1 Agente es parejo de mala calidad - 2 Agentes son amables de mala calidad 5.4.7 Resultados experimentales Luego de la simulación del caso explicado se pudieron observar varios comportamientos que comprueban el aprendizaje de los agentes que a medida que interactúan, llegan a realizar selecciones más afines a sus necesidades. Dependiendo de la métrica de cada agente la selección de un agente fue más o menos acertada. Los agentes booleanos y difusos seleccionaron agentes de primer y segundo nivel en su mayoría. Mientras que los porcentuales y de 1 a 10 de primer nivel. Víctor Daniel PODBEREZSKI - 74 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Se consideró que a igual valor de reputación entre dos agentes o más todos los mismos son seleccionables. Teniendo en cuenta lo último y para los dos tipos de contrato, luego de 12 iteraciones: - El 100% de los agentes porcentuales seleccionaron agentes de primer nivel. - El 50% de los agentes con métrica de 1 a 10 seleccionaron agentes de primer Nivel - El 50% de los agentes con métrica de 1 a 10 seleccionaron agentes de primer y segundo Nivel indistintamente. - El 50% de los agentes con métrica difusa seleccionaron agentes de primer Nivel. - 12,5% de los agentes con métrica difusa seleccionaron agentes de segundo Nivel. - 37,5% de los agentes con métrica difusa seleccionaron agentes de primer, segundo Nivel y mala calidad indistintamente. - El 25% de los agentes con métrica de booleana seleccionaron agentes de primer y segundo Nivel indistintamente. - 75% de los agentes con métrica booleana seleccionaron agentes de primer, segundo Nivel y mala calidad indistintamente. Víctor Daniel PODBEREZSKI - 75 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 1 a 10 Porcentual Primer Nivel Primer Nivel Difuso Primer y Segundo Nivel Booleano Primer Nivel Segundo Nivel Primer y Segundo Nivel 1er, 2do y Mala Calidad 1er, 2do y Mala Calidad Figura 13: Resultados experimentales según tipo de métrica utilizada. Teniendo en cuenta la diferencia entre tipos de contrato, se puede observar que el tipo de Contrato Harina, que tiene menos temas que lo conforman tuvo más acertado la selección a la hora de elegir un agente. - El 75% de los agentes con métrica 1 a 10 seleccionaron para un tipo de contrato de Harina agentes de primer nivel. - El 25% de los agentes con métrica 1 a 10 seleccionaron para un tipo de contrato de Harina agentes de primer o segundo nivel indistintamente. - El 50% de los agentes con métrica difusa seleccionaron agentes de primer Nivel. Víctor Daniel PODBEREZSKI - 76 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - 25% de los agentes con métrica difusa seleccionaron agentes de segundo Nivel. - 25% de los agentes con métrica difusa seleccionaron agentes de primer, segundo Nivel y mala calidad indistintamente. - Fue indistinto para los agentes con métrica booleana la precisión para selección de agentes según el tipo de contrato. Teniendo en cuenta las preferencias de comportamiento de cada agente se pudo observar que: - Los agentes Exigentes seleccionaron en un 50% a agentes Detallistas de primer nivel. Del 50% restante seleccionaron agentes de primer nivel con otras características la mitad de las veces. - Los agentes personales seleccionaron en un 37,5% a agentes Amables de primer nivel. - Los agentes Standard, seleccionaron indistintamente los agentes, sin tener en cuenta la característica en particular de los agentes seleccionados. - Los agentes apurados no seleccionaron agentes Expeditivos. Esto se puede analizar teniendo en cuenta que las iteraciones realizadas no alcanzaron para diferenciar aquellos agentes expeditivos del resto. El tema Entrega era el único que no se consultaba al resto de los agentes. Los agentes booleanos no lograron tener capacidad suficiente para seleccionar y reputar agentes. Esto debido a la pobreza de la métrica utilizada. El intercambio de información booleana a otros agentes perjudicó al resto de los agentes para la correcta calificación. 5.5 Prototipo Para la realización de la experimentación se generó un prototipo de la arquitectura utilizando el lenguaje de programación de agentes Jade. Para la generación de la ontología se utilizó el programa Protege y fue exportado para utilizar en Jade utilizando la herramienta Ontology Bean Generador. Para la comunicación y generación de consultas se utilizo el lenguaje de contenido SL. Las funcionalidades de la arquitectura fueron modelados, según el paradigma de Jade, por comportamientos (Behaviours). Se utilizó la base de datos MySQL para almacenar los conocimientos. Se utilizó Intellij IDEA como IDE de desarrollo. Víctor Daniel PODBEREZSKI - 77 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Capítulo 6 Conclusiones y futuras líneas de investigación 6.1 Conclusiones La arquitectura de reputación propuesta se adecuó a las simulaciones ejercitadas. En los dos escenarios estudiados, en la sección anterior, se comprobó que a medida que los agentes de reputación interactúan entre sí van progresivamente seleccionando agentes más competentes o que se adecuan más a sus necesidades. Como ejemplos podemos citar la evolución de la reputación global de cada agente en el sitio de subastas o la selección 100% efectiva de agentes con métrica porcentual de agentes de primer nivel en la cadena de suministros. Estos dos últimos ejemplos corresponden a situaciones dispares entre si. En el primer caso la obtención de reputación tiene como característica ser una propiedad global, no contextualizada y carente de taxonomías que la compongan. La única forma de obtener reputación es mediante la interacción directa y finalmente medida por todos los agentes mediante una única métrica. Por otro lado, el segundo ejemplo corresponde a prácticamente una situación opuesta. La reputación corresponde a una propiedad privada administrada localmente por cada agente. Existen diferentes contextos de medición de reputación y los mismos tienen una clasificación taxonómica. Por último, maneja la existencia de diversas métricas y su transformación que permite la comunicación entre diferentes agentes con métricas diferentes. Las pruebas realizadas sobre los mismos, permitieron comprobar la adaptabilidad de la arquitectura a dominios heterogéneos, asegurando su desarrollo para soportar diversos dominios La arquitectura presentada puede ser utilizada, por lo tanto, en diversos escenarios y su implementación puede ser adaptada para trabajar con múltiples contextos, temas, métricas y métodos de cálculo de reputación. Además de ser utilizable en ambientes de administración de reputación centralizada como también descentralizada. La arquitectura, junto a la ontología y los protocolos de comunicación contienen todo lo necesario para su implementación en casos reales y permiten modelizar una amplia cantidad de mecanismos de generación y evaluación de reputación que fueron analizados. Se realizó una implementación de prueba del framework que cumple con las especificaciones indicadas de la arquitectura. Entre estas la posibilidad de trabajar con múltiples contextos, temas, métricas y métodos de cálculo de reputación. Además de discriminar diferentes tipos de reputación recabadas según el origen y su administración tanto centralizada o descentralizada. Víctor Daniel PODBEREZSKI - 78 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Además el framework no está atado a ningún lenguaje de programación y puede ser portado a diferentes lenguajes de programación de agentes, como por ejemplo Jack [Jack 2007] y SDML [Moss et al 1998] 6.1 Futuras líneas de investigación. Como trabajo futuro para la explotación de la arquitectura soportada por el framework propuesto se aprecia la importancia de elaborar una metodología que facilite el análisis, desarrollo e implementación para poder modelizar una situación de administración de reputación. En otro orden también se considera la evolución y adecuación de la ontología propuesta en el presente trabajo a fin de asegurar la interoperabilidad semántica, con futuras ontologías de diversos dominios. Además queda abierto el análisis de diferentes escenarios en los que puede ser utilizado esta arquitectura en el marco de la negociación entre agentes, como así también las facilidades de simulación de situaciones en escenarios emergentes de reputación modelizados en el contexto de vida artificial. Víctor Daniel PODBEREZSKI - 79 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Capítulo 7 Referencias [Abdul-Rahman & Hailes 2000] Abdul-Rahman A. y Hailes S., 2000, Supporting trust in virtual communities, En Proceedings of the Hawaii's International conference on Systems Sciences, Maui Hawaii [Bond & Gasser 1988] Bond, A. H., Gasser, L. (eds), 1988 Readings in Distributed Artificial Intelligence. Morgan Kaufmann, San Mateo, CA. [Botti & Giret, 2003] Vicente J. Botti Navarro, Adriana Giret Boggino, 2003, Aplicaciones Industriales de los Sistemas Multiagente [Carbo et al 2002] Carbo J., Molina J. y Davila J., 2002, Comparing predictions of sporas vs. a fuzzy reputation agent systems. En 3rd International Conference on Fuzzy Sets and Fuzzy Systems, Interlaken, páginas 147-153 [Carter et al 2002] Carter J., Bitting E. y Ghorbani A, 2002, Reputation formalization for an information-sharing multi-agent system, Computational Intelligence, 18(2), páginas 515534 [Casare & Simão Sichman 2005] Casare Sara, Simão Sichman Jaime: Towards a functional ontology of reputation. AAMAS 2005: 505-511 [Castelfranchi & Falcone 1998] Castelfranchi C. y Falcone R., 1998, Principles of trust for mas: Cognitive anatomy, social importance, and quantification. En Proceedings of the International Conference on Multi-Agent Systems (IC-MAS'98), Paris Francia, Páginas 7279 [Chang & Makatsoris 2001] Chang Yoon, Makatsoris Harris, 2001, Supply chain modeling using simulation, En International Journal of Simulation - Systems, Science & Technology, Vol. 2 No. 1 [Chen et al 1999] Chen Ye, Peng Yun, Finin Tim, Labrou yannis, Cost Scott, Chu BIll, Sun Rongming y Willhelm Bob, 1999, A negotiation-based multi-agent system for supply chain management, Workshop on supply chain management, Autonomous Agents '99, Seattle, Wa, May 1999. Víctor Daniel PODBEREZSKI - 80 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [CIM1 2005] Manufactura Integrada por Computador – Cátedra Ierache, Facultad de Ingeniería, Universidad de Buenos Aires, [Davis & Smith, 1983] Davis, R. and Smith, R., 1983, Negotiation as a Metaphor for Distributed Problem Solving, In: Artificial Intelligence 20, pp. 63-109. [Dean et. Al. 2002] M. Dean, D. Connolly, F. van Harmelen, J. Hendler, I. Horrocks, D.L. McGuinness, P.F. Patel-Schneider, L.A. Stein, OWL Web Ontology Language 1.0 Reference, W3C Working Draft, 2002. http://www.w3.org/TR/owl-ref/ [DeRemate 2005] DeRemate, 2005, http://www.deremate.com/ [ebay 2005] ebay, 2005, http://www.ebay.com/ [Esfandiari & Chandrasekharan 2001] Esfandiari B., Chandrasekharan S., 2001, On how agents make friends: Mechanisms for trust acquisition, En Proceedings of the Fourth Workshop on Deception, Fraud and Trust in Agent Societies, Montreal Canada, páginas 27-34 [Ferber 1999] Ferber J., 1999, MultiAgent Systems: an Introduction to Distributed Artificial intelligence, Addison Wesley. [FIPA CNP, 2002] FIPA Contract Net Interaction http://www.fipa.org/specs/fipa00029/SC00029H.html Protocol Specification, 2002, [FIPA00037] FIPA Communicative Act Library Specification. Foundation for Intelligent Physical Agents, 2000. http://www.fipa.org/specs/fipa00037/ [FIPA00061] FIPA ACL Message Structure Specification. Foundation for Intelligent Physical Agents, 2000. http://www.fipa.org/specs/fipa00061 [FIPA00027] FIPA Query Interaction Protocol Specification Foundation for Intelligent Physical Agents, 2000. http://www.fipa.org/specs/fipa00027 [FIPA00026] FIPA Request Interaction Protocol Specification. Foundation for Intelligent Physical Agents, 2000. http://www.fipa.org/specs/fipa00026 [Fox 1992] Fox, Mark. S., 1992, Integrated Supply Chain Management, Technical Report, Enterprise Integration Laboratory, University of Toronto. [Fox et. al. 2000] Fox Mark S., Barbuceanu Mihai, y Teigen Rune, 2000, Agent-Oriented Supply-Chain Management, 2000, The International Journal of Flexible Manufacturing Systems, 12 (2000), pages 165–188 Víctor Daniel PODBEREZSKI - 81 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Genesereth & Ketchpel 1994] Genesereth, M. R. y Ketchpel, S. P., 1994, Software agents. Communications of the ACM, 37(7), 48-53. [Glickman 1999] Glickman Mark, 1999, Parameter Estimation in Large Dynamic Paired Comparison Experiments, Universidad de Boston, USA [Görn 2006] Görn Christoph, 2006, An http://b4mad.net/2006/01/10/trust.html extended Ontology for Trust Models, [Grüninger & Fox 1995] Grüninger M, Fox M. S., 1995, Methodology for the design and evaluation of ontologies, Workshop on Basic Ontological Issues in Knowledge Sharing, Montreal, Canada [Harrington 1973] Harrington J. jr., 1973, Computer Integrated Manufacturing., Pub Industrial Press, New York. [Huynh et al 2004a] Huynh Dong, Jennings Nicholas R., Shadbolt Nigel R., 2004, Developing an Integrated Trust and Reputation Model for Open Multi-Agent Systems, School of Electronics and Computer Science, University of Southampton, UK. [Huynh et al 2004b] Huynh, T. D., Jennings, N. R. and Shadbolt, N., 2004, FIRE: an integrated trust and reputation model for open multi-agent systems. En Proceedings of 16th European Conference on Artificial Intelligence, pages pp. 18-22, Valencia, Spain. [ISO/IEC 15939 2002] ISO/IEC 15939: 2002 International Standard, Software Engineering – Software Measurement Process. [ISO/IEC ISO14598-1 1999] ISO/IEC ISO14598-1: 1999 International Standard, Information Technology – Software product evaluation – Part 1: General Overview. [Jack 2007] Jack, 2007, http://www.jacksos.com/shared/home/ [Jennings et al. 1995] Jennings, N. R.; Corera, J.; y Laresgoiti, I. 1995. Developing Industrial Multi-Agent Systems. In Proceedings of ICMAS’95 423–430. [Jennings & Wooldridge 1998] Jennings, N. R., y Wooldridge, M. 1998. Applications of Intelligent Agents. Agent Technology: Foundations, Applications, and Markets 3–28. [Kalpakjian & Schmid 2002] Kalpakjian Serope, Schmid Steven R., 2002, Manufactura ingeniería y tecnología, Pearson educación Víctor Daniel PODBEREZSKI - 82 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Lashkari et al 1994] Lashkari Y., Metral M., Maes P., 1994, Collaborative interface agents, En Proceedings of the Twelfth National Conference on Artificial Intelligence, AAAI-Press [Lau et. al., 2004] LAU Jason, Huang George Q y Mak K L, 2004, Agent-based modeling of supply chains for distributed scheduling, IEEE Transactions on Systems, Man and Cybernetics: Part A, Accepted for publication [Maes 1994] Maes, P., 1994 Agents that reduce work and information overload. Communications of the ACM, 37(7), 31-40. [Marsh 1994] Marsh S., 1994, Formalizing Trust as a Computational Concept. Tesis Doctoral, Departamento de matemáticas y ciencias de la computación, Universidad de Stirling [MercadoLibre 2005] MercadoLibre, 2005, http://www.deremate.com/ [Microsoft MSDN 2005] Microsoft MSDN, 2005, http://msdn.microsoft.com/ [Moss et al 1998] Moss, S., Gaylard, H, Wallis, S. and Edmonds, B. (1998). SDML: A Multiagent Language for Organizational Modelling. Computational and Mathematical Organization Theory, 4 (1), 43-69 [Odell 2001] Odell, James, Van Dyke Parunak, H. and Bauer, B., Representing Agent Interaction Protocols in UML. In: Agent-Oriented Software Engineering, Ciancarini, P. and Wooldridge, M., Eds., Springer, pp. 121-140, Berlin, 2001. http://www.fipa.org/docs/input/f-in-00077/ [Osanna & Si 2000] Osanna P. H., Si, L: Multi-Functions Integrated Factory M.F.I.F. - a Model of the Future Enterprise. Conference Proceedings: Internet Device Builder Conference, Sta. Clara, Mai 2000, 6S [Osanna et. al. 2001] Osanna P.H., Durakbasa M.N., Si L.X., 2001, Artificial Intelligence-based Metrology and Quality Management in Intelligent Production Environment, IPMM – 2001 [Podberezski & Ierache 2006a] Podberezski Víctor Daniel, Ierache Jorge Salvador: Utilización de Agentes y Reputación en la Administración de la Cadena de Suministros industriales. JIISIC 2006: 217-224 [Podberezski & Ierache 2006b] Víctor Daniel Podberezski, Jorge Salvador Ierache. Ontología de administración e intercambio de reputación. Anales del Octavo Workshop de Investigadores en Ciencias de la Computación (WICC 2006), 2006 Víctor Daniel PODBEREZSKI - 83 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Pujol et al 2002a] Pujol, J.M., Sangüesa, R. and Delgado J.,2002, Distributed and Adaptable Ranking Algorithm for Reputation and Relevance Extraction, En Proceedings of the 5th Catalan Conference on Artificial Intelligence CCIA-02, pp 205-213, Castelló de la Plana, Spain. [Pujol et al 2002b] Pujol J.M., Sangüesa R. y Delgado J., Extracting Reputation in Multi Agent System by means of Social Network Topology, en Proceedings of the First International Joint Conference on Autonomous Agents and Multi-Agent Systems AAMAS-02. Vol. 1, pp 467-474. Bologna, Italy. [Pujol et al 2003] Pujol Josep M., Sangüesa Ramon y Delgado Jordi, 2003, A Ranking Algorithm based on Graph Topology to Generate Reputation or Relevance, En Web Intelligence (Ning Zhong, Jiming Liu, and Yiyu Yao eds.), ch 18, pp 382-395, Springer Verlag, ISBN: 3-540-44384-3. [Pujol & Sangüesa 2001] Pujol J.M., Sangüesa R., 2001, Reputation Measures based on Social Networks metrics for Multi Agents Systems, en Proceedings of the 4th Catalan Conference on Artificial Intelligence CCIA-01, pp 205-213, Barcelona, Spain. [Ramchurn et al 2004] Ramchurn Sarvapali D., HuynhDong, Jennings Nicholas R.,2004, Trust in Multi-Agent Systems, School of Electronics and Computer Science, University of Southampton. [Rapetti 2002] Rapetti O, 2002, Apunte de Cátedra CIM I, 75.65 Manufactura Integrada por Computador (CIM) -Facultad de Ingeniería - Universidad de Buenos Aires [Rossetti & Hin-Tat Chan, 2003] Rossetti Manuel D. and Hin-Tat Chan, 2003 , A prototype object-oriented supply Chain simulation framework, Proceedings of the 2003 Winter Simulation Conference [Russell & Norving 1995] Russell, S. Norving, P. 1995. Artificial Intelligente: A Modern Approach. Prentice-Hall. [Sabater 2003] Sabater Mir Jordi, 2003, Trust and reputation for agent societies, Tesis Doctoral, Universidad Autónoma de Barcelona [Sabater & Sierra 2002a] Sabater Jordi , Sierra Carles , 2002, Reputation and social network analysis in multi-agent systems. AAMAS 2002: 475-482 Víctor Daniel PODBEREZSKI - 84 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Sabater & Sierra, 2002b] Sabater J., Sierra C., 2002, REGRET: a reputation model for gregarious societies. En C. Castelfranchi y L. Johnson, editors, Proceedings of the 1st International Joint Conference on Autonomous Agents and Multi-Agent Systems, paginas 475–482. [Schillo et al 2000] Schillo M., Funk P. y Rovatsos M., 2000, Using trust for detecting deceitful agents in artificial societies, Applied Artificial Intelligence, Edición especial en Confianza, engaño y fraude en sociedades de agentes [Sen & Sajja 2002] Sen S. y Sajja N., 2002, Robustness of reputation-based trus: Booblean case. En Proceedings of the first international joint conference on autonomous agents and multiagent systems (AAMAS-02), Bologna Italia, Páginas 288-293 [Shen & Norrie 1999] Shen, W., y Norrie, D., 1999, Agent-Based Systems for Intelligent Manufacturing: A State-of-the-Art Survey. Knowledge and Information Systems, an Internatinal Journal 1(2):129–156. [Shen et al 1998] Shen W., Xue D., y Norrie D.H., 1998, An Agent-Based Manufacturing Enterprise Infrastructure for Distributed Integrated Intelligent Manufacturing Systems, En Proceedings of PAAM'98, London, UK. [Smith, R. G. 1980] Smith, R. G., 1980, The contract net protocol: High- level communication and control in a distributed problem solver, IEEE Transactions on Computers, Vol.29 No.12, pp.1104-1113. [Swaminathan et. al. 1998] Swaminathan Jayashankar M., Smith Stephen F. y Sadeh Norman M., 1998, Modeling Supply Chain Dynamics: A Multiagent Approach, Decision Sciences Volume 29 Number 3 Summer 1998 [Trust ontology 2006] Trust ontology http://www.schemaweb.info/schema/SchemaDetails.aspx?id=171 2006, [Wagner & Guralnik, 2002] Wagner Tom y Guralnik Valerie, Software Agents for Dynamic Supply Chain Management, 2002 [Waldner 1990] Waldner Jean-Baptiste, 1990, CIM Principles of Computer-integrated Manufacturing, Wiley [Wooldridge & Jennings 1995] Wooldridge, M. and Jennings, N.R., 1995. Agent Theories, Architectures and Languages: a Survey in Eds., Intelligence Agents, Berlin: SpringerVerlag, Vol 1, Nro 22 Víctor Daniel PODBEREZSKI - 85 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Wooldridge 2002] Wooldridge, M., 2002, An introduction to Multiagent Systems, John Wiley & Sons Ltd. [Yu & Singh 2000] Yu, Bin. Singh, P. 2000. A Social Mechanism of Reputation Management in Electronic Communities. Department of Computer Science. Nort Carolina State University. [Yu & Singh 2001a] Yu, Bin. Singh, P. 2001a. An Evidential Model of Distributed Reputation Management. Department of Computer Science. North Carolina State University. [Yu & Singh 2001b] Yu, Bin. Singh, P. 2001b. Detecting Deception in Reputation Management. Department of Computer Science. North Carolina State University. [Zacharia 1999] Zacharia G., 1999, Collaborative reputation mechanisms for online communities, Tesis para master, Instituto de tecnología de Massachussets [Zacharia & Maes, 2000] Zacharia G. y Maes P., 2000, Trust through reputation mechanisms. Applied Artificial Intelligence, 14:881–907. Víctor Daniel PODBEREZSKI - 86 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Apéndice A Ontologías A.1 Definición de ontologías En el sentido filosófico, podemos referirnos a una ontología como un sistema particular de categorías que explican una cierta visión del mundo. Como tal, este sistema no depende de un lenguaje particular: la ontología de Aristóteles es siempre la misma, independientemente de la lengua usada para describirla. Por otra parte, en su uso más frecuente en la inteligencia artificial, una ontología se refiere a una construcción de ingeniería, formado por un vocabulario específico utilizado para describir una cierta realidad, más un juego de suposiciones explícitas otorgando el sentido intencionado a las palabras del vocabulario. Este juego de suposiciones tiene por lo general la forma de una teoría lógica de primer orden, donde las palabras del vocabulario aparecen como nombres de predicados unarios o binarios, respectivamente llamados conceptos y relaciones. En el caso más simple, una ontología describe una jerarquía de conceptos relacionados por relaciones de categorización; en casos más sofisticados, los axiomas convenientes son añadidos a fin de expresar otras relaciones entre conceptos y obligar su interpretación intencionada. Las dos definiciones de “ontología" descritas anteriormente están relacionadas la una con la otra. A fin de solucionar el callejón sin salida terminológico tenemos que elegir a una de ellas, inventando un nuevo nombre para la otra. Adoptaremos la lectura de la inteligencia artificial como tal, usando el término “conceptualización” para referirnos a la lectura filosófica. Entonces dos ontologías pueden ser diferentes en el vocabulario usado (utilización de palabras inglesas o italianas, por ejemplo) y compartir la misma conceptualización. Con esta aclaración terminológica, una ontología puede ser definida como una especificación de una conceptualización [Gruber 1993]. La última concierne al modo en que un agente estructura sus percepciones sobre el mundo, mientras que la primera da un sentido al vocabulario usado por el agente para comunicar tales percepciones. Dos agentes pueden compartir la misma conceptualización usando vocabularios diferentes. Por ejemplo, la conceptualización (habitual) bajo el término Inglés “Apple” es la misma en cuanto al término italiano “mela”, y se refiere a la naturaleza intrínseca y la estructura de todas las manzanas posibles. Los dos términos pertenecen a dos ontologías diferentes mientras comparten la misma conceptualización. Una separación clara entre ontología y conceptualización se hace esencial al ocuparse de las cuestiones relacionadas con traducción, fusión e intercambio de ontologías, que en general implican lenguajes múltiples y gran número de percepciones del mundo. Víctor Daniel PODBEREZSKI - 87 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Una conceptualización no está preocupada por la asignación de sentido, sólo por la estructura formal de la realidad como es percibida y organizada por un agente, independientemente de: - el lenguaje utilizado para describirlo; - La ocurrencia actual de una situación específica. Una ontología, por otra parte, es primera que todo un vocabulario. Sin embargo, una ontología que consiste sólo en un vocabulario tendría un uso muy limitado, ya que su sentido intencionado no sería explícito. Por lo tanto, además de la especificación de un vocabulario, una ontología debe especificar el sentido intencionado de tal vocabulario, es decir su conceptualización subyacente. En algunos casos, los términos usados pertenecen a un vocabulario técnico muy específico, y convienen bien en su sentido dentro de una comunidad de agentes humanos. Las cosas son diferentes sin embargo en caso de términos ambiguos que pertenecen a la lengua natural diaria, o cuando los agentes automatizados tienen que comunicarse. Conceptualización Lenguaje L Modelos del lenguaje L Modelos intencionados Ontología Figura A.1: Poder de expresividad de una ontología Más gráficamente (Figura A.1), una ontología se compone de un lenguaje y un set de axiomas lógicos designados con el objetivo de explicar el sentido intencionado del vocabulario que contiene. Estos componentes de la ontología intentan describir una conceptualización. Víctor Daniel PODBEREZSKI - 88 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Mediante el lenguaje dado se puede representar un conjunto de situación (modelos) de la realidad. Algunos de estos modelos carecen de sentido dentro de la conceptualización. Es por eso que los axiomas entran en escena limitando ciertas expresiones que no tienen sentido en la conceptualización. Esto limita el conjunto de modelos posibles de representación. El set de axiomas debe ser designado lo mejor posible de tal forma que los modelos posibles de representación de realidad se ajusten a los modelos de la conceptualización. Al conjunto de modelos de la conceptualización, Guarino [Guarino 1998] lo designa como Intended models (modelos intencionados o esperables) En palabras más sencillas, los modelos del lenguaje L determinan lo que uno puede decir, los modelos intencionados, de lo que uno desea hablar y en la ontología lo que uno realmente dice. (I) Ontología buena (II) Ontología mala (III) Ontología muy mala Figura A.2: calificación de una ontología La selección de axiomas correctos es fundamental en el éxito de una ontología. Se intenta lograr que los axiomas permitan acotar los modelos de representación de la realidad para que incluyan íntegramente los modelos de la conceptualización y limitar al máximo posible la representación de situaciones imposibles (Figura A.2.I). Víctor Daniel PODBEREZSKI - 89 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Una mala ontología dejará expresar un gran conjunto de situaciones que no se corresponden con la realidad (Figura A.2.II). Aun así contiene en su poder de expresión todas las situaciones posibles de la realidad, por lo tanto es posible, pero con cierto cuidado su uso. Finalmente una muy mala ontología (Figura A.2.III) no podrá expresar situaciones reales. Sino, que mediante su uso se informará de situaciones incoherentes y carentes de realidad. En ese caso la ontología es inadecuada y su uso inútil para informar sobre una situación real en una conceptualización. A.2 Tipos de ontologías Las ontologías se pueden clasificar de diversas maneras. Algunas de las clasificaciones realizan una división según: - El grado de dependencia a una tarea o dominio dado - El nivel de detalle de sus axiomas - La naturaleza de su dominio (“meta-level” o “object-level”) A.2.1 El grado de dependencia a una tarea o dominio Dentro de la primera clasificación varios autores proponen su visión para la división de las ontologías. Por ejemplo [Steve et al. 1998] distinguen tres tipos fundamentales de ontologías: • Ontologías de un dominio (domain ontology), en las que se representa el conocimiento especializado pertinente de un dominio o subdominio, como la medicina, las aplicaciones militares, la cardiología u otro. • Ontologías genéricas, en las que se representan conceptos generales y fundacionales del conocimiento como las estructuras parte/todo, la cuantificación, los procesos o los tipos de objetos. • Ontologías representacionales, en las que se especifican las conceptualizaciones que subyacen a los formalismos de representación del conocimiento, por lo que también se denominan meta-ontologías (meta-level o top-level ontologies). Por otra parte [Guarino 1998] realiza una clasificación similar pero con ciertas diferencias. En primer lugar añade las ontologías que han sido creadas para una actividad o tarea específica (denominadas task ontologies), como por ejemplo la venta de productos o el diagnóstico de una enfermedad y las ontologías creadas para una aplicación específica. Ademas también considera Víctor Daniel PODBEREZSKI - 90 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE que las denominadas "top-level ontologies" son genéricas, y por tanto, independientes de un dominio o tarea específicos, por lo tanto las unifica con las ontologías genéricas. Figura A.3: Clasificación de ontologías según Guarino Otra clasificación es la propuesta por [Van Heist et. Al. 1996]: - Ontologías terminológicas: Especifican los términos que son usados para representar el conocimiento en el universo del discurso. Suelen ser usadas para unificar vocabulario en un campo determinado. - Ontologías de información: Especifican la estructura de almacenamiento de bases de datos. Ofrecen un marco para el almacenamiento estandarizado de información. - Ontologías de modelado de conocimiento: Especifican conceptualizaciones del conocimiento. Contienen una rica estructura interna y suelen estar ajustadas al uso particular del conocimiento que describen. A.2.2 El nivel de detalle de sus axiomas Otra dimensión importante de clasificación de las ontologías es por su nivel de detalle, en otras palabras el nivel de caracterización del modelo intencionado. Una ontología de grano fino muy rica en axiomas, escrita en un lenguaje muy expresivo como la lógica de primer orden completa, se acerca más a especificar el vocabulario intencionado (y por lo tanto puede ser utilizada para establecer expresiones más cercanas a la realidad y ser compartida dando mayor precisión en el intercambio de conocimientos o en la base de conocimiento que utiliza ese vocabulario), pero es usualmente difícil de desarrollar y realizar razonamientos sobre él. Una ontología Gruesa, por el otro lado, puede consistir en un set de axiomas mínimos, escritos en un lenguaje de mínima Víctor Daniel PODBEREZSKI - 91 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE expresividad, para soportar un set limitado de servicios específicos, intencionado a ser compartido por usuarios que ya acordaron en la conceptualización subyacente. Se puede distinguir entre Ontologías de regencia detalladas y ontologías de intercambio gruesas o no muy detalladas. También se las puede definir como ontologías fuera de línea y ontologías en línea. Las primeras son sólo accedidas de tiempo en tiempo por propósitos de referencia, mientras que las últimas aportan y soportan funcionalidades centrales del sistema. A.2.3 Meta-Level Ontologies Una adicional clase de ontología es constituida por lo que ha sido llamado ontologías de representación [Van Heijst et al. 1997]. Estas son realmente ontologías de meta-level, que describen una clasificación de las primitivas usadas por un lenguaje de representación de conocimiento (como conceptos, atributos y relaciones). Un ejemplo de una ontología de representación es la ontología OKBC, utilizada para proveer traducciones entre diferentes lenguajes de representación de conocimiento, Un ejemplo adicional es la ontología de primitivas de meta nivel presentadas en in [Guarino et al. 94], que difieren de las de OKBC en asumir un acuerdo ontológico no neutral para la representación de primitivas. A.3 El problema de integración de ontologías La integración de información es un área de aplicación de gran importancia para las ontologías. Incluso si dos agentes adoptan el mismo vocabulario, no hay garantía de que acuerden en cierta información a menos que se refieran a la misma conceptualización. Asumiendo que cada agente tiene su propia conceptualizacion, una condición necesaria para lograr un acuerdo posible es que ciertas partes de los modelos intencionados de ambas conceptualizaciones se solapen (es decir se manejen ciertos conceptos en común). Víctor Daniel PODBEREZSKI - 92 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Figura A.4: Dos agentes A y B usando el mismo lenguaje L se pueden comunicar unicamente si su set de modelo intencionados IA(L) y IB(L) asociados a su conceptualizacion se solapan. [Guarino 98] Suponiendo ahora que estos dos modelos intencionados son aproximados por dos ontologías diferentes, puede darse el caso donde las ontologías se solapen (por ejemplo tienen algunos modelos en común) mientras que su modelos intencionados no (figura A.5). Esto significa que el acercamiento de abajo hacia arriba a la integración de sistemas basados en la integración de ontologías locales múltiples puede no funcionar, especialmente si las ontologías locales están únicamente enfocadas en las relaciones conceptuales relevantes a un contexto especifico, y por lo tanto son débiles y aproximaciones ad hoc del modelo de supuestos. Por lo tanto aparenta ser más conveniente acordar en una única ontología top-level que concertar en acuerdos basados en la intersección de diferentes ontologías. Figura A.5: El set de modelos de dos diferentes axiomatizaciones, correspondientes a ontologías diferentes, pueden intersectarse mientras que el modelo intencionados no. [Guarino 98] Al unificar dos o más ontologías que tienen diferentes conceptualizaciones es altamente probable que surjan problemas con sus vocabularios. Es probable que conceptos similares en cuanto a significado, pero no idénticos, se representen en cada una de ellas. Por ejemplo, el concepto representado por “Trabajador” en una conceptualización puede corresponder a un trabajador cualificado, mientras que otra conceptualización puede usar “Trabajador” para cualquier trabajador, sea o no cualificado. Ambos conceptos están muy vinculados, pero no son equivalentes ni deberían mezclarse. Al realizar la integración debería especificarse que el primer concepto corresponde a una especialización del segundo. Otro problema, más relacionado con el lenguaje de la ontología es el causado por conceptos sinónimos y homónimos. Los sinónimos ocurren cuando dos ontologías usan distintos nombres para referirse al mismo concepto. Por ejemplo, una ontología puede usar Trabajador para el mismo concepto que otra usa Empleado. En ese caso, se debería especificar a ambos como idénticos. Los homónimos surgen cuando se usa el mismo nombre para representar conceptos distintos. Por ejemplo, en una aplicación de una compañía de seguros, Conductor representa a Víctor Daniel PODBEREZSKI - 93 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE una persona que tiene contratada una póliza particular con la compañía; mientras que, en una aplicación de una compañía de taxis, Conductor representa a un trabajador que conduce un taxi de la compañía. Como es de suponer, si se intentara integrar automáticamente ambas ontologías basándose en que ambas usan el mismo término (Conductor) para significar lo mismo, se produciría un error conceptual muy grosero. A.4 Áreas de Aplicación de las Ontologías A continuación se citan algunas de las áreas en las que se usan las ontologías según [Martín 2004]: A.4.1 Ingeniería del Conocimiento. Dentro del modelado conceptual, donde se crea un glosario de la terminología del dominio de la aplicación (los conceptos), se definen relaciones entre dichos términos y restricciones en su uso. Este modelo conceptual explícito es la ontología. Usando la ontología definida como un conjunto de esquemas o contenedores de conocimiento, se genera la base de conocimiento con instancias del dominio bajo la forma de reglas, hechos, eventos y restricciones. A.4.2 Procesamiento de lenguaje natural. En el área de procesamiento de lenguaje natural, una ontología puede mantener la definición de elementos gramaticales del lenguaje y la relación entre ellos, permitiendo por ejemplo el análisis sintáctico de un texto. A.4.3 Interoperabilidad entre sistemas de información heterogéneos. En la interoperabilidad de sistemas de información, las ontologías se presentan como una importante solución para lograr una integración inteligente, en particular en el área de bases de datos, una ontología puede ser un elemento clave asociado a un mediador (puente), que integra datos provenientes de fuentes heterogéneas Con una ontología terminológica, se pueden organizar los términos que son usados en interacciones entre sistemas heterogéneos, de manera de reconocer cuando una aplicación está usando un término que es más general o más específico que otro que está en uso por otra aplicación. Si la ontología es formal, se puede contar con una definición más completa de cómo se relaciona un término de un origen con el de otro, y eventualmente usar axiomas definidos que los vinculen por igualdad o que expresen un término exactamente en función del otro, lo que permitiría establecer correspondencias seguras y automáticas entre ellos Víctor Daniel PODBEREZSKI - 94 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE A.4.4 Búsqueda semántica en sitios Web. Usando ontologías asociadas a los motores de búsqueda se puede reemplazar la búsqueda tradicional basada en palabras claves, por una búsqueda semántica, encontrando páginas cuyo contenido difiere sintácticamente, pero semánticamente son similares. De esta forma las consultas no serán procesadas a un nivel terminológico, sino conceptual, con los beneficios que eso supone en el grado de acierto de las respuestas retornadas. A.4.5 Modelado de empresas. En el área de modelado de empresas, las ontologías desempeñan entre otros, el rol de mantener una memoria organizacional colectiva que permita a los distintos niveles de la empresa interoperar con un lenguaje común y con reglas únicas. Las Ontologías TOVE (Toronto Virtual Enterprise) desarrolladas en la universidad de Toronto y la Enterprise Ontology desarrollada en la Universidad de Edimburgo, son ejemplos de este tipo de ontologías. A.4.6 Aplicaciones en la Web Semántica. Las ontologías se volverán un elemento clave en la Web Semántica, ya que permitirán explicitar la semántica de los contenidos dispersos en la web. Es decir, las ontologías proveen un vocabulario de marcas consensuado y con un significado bien definido, permitiendo su procesamiento automático y la inferencia de nuevos conocimientos A.5 Componentes de una ontologia Según Gruber [Gruber 1995], las ontologías se componen de: - Conceptos: son las ideas básicas que se intentan formalizar. Los conceptos pueden ser clases de objetos, métodos, planes, estrategias, procesos de razonamiento, etc. - Relaciones: representan la interacción y enlace entre los conceptos de un dominio. Suelen formar la taxonomía del dominio. Por ejemplo: subclase-de, parte-de, parte-exhaustiva-de, conectado-a, etc. - Funciones: son un tipo concreto de relación donde se identifica un elemento mediante el cálculo de una función que considera varios elementos de la ontología. Por ejemplo, pueden aparecer funciones como: asignar-fecha, categorizar-clase, etc. - Instancias: se utilizan para representar objetos determinados de un concepto. Víctor Daniel PODBEREZSKI - 95 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Reglas de restricción o axiomas: son teoremas que se declaran sobre relaciones que deben cumplir los elementos de la ontología. Por ejemplo: "Si A y B son de la clase C, entonces A no es subclase de B", "Para todo A que cumpla la condición B1, A es C", etc. Los axiomas, junto con la herencia de conceptos, permiten inferir conocimiento que no esté indicado explícitamente en la taxonomía de conceptos. De estos conceptos se pueden desprender otros: - Clase: Es un objeto que define una categoría. Describe conceptos en el dominio del discurso. - Subclase: Es en sí misma una clase, pero que es hija de alguna otra clase. - Clase jerárquica: La compuesta por una colección de clases conectadas por relaciones "es un tipo de" (class hierarchy). Asimismo algunos lenguajes para definición de ontologías agregan: - Roles o Propiedades (slots): Propiedades de cada concepto que describen varias características y atributos del concepto. Ayudan a definir las características de las clases. - Facetas: Se utilizan para definir qué tipo de valor puede contener un slot particular, valores permitidos, número de valores, etc. También se denominan restricciones de roles. - Valor: Describe una propiedad que se aplica a alguna clase o instancia. - Tipo: Define el tipo de valor (como cadena de caracteres, número, booleano, etc.) - Cardinalidad: Define cuántos valores puede tener un slot individual (máximo y mínimo). - Herencia (inherence): Es el proceso por el cual las subclases e instancias de alguna clase heredan propiedades y valores definidos más arriba en la jerarquía. - Variable: Espacio vacío que puede llenarse preguntando a clases e instancias. Cada variable comienza con un signo de interrogación. A.6 Lenguajes para la representación de ontologías Existen varios lenguajes con los que se puede representar una ontología. Los mismos comenzaron a surgir a comienzos de 1990 y se basan principalmente en lógicas de primer orden, en marcos (frames) combinados con lógicas de primer orden y lógicas descriptivas. De entro los principales lenguajes de ontologías se pueden destacar los siguientes: Víctor Daniel PODBEREZSKI - 96 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE A.6.1 DAML y OIL: Este lenguaje nació fruto de la cooperación entre OIL y DARPA y unifica los lenguajes DAML (DARPA's Agent Markup Language) y OIL (Ontology Inference Layer). Se basa en estándares del W3C. El lenguaje DAML se desarrolló como una extensión del lenguaje XML y de Resource Description Framework (RDF) y para extender el nivel de expresividad de RDFS. DAML- OIL hereda muchas de las características de OIL, pero se aleja del modelo basado en clases (frames) y potencia la lógica descriptiva. Es más potente que RDFS para expresar ontologías. En la última revisión del lenguaje [DAML+OIL] ofrece un rico conjunto de elementos con los cuales se pueden crear ontologías y marcar la información para que sea legible y comprensible por una máquina. También puede funcionar como formato de intercambio. Sin embargo, este lenguaje presenta algunas carencias debido a su complejidad conceptual y de uso, complejidad que se intentó solventar con el desarrollo de OWL. No obstante, se desarrollaron muchas aplicaciones que utilizan DAML-OIL. A.6.2 FLogic: Es el acrónimo de Frame Logia. Combina un lenguaje basado en marcos y calculo de predicados de primer orden. Contiene características de lenguajes orientados a objetos tales como herencia, polimorfismo y encapsulación. Permite representar conceptos, taxonomías de conceptos, relaciones binarias, funciones, axiomas y reglas deductivas. Provee un mecanismo de inferencia (Ontobroker) que puede ser usado para verificación de restricciones y deducción de información nueva. [Kifer et. Al 1995] Al implementar una ontología es importante decidir primero las necesidades en términos de expresividad y servicios de inferencia, porque no todos los lenguajes permiten representar los mismos componentes de la misma forma. La representación y razonamiento con información básica, como conceptos, taxonomías, y relaciones binarias, no siempre es suficiente si se quiere crear una ontología pesada y hacer razonamientos complejos. A.6.3 KIF: Sus siglas significan “Knowledge Interchange Format” [KIF]. Es un lenguaje, para representar ontologías, basado en la lógica de primer orden. KIF está basado en la lógica de predicados con extensiones para definir términos, metaconocimiento, conjuntos, razonamientos no monotónicos, etc; y pretende ser un lenguaje capaz de representar la mayoría de los conceptos y distinciones actuales de los lenguajes más recientes de representación del conocimiento. Se trata de un lenguaje diseñado para intercambiar conocimiento entre sistemas de computación distintos y diferentes lenguas; y no para la interacción entre seres humanos. Permite representar conceptos, taxonomías de conceptos, relaciones n-arias, funciones, axiomas, instancias y procedimientos. El lenguaje en sí, no provee soporte para razonamiento automático. [Genesereth & Fikes 1992] Víctor Daniel PODBEREZSKI - 97 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE A.6.4 Loom: Es un lenguaje de programación de alto nivel y un ambiente pensando para utilizarse en la construcción de sistemas expertos y otros tipos de programas de aplicaciones inteligentes. Está basado en lógica descriptiva, logrando una estrecha integración entre los paradigmas basados en reglas y en marcos. Inicialmente no fue pensado para implementación de ontologías. Contiene un lenguaje de descripción para modelar objetos y relaciones y un lenguaje de “afirmaciones” para especificar restricciones en conceptos y relaciones y para afirmar hechos sobre individuos. Provee una clasificación automática de conceptos (mediante un motor de inferencias). Puede representar conceptos, taxonomías de conceptos, relaciones n-arias, funciones, axiomas, y reglas de producción. [MacGregor 1992] A.6.5 OCML: Sus siglas significan Operacional Conceptual Modeling Language y fue desarrollado en el contexto de un proyecto llamado VITAL. Es un lenguaje basado en marcos que provee mecanismos para expresar elementos como relaciones, funciones, reglas (con encadenamiento para adelante y para atrás), clases e instancias. Fue construido para desarrollar ontologías ejecutables y modelos en métodos de resolución de problemas. Implementa una interfase general como mecanismo para afirmar hechos y para examinar el contenido del modelo. Contiene mecanismos lógicos para lograr razonamientos eficientes. [Motta 1999] A.6.6 OIL: Sus siglas significan “Ontology Inference Layer”. Este lenguaje, derivado en parte de SHOE, fue impulsado por el proyecto de la Unión Europea “On-To-Knoledge”. Utiliza la sintaxis del lenguaje XML y está definido como una extensión de RDFS. Se basa tanto en la lógica descriptiva (declaración de axiomas) y en los sistemas basados en frames (taxonomías de clases y atributos). OIL posee varias capas de sub-lenguajes, entre ellas destaca la capa base que es RDFS, a la que cada una de las capas subsiguientes añade alguna funcionalidad y mayor complejidad. La principal carencia de este lenguaje es la falta de expresividad para declarar axiomas. A.6.7 OWL: Sus siglas significan “Web Ontology Language” (Lenguaje de Ontologías para la Web) [OWL][Dean et. Al 2002]. Consiste en un lenguaje de etiquetado semántico para publicar y compartir ontologías en la Web. Se trata de una recomendación del W3C, y puede usarse para representar ontologías de forma explícita, es decir, permite definir el significado de términos en vocabularios y las relaciones entre aquellos términos (ontologías). En realidad, OWL es una extensión del lenguaje RDF y emplea las tripletas de RDF, aunque es un lenguaje con más poder expresivo que éste. Se trata de un lenguaje diseñado para usarse cuando la información contenida Víctor Daniel PODBEREZSKI - 98 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE en los documentos necesita ser procesada por programas o aplicaciones, en oposición a situaciones donde el contenido solamente necesita ser presentado a los seres humanos. OWL surge como una revisión al lenguaje DAML-OIL y es mucho más potente que éste. Al igual que OIL, OWL se estructura en capas que difieren en la complejidad y puede ser adaptado a las necesidades de cada usuario, al nivel de expresividad que se precise y a los distintos tipos de aplicaciones existentes (motores de búsqueda, agentes, etc.). A.6.8 SHOE: Sus siglas significan “Simple HTML Ontology Extensions” [Luke & Heflin 2000]. Fue el primer lenguaje de etiquetado para diseñar ontologías en la Web. Las ontologías y las etiquetas se incrustaban en archivos HTML. Este lenguaje permite definir clases y reglas de inferencia, pero no negaciones o disyunciones. A su alrededor se desarrollaron muchos editores, buscadores, APIS, etc; pero este proyecto fue abandonado a medida que se desarrollaron OIL y DAM. A.6.9 SL: SL (Semantic Language) [FIPA00008] es un lenguaje general definido por la FIPA para facilitar la comunicación entre agentes. Su sintaxis es similar a la del LISP Existen tres subconjuntos del lenguaje, el más simple es el llamado SL0 (Minimal Subset), SL1 (Propositional Form) y SL2 (Decidability Restrictions. SL0 permite la representación de acciones, la determinación de un resultado de un término que representa un cálculo, la finalización de una acción y proposiciones binarias simples. SL1 agrega la posibilidad de representar expresiones proposicionales. Finalmente SL2 permite predicados de primer orden y lógica modal. A.7 Herramientas para la creación de ontologías En los últimos años se desarrollaron entornos de desarrollo, con el objetivo de integrar ontologías a sistemas de información existentes. Por lo general son extensibles, basados en arquitecturas de componentes y lo más importante: por lo general son independientes del lenguaje de implementación de la ontología. Entre los más populares pueden citarse los siguientes: A.7.1 Protégé 2000 Protégé-2000 fue desarrollado por el Stanford Medical Informatics (SMI) de la universidad de Stanford. Es un proyecto Java de fuente libre Java que provee una arquitectura extensible para la creación de herramientas de bases de conocimiento. Es una herramienta porque permite al usuario construir el dominio de una ontología, configurar formularios para relevamiento de datos e ingresar el dominio de conocimiento. Es una plataforma que puede ser extendida con gráficos, diagramas, componentes animados para acceder a aplicaciones embebidas en sistemas de bases de conocimientos. Es también una librería que otras aplicaciones pueden acceder [Protégé 2000]. Víctor Daniel PODBEREZSKI - 99 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE A.7.2 WebOde WebOde es el sucesor de ODE (Ontology Design Environment) y fue desarrollada en el Laboratorio de Inteligencia Artificial de la Universidad Técnica de Madrid (UPM). No es usada como aplicación Stand-Alone sino a través de la web. El corazón de este entorno es el servicio de acceso a ontologías, que es usado por todos los servicios y aplicaciones que se agregan al servidor. Los servicios que presta son edición de ontologías, importación/exportación, edición de axiomas, documentación evaluación y combinación de ontologías [WebOde]. A.7.3 KAON KAON (Karlsruhe Ontology) es un entorno flexible y extensible en la misma medida que los anteriores. KAON también es un proyecto JAVA de fuente libre con infraestructura para editar y mantener ontologías. Es el sucesor de OntoEdit y fue desarrollado por AIFB en la universidad de Karlsruhe. Brinda una interfase de programación JAVA para acceder a ontologías e instancias, independientemente del formato de implementación de la ontología. Provee de una simple herramienta para generar portales web con soporte multilingual basados en ontologías [KAON] A.8 Diseño de ontologías La construcción de ontologías no responde a una única aproximación lógica sino que depende, en gran manera, del contexto en el que se construyen. Además hay que tener en cuenta que una ontología especifica una conceptualización, una forma de ver el mundo. Por lo cual cada ontología incorpora un punto de vista. Una ontología pues, contiene definiciones que se proveen del vocabulario para referirse a un dominio y éstas dependen del lenguaje que se usa para describirlas. Algunas cuestiones sobre el diseño [Gruber 1993]: - Claridad y objetividad: la ontología debe proveer el significado de los términos definidos proveyendo definiciones objetivas y documentación en lenguaje natural. Debe poder comunicar de manera efectiva el significado de sus términos. - Completitud: una definición expresada en términos de condición necesaria y suficiente es preferible sobre una definición parcial (definida sólo sobre condición necesaria o suficiente) - Coherencia: permite hacer inferencias válidas consistentes con las definiciones - Máxima extensibilidad monotónica: los nuevos términos (generales o especializados) debieran ser incluidos en la ontología de manera que no requiera la revisión de definiciones existentes Víctor Daniel PODBEREZSKI - 100 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Mínimo compromiso ontológico: minimizar como sea posible el mundo que se está modelando Otros principios son: estandarización de nombres (tanto como sea posible), modularidad (para minimizar el acoplamiento entre módulos) y el hecho de que las clases en una ontología debieran ser disjuntas. No hay una única aproximación a la hora de diseñar una ontología. Existen varios autores que proponen diferentes aproximaciones. Cada uno de ellos propone los pasos y criterios para la construcción que creen adecuados. A continuación se presentan 2 de estas metodologías. A.8.1 Metodología de Grüninger y Fox Esta metodología [Grüninger & Fox 1995] propone un método formalizado para construir una ontología. La misma se compone de 6 pasos. Paso 1: Definición de los escenarios motivadores Cada ontología surge de un escenario concreto de una aplicación. Los mismos pueden ser presentados como la descripción de problemas que no han podido ser resueltos hasta el momento y posibles aplicaciones donde la ontología podrá ser utilizada. Un escenario motivador suele proveer un conjunto de soluciones posibles que se obtienen intuitivamente. De estas soluciones se obtiene una semántica informal para los conceptos y sus relaciones para ser posteriormente utilizados en la ontología. Paso 2: Especificación informal de las preguntas pertinentes (Competency questions) Dado un escenario motivador, surgen un conjunto de preguntas que la ontología a construir deberá responder. Las preguntas pueden ser tomadas como requerimientos en forma de interrogantes (Competency questions). Esos interrogantes deben ser posibles de formular usando la terminología de la ontología y ser capaces de caracterizar sus respuestas a las mismas utilizando los axiomas y las definiciones provistas por la misma. El alcance de la ontología puede fijarse mediante estas preguntas. Las preguntas no generan compromisos ontológicos de diseño sino que son utilizadas para más adelante evaluar si la ontología construida es capaz de satisfacer los requerimientos que de ella se espera. Además las mismas no se expresan en un lenguaje formal. Paso 3: Especificación de la terminología En base a las preguntas desarrolladas en el paso anterior, se pueden obtener un conjunto de términos para su expresión y ser consideradas como la base para la terminología a utilizar en el lenguaje formal. En una nueva ontología para cada interrogante informal deben existir clases, Víctor Daniel PODBEREZSKI - 101 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE atributos y relaciones que son requeridos para resolver la pregunta. En primer lugar se debe identificar los objetos del dominio de aplicación para ser representados mediante constantes y variables del lenguaje. Posteriormente se definen los atributos de los objetos y sus relaciones, utilizando predicados en lógica de primer orden, o un formalismo equivalente. Paso 4: Formalización de las preguntas pertinentes (Competency questions) Con la terminología definida de la ontología, se definen formalmente las preguntas pertinentes en función a la misma. Paso 5: Especificación de axiomas formales Se definen los axiomas que especifican las definiciones de términos y las restricciones en su interpretación. Paso 6: Verificar la completitud de la ontología Se debe definir las condiciones bajo las cuales las soluciones son consideradas completas. A.8.2 Metodología Unschold y King Los autores [Uschold et. al. 1998] proponen una serie de pasos para construir una ontología Paso 1: Identificar el propósito Dejar en claro por qué se construye la ontología y que uso se le pretende dar. Identificar y caracterizar el rango de posibles aplicaciones y usuarios de la ontología. Paso 2: Construcción de la ontología: Esta etapa se puede subdividir en 3 sub-tareas: - Capturar la ontología: Esta etapa incluye identificar los conceptos clave y relaciones en el dominio de interés, producir definiciones textuales precisas y carentes de ambigüedad que describan a los conceptos y relaciones y por último identificar los términos para referirse a los mismos. Para eso los autores sugieren identificar los conceptos más importantes para ser utilizados para obtener el resto en la jerarquía por medio de generalización y especialización. - Codificación: Representar el conocimiento adquirido en el paso anterior mediante un lenguaje formal - Integración de ontologías existentes: Durante los procesos anteriores se debe analizar si corresponde utilizar ontologías existentes y cómo hacerlo. Paso 3: Evaluación Evaluar la ontología construida con respecto a un marco de referencia que pueden ser especificaciones de requerimientos, preguntas y/o el mundo real. Víctor Daniel PODBEREZSKI - 102 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Paso 4: Documentación Se procede a establecer pautas para documentar la ontología de acuerdo al tipo y su propósito. [Corcho & Gómez-Pérez] Oscar Corcho, Asunción Gómez-Pérez, A Roadmap to Ontology Specification Languages, EKAW00. 12th International Conference on Knowledge Engineering and Knowledge Management A.9 Referencias [DAML+OIL] DAML+OIL March 2001, http://www.daml.org/2001/03/daml+oil-index [Dean et. Al 2002] M. Dean, D. Connolly, F. van Harmelen, J. Hendler, I. Horrocks, D.L. McGuinness, P.F. Patel-Schneider, L.A. Stein, OWL Web Ontology Language 1.0 Reference, W3C Working Draft, 2002. http://www.w3.org/TR/owl-ref/ [FIPA00008] FIPA SL Content Language Specification, Foundation for Intelligent Physical Agents, 2000. http://www.fipa.org/specs/fipa00008/ [FIPA00086] FIPA Ontology Service Specification. Foundation for Intelligent Physical Agents, 2000. http://www.fipa.org/specs/fipa00086 [Genesereth & Fikes 1992] M. Genesereth, R. Fikes, Knowledge interchange format, Technical Report Logic-92-1, Computer Science Department, Stanford University, 1992 [Guarino 1998] Guarino, N. 1998. Formal Ontology in Information Systems. In N. Guarino (ed.) Formal Ontology in Information Systems. Proceedings of FOIS'98, Trento, Italy, 68 June 1998. IOS Press, Amsterdam: 3-15. [Guarino et. al. 1994] Guarino, N., Carrara, M., and Giaretta, P. 1994. An Ontology of MetaLevel Categories. In D. J., E. Sandewall and P. Torasso (eds.), Principles of Knowledge Representation and Reasoning: Proceedings of the Fourth International Conference (KR94). Morgan Kaufmann, San Mateo, CA: 270-280. [Gruber 1993] T. R. Gruber, A translation approach to portable ontology specifications, Knowledge Acquisition 5 (1993) 199-220 [Gruber 1995] Gruber, T. R. 1995. Toward Principles for the Design of Ontologies Used for Knowledge Sharing. International Journal of Human and Computer Studies, 43(5/6): 907-928. Víctor Daniel PODBEREZSKI - 103 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Grüninger & Fox 1995] Grüninger M, Fox M. S., 1995, Methodology for the design and evaluation of ontologies, Workshop on Basic Ontological Issues in Knowledge Sharing, Montreal, Canada [KAON] http://kaon.semanticweb.org [KIF] Knowledge Interchange Format. Draft proposed American National Standard (dpANS) NCITS.T2/98-004, http://logic.stanford.edu/kif/dpans.html [Kifer et. Al 1995] M. Kifer, G. Lausen, J. Wu, Logical foundations of object-oriented and frame-based languages, Journal of the ACM 42 (4) (1995) 741-843. [Luke & Heflin 2000] S. Luke, J. Heflin, SHOE 1.01. Proposed Specification, SHOE. Project technical report, University of Maryland, 2000, http://www.cs.umd.edu/projects/plus/SHOE/spec.html [MacGregor 1992] R. MacGregor, Inside the LOOM clasifier, SIGART bulletin 2 (3) (1991) 70-76 [Martín 2004] Martín, M, 2004, Sistema de de Catalogación de Métricas e Indicadores con Potencia de Web Semántica, Tesis de Magíster en Ingeniería de Software, Facultad de Informática Universidad Nacional de La Plata, Argentina. [Motta 1999] E. Motta, Reusable Components for Knowledge Modelling, IOS Press, Amsterdam, 1999. [Noy & McGuinness 2000] Noy NF, McGuinness DL. Ontology Development 101: A Guide to Creating Your First Ontology. 2000, http://www.cs.man.ac.uk/~carole/old/GGF%20Tutorial%20Stuff/ontology101.pdf [OWL] OWL Web Ontology Language, http://www.w3.org/TR/owl-features/ [Protégé 2000] http://protege.stanford.edu [Steve et. al 1998] Steve, G, A. Gangemi, D. Pisanelli, 1998. "Integrating Medical Terminologies with ONIONS Methodology". http://saussure.irmkant.rm.cnr.it. [Uschold 1996] M. Uschold. Building ontologies: towards a unified methodology. In Expert Systems 96, 1996 Víctor Daniel PODBEREZSKI - 104 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Uschold et. al. 1998] Uschold M, King M, Moralee S, Zorgios Yannis, 1998, The Enterprise Ontology. The Knowledge Engineering Review, Vol. 13, Special Issue on Putting Ontologies to Use (eds. Mike Uschold and Austin Tate) [Van Heijst et. al 1996] VAN HEIJST, G., SCHEREIBER, A.T. Y WIELINGA, B.J. "Using Explicit Ontologies in KBS Development" en International Journal of Human and Computer Studies, 1996 [WebOde] http://webode.dia.fi.upm.es/WebODEWeb/index.html Víctor Daniel PODBEREZSKI - 105 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Apéndice B: Jade B.1 Introducción JADE (Java Agent Development Framework) es una plataforma de desarrollo de aplicaciones multiagente conforme a los estándares de FIPA. Ha sido implementado completamente en Java como código abierto. Se compone de dos elementos principales: una plataforma para agentes conformes a las especificaciones de FIPA y un paquete para desarrollar estos agentes en Java. Cabe destacar que JADE es Software Libre y que se distribuye bajo los términos de la licencia LGPL (Lesser General Public License Version 2). B.2 Arquitectura Según FIPA, los agentes son entidades software que están localizadas en una única plataforma. Una plataforma de agentes es un entorno de ejecución en donde los agentes están ejecutándose y a través del cual disponen de un servicio de páginas blancas para buscar otros agentes, un servicio de páginas amarillas para buscar servicios que otros agentes ofrecen, un módulo de gestión a través del cual se accede a estas facilidades y por último un sistema de envío/recepción de mensajes. FIPA incorpora en su plataforma el AMS (Agent Management System) que es el agente que supervisa el acceso y uso de la plataforma de agentes. Sólo existe un AMS por plataforma. El AMS es el encargado de proporcionar los servicios de páginas blancas y de ciclo de vida para los agentes y de mantener el directorio de los identificadores de los agentes y su estado. Cada agente debe registrarse con el AMS para obtener un identificador válido. El DF (Directory Facilitator) es el agente que proporciona el servicio de páginas amarillas. El ACC (Agent Communication Channel) es el software que controla el intercambio de mensajes, tanto dentro de la plataforma como con otras remotas. A parte de todos estos detalles propios de FIPA, JADE incluye la noción de contenedor. Un contenedor es una instancia del entorno de ejecución de JADE. En un contenedor es posible albergar un número indeterminado de agentes. Existe un tipo especial de contenedor denominado principal (i.e. main container). Debe existir uno y solo uno de estos contenedores por cada plataforma FIPA de agentes y el resto de contenedores de la plataforma, una vez ejecutados (i.e. una vez ejecutado el correspondiente entorno de ejecución JADE) deben subscribirse al principal, por lo que el responsable de ejecutarlos también es responsable de indicar en dónde se localiza el contenedor principal. Víctor Daniel PODBEREZSKI - 106 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE La arquitectura se puede observar en la figura 1, donde aparecen dos plataformas diferentes (platform1 y platform2), cada una con sus contenedores principales y contenedores normales. Figura B.1: Arquitectura de Jade B.3 Descarga e instalación La última versión de JADE (la 3.4 en el momento de escribir este apéndice) se puede conseguir en el sitio de JADE: http://jade.tilab.com/ Para descargar el software se requiere estar registrado previamente en el sitio. A la hora de la descarga se pueden obtener los siguientes archivos: - jadeAll.zip: Contiene todo JADE. Esta compuesto por los cuatro archivos descriptos posteriormente. - jadeBin.zip: Contiene JADE compilado y listo para usar. - jadeDoc.zip: Contiene la documentación de JADE. Es la misma que se puede conseguir en el sitio online - jadeSrc.zip: Contiene el código fuente completo de JADE - jadeExamples.zip: Contiene el código fuente de ejemplos y una demo simple. El único requisito para ejecutar JADE es tener una versión de Java Run Time Environment 1.4 o superior. Víctor Daniel PODBEREZSKI - 107 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Se debe crear una carpeta y descomprimir los archivos descargados. Se creará un directorio “jade” y dentro de él otro llamado “lib” que es donde se encuentran los “jars” necesarios para ejecutar la plataforma. B.3 Entorno de ejecución La característica más importante del entorno de ejecución de JADE es la interfaz gráfica que proporciona, desde la que podemos controlar y depurar los agentes existentes. Todas las herramientas han sido desarrolladas como agentes y siguen sus mismas reglas. B.3.1 Interfaz RMA El agente RMA (Remote Monitoring Agent) permite controlar al resto de agentes en una plataforma. Provee una interfaz gráfica (figura 2) que facilita las funciones de monitorización y control. Solo puede existir un agente RMA por container, aunque puede haber varios por plataforma. Figura B.2: Interfaz gráfica del RMA La interfaz gráfica permite las siguientes acciones, todas ellas llevadas a cabo a través de un sistema de menús: - Terminar la ejecución del agente RMA (se invoca al método doDelete()). - Terminar con la ejecución del agente RMA y de todos los agentes del container donde se encuentre RMA. - Terminar con la ejecución de la plataforma en la que se encuentra. Víctor Daniel PODBEREZSKI - 108 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Comenzar un nuevo agente. - Terminar con la ejecución agentes. La terminación se realiza internamente llamando al método doDelete(). - Detener la ejecución de los agentes. Internamente se realiza una llamada al método doSuspend. - Continuar la ejecución de agentes suspendidos. Los pone en estado Activo y llama al método doActivate(). - Mandar un mensaje (formato ACL) a agentes seleccionados. Esta función se realiza mediante un cuadro de diálogo en el cual se tendrán que rellenar los campos del mensaje. - Migrar un agente de un contenedor a otro. - Clonar un agente, introduciendo el nombre del nuevo agente y el container donde se encontrará. B.3.2 Agente Dummy El agente Dummy (figura 3) permite interactuar con otros agentes. Proporciona un interfaz gráfico que nos permite construir mensajes ACL, mandarlos, almacenarlos (también los que nos envíen a nuestro agente Dummy), y verlos en detalle. Víctor Daniel PODBEREZSKI - 109 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Figura B.3: Interfaz gráfica del agente Dummy. B.3.3 Interfaz DF El agente DF, Directory Facilitator, proporciona también una interfaz gráfica, figura 4. Este Agente es el que provee los servicios de Páginas Amarillas. A través de la interfaz gráfica se pueden ver descripciones de los agentes registrados, registrar y quitar agentes, buscar descripciones y modificarlas. Víctor Daniel PODBEREZSKI - 110 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Figura B.4: Interfaz gráfica del agente DF. A través de la GUI también podemos combinar nuestro DF con otros DF y crear dominios y subdominios de páginas amarillas. B.3.4 Agente Sniffer Gracias al agente Sniffer (figura 5) se pueden monitorizar todos los mensajes que un agente, o un grupo de ellos, intercambian. Existen opciones para poder monitorizar mensajes con un performative exclusivo. Víctor Daniel PODBEREZSKI - 111 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Figura B.5: Interfaz gráfica del agente sniffer. B.3.5 Agente Instrospector Permite monitorizar la ejecución de un agente, y los mensajes intercambiados por este. También permite la monitorización de sus comportamientos y la ejecución paso a paso de estos. Figura B.6: Interfaz gráfica del agente instrocpector. Víctor Daniel PODBEREZSKI - 112 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE B.4 Agentes La clase jade.core.Agent representa la base común para todos los agentes de Jade. La herencia de esta clase le proporciona la capacidad de realizar las interacciones básicas con la plataforma (tales como registro o configuración) y para implementar el comportamiento (por ejemplo, el envío y recepción de mensajes o el uso de protocolos de interacción). El agente tiene un método setup que debe emplearse para la inicialización del agente. Este método se ejecuta después de la inicialización relacionada con la plataforma. Es por tanto aquí donde comienza el comportamiento definido por el usuario. Los agentes de Jade se implementan con un único thread de ejecución. Para gestionar los comportamientos de un agente la clase Agent tiene los métodos addBehaviour y removeBehaviour. Los comportamientos pueden ser añadidos y eliminados en cualquier momento de la vida del agente. Un planificador implementado por la clase Agent y oculto al programador selecciona el Behaviour a ejecutar según un round-robin entre los Behaviour preparados. El Behaviour lleva a cabo su tarea con el método action. El método action es invocado cuando tiene lugar el evento asociado al Behaviour. Este evento puede ser la llegada de un mensaje o una temporización por ejemplo. La aproximación a la planificación hecha por Jade, recomienda que los métodos action no tengan un tiempo de ejecución alto ya que mientras se ejecutan no pueden ser interrumpidos por otro comportamiento. Cuando termina el método action, se invoca al método done para saber si ha terminado su tarea. En caso de que no haya terminado queda reprogramado para la siguiente ronda. Igual que las threads en Java, en un agente pueden ejecutarse a la vez tantos comportamientos como sea necesario. Sin embargo, a diferencia de las threads en JAVA, el decidir qué comportamiento se ejecuta en cada momento es tarea nuestra (en JAVA lo decide la máquina virtual). Esto es así para que cada agente equivalga únicamente a un único thread, con el consiguiente ahorro de ciclos de CPU y memoria que esto implica. Víctor Daniel PODBEREZSKI - 113 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Figura B.7: El ciclo de ejecución de un agente En la figura 7 puede verse el camino por el que atraviesa un agente desde que comienza su ejecución hasta que finaliza y se elimina. Como puede verse, lo primero a ejecutar es el método setup(). Tras esto se comprueba que el agente sigue vivo y después se selecciona el siguiente comportamiento a ejectuar del conjunto de comportamientos que aun le quedan por ejecutar al agente. Se ejecuta su método b.action() y tras esto se pregunta si ha finalizado. Es posible que no lo haya hecho ya que un comportamiento puede ser o un simple trozo de código que se ejecuta una sola vez o bien varias veces dependiendo de otros factores. Si está ejecutado se elimina del conjunto de comportamientos del agente y no vuelve a ejecutarse. En todo caso, se vuelve a comenzar. Víctor Daniel PODBEREZSKI - 114 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Para realizar comunicaciones entre agentes es necesario que estos estén identificados de forma única en la plataforma. De acuerdo con las especificaciones de FIPA, cada agente posee un Identificador de Agente (AID = Agent Identifier). La estructura del AID se compone de varios campos, siendo los más importante los de nombre y dirección. El nombre del agente es un identificador global único para él. JADE construye dicho identificador concatenando el nombre dado al agente en la plataforma por el usuario con el nombre de la plataforma inicial del agente (HAP = Home Agent Platform) separados por el carácter ‘@’. Un ejemplo de este nombre sería pepe@labo:1099/JADE, donde “pepe” es el nombre del agente y “labo:1099/JADE” el de la plataforma. Sólo los nombres completos son válidos dentro de los mensajes ACL. Las direcciones por el contrario pueden contener varias direcciones de transporte en las cuales contactar al agente. La sintaxis de estas direcciones es una secuencia de URI. B.5 Comportamientos. Las diferentes tareas que realiza un agente se han de encapsular en comportamientos que heredan de la clase jade.core.behaviours.Behaviour. Existen varias subclases de Behaviour predefinidas. Los dos métodos principales que debe definir un Behaviour son action y done. Los comportamientos se pueden clasificar en dos grandes grupos: Primitivos y compuestos. B.5.1 Primitive Behaviours Algunos de los comportamientos primitivos son los siguientes: - SimpleBehaviour: Es el comportamiento mas básico que puede ser heredado para generar cualquier comportamiento requerido. - CyclicBehaviour: Este comportamiento permanece activo mientras que el agente este vivo y es llamado repetidamente luego de cada evento. Especialmente útil para utilizar en la recepción de mensajes. - TickerBehaviour: Es un comportamiento cíclico que se ejecuta periódicamente y realiza código definido por el usuario. - OneShotBehaviour: Este comportamiento se ejecuta una vez y finaliza. No se puede establecer en que momento exacto se ejecuta. - WakerBehaviour: Ejecuta código del usuario una vez en un tiempo especificado. - ReceiverBehaviour: Se ejecuta cuando un tipo de mensaje es recibido o un timeout expira. - SenderBehaviour: Encapsula la acción de envío de un mensaje ACL. Este mensaje se le debe especificar en el constructor. Víctor Daniel PODBEREZSKI - 115 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE B.5.2 Composite Behaviours Los comportamientos compuestos permiten combinar los previamente definidos de manera conveniente. Algunos de ellos son: - ParallelBehaviour: Controla un conjunto de comportamientos hijos que se ejecutan en paralelo. La condición de finalización puede especificarse para finalizar cuando todos los hijos finalizan, N finalicen o alguno finalice. - SequentialBehaviour: Este comportamiento ejecuta sus comportamientos uno tras el otro y finaliza cuando el último hijo finaliza. - FSMBehaviour: Esta clase permite definir una Máquina de Estados Finita mediante subbehaviours. Cada sub-comportamiento representa un estado de la máquina, y las transiciones se van produciendo según la salida de dichos estados. La finalización se alcanza cuando se termine de ejecutar algún sub-behaviour que se haya registrado como estado final. B.6 Comunicación entre agentes La comunicación entre los agentes es una de las más importantes características que aporta JADE. Se basa en un modelo de paso de mensajes asíncrono. Cada agente tiene un buzón en el cual se van almacenando los mensajes enviados por otros agentes. Cuando llega un mensaje nuevo, se le notifica al agente que lo ha recibido para que lo procese. Los mensajes intercambiados entre los agentes siguen un formato concreto que ha sido definido por la FIPA denominado ACL. Todos los mensajes que se envían y reciben son instancias de la clase ACLMessage, que incorpora una serie de métodos para construir mensajes FIPA correctos y obtener las características de un determinado mensaje. Utilizando el método blockingReceive hacemos que el comportamiento quede detenido hasta que se reciba un mensaje, sea el tipo de mensaje que sea. La estructura de un mensaje está compuesta por los siguientes campos: • • • • • • Performative: El tipo de mensaje FIPA (INFORM, QUERY, PROPOSE, ...) Receiver: Destinatario del mensaje Sender: Emisor del mensaje (inicializado automáticamente) Content: Contenido del mensaje ConversationID: Usado para identificar los mensajes de la misma conversación Language: Especifica que lenguaje es utilizado en el content. Ontology: Especifica que ontología es utilizada en el content. Víctor Daniel PODBEREZSKI - 116 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE • • • • Protocol: Específica el protocolo. ReplyWith: Especifica una expression a utilizar para distinguir las respuestas de un mensaje. InReplyTo: Especifica una expresión utilizada en la respuesta para distinguir una respuesta perteneciente a una conversación. ReplyBy: Utilizado para definer un tiempo limite para responder el mensaje. B.7 Ontologías Un elemento fundamental en los sistemas de agentes son las ontologías. Estas tienen como misión poner de acuerdo a los agentes en el vocabulario con el que comunicarse. Jade proporciona soporte para las ontologías. Las ontologías y sus componentes son traducidos a clases Java que luego son invocadas por los agentes. En esencia, el soporte que proporciona Jade para las ontologías permite trabajar con ellas en el modo reflejado en la figura. Figura B.8: Conversión realizada por el soporte de Jade para ontologías. El soporte de Jade para ontologías incluye las clases para trabajar con estas y con los lenguajes de contenido. Los lenguajes de contenido tienen que ver con la representación interna del contenido de los mensajes ACL. Las ontologías tienen que ver con la semántica de los mensajes que se intercambian y su chequeo. Víctor Daniel PODBEREZSKI - 117 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Jade incorpora en el paquete jade.content soporte, codecs, para dos lenguajes de contenido. El lenguaje SL es legible por los humanos y codifica las expresiones como string. El lenguaje LEAP no es legible por los humanos y es byte-encoded. Una ontología en JADE es una instancia de la clase jade.content.onto.Ontology en la cual se definen los esquemas de la estructura de los predicados, acciones de los agentes y conceptos relevantes al dominio del problema. Estos esquemas son instancias de las clases PredicateSchema, AgentActionSchema y ConceptSchema incluidas en el paquete jade.content.schema. La primera representa a los predicados de la ontologia, la segunda a los agentes intervinientes y la tercera a los conceptos propiamente dichos de la misma. Además, para cada uno de estos elementos que definamos en la ontología se deberá crear una clase asociada. Para cada uno de los esquemas se definirán una serie de campos (por ejemplo, podríamos definir el concepto libro con los campos título y autor). Estos campos se corresponderán con una variable de la clase correspondiente al esquema, y por lo tanto tendrán asociado un tipo. • Cada esquema añadido a la ontología está asociado a una clase java. Por ejemplo, el esquema para el concepto Titulo está asociado a la clase Titulo.java. Estas clases deben tener una estructura tal como se comenta más adelante. • Cada campo de un esquema debe tener un nombre y un tipo. Este tipo se debe corresponder con un determinado esquema. Para los tipos básicos (int, String, etc.) podemos usar los campos correspondientes de la clase BasicOntology. • Un campo puede ser declarado OPTIONAL con lo que su valor puede ser null. En otro caso el campo es considerado MANDATORY. • Otro de los atributos que se le puede dar a un campo (como OPTIONAL) es UNLIMITED, con lo que la cardinalidad de ese campo podrá ser mayor que 1. • Aunque en este ejemplo no se da el caso, un esquema puede tener un número de superesquemas. Esto se hace mediante el método addSuperSchema. La estructura de estas clases debe ser coherente con sus esquemas asociados. Más en concreto deben obedecer las siguientes reglas: 1. implementar la interfaz adecuada: o Si el esquema es un ConceptSchema la clase debe implementar (directa o indirectamente mediante herencia) la interfaz Concept. o Si el esquema es un PredicateSchema la clase debe implementar (directa o indirectamente mediante herencia) la interfaz Predicate. Víctor Daniel PODBEREZSKI - 118 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE o Si el esquema es un AgentActionSchema la clase debe implementar (directa o indirectamente mediante herencia) la interfaz AgentAction. 2. tener las relaciones de herencia adecuadas. Por ejemplo, si S1 es un super-esquema de S2 entonces la clase C2 asociada al esquema S2 debe extender la clase C1 asociada al esquema S1. 3. tener las variables miembro y los métodos de acceso adecuados: Por cada campo en el esquema S1 con nombre nnn y tipo S2 la clase C1 asociada al esquema S1 debe tener dos métodos de acceso de la siguiente forma: public void setNnn(C2 c); public C2 getNnn(); donde C2 es la clase asociada al esquema S2. Si S2 es un esquema definido en BasicOntology, entonces: o si S2 es el esquema de STRING entonces C2 es java.lang.String si S2 es el esquema de INTEGER entonces C2 es int, long, java.lang.Integer o java.lang.Long si S2 es el esquema de BOOLEAN entonces C2 es boolean o java.lang.Boolean si S2 es el esquema de FLOAT entonces C2 es float, double, java.lang.Float o java.lang.Double si S2 es el esquema de DATE entonces C2 es java.util.Date si S2 es el esquema de BYTE_SEQUENCE entonces C2 es byte[] si S2 es el equema de AID (identificador de agente) entonces C2 es jade.core.AID Por cada campo en el esquema S1 con nombre nnn, tipo S2 y cardinalidad mayor que 1 la clase C1 asociada al esquema S1 debe tener dos métodos de acceso de la siguiente forma: public void setNnn(jade.util.leap.List l); public jade.util.leap.List getNnn(); Víctor Daniel PODBEREZSKI - 119 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Para que un agente de Jade use una ontología debe importarla y registrarla. Luego la utilizará con la API correspondiente de Jade. B.8 Manejo de Ontologías: Ontology Bean Generator. Construir manualmente las ontologías de este modo resulta muy tedioso. Para automatizar la tarea, la Universiteit van Amsterdam ha desarrollado el Ontology Bean Generator (http://gaper.swi.psy.uva.nl/beangenerator/content/main.php). A partir de una ontología desarrollada con Protégé, el Bean Generator genera las clases necesarias para su manejo desde Jade. Para realizar la transformación hay que seguir los siguientes pasos: 1. Abrir un proyecto nuevo o existente de Protégé. 2. Incluir el proyecto SimpleJADEAbstractOntology.pprj mediante el menú Project → Include... de Protégé. 3. Crear los conceptos de la ontología como subclases de Concept. 4. Crear los agentes de la ontología como subclases de Agent. 5. Crear los predicados de la ontología como subclases de Predicate. 6. Crear las acciones de los agentes de la ontología como subclases de AgentAction. 7. Ir al menú de Protégé Project → Configure… y seleccionar el checkbox OntologyBeanGeneratorTab. 8. Seleccionar la pestaña del Ontology Bean Generator. 9. Especificar o seleccionar de la lista desplegable el nombre del paquete para la ontología. 10. Especificar o seleccionar el directorio donde serán volcadas las clases java que traducen la ontología. El directorio debe existir. 11. Presionar el botón Generate. El uso de una ontología generada por Protégé desde Jade requiere incluir la librería beangenerator.jar. B.9 Referencias [Agudo & Fuentes Fernández 2003] B. Agudo, R. Fuentes Fernández, “Introducción a Jade”, Departamento de Sistemas Informáticos y Programación, UCM, 26/3/2003 Víctor Daniel PODBEREZSKI - 120 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Caire 2006a] G. Caire. "JADE Tutorial: JADE programming for Beginners". CSELT S.p.A. y TILab S.p.A.. Disponible en [JADE 2006]. [Bellifemine & Caire 2003] F. Bellifemine, G. Caire, A. Poggi, G. Rimassa. "JADE, a White Paper". EXP- Volume3 - n3- September 2003. Disponible en [JADE 2006]. [Bellifemine et. al 2006] F. Bellifemine, G. Caire, T. trucco, G. Rimassa. "JADE Administrator’s guide". CSELT S.p.A. y TILab S.p.A.. Disponible en [JADE 2006]. [Bellifemine et al 2006] F. Bellifemine, G. Caire, T. trucco, G. Rimassa. "JADE Programmer’s GUIDE". CSELT S.p.A. y TILab S.p.A.. Disponible en [JADE 2006]. [Caire 2006b] G. Caire, “JADE TUTORIAL APPLICATION-DEFINED LANGUAGES AND ONTOLOGIES”, TILAB, Disponible en [JADE 2006]. CONTENT [JADE 2006] Sitio Web de JADE. http://jade.tilab.com [Bragado 2004] J. Garamendi Bragado, “Agentes Inteligentes: JADE”, Programa de Doctorado: Informática y Modelización Matemática, Universidad Rey Juan Carlos, Abril 2004 [Vaucher & Ncho 2003] J. Vaucher, A. Ncho, JADE Tutorial and Primer, Dep. d'informatique, Université de Montreal, September 2003 Víctor Daniel PODBEREZSKI - 121 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Apéndice C La reputación en la manufactura inteligente C.1 Manufactura integrada por computador La manufactura integrada por computador (CIM) es un concepto acuñado a principios de los ´70 [Harrington 1973]. Esta se propone utilizar el poder de análisis, cálculo y procesamiento de las computadoras al servicio de la producción de bienes de mercado [Waldner 1990, Rapetti 2002, Kalpakjian & Schmid 2002]. CIM cubre varios aspectos de la industria, que van desde el diseño, la ingeniería, la manufactura hasta la logística, el almacenamiento y la distribución de los productos. El objetivo de esta tecnología es incrementar la capacidad de manufacturar piezas, productos terminados o semielaborados usando el mismo grupo de máquinas. Para ello se requiere que las herramientas utilizadas sean flexibles y capaces de modificar su programación adaptándose a los nuevos requerimientos del mercado. CIM cubre varios aspectos de la industria, desde el diseño, ingeniería, manufactura hasta la logística, almacenamiento y distribución de los productos. CIM trasciende el rótulo de tecnología para ser considerada más una filosofía o estrategia de la empresa. CIM nos permite conseguir los objetivos antes planteados mediante la tecnología de manufactura flexible. Su utilización conduce a beneficios como el mejoramiento en calidad, la reducción en costos e inventario, y un mejor manejo de los productos. El objetivo de esta tecnología es la capacidad de manufacturar piezas, productos terminados o semielaborados usando el mismo grupo de máquinas. Para lo mismo se requiere que las herramientas utilizadas sean flexibles y capaces de modificar su programación adaptándose a los nuevos requerimientos del mercado. La manufactura flexible como aproximación clásica postula la creación de celdas flexibles de producción dentro de la fábrica. Una celda de manufactura flexible es un centro simple o un pequeño conjunto de máquinas que unidas producen una parte, sub-ensamble o producto. Juntas se complementan para efectuar una actividad relacionada incluyendo tanto su manipulación como su obtención y puesta a disponibilidad a otras celdas. El enfoque CIM pretende ampliar los diversos niveles de automatización de las operaciones de fabricación, incluyendo funciones de procesamiento de información y usando una extensa red de computadores. Los sistemas CIM consisten de subsistemas que se integran en un todo, en la Figura 1 se puede ver un esquema de un CIM. Estos subsistemas suelen ser: Planificación y Respaldo Comercial, Diseño del Producto, Planificación del proceso de fabricación, Control del Víctor Daniel PODBEREZSKI - 122 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE proceso, Sistemas de monitorización del taller, y Automatización del proceso. Los subsistemas se diseñan, desarrollan y aplican de tal manera que la salida de uno sea la entrada de otro. Figura C.1: Estructura de un sistema de CIM Recientemente es introducido el concepto de Multi-Functions Integrated Factories (MFIF) [Osanna & Si 2000; Osanna et. al. 2001]. En esta concepción la aplicación de la flexibilidad en la producción abandona el ámbito intra-fábrica para pasar a ser Inter- fábrica. Este paradigma incluye la interconexión de diversas fábricas geográficamente separadas que interactúan entre si para la elaboración de un producto. Cada fábrica se especializa en un conjunto de tareas que ofrece a quien quiera contratarla. Estas tareas sirven para un conjunto de productos cuyo desarrollo debe repartirse en el tiempo para aumentar la utilidad de producción. C.2 La manufactura y el paradigma de agentes Víctor Daniel PODBEREZSKI - 123 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE La manufactura en su sentido más amplio, es el proceso de convertir la materia prima en productos. Incluye: el diseño del producto, la selección de la materia prima, y la secuencia de procesos a través de los cuales será fabricado el producto [Kalpakjian & Schmid, 2002]. Las empresas de fabricación del siglo XXI se encuentran en un entorno en el cual los mercados son muy cambiantes, nuevas tecnologías emergen constantemente, y los competidores se multiplican globalmente. Las estrategias de fabricación deben cambiar para soportar la competitividad global, la innovación e introducción de nuevos productos, y la respuesta rápida al mercado. Tales sistemas de fabricación necesitarán satisfacer los siguientes requisitos fundamentales [Shen & Norrie 1999]: - Integración de la Empresa: Para lograr la competitividad global y la respuesta rápida al mercado, la empresa de fabricación individual o colectiva deberá integrarse con su sistema de administración (compra, órdenes de trabajo, diseño, fabricación, planificación y asignación de recursos, control, transporte, recursos, personal, materiales, calidad, etc.) y sus socios a través de una red. - Organización Distribuida: Para una integración efectiva de la empresa a través de organizaciones distribuidas, serán necesarios sistemas distribuidos basados en el conocimiento para enlazar la administración de demandas directamente a los recursos, la planificación de capacidades y asignación de recursos. - Entornos Heterogéneos: Tales sistemas de fabricación necesitarán acomodar software y hardware heterogéneos tanto en sus entornos de fabricación como en sus entornos de información. - Inter-operabilidad: Entornos heterogéneos de información pueden utilizar lenguajes de programación diferentes, representar los datos con diferentes lenguajes y modelos de representación, y operar en diferentes plataformas de procesamiento. Los sub-sistemas y componentes de tales entornos heterogéneos deberían Inter-operar de una manera eficiente. - Cooperación: Las empresas de fabricación deberán cooperar con sus proveedores, socios, y clientes para el suministro de materiales, fabricación de partes, comercialización del producto final, etc. Tal cooperación debería ser eficiente y de respuesta rápida. - Integración de humanos con el software y hardware: Las personas y los computadores necesitan estar integrados para trabajar de manera colectiva a varios niveles de desarrollo Víctor Daniel PODBEREZSKI - 124 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE en el proceso de fabricación y en todo el ciclo de vida del producto, con acceso rápido al conocimiento y la información. Fuentes de información heterogéneas deben ser integradas para soportar estas necesidades y para mejorar las capacidades de decisión del sistema. Se requieren entornos de comunicación bi-direccional para permitir comunicación efectiva y rápida entre los humanos y los computadores para facilitar así su interacción. - Agilidad: Se debe prestar considerable atención en reducir el tiempo del ciclo del producto para ser capaces de responder a los deseos de los clientes de manera más rápida. La fabricación ágil es la habilidad de adaptarse rápidamente a entornos de fabricación de cambio continuo y no anticipado, y, además, es el componente clave en las estrategias de fabricación para la competitividad global. Para lograr la agilidad, las utilidades de fabricación deben ser capaces de re-configuración rápida e interacción con sistemas y socios heterogéneos. Idealmente, los socios se contratan de manera dinámica sólo para el tiempo requerido para completar una tarea específica. - Escalable: Un sistema de fabricación es escalable cuando recursos adicionales pueden ser incorporados dentro de la organización cuando éstos sean necesarios. Esta capacidad debería estar disponible en cualquier nodo de trabajo en el sistema y en cualquier nivel dentro de los nodos. La expansión de recursos debería ser posible sin alterar los enlaces previamente establecidos en la organización. - Tolerancia a Fallos: El sistema debería ser tolerante a fallos tanto a nivel de sistema como a nivel de sub-sistema para detectar y recuperarse de fallos a cualquier nivel, y, así, minimizar el impacto que estos fallos pudieran tener en el entorno de trabajo. Con el propósito de lograr desempeñar estos requisitos se han propuesto numerosos paradigmas y arquitecturas. Entre ellas los sistemas multiagentes. Los sistemas multiagentes están íntimamente relacionados con la inteligencia artificial distribuida y además toman ideas y principios de disciplinas tan diferentes como economía, filosofía, lógica, ecología y ciencias sociales. Se presta especial atención a la interacción entre distintas entidades, llamadas agentes, entre si. Hay varios factores que señalan la conveniencia de un acercamiento mediante el paradigma de Agentes [ Bond & Gasser 1988, Jennings & Wooldridge 1998]: - El ambiente es abierto, o al menos altamente dinámico, incierto o complejo. En esos ambientes sistemas capaces de un accionar autónomo y flexible son a menudo la única solución. Víctor Daniel PODBEREZSKI - 125 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Los agentes son una metáfora natural. Muchos ambientes (incluyendo la mayoría de las organizaciones y cualquier ambiente competitivo o comercial) son modelados naturalmente como sociedades de agentes, bien cooperando entre ellos para resolver un problema complejo, o compitiendo entre ellos. En ocasiones, como en las interfaces inteligentes, la idea de un agente es vista como una metáfora natural: Maes [Maes 1994] plantea a los agentes como asistentes expertos, cooperando con el usuario para trabajar en un problema. - Distribución de información, control o experticia. En algunos ambientes, la distribución de información, control o experticia determina que una solución centralizada como mejor caso es extremadamente dificultosa o en el peor caso imposible. En esos casos la solución se puede modelar como un sistema multiagente en el cual cada componente se comporta en forma autónoma o semi-autónoma. - Sistemas heredados. Un problema enfrentado por desarrolladores de software es el del legado: sistemas que están obsoletos tecnológicamente pero son funcionalmente esenciales para la organización. Ese software generalmente no puede ser desechado por el costo a corto plazo de reescribirlos. Y a menudo se requiere que este interactué con otros componentes de software, funcionalidades que nunca fueron planeadas por los desarrolladores originales. Una solución a este problema es encapsular los componentes heredados, proveyéndolos con una funcionalidad de 'agent layer', permitiéndoles comunicarse y cooperar con otros componentes [Genesereth & Ketchpel 1994]. Como puede observarse las necesidades de los sistemas de fabricación modernos encuadran dentro de las bondades de los sistemas multiagentes. Es por eso que su utilización es por muchos considerada un acierto y se pueden encontrar diversos campos de aplicación dentro de los procesos de una planta productiva. Entre ellas se encuentra la administración de la cadena de suministros. C.3 La cadena de suministros. Una cadena de suministro puede ser definida como una red de entidades autónomas o semiautónomas de negocio colectivamente responsables de las actividades de adquisición, fabricación y distribución asociadas con una o más familias de productos relacionados. Diferentes entidades de una cadena de suministro funcionan sujeto a diferentes restricciones y objetivos [Swaminathan et. al. 1998]. El concepto de Administración de la cadena de suministros (Supply Chain Management) fue comenzado a utilizarse en los comienzos de los 90 [Fox 1992]. Se entiende como el proceso de integrar y utilizar proveedores (suppliers), productores (manufacturers), almacenes (warehouses) Víctor Daniel PODBEREZSKI - 126 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE y vendedores (retailers) para que los bienes sean producidos y distribuidos en las cantidades correctas, minimizando los costos y satisfaciendo los requerimientos del cliente. La administración de la cadena de suministros concentra la realización de las decisiones estratégicas, tácticas y operacionales que optimizan la performance de la cadena de suministros. El nivel estratégico define la red de la cadena de suministros; es decir la selección de proveedores, rutas de transporte, instalaciones industriales, niveles de producción, depósitos, y otros. El nivel táctico planea y programa la cadena de suministros para satisfacer la exigencia actual. El nivel operacional ejecuta los planes. Funciones de toma de decisión de nivel táctico y operaciones están distribuidas a través de la cadena de suministros [Fox et. al. 2000]. Figura C.2: Actores en la cadena de suministros Dentro de una cadena de suministro se pueden identificar 3 actores (Figura 2): - Los clientes que realizan, modifican y anulan pedidos. - La compañía propiamente dicha que elabora el producto pedido por el cliente. - Los proveedores de materia prima y servicios a la compañía para la elaboración de los productos. Una correcta administración de la cadena de suministros otorga varios beneficios, entre ellos [Chang & Makatsoris 2001]: - Mejora de rendimiento: Mejor coordinación del material y capacidad de prevenir la pérdida de utilización por la espera de partes. Víctor Daniel PODBEREZSKI - 127 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Reducción del tiempo de ciclo: Al considerar las limitaciones y las alternativas en la cadena de suministros ayuda a reducir el tiempo del ciclo de producción. - Reducción de costos de inventario: Pues se conoce qué comprar y cuándo, además de el mínimo requerido y máximo tolerado. - Optimización del transporte: mejorando la logística y carga de vehículos. Una descomposición funcional de las actividades de una cadena de suministros usual es [Fox et. al. 2000, Chang & Makatsoris 2001]: - Adquisición de pedidos: responsable de tomar los pedidos de los clientes, negociar acerca de precios, fechas y similares. Debe también manejar las modificaciones y cancelaciones de las órdenes. Cuando un plan viola los requerimientos de un cliente (por ejemplo de fechas) debe negociar con el cliente y con la logística por un plan alternativo. - Logística: Responsable de coordinar los planes de producción, los proveedores y los distribuidores para obtener el mejor posible resultado en términos del objetivo de la cadena de suministros, incluyendo el envío en tiempo, minimización de costos, entre otros. Maneja el movimiento de los productos y materiales a través de la cadena de suministro desde la materia prima desde el proveedor hasta el producto final para el consumidor. - Transporte: Encargado de la asignación y agendado de los recursos de transporte. Debe considerar varios tipos de rutas y de transportes. - Planificación: Responsable de programar y reprogramar las actividades de la fábrica explorando los escenarios probables para nuevas órdenes potenciales y generando agendas que son enviadas a los administradores de ejecución para ser llevadas a cabo. Asigna recursos y tiempo de inicio a las actividades que pueden realizarse a la vez que intenta optimizar algún criterio como minimizar la demora y el trabajo en progreso. Puede generar una agenda desde la nada o modificar una existente que ha violado alguna restricción. En anticipación de ciertas incertezas como el rompimiento de una máquina o la falta de una materia prima puede reducir la precisión de las tareas agendadas incrementando el grado de libertad con el que trabajan los administradores de ejecución. Por ejemplo aumentando en un valor dado el tiempo esperado de ejecución de un proceso a realizar. - Gestión de recursos: Realiza el control de inventario y la gestión de compras. Debe tener en cuenta en forma dinámica la disponibilidad de materia prima para que los planes de producción puedan ser ejecutados. Determina la demanda de materiales y la cantidad a pedir Víctor Daniel PODBEREZSKI - 128 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE en las órdenes de compra. Debe seleccionar un proveedor para minimizar el costo y maximizar los beneficios de disponibilidad de recursos. Cuando un pedido no llega en el momento adecuado debe ayudar al planificador a buscar una alternativa de producción. - Administración de ejecución: Ejecuta la agenda de producción en tiempo real según lo dictado por el planificador. En principio funciona de forma autónoma mientras que los pasos del plan se cumplan de acuerdo a lo previsto. Cuando ocurre una desviación del plan le debe comunicar al planificador para esperar una nueva agenda. Dado el grado de libertad del plan el administrador de ejecución determina qué hacer luego. En esa decisión debe balancear el costo de cada actividad, el tiempo requerido para hacerlo y el nivel de incerteza de la célula de producción. C.4 Administración de la cadena de suministros mediante agentes La administración de cadena de suministros mediante la utilización de agentes ha sido estudiada por diversos autores, entre ellos [Chang & Makatsoris 2001; Fox 1992; Fox et. al. 2000; Lau et. al. 2004; Rossetti & Hin-Tat Chan 2003; Swaminathan et. al. 1998; Wagner & Guralnik, 2002]. El primer desafío que se debe resolver para enfrentar la realización de la administración de la cadena de suministros es determinar que actividades de las mismas serán ejecutadas por que agentes. Para realizar esto se deben tener en cuenta las regulaciones organizativas, los sistemas existentes y limitaciones algorítmicas. El sistema debe lidiar con la planificación, el agendado y coordinación entre las partes. Una división funcional propuesta por [Fox et. al. 2000] para organizar con agentes la administración de cadena de suministros propone utilizar los siguientes agentes: agente de adquisición de órdenes, agente de logística, agente de transporte, agente de agendado, agente de recursos y agente de despachos. Las funciones que realizan cada uno de ellas se corresponden a las homónimas establecidas en la sección 1.3. Entre estas partes es necesaria una correcta coordinación. Para el correcto funcionamiento de las partes se debe lograr una transferencia de conocimiento entre partes y que las decisiones tomadas locales tratando de maximizar su utilidad a su vez maximicen la utilidad global y eficiencia del sistema. La solución debe ser flexible teniendo en cuenta que ciertos procesos pueden cancelarse, modificarse o agregarse. Los agentes que conforman el sistema deben poder volver a programar sus tareas y modificar los acuerdos pactados. Los tiempo de respuesta deben ser aceptables a nivel productivo y debe poder circular la información y conocimiento para resolver las tareas. Víctor Daniel PODBEREZSKI - 129 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Fox et al [Fox et. al. 2000] proponen la utilización de ABS [Barbuceanu and Fox, 1996a] como solución a estos problema. ABS son las siglas de Agent Building Shell y es una colección de componentes e interfaces resusables de software que proveen soporte para servicios de aplicaciones independientes de agentes. Dentro de este esquema se establecen los diferentes agentes antes descriptos y su forma de comunicarse. Para la solución de la comunicación generan un grafo que muestra los diferentes estados en los que puede estar un agente dentro de la comunicación y de acuerdo a la respuesta conseguida cual será el próximo estado en la misma. ABS proporciona una ontología conversacional completa, conteniendo Planes de conversación, reglas de conversación, y conversaciones actuales, en términos de las cuales las interacciones complejas son descritas. La siguiente capa de ABS se ocupa de modelos genéricos de acción y comportamiento, la representación de obligaciones y prohibiciones derivadas de las autoridad de los agentes en la organización, el uso de obligaciones en la negociación, y las formas en las cuales los agentes planean su comportamiento y ejecutan las actividades planeadas. Swaminathan et. al [Swaminathan et. al. 1998] propone utilizar agentes basados en el conocimiento. Identifican diferentes tipos de agentes en la cadena de suministros. A cada uno de estos agentes le provee la capacidad de utilizar un subconjunto de elementos de control. Los elementos de control ayudan en la toma de decisión en el nivel de agente utilizando varias políticas (sacado de modelos analíticos como políticas de inventario, liberación justo a tiempo, y algoritmos de ruteo) para demanda, suministro, información, y control de materiales dentro de la cadena de suministro. Se parte de un agente genérico al que luego se lo especializa. Los diferentes roles tomados por los agentes corresponden a los mismos utilizados por [Fox et. al. 2000]. El MetaMorph II [Shen et al 1998] usa una arquitectura híbrida basada en agentes y centralizada con mediadores para integrar dinámicamente a socios, proveedores y clientes con la empresa principal a través de sus respectivos mediadores dentro de una red de cadena de suministro vía el Internet e Intranet. En MetaMorph II, los agentes pueden ser usados para representar recursos industriales (máquinas, instrumentos etc.) y partes, encapsular sistemas de software existentes, funcionar como coordinadores de sistema/subsistema (mediadores), y realizar una o varias funciones de cadena de suministro. La solución propuesta por Chen et al [Chen et al 1999] consiste en tipos de agentes heterogéneos, que implementan alguna funcionalidad de la administración de la cadena de suministros, llamados agentes funcionales. Todos ellos tienen algún entendimiento de la ontología del sistema y usan una Lengua de Comunicación entre Agentes (ACL) para efectuar conversaciones. La ontología del sistema incluye el conocimiento sobre los productos que el sistema maneja y reglas de interacción, por ejemplo el protocolo de negociación usado en el Víctor Daniel PODBEREZSKI - 130 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE sistema. Ampliamente, los agentes funcionales pueden ser divididos en dos tipos. Unos son usados para proporcionar la información de sistema, llamados agentes de Información, y pueden interactuar con el exterior. El otro tipo de agentes está relacionado con un cierto producto, por ejemplo, ordenador portátil y implementa un papel especial de la cadena de suministro. El número de agentes de información es predefinido, estos son responsables de proporcionar diferente información de sistema. Excepto por estos agentes, otros componentes de sistema no son fijos. Los agentes funcionales pueden afiliarse al sistema y dejarlo según sus propias reglas u órdenes de sus dueños. Se dice que un agente funcional se afilia al sistema si este anuncia sus capacidades y papel deseado en una cadena a uno de los agentes de información. Del mismo modo, cuando un agente de función quiere marcharse, este tiene que notificar al agente de información en el cual se registró. No hay ningún superagente centralizado o mediadores distribuidos para manejar la cooperación entre agentes. C.5 Reputación en la cadena de suministros Para la selección de un socio en un proceso productivo - quien proveerá materia prima, insumos o un subproceso - se tienen en cuenta varios aspectos que van desde el precio y la calidad hasta el compromiso y garantía. Entre ellos algunos son fácilmente mensurables y comparables. Por otra parte otros son de difícil captación y se logran mediante la experiencia e interacción entre partes (como el compromiso, respaldo y seriedad). El proceso de selección debe tener en cuenta todas estas variables y mediante su comparación determinar aquel oferente que realice la tarea de la forma más eficaz y presente las garantías de éxito más altas. Dependiendo el proceso o parte de un producto dado puede ser deseable la preeminencia de ciertas características (por ejemplo el precio, la confiabilidad del proveedor o la entrega en término) por sobre otras. Los agentes dentro del ambiente de la cadena de suministros son dinámicos, su comportamiento se modifica con el tiempo. Por ejemplo el cambio de una máquina puede hacer que un fabricante mejore la calidad de su producción o aumente su velocidad de respuesta. Asimismo puede ocurrir que por problemas financieros los servicios brindados por ella se degraden. El aspecto temporal tiene que tenerse en cuenta. Las mediciones más recientes deben tener más peso que las mediciones más lejanas en el tiempo. Un mismo agente puede brindar diferentes servicios o productos, por ejemplo puede ofrecer cierres y botones. La calidad de cada uno de ellos puede ser diferente. Diferenciar entre ellos la información obtenida para construir modelos de reputación más adecuados a la realidad es deseable. No obstante la fragmentación de la reputación ocasiona que el sistema tarde más en aprender. Víctor Daniel PODBEREZSKI - 131 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE No debe olvidarse que la utilización de agentes en la administración de la cadena de suministros y el modelado de la reputación está condicionada por la realidad actual de los procesos productivos. Dentro de ellos y para la decisión de a quien confiar una tarea o subproducto se tienen en cuenta estándares de calidad establecidos por entidades reconocidas. Ejemplos de estas son: ISO o IRAM. El sistema de reputación debe adecuarse, soportar y valorar dichos tipos de credenciales. La utilización de la reputación como mecanismo de valoración de un agente debe insertarse dentro del proceso de selección de ofertante. En un sistema multiagente que tenga en cuenta la reputación como parte integrante del mecanismo de selección se debe implementar una serie de modificaciones en el protocolo para asegurar su correcto funcionamiento. Debe tenerse en cuenta la posibilidad de solicitar y atender consultas de reputación de terceros. Por otra parte el agente debe poder administrar su propia base de conocimiento de reputación. Para eso debe ser capaz de mantener un historial y una calificación de las últimas interacciones con el ofertante y en base a ellas poder sopesar y seleccionar si el agente es el conveniente para la tarea a realizar. Debe actualizar la reputación ingresando nueva información luego de la concreción de un contrato. Debe tenerse en cuenta que diversos agentes pueden calificar de diversas formas y con diferentes variables, se hace entonces necesario lograr algún mecanismo que permita compatibilizar entre las diferentes formas de medición. Por otro lado un agente puede tener conceptos de confianza diferentes a uno o no estar dispuesto a proporcionar información veraz, por lo tanto no siempre la información brindada debe ser utilizada y se debe analizar su uso. C.6 Modelos de reputación existentes en la administración de la cadena de suministros Dentro de los sistemas de reputación se encuentran aquellos centralizados donde el valor de reputación es global y no subjetivo. Ejemplo de estos son los sistemas de reputación on-line y Sporas [Zacharia 1999]. Debido a que diferentes agentes en la cadena de suministros tienen formas diferentes de calificar las interacciones, esta aproximación centralizada no es adecuada. Por lo tanto es poco recomendable su utilización. Otros modelos de reputación utilizan como información la observación directa, que como ya se dijo es la obtención de valores de reputación mediante la observación de la interacción entre dos agentes y sus resultados. Este tipo de obtención de reputación no puede utilizarse en la administración de cadena de suministro, en primer lugar por que muchas de las variables que se tienen en cuenta en el análisis de una interacción requieren la evaluación directa sobre el resultado obtenido (un elemento físico y no lógico). Por lo tanto la utilización de la observación Víctor Daniel PODBEREZSKI - 132 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE directa no es una táctica apropiada. Algunos métodos que utilizan esta aproximación son [Esfandiari & Chandrasekharan 2001], [Schillo et al 2000] y [Sen & Sajja 2002] Otras soluciones, como [Carter et al 2002] trabajan en base a ambientes con agentes sociales, donde la reputación se gana de acuerdo a la existencia de roles preestablecidos en una sociedad y su cumplimiento por parte de los agentes. En la administración de cadena de suministros no existe una sociedad armada de agentes, las relaciones de reputación se basan en la interacción y no en “posiciones sociales”, por lo tanto este tipo de acercamiento no es el más adecuado. En la interacción entre agentes en una cadena de suministros el resultado que mide la satisfacción es un valor complejo. Existen diversos aspectos en la transacción que son evaluados. La dimensión ontológica debe tenerse en cuenta, de no hacerlo se pierde mucha de esta información y la misma pierde calidad. Algunos de los modelos que tienen en cuenta el aspecto multicontextual son [Esfandiari & Chandrasekharan 2001], REGRET [Sabater & Sierra 2002a, Sabater & Sierra 2002b, Sabater 2003] y FIRE [Huynh et al 2004a, Huynh et al 2004b]. La forma de mediar cada valor de reputación es también un parámetro a tener en cuenta. Existen sistemas de administración de reputación que califican las interacciones utilizando valores booleanos: éxito y fracaso, ejemplo de ellos son [Schillo et al 2000] y [Esfandiari & Chandrasekharan 2001]. Estos modelos no tienen en cuenta que un contrato se puede llevar a cabo, pero que los resultados obtenidos tengan un grado de satisfacción. En la cadena de suministros un contrato con un tercero es analizado y mas allá de si fue un éxito es deseable conocer el grado de satisfacción logrado. De esa forma es posible más adelante comparar entre agentes que cumplen su contrato pero que lo realizan brindando diferentes calidades o prestaciones. Otros sistemas que tienen esto en cuenta son REGRET [Sabater & Sierra 2002a, Sabater & Sierra 2002b, Sabater 2003], FIRE [Huynh et al 2004a, Huynh et al 2004b], [Sen & Sajja 2002], [Carter et al 2002], [Yu & Singh, 2000; 2001a; 2001b] y NodeRanking [Pujol & Sangüesa 2001, Pujol et al 2002a, Pujol et al 2002b, Pujol et al 2003] utilizando para representar un intervalo continuo; y [Abdul-Rahman & Hailes 2000] y AFRAS [Carbo et al 2002] utilizando intervalos difusos. La utilización de mecanismos de cálculo de reputación donde los valores de reputación de un agente dependen de los agentes con los que tiene tratos, por ejemplo NodeRanking [Pujol & Sangüesa 2001, Pujol et al 2002a, Pujol et al 2002b, Pujol et al 2003] no son adecuados, pues un agente que tiene tratos con otro agente de baja reputación no tiene por que serlo, de igual forma en el caso contrario con agentes de alta reputación. Ninguno de los modelos de reputación anterior contempla la coexistencia de agentes de reputación centralizados y descentralizados. En la selección de socios en los procesos Víctor Daniel PODBEREZSKI - 133 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE productivos además de la experiencia previa y la reputación dada por pares se tiene en cuenta la certificación de calidad provista por ciertos agentes certificadores de calidad (por ejemplo: ISO). Las certificaciones en ciertos ambientes son obligatorias por legislación o por política de empresa, por lo tanto debería incluirse este tipo de validación de reputación en el método propuesto y una forma de cuantificarla. C.7 Referencias [Abdul-Rahman & Hailes 2000] Abdul-Rahman A. y Hailes S., 2000, Supporting trust in virtual communities, En Proceedings of the Hawaii's International conference on Systems Sciences, Maui Hawaii [Harrington 1973] Harrington J. jr., 1973, Computer Integrated Manufacturing., Pub Industrial Press, New York. [Waldner 1990] Waldner Jean-Baptiste, 1990, CIM Principles of Computer-integrated Manufacturing, Wiley [Rapetti 2002] Rapetti O, 2002, Apunte de Cátedra CIM I, 75.65 Manufactura Integrada por Computador (CIM) -Facultad de Ingeniería - Universidad de Buenos Aires [Kalpakjian & Schmid 2002] Kalpakjian Serope, Schmid Steven R., 2002, Manufactura ingeniería y tecnología, Pearson educación [Osanna & Si 2000] Osanna P. H., Si, L: Multi-Functions Integrated Factory M.F.I.F. - a Model of the Future Enterprise. Conference Proceedings: Internet Device Builder Conference, Sta. Clara, Mai 2000, 6S [Osanna et. al. 2001] Osanna P.H., Durakbasa M.N., Si L.X., 2001, Artificial Intelligence-based Metrology and Quality Management in Intelligent Production Environment, IPMM – 2001 [Shen & Norrie 1999] Shen, W., y Norrie, D., 1999, Agent-Based Systems for Intelligent Manufacturing: A State-of-the-Art Survey. Knowledge and Information Systems, an Internatinal Journal 1(2):129–156. [Bond & Gasser 1988] Bond, A. H., Gasser, L. (eds), 1988 Readings in Distributed Artificial Intelligence. Morgan Kaufmann, San Mateo, CA. [Jennings & Wooldridge 1998] Jennings, N. R., y Wooldridge, M. 1998. Applications of Intelligent Agents. Agent Technology: Foundations, Applications, and Markets 3–28. [Maes 1994] Maes, P., 1994 Agents that reduce work and information overload. Communications of the ACM, 37(7), 31-40. [Genesereth & Ketchpel 1994] Genesereth, M. R. y Ketchpel, S. P., 1994, Software agents. Communications of the ACM, 37(7), 48-53. Víctor Daniel PODBEREZSKI - 134 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Swaminathan et. al. 1998] Swaminathan Jayashankar M., Smith Stephen F. y Sadeh Norman M., 1998, Modeling Supply Chain Dynamics: A Multiagent Approach, Decision Sciences Volume 29 Number 3 Summer 1998 [Fox 1992] Fox, Mark. S., 1992, Integrated Supply Chain Management, Technical Report, Enterprise Integration Laboratory, University of Toronto. [Fox et. al. 2000] Fox Mark S., Barbuceanu Mihai, y Teigen Rune, 2000, Agent-Oriented Supply-Chain Management, 2000, The International Journal of Flexible Manufacturing Systems, 12 (2000), pages 165–188 [Chang & Makatsoris 2001] Chang Yoon, Makatsoris Harris, 2001, Supply chain modeling using simulation, En International Journal of Simulation - Systems, Science & Technology, Vol. 2 No. 1 [Lau et. al., 2004] LAU Jason, Huang George Q y Mak K L, 2004, Agent-based modeling of supply chains for distributed scheduling, IEEE Transactions on Systems, Man and Cybernetics: Part A, Accepted for publication [Rossetti & Hin-Tat Chan, 2003] Rossetti Manuel D. and Hin-Tat Chan, 2003 , A prototype object-oriented supply Chain simulation framework, Proceedings of the 2003 Winter Simulation Conference [Wagner & Guralnik, 2002] Wagner Tom y Guralnik Valerie, Software Agents for Dynamic Supply Chain Management, 2002 [Barbuceanu and Fox, 1996] M. Barbuceanu, M. S. Fox, (1996), Coordinating Multiple Agents in the Supply Chain, Proceedings of Fifth Workshop on Enabling Technologies: Infrastructure for Collaborative Enterprises, Stanford, CA, IEEE Computer Society Press, pp 134-142. [Shen et al 1998] Shen W., Xue D., y Norrie D.H., 1998, An Agent-Based Manufacturing Enterprise Infrastructure for Distributed Integrated Intelligent Manufacturing Systems, En Proceedings of PAAM'98, London, UK. [Chen et al 1999] Chen Ye, Peng Yun, Finin Tim, Labrou yannis, Cost Scott, Chu BIll, Sun Rongming y Willhelm Bob, 1999, A negotiation-based multi-agent system for supply chain management, Workshop on supply chain management, Autonomous Agents '99, Seattle, Wa, May 1999. [Zacharia 1999] Zacharia G., 1999, Collaborative reputation mechanisms for online communities, Tesis para master, Instituto de tecnología de Massachussets [Esfandiari & Chandrasekharan 2001] Esfandiari B., Chandrasekharan S., 2001, On how agents make friends: Mechanisms for trust acquisition, En Proceedings of the Fourth Víctor Daniel PODBEREZSKI - 135 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Workshop on Deception, Fraud and Trust in Agent Societies, Montreal Canada, páginas 27-34 [Schillo et al 2000] Schillo M., Funk P. y Rovatsos M., 2000, Using trust for detecting deceitful agents in artificial societies, Applied Artificial Intelligence, Edición especial en Confianza, engaño y fraude en sociedades de agentes [Sen & Sajja 2002] Sen S. y Sajja N., 2002, Robustness of reputation-based trus: Booblean case. En Proceedings of the first international joint conference on autonomous agents and multiagent systems (AAMAS-02), Bologna Italia, Páginas 288-293 [Carter et al 2002] Carter J., Bitting E. y Ghorbani A, 2002, Reputation formalization for an information-sharing multi-agent system, Computational Intelligence, 18(2), páginas 515534 [Sabater 2003] Sabater Mir Jordi, 2003, Trust and reputation for agent societies, Tesis Doctoral, Universidad Autónoma de Barcelona [Sabater & Sierra 2002a] Sabater Jordi , Sierra Carles , 2002, Reputation and social network analysis in multi-agent systems. AAMAS 2002: 475-482 [Sabater & Sierra, 2002b] Sabater J., Sierra C., 2002, REGRET: a reputation model for gregarious societies. En C. Castelfranchi y L. Johnson, editors, Proceedings of the 1st International Joint Conference on Autonomous Agents and Multi-Agent Systems, paginas 475–482. [Yu & Singh 2000] Yu, Bin. Singh, P. 2000. A Social Mechanism of Reputation Management in Electronic Communities. Department of Computer Science. Nort Carolina State University. [Yu & Singh 2001a] Yu, Bin. Singh, P. 2001a. An Evidential Model of Distributed Reputation Management. Department of Computer Science. North Carolina State University. [Yu & Singh 2001b] Yu, Bin. Singh, P. 2001b. Detecting Deception in Reputation Management. Department of Computer Science. North Carolina State University. [Pujol et al 2002a] Pujol, J.M., Sangüesa, R. and Delgado J.,2002, Distributed and Adaptable Ranking Algorithm for Reputation and Relevance Extraction, En Proceedings of the 5th Catalan Conference on Artificial Intelligence CCIA-02, pp 205-213, Castelló de la Plana, Spain. [Pujol et al 2002b] Pujol J.M., Sangüesa R. y Delgado J., Extracting Reputation in Multi Agent System by means of Social Network Topology, en Proceedings of the First International Joint Conference on Autonomous Agents and Multi-Agent Systems AAMAS-02. Vol. 1, pp 467-474. Bologna, Italy. Víctor Daniel PODBEREZSKI - 136 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE [Pujol et al 2003] Pujol Josep M., Sangüesa Ramon y Delgado Jordi, 2003, A Ranking Algorithm based on Graph Topology to Generate Reputation or Relevance, En Web Intelligence (Ning Zhong, Jiming Liu, and Yiyu Yao eds.), ch 18, pp 382-395, Springer Verlag, ISBN: 3-540-44384-3. [Pujol & Sangüesa 2001] Pujol J.M., Sangüesa R., 2001, Reputation Measures based on Social Networks metrics for Multi Agents Systems, en Proceedings of the 4th Catalan Conference on Artificial Intelligence CCIA-01, pp 205-213, Barcelona, Spain. [Carbo et al 2002] Carbo J., Molina J. y Davila J., 2002, Comparing predictions of sporas vs. a fuzzy reputation agent systems. En 3rd International Conference on Fuzzy Sets and Fuzzy Systems, Interlaken, páginas 147-153 [Huynh et al 2004a] Huynh Dong, Jennings Nicholas R., Shadbolt Nigel R., 2004, Developing an Integrated Trust and Reputation Model for Open Multi-Agent Systems, School of Electronics and Computer Science, University of Southampton, UK. [Huynh et al 2004b] Huynh, T. D., Jennings, N. R. and Shadbolt, N., 2004, FIRE: an integrated trust and reputation model for open multi-agent systems. En Proceedings of 16th European Conference on Artificial Intelligence, pages pp. 18-22, Valencia, Spain. Víctor Daniel PODBEREZSKI - 137 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Apéndice D Código Fuente Se transcribe a continuación parte del código fuente generado para la realización del prototipo de prueba. Se incluyen las partes más importantes: La arquitectura y la ontología. D.1 Framework D.1.1 Administrador package Reputation.Framework; import Reputation.ontology.*; import java.util.*; import jade.core.*; import jade.core.behaviours.*; /* * Created by IntelliJ IDEA. * User: Victor * Date: 07/04/2007 * Time: 14:32:03 * To change this template use File | Settings | File Templates. */ enum Action {AGREGAR,PEDIR,INOFRMAR} public abstract class Administrador extends WakerBehaviour { Agente_Reputador reputador; Agente_Administrador administrador; ArrayList ResultList; private Reputacion ResultRep; protected Action action; Medidor medidor; public Administrador(Agent agent, long l) { super(agent, l); reputador = new Agente_Reputador(); reputador.setName(agent.getAID().getName()); reputador.setLocalName(agent.getAID().getName()); Víctor Daniel PODBEREZSKI - 138 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE administrador = new Agente_Administrador(); administrador.setName(agent.getAID().getName()); administrador.setLocalName(agent.getAID().getName()); } protected int tipoActividad = 0; public void agregarReputacion(Reputacion reputacion) throws Exception { action = Action.AGREGAR; // Verifico que conozco el tipo de contrato ArrayList tContratos = obtenerTiposContratos(); if (!tContratos.contains(reputacion.getPor_la_interaccion().getDel_tipo())) throw new Exception("agregarReputacion::Tipo de Contrato desconocido"); ArrayList<Tema> temas = obtenerTemas(); if (!temas.contains(reputacion.getSobre_el__tema())) throw new Exception("agregarReputacion::Tema desconocido"); ArrayList<Metrica> metricas = obtenerMetricas(); if (!metricas.contains(reputacion.getMedido_en())) throw new Exception("agregarReputacion::Metrica desconocido"); Recopilador recopilador = getRecopilador(reputacion.getSobre_el__tema()); recopilador.agregarReputacionTema(reputacion); myAgent.addBehaviour(recopilador); } public void agregarReputacion(Fuente_de_Informacion fInformacion, Agente_Reputado reputado, Contrato contrato, Tema tema, Metrica metrica, String Valor) throws Exception { action = Action.AGREGAR; // Verifico que conozco el tipo de contrato ArrayList tContratos = obtenerTiposContratos(); if (!tContratos.contains(contrato.getDel_tipo())) throw new Exception("agregarReputacion::Tipo de Contrato desconocido"); ArrayList<Tema> temas = obtenerTemas(); if (!temas.contains(tema)) throw new Exception("agregarReputacion::Tema desconocido"); Víctor Daniel PODBEREZSKI - 139 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE ArrayList<Metrica> metricas = obtenerMetricas(); if (!metricas.contains(metrica)) throw new Exception("agregarReputacion::Metrica desconocido"); Reputacion reputacion = new Reputacion(); reputacion.setSobre_el__tema(tema); reputacion.setMedido_en(metrica); reputacion.setPor_la_interaccion(contrato); reputacion.setValor(Valor); reputacion.setPor_medio_de(fInformacion); reputacion.setEs_referido_a(reputado); reputacion.setFue_reputado_por(reputador); reputacion.setEs_Administrado_Por(administrador); Recopilador recopilador = getRecopilador(tema); recopilador.agregarReputacionTema(reputacion); myAgent.addBehaviour(recopilador); } protected void onWake() { switch(action) { case PEDIR: case INOFRMAR: case AGREGAR: break; } } public void informarReputacion(Agente_Reputado reputado, Tema tema, Fuente_de_Informacion fInf) throws Exception { action = Action.INOFRMAR; ArrayList<Tema> temas = obtenerTemas(); if (!temas.contains(tema)) throw new Exception("informarReputacion::Tema desconocido - " + tema.getIdentificador()); ArrayList<Metrica> metricas = obtenerMetricas(); Recopilador recopilador = getRecopilador(tema); ArrayList<Fuente_de_Informacion> fInformacion= new ArrayList<Fuente_de_Informacion>(); fInformacion.add(fInf); Víctor Daniel PODBEREZSKI - 140 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE recopilador.setResultRep(ResultRep); recopilador.obtenerReputacionTema(reputado,fInformacion); myAgent.addBehaviour(recopilador); } public void informarReputacion(Agente_Reputado reputado, Tema tema) throws Exception { action = Action.INOFRMAR; ArrayList<Tema> temas = obtenerTemas(); if (!temas.contains(tema)) throw new Exception("informarReputacion::Tema desconocido - " + tema.getIdentificador()); Recopilador recopilador = getRecopilador(tema); ArrayList<Fuente_de_Informacion> fInformacion=getFuentesDeInformacion(tema); recopilador.setResultRep(ResultRep); recopilador.obtenerReputacionTema(reputado,fInformacion); myAgent.addBehaviour(recopilador); } public void pedirReputación(Agente_Reputado reputado, Tipo_de_Contrato tContrato) throws Exception { action = Action.PEDIR; // Verifico que conozco el tipo de contrato ArrayList tContratos = obtenerTiposContratos(); if (!tContratos.contains(tContrato)) throw new Exception("pedirReputación::Tipo de Contrato desconocido"); //Obtengo el medidor correspondiente del tipo de contrato. medidor = getMedidor(tContrato); myAgent.addBehaviour(medidor); medidor.setReputacion(ResultRep); // Solicito el calculo de su reputacion. medidor.obtenerReputacion(reputado); } abstract public ArrayList ObtenerTaxonomía(Tipo_de_Contrato tContrato); abstract public ArrayList ObtenerTaxonomía(Tema tema) ; abstract public ArrayList<Metrica> obtenerMetricas(); Víctor Daniel PODBEREZSKI - 141 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE abstract public ArrayList<Tipo_de_Contrato> obtenerTiposContratos(); abstract public ArrayList<Tema> obtenerTemas(); abstract protected Medidor getMedidor(Tipo_de_Contrato tContratos); abstract protected Recopilador getRecopilador(Tema tema); protected abstract ArrayList<Fuente_de_Informacion> getFuentesDeInformacion(Tema tema); public Reputacion getReputacion() { return ResultRep; } public void setReputacion(Reputacion reputacion) { ResultRep = reputacion; } } D.1.2 Medidor package Reputation.Framework; import Reputation.ontology.*; import java.util.*; import jade.core.behaviours.WakerBehaviour; import jade.core.Agent; /* * Created by IntelliJ IDEA. * User: Victor * Date: 07/04/2007 * Time: 15:11:08 * To change this template use File | Settings | File Templates. */ public abstract class Medidor extends WakerBehaviour { protected Reputacion resultRep; private ArrayList<Reputacion> Reputaciones; protected Tipo_de_Contrato tipo_de_contrato = new Tipo_de_Contrato(); protected Metrica metrica; protected Tema tema; public Medidor(Agent agent, long l) { super(agent, l); } protected abstract void calcularReputacion(ArrayList<Reputacion> Reputaciones); public abstract ArrayList<Tema> obtenerTaxonomia(); protected void onWake() Víctor Daniel PODBEREZSKI - 142 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE { calcularReputacion(Reputaciones); Contrato contrato = new Contrato(); contrato.setDel_tipo(tipo_de_contrato); resultRep.setPor_la_interaccion(contrato); resultRep.setSobre_el__tema(tema); Agente_Administrador administrador = new Agente_Administrador(); administrador.setIdentificador(myAgent.getLocalName()); administrador.setLocalName(myAgent.getLocalName()); administrador.setName(myAgent.getName()); resultRep.setEs_Administrado_Por(administrador); Agente_Reputador reputador = new Agente_Reputador(); reputador.setIdentificador(myAgent.getLocalName()); reputador.setLocalName(myAgent.getLocalName()); reputador.setName(myAgent.getName()); resultRep.setFue_reputado_por(reputador); } public void obtenerReputacion(Agente_Reputado reputado) { ArrayList<Tema> Temas = obtenerTaxonomia(); Reputaciones = new ArrayList<Reputacion>(); for (Tema tema : Temas) { Reputacion reputacion; reputacion = new Reputacion(); reputacion.setSobre_el__tema(tema); reputacion.setEs_referido_a(reputado); Recopilador recopilador = getRecopilador(tema); ArrayList<Fuente_de_Informacion> fInformacion = getFuentesDeInformacion(tema); Reputaciones.add(reputacion); recopilador.setResultRep(reputacion); recopilador.obtenerReputacionTema(reputado,fInformacion); resultRep.setMedido_en(metrica); resultRep.setEs_referido_a(reputado); myAgent.addBehaviour(recopilador); } } public Reputacion getResult() { return resultRep; } public void setResult(Reputacion resultRep) { this.resultRep = resultRep; Víctor Daniel PODBEREZSKI - 143 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } public ArrayList<Reputacion> getReputaciones() { return Reputaciones; } public void setReputaciones(ArrayList<Reputacion> reputaciones) { this.Reputaciones = reputaciones; } public Reputacion getReputacion() { return resultRep; } public void setReputacion(Reputacion reputacion) { resultRep = reputacion; } protected abstract Recopilador getRecopiladorReply(Tema tema); protected abstract Recopilador getRecopilador(Tema tema); protected abstract ArrayList<Fuente_de_Informacion> getFuentesDeInformacion(Tema tema); } D.1.3 Recopilador package Reputation.Framework; import Reputation.ontology.*; import java.util.*; import jade.core.behaviours.WakerBehaviour; import jade.core.Agent; /* * Created by IntelliJ IDEA. * User: Victor * Date: 07/04/2007 * Time: 15:20:06 * To change this template use File | Settings | File Templates. */ enum Recopilador_Action {AGREGAR,OBTENER} public abstract class Recopilador extends WakerBehaviour { protected Tema tema; protected Metrica metrica; Agente_Reputado reputado; protected ArrayList<Reputacion> Reputaciones; Víctor Daniel PODBEREZSKI - 144 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE protected Reputacion resultRep; protected Recopilador_Action action; public Recopilador(Agent agent, long l) { super(agent, l); } protected void onWake() { switch(action) { case OBTENER: depurar(Reputaciones); for (Reputacion reputacion : Reputaciones) { if (!metrica.equals(reputacion.getMedido_en())) { Transformador transformador = getTransformador(reputacion.getMedido_en(), metrica); transformador.Transformar(reputacion); } } calcularReputacion(Reputaciones); resultRep.setMedido_en(metrica); resultRep.setEs_referido_a(reputado); break; case AGREGAR: break; } } public void obtenerReputacionTema(Agente_Reputado reputado, ArrayList<Fuente_de_Informacion> FuentesInformacion, Metrica metrica) { this.metrica = metrica; obtenerReputacionTema(reputado,FuentesInformacion); } public void obtenerReputacionTema(Agente_Reputado reputado, ArrayList<Fuente_de_Informacion> FuentesInformacion) { action = Recopilador_Action.OBTENER; Difusor difusor = getDifusor(); myAgent.addBehaviour(difusor); Reputaciones = new ArrayList<Reputacion>(); for (Fuente_de_Informacion fInformacion : FuentesInformacion) { ArrayList<Agente_Administrador> Administradores = difusor.obtenerAdministradoresConsulta(tema,fInformacion); for (Agente_Administrador administrador : Administradores) { Contacto contacto = getContacto(fInformacion); contacto.setReputaciones(Reputaciones); Víctor Daniel PODBEREZSKI - 145 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE contacto.consultarReputacion(administrador,tema,reputado); myAgent.addBehaviour(contacto); } } resultRep.setEs_referido_a(reputado); } protected abstract Reputacion nivelar(Agente_Reputado reputado, Reputacion reputacion); protected abstract ArrayList depurar(ArrayList Reputaciones); protected abstract void actualizarApreciaciones(Agente_Reputado reputado, String Valor, ArrayList Reputaciones); public void agregarReputacionTema(Reputacion reputacion) { action = Recopilador_Action.AGREGAR; Difusor difusor = getDifusor(); myAgent.addBehaviour(difusor); ArrayList<Agente_Administrador> Administradores = difusor.obtenerAdministradoresInformacion(reputacion.getSobre_el__tema()); for (Agente_Administrador administrador : Administradores) { ArrayList<Metrica> metricas = difusor.obtenerMetricasAdministrador(administrador,tema); if (metricas.size()==1) { Reputacion rep = new Reputacion(); rep.setEs_Administrado_Por(administrador); rep.setEs_referido_a(reputacion.getEs_referido_a()); rep.setFue_reputado_por(reputacion.getFue_reputado_por()); rep.setMedido_en(reputacion.getMedido_en()); rep.setPor_la_interaccion(reputacion.getPor_la_interaccion()); rep.setPor_medio_de(reputacion.getPor_medio_de()); rep.setSobre_el__tema(reputacion.getSobre_el__tema()); rep.setValor(reputacion.getValor()); Metrica destino = metricas.get(0); if (!destino.equals(rep.getMedido_en())) { Transformador transformador = getTransformador(rep.getMedido_en(), destino); transformador.Transformar(rep); } Contacto contacto = getContacto(rep.getPor_medio_de()); contacto.informarReputacion(rep); Víctor Daniel PODBEREZSKI - 146 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE myAgent.addBehaviour(contacto); } } } protected abstract void calcularReputacion(ArrayList<Reputacion> Reputaciones); protected abstract boolean verificarConocimientoReputacionContrato(Tema tema, Agente_Reputador reputador, Agente_Reputado reputado, Fuente_de_Informacion fInformacion, Contrato contrato); public Reputacion getResultRep() { return resultRep; } public void setResultRep(Reputacion resultRep) { this.resultRep = resultRep; } public abstract Difusor getDifusor(); public abstract Contacto getContacto(Fuente_de_Informacion fInformacion); public abstract Transformador getTransformador(Metrica Origen, Metrica Destino); } D.1.4 Contacto package Reputation.Framework; import Reputation.ontology.*; import Reputation.ReputationAgent; import java.util.*; import java.text.SimpleDateFormat; import jade.core.behaviours.WakerBehaviour; import jade.core.Agent; import jade.core.AID; import jade.lang.acl.ACLMessage; import jade.lang.acl.MessageTemplate; import jade.content.ContentManager; import jade.content.ContentElement; import jade.content.lang.Codec; import jade.content.lang.sl.SLCodec; import jade.content.onto.Ontology; import jade.content.onto.OntologyException; Víctor Daniel PODBEREZSKI - 147 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE import jade.domain.FIPAAgentManagement.*; import static jade.domain.AMSService.search; import jade.domain.FIPAException; import jade.domain.DFService; /* * Created by IntelliJ IDEA. * User: Victor * Date: 07/04/2007 * Time: 17:46:51 * To change this template use File | Settings | File Templates. */ enum Contacto_Action {INFORMAR,CONSULTAR,UNSET} public abstract class Contacto extends jade.core.behaviours.WakerBehaviour { private boolean finish=false; protected ArrayList<Reputacion> Reputaciones; protected String conversationId = null; protected Contacto_Action action = null; Agente_Administrador administrador = null; Tema tema = null; Agente_Reputado reputado = null; public Contacto(Agent agent, long l) { super(agent,l); action = Contacto_Action.UNSET; } public void consultarReputacion(Agente_Administrador administrador, Tema tema, Agente_Reputado reputado) { this.administrador = administrador; this.tema = tema; this.reputado = reputado; Consultar_Step1(); action = Contacto_Action.CONSULTAR; } protected abstract void obtenerReputacionLocal(Tema tema, Agente_Reputado reputado); public boolean informarReputacion(Reputacion reputacion) { action = Contacto_Action.INFORMAR; if (reputacion.getEs_Administrado_Por().getLocalName().equals(myAgent.getLocalName())) informarReputacionLocal(reputacion); else Víctor Daniel PODBEREZSKI - 148 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE { Calendar now = Calendar.getInstance(); long milli = now.getTimeInMillis(); ContentManager manager = myAgent.getContentManager(); Ontology reputationOntology = ReputationOntology.getInstance(); manager.registerOntology(reputationOntology); Codec language = new SLCodec(); manager.registerLanguage(language); ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.setConversationId(myAgent.getLocalName() + Long.toString(milli)); msg.setLanguage(language.getName()); msg.setOntology(reputationOntology.getName()); Envelope env = new Envelope(); env.setDate(now.getTime()); env.setFrom(myAgent.getAID()); msg.setEnvelope(env); AID aid = new AID( administrador.getLocalName(), AID.ISLOCALNAME); msg.addReceiver(aid); try { manager.fillContent(msg, reputacion); myAgent.send(msg); } catch (Codec.CodecException ce) { ce.printStackTrace(); } catch (OntologyException oe) { oe.printStackTrace(); } } finish = true; return true; } protected abstract boolean informarReputacionLocal(Reputacion reputacion); public abstract ArrayList solicitarMetricas(Agente_Administrador administrador, Tema tema); public abstract ArrayList solicitarMetricas(Agente_Administrador administrador); public abstract ArrayList solicitarTipoContratos(Agente_Administrador administrador); Víctor Daniel PODBEREZSKI - 149 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE public abstract ArrayList solicitarTemas(Agente_Administrador administrador); public ArrayList<Reputacion> getReputaciones() { return Reputaciones; } public void setReputaciones(ArrayList<Reputacion> reputaciones) { Reputaciones = reputaciones; } protected void onWake() { if (action == Contacto_Action.CONSULTAR && !finish) { Consultar_Step2(); } } private void Consultar_Step1() { if (administrador.getLocalName().equals(myAgent.getLocalName())) { System.out.println("Contacto::Informacion local"); obtenerReputacionLocal(tema,reputado); finish = true; } else { send ++; Reputacion rep = new Reputacion(); rep.setSobre_el__tema(tema); rep.setEs_referido_a(reputado); rep.setEs_Administrado_Por(administrador); Unidad unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); Escala_Numerica escala = new Escala_Numerica(); escala.setMaximo(99999999); escala.setMinimo(1); escala.setSalto(1); escala.setUtiliza_la_unidad(unidad); escala.setTipo_escala("Nominal"); Metrica metrica = new Metrica(); metrica.setIdentificador("Valor"); metrica.setContiene_escala(escala); Agente_Reputador reputador = new Agente_Reputador(); reputador.setName(myAgent.getAID().toString()); reputador.setIdentificador(myAgent.getAID().toString()); Víctor Daniel PODBEREZSKI - 150 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Observacion_Directa directa = new Observacion_Directa(); directa.setIdentificador("1"); Calendar now = Calendar.getInstance(); Tipo_de_Contrato tipo_de_contrato = new Tipo_de_Contrato(); tipo_de_contrato.setIdentificador("1"); Contrato contrato = new Contrato(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S"); String fecha = sdf.format(now.getTime()); contrato.setFecha(fecha); contrato.setIdentificador(""); contrato.setDel_tipo(tipo_de_contrato); contrato.setDescripcion(""); rep.setValor(""); rep.setMedido_en(metrica); rep.setFue_reputado_por(reputador); rep.setPor_medio_de(directa); rep.setPor_la_interaccion(contrato); long milli = now.getTimeInMillis(); ContentManager manager = myAgent.getContentManager(); Ontology reputationOntology = ReputationOntology.getInstance(); manager.registerOntology(reputationOntology); Codec language = new SLCodec(); manager.registerLanguage(language); ACLMessage msg = new ACLMessage(ACLMessage.REQUEST); conversationId = myAgent.getLocalName() + Long.toString(milli); msg.setConversationId(conversationId); ReputationAgent repAgent = (ReputationAgent) myAgent; repAgent.convPrivadas.add(conversationId); msg.setLanguage(language.getName()); msg.setOntology(reputationOntology.getName()); Envelope env = new Envelope(); env.setDate(now.getTime()); env.setFrom(myAgent.getAID()); msg.setEnvelope(env); try { AID aid = new AID( administrador.getLocalName(), AID.ISLOCALNAME); msg.addReceiver(aid); Víctor Daniel PODBEREZSKI - 151 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE manager.fillContent(msg, rep); myAgent.send(msg); } catch (Codec.CodecException ce) { ce.printStackTrace(); } catch (OntologyException oe) { oe.printStackTrace(); } } } private void Consultar_Step2() { MessageTemplate template = MessageTemplate.MatchConversationId(conversationId); ACLMessage msg = myAgent.receive(template); if (msg!=null) { ContentManager manager = myAgent.getContentManager(); Codec language = new SLCodec(); manager.registerLanguage(language); Ontology ontology = ReputationOntology.getInstance(); manager.registerOntology(ontology); ContentElement ce; ce = null; try { ce =manager.extractContent(msg); } catch (Codec.CodecException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } catch (OntologyException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } if (ce instanceof Reputacion) { Reputacion reputacion = (Reputacion) ce; Reputaciones.add(reputacion); } ReputationAgent repAgent = (ReputationAgent) myAgent; repAgent.convPrivadas.remove(conversationId); finish=true; } } } D.1.5 Difusor package Reputation.Framework; Víctor Daniel PODBEREZSKI - 152 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE import Reputation.ontology.*; import java.util.*; /* * Created by IntelliJ IDEA. * User: Victor * Date: 07/04/2007 * Time: 17:36:55 * To change this template use File | Settings | File Templates. */ public abstract class Difusor extends jade.core.behaviours.OneShotBehaviour{ public void action() { } public abstract ArrayList<Agente_Administrador> obtenerAdministradoresConsulta(Tema tema, Fuente_de_Informacion fInformacion); public abstract ArrayList<Agente_Administrador> obtenerAdministradoresConsulta(Tema tema); public abstract ArrayList<Metrica> obtenerMetricasAdministrador(Agente_Administrador administrador, Tema tema); public abstract ArrayList<Metrica> obtenerMetricasAdministrador(Agente_Administrador administrador); public abstract ArrayList<Agente_Administrador> obtenerAdministradoresInformacion(Tema tema, ArrayList FuentesInformacion); public abstract ArrayList<Agente_Administrador> obtenerAdministradoresInformacion(Tema tema); } D.1.6 Transformador package Reputation.Framework; import Reputation.ontology.*; import java.util.*; /* * Created by IntelliJ IDEA. * User: Victor * Date: 07/04/2007 * Time: 18:00:02 * To change this template use File | Settings | File Templates. */ public abstract class Transformador { protected Metrica origen; protected Metrica destino; protected Transformador(Metrica origen, Metrica destino) Víctor Daniel PODBEREZSKI - 153 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE { this.origen = origen; this.destino = destino; } public abstract Reputacion Transformar(Reputacion reputacion); } D.1.7 Timers package Reputation.Framework; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 13/07/2007 * Time: 11:57:31 PM * To change this template use File | Settings | File Templates. */ public class Timers { private static long base = 58000; private static long administradorLapso = base + 3900; private static long medidorLapso = base + 2500; private static long recopiladorLapso = base + 900; private static long contactoLapso = base; private static long baseReply = 1900; private static long administradorReplyLapso = baseReply + 900; private static long recopiladorReplyLapso = baseReply + 300; private static long contactoReplyLapso = baseReply; private static long vencimiento = 1000000; public static long getAdministradorLapso() { return administradorLapso; } public static long getMedidorLapso() { return medidorLapso; } public static long getRecopiladorLapso() { return recopiladorLapso; } public static long getContactoLapso() { return contactoLapso; } public static long getAdministradorReplyLapso() { return administradorReplyLapso; } Víctor Daniel PODBEREZSKI - 154 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE public static long getRecopiladorReplyLapso() { return recopiladorReplyLapso; } public static long getContactoReplyLapso() { return contactoReplyLapso; } public static long getVencimiento() { return vencimiento; } } D.2 Ontología D.2.1 Agente package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Agente * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Agente extends AID{ /* * Protege name: Identificador */ private String identificador; public void setIdentificador(String value) { this.identificador=value; } public String getIdentificador() { return this.identificador; } } D.2.2 Agente Administrador package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* Víctor Daniel PODBEREZSKI - 155 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE * Protege name: Agente Administrador * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Agente_Administrador extends Agente_de_reputacion{ // public AID aid; } D.2.3 Agente de Reputación package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Agente de reputacion * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Agente_de_reputacion extends Agente{ /* * Protege name: Conoce los tipos de contrato */ private List conoce_los_tipos_de_contrato = new ArrayList(); public void addConoce_los_tipos_de_contrato(Tipo_de_Contrato elem) { List oldList = this.conoce_los_tipos_de_contrato; conoce_los_tipos_de_contrato.add(elem); } public boolean removeConoce_los_tipos_de_contrato(Tipo_de_Contrato elem) { List oldList = this.conoce_los_tipos_de_contrato; boolean result = conoce_los_tipos_de_contrato.remove(elem); return result; } public void clearAllConoce_los_tipos_de_contrato() { List oldList = this.conoce_los_tipos_de_contrato; conoce_los_tipos_de_contrato.clear(); } public Iterator getAllConoce_los_tipos_de_contrato() {return conoce_los_tipos_de_contrato.iterator(); } public List getConoce_los_tipos_de_contrato() {return conoce_los_tipos_de_contrato; } public void setConoce_los_tipos_de_contrato(List l) {conoce_los_tipos_de_contrato = l; } /* * Protege name: Conoce los temas */ private List conoce_los_temas = new ArrayList(); public void addConoce_los_temas(Tema elem) { List oldList = this.conoce_los_temas; conoce_los_temas.add(elem); } public boolean removeConoce_los_temas(Tema elem) { Víctor Daniel PODBEREZSKI - 156 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE List oldList = this.conoce_los_temas; boolean result = conoce_los_temas.remove(elem); return result; } public void clearAllConoce_los_temas() { List oldList = this.conoce_los_temas; conoce_los_temas.clear(); } public Iterator getAllConoce_los_temas() {return conoce_los_temas.iterator(); } public List getConoce_los_temas() {return conoce_los_temas; } public void setConoce_los_temas(List l) {conoce_los_temas = l; } /* * Protege name: Conoce las metricas */ private List conoce_las_metricas = new ArrayList(); public void addConoce_las_metricas(Metrica elem) { List oldList = this.conoce_las_metricas; conoce_las_metricas.add(elem); } public boolean removeConoce_las_metricas(Metrica elem) { List oldList = this.conoce_las_metricas; boolean result = conoce_las_metricas.remove(elem); return result; } public void clearAllConoce_las_metricas() { List oldList = this.conoce_las_metricas; conoce_las_metricas.clear(); } public Iterator getAllConoce_las_metricas() {return conoce_las_metricas.iterator(); } public List getConoce_las_metricas() {return conoce_las_metricas; } public void setConoce_las_metricas(List l) {conoce_las_metricas = l; } } D.2.4 Agente Reputado package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Agente Reputado * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Agente_Reputado extends Agente{ } Víctor Daniel PODBEREZSKI - 157 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE D.2.5 Agente Reputador package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Agente Reputador * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Agente_Reputador extends Agente_de_reputacion{ } D.2.6 Contrato package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Contrato * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Contrato implements Concept { /* * Protege name: Descripcion */ private String descripcion; public void setDescripcion(String value) { this.descripcion=value; } public String getDescripcion() { return this.descripcion; } /* * Protege name: Fecha */ private String fecha; public void setFecha(String value) { this.fecha=value; } public String getFecha() { return this.fecha; Víctor Daniel PODBEREZSKI - 158 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } /* * Protege name: Identificador */ private String identificador; public void setIdentificador(String value) { this.identificador=value; } public String getIdentificador() { return this.identificador; } /* * Protege name: Del tipo */ private Tipo_de_Contrato del_tipo; public void setDel_tipo(Tipo_de_Contrato value) { this.del_tipo=value; } public Tipo_de_Contrato getDel_tipo() { return this.del_tipo; } } D.2.7 Escala package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Escala * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Escala implements Concept { /* * Protege name: Tipo */ private String tipo; public void setTipo(String value) { this.tipo=value; } public String getTipo() { return this.tipo; } } Víctor Daniel PODBEREZSKI - 159 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE D.2.8 Escala categórica package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Escala Categorica * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Escala_Categorica extends Escala{ /* * Protege name: Valores permitidos */ private List valores_permitidos = new ArrayList(); public void addValores_permitidos(String elem) { List oldList = this.valores_permitidos; valores_permitidos.add(elem); } public boolean removeValores_permitidos(String elem) { List oldList = this.valores_permitidos; boolean result = valores_permitidos.remove(elem); return result; } public void clearAllValores_permitidos() { List oldList = this.valores_permitidos; valores_permitidos.clear(); } public Iterator getAllValores_permitidos() {return valores_permitidos.iterator(); } public List getValores_permitidos() {return valores_permitidos; } public void setValores_permitidos(List l) {valores_permitidos = l; } } D.2.9 Escala numérica package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Escala Numerica * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Escala_Numerica extends Escala{ Víctor Daniel PODBEREZSKI - 160 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE /* * Protege name: Salto */ private float salto; public void setSalto(float value) { this.salto=value; } public float getSalto() { return this.salto; } /* * Protege name: Maximo */ private int maximo; public void setMaximo(int value) { this.maximo=value; } public int getMaximo() { return this.maximo; } /* * Protege name: Tipo escala */ private String tipo_escala; public void setTipo_escala(String value) { this.tipo_escala=value; } public String getTipo_escala() { return this.tipo_escala; } /* * Protege name: Utiliza la unidad */ private Unidad utiliza_la_unidad; public void setUtiliza_la_unidad(Unidad value) { this.utiliza_la_unidad=value; } public Unidad getUtiliza_la_unidad() { return this.utiliza_la_unidad; } /* * Protege name: Minimo */ private int minimo; public void setMinimo(int value) { this.minimo=value; } public int getMinimo() { return this.minimo; } Víctor Daniel PODBEREZSKI - 161 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } D.2.10 Fuente de información package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Fuente de Informacion * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Fuente_de_Informacion implements Concept { /* * Protege name: Identificador */ private String identificador; public void setIdentificador(String value) { this.identificador=value; } public String getIdentificador() { return this.identificador; } } D.2.11 Fuente primaria package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Fuente Primaria * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Fuente_Primaria extends Fuente_de_Informacion{ public Fuente_Primaria() { this.setIdentificador("1-2"); } } Víctor Daniel PODBEREZSKI - 162 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE D.2.12 Fuente secundaria package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Fuente Secundaria * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Fuente_Secundaria extends Fuente_de_Informacion{ public Fuente_Secundaria() { this.setIdentificador("3-4-5"); } } D.2.13 Información propagada package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Informacion propagada * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Informacion_propagada extends Fuente_Secundaria{ public Informacion_propagada() { this.setIdentificador("3"); } } D.2.14 Información sociológica package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Informacion Sociologica * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ Víctor Daniel PODBEREZSKI - 163 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE public class Informacion_Sociologica extends Fuente_Secundaria{ public Informacion_Sociologica() { setIdentificador("5"); } } D.2.15 Interacción directa package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Interaccion Directa * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Interaccion_Directa extends Fuente_Primaria{ public Interaccion_Directa() { this.setIdentificador("1"); } } D.2.16 Métrica package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Metrica * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Metrica implements Concept { /* * Protege name: Identificador */ private String identificador; public void setIdentificador(String value) { this.identificador=value; } public String getIdentificador() { return this.identificador; Víctor Daniel PODBEREZSKI - 164 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } /* * Protege name: Contiene escala */ private Escala contiene_escala; public void setContiene_escala(Escala value) { this.contiene_escala=value; } public Escala getContiene_escala() { return this.contiene_escala; } public boolean equals(Object o) { return (o != null) && (o instanceof Metrica) && (identificador.equals(((Metrica)o).identificador)); } public int hashCode() { return identificador.hashCode(); } } D.2.17 Observación directa package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Observacion Directa * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Observacion_Directa extends Fuente_Primaria{ public Observacion_Directa() { this.setIdentificador("2"); } } D.2.18 Prejuicio package Reputation.ontology; import jade.content.*; import jade.util.leap.*; Víctor Daniel PODBEREZSKI - 165 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE import jade.core.*; /* * Protege name: Prejuicio * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Prejuicio extends Fuente_Secundaria{ public Prejuicio() { setIdentificador("4"); } } D.2.19 Reputación package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Reputacion * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Reputacion implements Predicate { /* * Protege name: Sobre el tema */ private Tema sobre_el__tema; public void setSobre_el__tema(Tema value) { this.sobre_el__tema=value; } public Tema getSobre_el__tema() { return this.sobre_el__tema; } /* * Protege name: Es referido a */ private Agente_Reputado es_referido_a; public void setEs_referido_a(Agente_Reputado value) { this.es_referido_a=value; } public Agente_Reputado getEs_referido_a() { return this.es_referido_a; } /* * Protege name: Valor Víctor Daniel PODBEREZSKI - 166 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE */ private String valor; public void setValor(String value) { this.valor=value; } public String getValor() { return this.valor; } /* * Protege name: Es Administrado Por */ private Agente_Administrador es_Administrado_Por; public void setEs_Administrado_Por(Agente_Administrador value) { this.es_Administrado_Por=value; } public Agente_Administrador getEs_Administrado_Por() { return this.es_Administrado_Por; } /* * Protege name: Por la interaccion */ private Contrato por_la_interaccion; public void setPor_la_interaccion(Contrato value) { this.por_la_interaccion=value; } public Contrato getPor_la_interaccion() { return this.por_la_interaccion; } /* * Protege name: Fue reputado por */ private Agente_Reputador fue_reputado_por; public void setFue_reputado_por(Agente_Reputador value) { this.fue_reputado_por=value; } public Agente_Reputador getFue_reputado_por() { return this.fue_reputado_por; } /* * Protege name: Por medio de */ private Fuente_de_Informacion por_medio_de; public void setPor_medio_de(Fuente_de_Informacion value) { this.por_medio_de=value; } public Fuente_de_Informacion getPor_medio_de() { return this.por_medio_de; } /* * Protege name: Medido en Víctor Daniel PODBEREZSKI - 167 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE */ private Metrica medido_en; public void setMedido_en(Metrica value) { this.medido_en=value; } public Metrica getMedido_en() { return this.medido_en; } } D.2.20 Tema package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Tema * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Tema implements Concept { /* * Protege name: Forma parte de */ private List forma_parte_de = new ArrayList(); public void addForma_parte_de(Tema elem) { List oldList = this.forma_parte_de; forma_parte_de.add(elem); } public boolean removeForma_parte_de(Tema elem) { List oldList = this.forma_parte_de; boolean result = forma_parte_de.remove(elem); return result; } public void clearAllForma_parte_de() { List oldList = this.forma_parte_de; forma_parte_de.clear(); } public Iterator getAllForma_parte_de() {return forma_parte_de.iterator(); } public List getForma_parte_de() {return forma_parte_de; } public void setForma_parte_de(List l) {forma_parte_de = l; } /* * Protege name: Identificador */ private String identificador; public void setIdentificador(String value) { this.identificador=value; Víctor Daniel PODBEREZSKI - 168 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } public String getIdentificador() { return this.identificador; } /* * Protege name: contiene a */ private List contiene_a = new ArrayList(); public void addContiene_a(Tema elem) { List oldList = this.contiene_a; contiene_a.add(elem); } public boolean removeContiene_a(Tema elem) { List oldList = this.contiene_a; boolean result = contiene_a.remove(elem); return result; } public void clearAllContiene_a() { List oldList = this.contiene_a; contiene_a.clear(); } public Iterator getAllContiene_a() {return contiene_a.iterator(); } public List getContiene_a() {return contiene_a; } public void setContiene_a(List l) {contiene_a = l; } public boolean equals(Object o) { return (o != null) && (o instanceof Tema) && (identificador.equals(((Tema)o).identificador)); } public int hashCode() { return identificador.hashCode(); } } D.2.21 Tipo de contrato package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Tipo de Contrato * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Tipo_de_Contrato implements Concept { Víctor Daniel PODBEREZSKI - 169 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE /* * Protege name: Identificador */ private String identificador; public void setIdentificador(String value) { this.identificador=value; } public String getIdentificador() { return this.identificador; } public boolean equals(Object o) { return (o != null) && (o instanceof Tipo_de_Contrato) && (identificador.equals(((Tipo_de_Contrato)o).identificador)); } public int hashCode() { return identificador.hashCode(); } } D.2.22 Unidad package Reputation.ontology; import jade.content.*; import jade.util.leap.*; import jade.core.*; /* * Protege name: Unidad * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class Unidad implements Concept { /* * Protege name: Descripcion */ private String descripcion; public void setDescripcion(String value) { this.descripcion=value; } public String getDescripcion() { return this.descripcion; } /* * Protege name: Identificador Víctor Daniel PODBEREZSKI - 170 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE */ private String identificador; public void setIdentificador(String value) { this.identificador=value; } public String getIdentificador() { return this.identificador; } } D.2.23 ReputationOntology // file: ReputationOntology.java generated by ontology bean generator. DO NOT EDIT, UNLESS YOU ARE REALLY SURE WHAT YOU ARE DOING! package Reputation.ontology; import jade.content.onto.*; import jade.content.schema.*; import jade.util.leap.HashMap; import jade.content.lang.Codec; import jade.core.CaseInsensitiveString; /* file: ReputationOntology.java * @author ontology bean generator * @version 2007/04/5, 11:31:24 */ public class ReputationOntology extends jade.content.onto.Ontology { //NAME public static final String ONTOLOGY_NAME = "Reputation"; // The singleton instance of this ontology private static ReflectiveIntrospector introspect = new ReflectiveIntrospector(); private static Ontology theInstance = new ReputationOntology(); public static Ontology getInstance() { return theInstance; } // VOCABULARY public static final String REPUTACION_MEDIDO_EN="Medido_en"; public static final String REPUTACION_POR_MEDIO_DE="Por_medio_de"; public static final String REPUTACION_FUE_REPUTADO_POR="Fue_reputado_por"; public static final String REPUTACION_POR_LA_INTERACCION="Por_la_interaccion"; public static final String REPUTACION_ES_ADMINISTRADO_POR="Es_Administrado_Por"; public static final String REPUTACION_VALOR="Valor"; public static final String REPUTACION_ES_REFERIDO_A="Es_referido_a"; public static final String REPUTACION_SOBRE_EL__TEMA="Sobre_el__tema"; public static final String REPUTACION="Reputacion"; public static final String AGENTE_REPUTADO="Agente_Reputado"; public static final String AGENTE_DE_REPUTACION_CONOCE_LAS_METRICAS="Conoce_las_metricas"; public static final String AGENTE_DE_REPUTACION_CONOCE_LOS_TEMAS="Conoce_los_temas"; public static final String AGENTE_DE_REPUTACION_CONOCE_LOS_TIPOS_DE_CONTRATO="Conoce_los_tipos_de_contrato"; public static final String AGENTE_DE_REPUTACION="Agente_de_reputacion"; Víctor Daniel PODBEREZSKI - 171 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE public static final String AGENTE_REPUTADOR="Agente_Reputador"; public static final String AGENTE_IDENTIFICADOR="Identificador"; public static final String AGENTE="Agente"; public static final String AGENTE_ADMINISTRADOR="Agente_Administrador"; public static final String INTERCAMBIAR_REPUTACION_REPUTACION_INTERCAMBIADA="Reputacion_Intercambiada"; public static final String INTERCAMBIAR_REPUTACION_DESTINATARIO="Destinatario"; public static final String INTERCAMBIAR_REPUTACION="Intercambiar_Reputacion"; public static final String INFORMACION_SOCIOLOGICA="Informacion_Sociologica"; public static final String FUENTE_PRIMARIA="Fuente_Primaria"; public static final String TIPO_DE_CONTRATO_IDENTIFICADOR="Identificador"; public static final String TIPO_DE_CONTRATO="Tipo_de_Contrato"; public static final String FUENTE_SECUNDARIA="Fuente_Secundaria"; public static final String PREJUICIO="Prejuicio"; public static final String INFORMACION_PROPAGADA="Informacion_propagada"; public static final String TEMA_CONTIENE_A="contiene_a"; public static final String TEMA_IDENTIFICADOR="Identificador"; public static final String TEMA_FORMA_PARTE_DE="Forma_parte_de"; public static final String TEMA="Tema"; public static final String INTERACCION_DIRECTA="Interaccion_Directa"; public static final String ESCALA_CATEGORICA_VALORES_PERMITIDOS="Valores_permitidos"; public static final String ESCALA_CATEGORICA="Escala_Categorica"; public static final String CONTRATO_DEL_TIPO="Del_tipo"; public static final String CONTRATO_IDENTIFICADOR="Identificador"; public static final String CONTRATO_FECHA="Fecha"; public static final String CONTRATO_DESCRIPCION="Descripcion"; public static final String CONTRATO="Contrato"; public static final String OBSERVACION_DIRECTA="Observacion_Directa"; public static final String ESCALA_TIPO="Tipo"; public static final String ESCALA="Escala"; public static final String UNIDAD_IDENTIFICADOR="Identificador"; public static final String UNIDAD_DESCRIPCION="Descripcion"; public static final String UNIDAD="Unidad"; public static final String FUENTE_DE_INFORMACION_IDENTIFICADOR="Identificador"; public static final String FUENTE_DE_INFORMACION="Fuente_de_Informacion"; public static final String METRICA_CONTIENE_ESCALA="Contiene_escala"; public static final String METRICA_IDENTIFICADOR="Identificador"; public static final String METRICA="Metrica"; public static final String ESCALA_NUMERICA_MINIMO="Minimo"; public static final String ESCALA_NUMERICA_UTILIZA_LA_UNIDAD="Utiliza_la_unidad"; public static final String ESCALA_NUMERICA_TIPO_ESCALA="Tipo_escala"; public static final String ESCALA_NUMERICA_MAXIMO="Maximo"; public static final String ESCALA_NUMERICA_SALTO="Salto"; public static final String ESCALA_NUMERICA="Escala_Numerica"; /* * Constructor */ private ReputationOntology(){ super(ONTOLOGY_NAME, BasicOntology.getInstance()); try { // adding Concept(s) ConceptSchema escala_NumericaSchema = new ConceptSchema(ESCALA_NUMERICA); add(escala_NumericaSchema, Reputation.ontology.Escala_Numerica.class); Víctor Daniel PODBEREZSKI - 172 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE ConceptSchema metricaSchema = new ConceptSchema(METRICA); add(metricaSchema, Reputation.ontology.Metrica.class); ConceptSchema fuente_de_InformacionSchema = new ConceptSchema(FUENTE_DE_INFORMACION); add(fuente_de_InformacionSchema, Reputation.ontology.Fuente_de_Informacion.class); ConceptSchema unidadSchema = new ConceptSchema(UNIDAD); add(unidadSchema, Reputation.ontology.Unidad.class); ConceptSchema escalaSchema = new ConceptSchema(ESCALA); add(escalaSchema, Reputation.ontology.Escala.class); ConceptSchema observacion_DirectaSchema = new ConceptSchema(OBSERVACION_DIRECTA); add(observacion_DirectaSchema, Reputation.ontology.Observacion_Directa.class); ConceptSchema contratoSchema = new ConceptSchema(CONTRATO); add(contratoSchema, Reputation.ontology.Contrato.class); ConceptSchema escala_CategoricaSchema = new ConceptSchema(ESCALA_CATEGORICA); add(escala_CategoricaSchema, Reputation.ontology.Escala_Categorica.class); ConceptSchema interaccion_DirectaSchema = new ConceptSchema(INTERACCION_DIRECTA); add(interaccion_DirectaSchema, Reputation.ontology.Interaccion_Directa.class); ConceptSchema temaSchema = new ConceptSchema(TEMA); add(temaSchema, Reputation.ontology.Tema.class); ConceptSchema informacion_propagadaSchema = new ConceptSchema(INFORMACION_PROPAGADA); add(informacion_propagadaSchema, Reputation.ontology.Informacion_propagada.class); ConceptSchema prejuicioSchema = new ConceptSchema(PREJUICIO); add(prejuicioSchema, Reputation.ontology.Prejuicio.class); ConceptSchema fuente_SecundariaSchema = new ConceptSchema(FUENTE_SECUNDARIA); add(fuente_SecundariaSchema, Reputation.ontology.Fuente_Secundaria.class); ConceptSchema tipo_de_ContratoSchema = new ConceptSchema(TIPO_DE_CONTRATO); add(tipo_de_ContratoSchema, Reputation.ontology.Tipo_de_Contrato.class); ConceptSchema fuente_PrimariaSchema = new ConceptSchema(FUENTE_PRIMARIA); add(fuente_PrimariaSchema, Reputation.ontology.Fuente_Primaria.class); ConceptSchema informacion_SociologicaSchema = new ConceptSchema(INFORMACION_SOCIOLOGICA); add(informacion_SociologicaSchema, Reputation.ontology.Informacion_Sociologica.class); // adding AgentAction(s) AgentActionSchema intercambiar_ReputacionSchema = new AgentActionSchema(INTERCAMBIAR_REPUTACION); add(intercambiar_ReputacionSchema, Reputation.ontology.Intercambiar_Reputacion.class); // adding AID(s) ConceptSchema agente_AdministradorSchema = new ConceptSchema(AGENTE_ADMINISTRADOR); add(agente_AdministradorSchema, Reputation.ontology.Agente_Administrador.class); ConceptSchema agenteSchema = new ConceptSchema(AGENTE); add(agenteSchema, Reputation.ontology.Agente.class); ConceptSchema agente_ReputadorSchema = new ConceptSchema(AGENTE_REPUTADOR); add(agente_ReputadorSchema, Reputation.ontology.Agente_Reputador.class); ConceptSchema agente_de_reputacionSchema = new ConceptSchema(AGENTE_DE_REPUTACION); add(agente_de_reputacionSchema, Reputation.ontology.Agente_de_reputacion.class); ConceptSchema agente_ReputadoSchema = new ConceptSchema(AGENTE_REPUTADO); add(agente_ReputadoSchema, Reputation.ontology.Agente_Reputado.class); // adding Predicate(s) PredicateSchema reputacionSchema = new PredicateSchema(REPUTACION); add(reputacionSchema, Reputation.ontology.Reputacion.class); // adding fields Víctor Daniel PODBEREZSKI - 173 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE escala_NumericaSchema.add(ESCALA_NUMERICA_SALTO, (TermSchema)getSchema(BasicOntology.FLOAT), ObjectSchema.OPTIONAL); escala_NumericaSchema.add(ESCALA_NUMERICA_MAXIMO, (TermSchema)getSchema(BasicOntology.INTEGER), ObjectSchema.OPTIONAL); escala_NumericaSchema.add(ESCALA_NUMERICA_TIPO_ESCALA, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.OPTIONAL); escala_NumericaSchema.add(ESCALA_NUMERICA_UTILIZA_LA_UNIDAD, unidadSchema, ObjectSchema.MANDATORY); escala_NumericaSchema.add(ESCALA_NUMERICA_MINIMO, (TermSchema)getSchema(BasicOntology.INTEGER), ObjectSchema.OPTIONAL); metricaSchema.add(METRICA_IDENTIFICADOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); metricaSchema.add(METRICA_CONTIENE_ESCALA, escalaSchema, ObjectSchema.MANDATORY); fuente_de_InformacionSchema.add(FUENTE_DE_INFORMACION_IDENTIFICADOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); unidadSchema.add(UNIDAD_DESCRIPCION, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.OPTIONAL); unidadSchema.add(UNIDAD_IDENTIFICADOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); escalaSchema.add(ESCALA_TIPO, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.OPTIONAL); contratoSchema.add(CONTRATO_DESCRIPCION, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.OPTIONAL); contratoSchema.add(CONTRATO_FECHA, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); contratoSchema.add(CONTRATO_IDENTIFICADOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); contratoSchema.add(CONTRATO_DEL_TIPO, tipo_de_ContratoSchema, ObjectSchema.MANDATORY); escala_CategoricaSchema.add(ESCALA_CATEGORICA_VALORES_PERMITIDOS, (TermSchema)getSchema(BasicOntology.STRING), 1, ObjectSchema.UNLIMITED); temaSchema.add(TEMA_FORMA_PARTE_DE, temaSchema, 0, ObjectSchema.UNLIMITED); temaSchema.add(TEMA_IDENTIFICADOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); temaSchema.add(TEMA_CONTIENE_A, temaSchema, 0, ObjectSchema.UNLIMITED); tipo_de_ContratoSchema.add(TIPO_DE_CONTRATO_IDENTIFICADOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); intercambiar_ReputacionSchema.add(INTERCAMBIAR_REPUTACION_DESTINATARIO, agente_de_reputacionSchema, ObjectSchema.MANDATORY); intercambiar_ReputacionSchema.add(INTERCAMBIAR_REPUTACION_REPUTACION_INTERCAMBIADA, reputacionSchema, ObjectSchema.MANDATORY); agenteSchema.add(AGENTE_IDENTIFICADOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); agente_de_reputacionSchema.add(AGENTE_DE_REPUTACION_CONOCE_LOS_TIPOS_DE_CONTRATO, tipo_de_ContratoSchema, 0, ObjectSchema.UNLIMITED); agente_de_reputacionSchema.add(AGENTE_DE_REPUTACION_CONOCE_LOS_TEMAS, temaSchema, 0, ObjectSchema.UNLIMITED); agente_de_reputacionSchema.add(AGENTE_DE_REPUTACION_CONOCE_LAS_METRICAS, metricaSchema, 0, ObjectSchema.UNLIMITED); reputacionSchema.add(REPUTACION_SOBRE_EL__TEMA, temaSchema, ObjectSchema.MANDATORY); reputacionSchema.add(REPUTACION_ES_REFERIDO_A, agente_ReputadoSchema, ObjectSchema.MANDATORY); reputacionSchema.add(REPUTACION_VALOR, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.MANDATORY); reputacionSchema.add(REPUTACION_ES_ADMINISTRADO_POR, agente_AdministradorSchema, ObjectSchema.MANDATORY); Víctor Daniel PODBEREZSKI - 174 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE reputacionSchema.add(REPUTACION_POR_LA_INTERACCION, contratoSchema, ObjectSchema.MANDATORY); reputacionSchema.add(REPUTACION_FUE_REPUTADO_POR, agente_ReputadorSchema, ObjectSchema.MANDATORY); reputacionSchema.add(REPUTACION_POR_MEDIO_DE, fuente_de_InformacionSchema, ObjectSchema.MANDATORY); reputacionSchema.add(REPUTACION_MEDIDO_EN, metricaSchema, ObjectSchema.MANDATORY); // adding name mappings // adding inheritance escala_NumericaSchema.addSuperSchema(escalaSchema); observacion_DirectaSchema.addSuperSchema(fuente_PrimariaSchema); escala_CategoricaSchema.addSuperSchema(escalaSchema); interaccion_DirectaSchema.addSuperSchema(fuente_PrimariaSchema); informacion_propagadaSchema.addSuperSchema(fuente_SecundariaSchema); prejuicioSchema.addSuperSchema(fuente_SecundariaSchema); fuente_SecundariaSchema.addSuperSchema(fuente_de_InformacionSchema); fuente_PrimariaSchema.addSuperSchema(fuente_de_InformacionSchema); informacion_SociologicaSchema.addSuperSchema(fuente_SecundariaSchema); agente_AdministradorSchema.addSuperSchema(agente_de_reputacionSchema); agente_ReputadorSchema.addSuperSchema(agente_de_reputacionSchema); agente_de_reputacionSchema.addSuperSchema(agenteSchema); agente_ReputadoSchema.addSuperSchema(agenteSchema); }catch (java.lang.Exception e) {e.printStackTrace();} } } D.3 Agente de reputación de ejemplo Se detalla a continuación un fragmento de un agente de reputación que utiliza la arquitectura y la ontología de reputación D.3.1 ReputationAgent package Reputation; import jade.core.Agent; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 25/06/2007 * Time: 05:31:20 PM * To change this template use File | Settings | File Templates. */ public class ReputationAgent extends Agent { public ArrayList<String> convPrivadas = new ArrayList<String>(); } Víctor Daniel PODBEREZSKI - 175 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE D.3.2 Administrador package CadenaTest.Agentes.AgentCadenaPorcentualStandard; import jade.core.Agent; import java.util.ArrayList; import Reputation.ontology.*; import Reputation.Framework.Medidor; import Reputation.Framework.Recopilador; import Reputation.Framework.Timers; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 2/07/2007 * Time: 11:48:49 AM * To change this template use File | Settings | File Templates. */ public class Administrador extends Reputation.Framework.Administrador { public Administrador(Agent agent, long l) { super(agent, l); } public ArrayList ObtenerTaxonomía(Tipo_de_Contrato tContrato) { ArrayList<Tema> Temas = new ArrayList<Tema>(); Tema t; if (tContrato.getIdentificador().equals("1")) { t = new Tema(); t.setIdentificador("Entrega"); Temas.add(t); t = new Tema(); t.setIdentificador("Calidad"); Temas.add(t); t = new Tema(); t.setIdentificador("Atencion"); Temas.add(t); } else if (tContrato.getIdentificador().equals("2")) { t = new Tema(); t.setIdentificador("PostVenta"); Temas.add(t); t = new Tema(); t.setIdentificador("Asistencia"); Temas.add(t); Víctor Daniel PODBEREZSKI - 176 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE t = new Tema(); t.setIdentificador("Entrega"); Temas.add(t); t = new Tema(); t.setIdentificador("Calidad"); Temas.add(t); t = new Tema(); t.setIdentificador("Atencion"); Temas.add(t); } return Temas; } public ArrayList ObtenerTaxonomía(Tema tema) { ArrayList<Tema> Temas = new ArrayList<Tema>(); Tema t; if (tema.getIdentificador().equals("Harina")) { t = new Tema(); t.setIdentificador("Entrega"); Temas.add(t); t = new Tema(); t.setIdentificador("Calidad"); Temas.add(t); t = new Tema(); t.setIdentificador("Atencion"); Temas.add(t); } else if (tema.getIdentificador().equals("Motor")) { t = new Tema(); t.setIdentificador("PostVenta"); Temas.add(t); t = new Tema(); t.setIdentificador("Asistencia"); Temas.add(t); t = new Tema(); t.setIdentificador("Entrega"); Temas.add(t); t = new Tema(); t.setIdentificador("Calidad"); Temas.add(t); t = new Tema(); t.setIdentificador("Atencion"); Temas.add(t); } Víctor Daniel PODBEREZSKI - 177 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE return Temas; } public ArrayList<Metrica> obtenerMetricas() { ArrayList<Metrica> Metricas = new ArrayList<Metrica>(); Unidad unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); Escala_Numerica escala = new Escala_Numerica(); escala.setMaximo(1); escala.setMinimo(10); escala.setSalto(1); escala.setUtiliza_la_unidad(unidad); escala.setTipo_escala("Nominal"); Metrica metrica = new Metrica(); metrica.setIdentificador("Calificacion de 1 a 10"); metrica.setContiene_escala(escala); Metricas.add(metrica); unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); Escala_Categorica escalac = new Escala_Categorica(); escalac.addValores_permitidos("0"); escalac.addValores_permitidos("1"); escalac.setTipo("categorica"); metrica = new Metrica(); metrica.setIdentificador("Calificacion Booleana"); metrica.setContiene_escala(escalac); Metricas.add(metrica); unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); escalac = new Escala_Categorica(); escalac.addValores_permitidos("Malo"); escalac.addValores_permitidos("Regular"); escalac.addValores_permitidos("Bueno"); escalac.addValores_permitidos("Muy Bueno"); escalac.addValores_permitidos("Excelente"); escalac.setTipo("categorica"); metrica = new Metrica(); metrica.setIdentificador("Calificacion difusa por calidad"); metrica.setContiene_escala(escalac); Metricas.add(metrica); unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); escala = new Escala_Numerica(); escala.setMaximo(1); escala.setMinimo(0); escala.setSalto((float) 0.01); Víctor Daniel PODBEREZSKI - 178 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE escala.setUtiliza_la_unidad(unidad); escala.setTipo_escala("Nominal"); metrica = new Metrica(); metrica.setIdentificador("Calificacion porcentual"); metrica.setContiene_escala(escala); Metricas.add(metrica); return Metricas; } public ArrayList<Tipo_de_Contrato> obtenerTiposContratos() { ArrayList<Tipo_de_Contrato> tContratos = new ArrayList<Tipo_de_Contrato>(); Tipo_de_Contrato tContrato = new Tipo_de_Contrato(); tContrato.setIdentificador("1"); tContratos.add(tContrato); tContrato = new Tipo_de_Contrato(); tContrato.setIdentificador("2"); tContratos.add(tContrato); return tContratos; } public ArrayList<Tema> obtenerTemas(){ ArrayList<Tema> Temas = new ArrayList<Tema>(); Tema tema = new Tema(); tema.setIdentificador("PostVenta"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Entrega"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Calidad"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Atencion"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Asistencia"); Temas.add(tema); return Temas; } protected Medidor getMedidor(Tipo_de_Contrato tContratos) { Medidor medidor=null; if (tContratos.getIdentificador().equals("1")) { Víctor Daniel PODBEREZSKI - 179 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE medidor = new MedidorHarina(myAgent, Timers.getMedidorLapso()); } else if (tContratos.getIdentificador().equals("2")) { medidor = new MedidorMotor(myAgent,Timers.getMedidorLapso()); } return medidor; } protected Recopilador getRecopilador(Tema tema) { Recopilador recopilador=null; if (tema.getIdentificador().equals("PostVenta")) { recopilador = new RecopiladorPostVenta(myAgent,Timers.getRecopiladorReplyLapso()); } else if (tema.getIdentificador().equals("Entrega")) { recopilador = new RecopiladorEntrega(myAgent,Timers.getRecopiladorReplyLapso()); } else if (tema.getIdentificador().equals("Calidad")) { recopilador = new RecopiladorCalidad(myAgent,Timers.getRecopiladorReplyLapso()); } else if (tema.getIdentificador().equals("Atencion")) { recopilador = new RecopiladorAtencion(myAgent,Timers.getRecopiladorReplyLapso()); } else if (tema.getIdentificador().equals("Asistencia")) { recopilador = new RecopiladorAsistencia(myAgent,Timers.getRecopiladorReplyLapso()); } return recopilador; } protected ArrayList<Fuente_de_Informacion> getFuentesDeInformacion(Tema tema) { ArrayList<Fuente_de_Informacion> fuentesDeImformacion = new ArrayList<Fuente_de_Informacion>(); Interaccion_Directa id = new Interaccion_Directa(); fuentesDeImformacion.add(id); return fuentesDeImformacion; } } D.3.3 CalculadorStandard_Porcentual package CadenaTest.Agentes.AgentCadenaPorcentualStandard; import Calculadores.Calculador; Víctor Daniel PODBEREZSKI - 180 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE import Reputation.ontology.Reputacion; import Reputation.ontology.Informacion_propagada; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 6/07/2007 * Time: 01:05:31 PM * To change this template use File | Settings | File Templates. */ public class CalculadorStandard_Porcentual extends Calculador { public Reputacion Calcular(ArrayList<Reputacion> reputaciones) { Reputacion reputacion = new Reputacion(); int cant = reputaciones.size(); double total = 0; if (reputaciones.size() == 1) total = Double.parseDouble(reputaciones.get(0).getValor()); else for (Reputacion rep : reputaciones) { String Valor = rep.getValor(); if (Valor==null) { Valor = "0.5"; } double val = Double.parseDouble(Valor); val/=cant; total+=val; } reputacion.setValor("" + total); Informacion_propagada ip = new Informacion_propagada(); reputacion.setPor_medio_de(ip); return reputacion; } } D.3.4 Contacto package CadenaTest.Agentes.AgentCadenaPorcentualStandard; import jade.core.Agent; Víctor Daniel PODBEREZSKI - 181 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE import Reputation.ontology.*; import java.sql.Connection; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import data.GetDAOFactory; import data.vo.AgentesPK; import data.exception.ReputacionException; import data.dao.*; import data.factory.DAOFactory; import CadenaTest.CadenaAgent; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 2/07/2007 * Time: 10:44:20 PM * To change this template use File | Settings | File Templates. */ public class Contacto extends Reputation.Framework.Contacto{ public Contacto(Agent agent, long l) { super(agent, l); } protected void obtenerReputacionLocal(Tema tema, Agente_Reputado reputado) { Connection con = ((CadenaAgent) myAgent).conection; DAOFactory daofactory = GetDAOFactory.getFactory(); ReputacionDAO repDAO = daofactory.createReputacionDAO(); Object[] params = new Object[3]; params[0] = myAgent.getLocalName(); params[1] = tema.getIdentificador(); params[2] = reputado.getLocalName(); data.vo.Reputacion[] reputaciones = null; try { reputaciones = repDAO.findExecutingUserWhere("Adminitrador = ? and Tema = ? and Reputado = ?",params,con); } catch (ReputacionException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } AgentesDAO agentesDAO = daofactory.createAgentesDAO(); ContratoDAO contratoDAO = daofactory.createContratoDAO(); TipocontratoDAO tipoContratoDAO = daofactory.createTipocontratoDAO(); MetricaDAO metricaDAO = daofactory.createMetricaDAO(); for (data.vo.Reputacion reputacion : reputaciones) Víctor Daniel PODBEREZSKI - 182 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE { Reputacion rep = new Reputacion(); try { AgentesPK agentespk = new AgentesPK(); agentespk.setAgenteid(reputacion.getAdminitrador()); data.vo.Agentes agente = agentesDAO.findByPrimaryKey(agentespk,con); Agente_Administrador administrador = new Agente_Administrador(); administrador.setIdentificador(agente.getAgenteid()); administrador.setName(agente.getDescripcion()); administrador.setLocalName(agente.getDescripcion()); rep.setEs_Administrado_Por(administrador); agentespk.setAgenteid(reputacion.getReputador()); agente = agentesDAO.findByPrimaryKey(agentespk,con); Agente_Reputador reputador = new Agente_Reputador(); reputador.setIdentificador(agente.getAgenteid()); reputador.setName(agente.getDescripcion()); reputador.setLocalName(agente.getDescripcion()); rep.setFue_reputado_por(reputador); rep.setSobre_el__tema(tema); rep.setEs_referido_a(reputado); rep.setValor(reputacion.getValor()); data.vo.ContratoPK contratopk = new data.vo.ContratoPK(); contratopk.setContratoid(reputacion.getContrato()); data.vo.Contrato contrato = contratoDAO.findByPrimaryKey(contratopk,con); Contrato cont = new Contrato(); cont.setFecha(contrato.getFecha().toString()); cont.setIdentificador(contrato.getContratoid()); cont.setDescripcion(contrato.getDescripcion()); data.vo.TipocontratoPK tipocontratopk = new data.vo.TipocontratoPK(); tipocontratopk.setTipocontratoid(contrato.getTipocontrato()); data.vo.Tipocontrato tipocontrato = tipoContratoDAO.findByPrimaryKey(tipocontratopk,con); Tipo_de_Contrato tipoCont = new Tipo_de_Contrato(); tipoCont.setIdentificador(tipocontrato.getTipocontratoid()); cont.setDel_tipo(tipoCont); rep.setPor_la_interaccion(cont); data.vo.MetricaPK metricapk = new data.vo.MetricaPK(); metricapk.setMetricaid(reputacion.getMetrica()); data.vo.Metrica metrica = metricaDAO.findByPrimaryKey(metricapk,con); Metrica met = new Metrica(); Escala escala = new Escala(); Víctor Daniel PODBEREZSKI - 183 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE met.setIdentificador(metrica.getMetricaid()); escala.setTipo(metrica.getEscala()); met.setContiene_escala(escala); rep.setMedido_en(met); Fuente_de_Informacion fuente = null; switch (Integer.parseInt(reputacion.getFuenteinformacion())) { case 1: fuente = new Interaccion_Directa(); break; case 2: fuente = new Observacion_Directa(); break; case 3: fuente = new Informacion_propagada(); break; case 4: fuente = new Prejuicio(); break; case 5: fuente = new Informacion_Sociologica(); break; } rep.setPor_medio_de(fuente); Reputaciones.add(rep); } catch (Exception e) { e.printStackTrace(); } } } protected boolean informarReputacionLocal(Reputacion reputacion) { Connection con = ((CadenaAgent) myAgent).conection; DAOFactory daofactory = GetDAOFactory.getFactory(); ReputacionDAO repDAO = daofactory.createReputacionDAO(); ContratoDAO conDAO = daofactory.createContratoDAO(); try { data.vo.ContratoPK contpk = new data.vo.ContratoPK(); contpk.setContratoid(reputacion.getPor_la_interaccion().getIdentificador()); data.vo.Contrato cont = conDAO.findByPrimaryKey(contpk,con); if (cont==null) { Contrato contrato = reputacion.getPor_la_interaccion(); cont = new data.vo.Contrato(); cont.setContratoid(contrato.getIdentificador()); Víctor Daniel PODBEREZSKI - 184 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE cont.setDescripcion(contrato.getDescripcion()); System.out.println(contrato.getFecha()); DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S"); Date fecha = df.parse(contrato.getFecha()); Timestamp t = new Timestamp(fecha.getTime()); cont.setFecha(t); cont.setTipocontrato(contrato.getDel_tipo().getIdentificador()); conDAO.insert(cont,con); } data.vo.Reputacion rep = new data.vo.Reputacion(); rep.setAdminitrador(reputacion.getEs_Administrado_Por().getLocalName()); rep.setReputado(reputacion.getEs_referido_a().getLocalName()); rep.setContrato(reputacion.getPor_la_interaccion().getIdentificador()); rep.setFuenteinformacion(reputacion.getPor_medio_de().getIdentificador()); rep.setMetrica(reputacion.getMedido_en().getIdentificador()); rep.setTema(reputacion.getSobre_el__tema().getIdentificador()); rep.setReputador(reputacion.getFue_reputado_por().getLocalName()); rep.setValor(reputacion.getValor()); repDAO.insert(rep,con); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } return true; } public ArrayList solicitarMetricas(Agente_Administrador administrador, Tema tema) { return null; //To change body of implemented methods use File | Settings | File Templates. } public ArrayList solicitarMetricas(Agente_Administrador administrador) { return null; //To change body of implemented methods use File | Settings | File Templates. } public ArrayList solicitarTipoContratos(Agente_Administrador administrador) { return null; //To change body of implemented methods use File | Settings | File Templates. } public ArrayList solicitarTemas(Agente_Administrador administrador) { return null; //To change body of implemented methods use File | Settings | File Templates. } } Víctor Daniel PODBEREZSKI - 185 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE D.3.5 Difusor package CadenaTest.Agentes.AgentCadenaPorcentualStandard; import Reputation.ontology.*; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 2/07/2007 * Time: 10:45:11 PM * To change this template use File | Settings | File Templates. */ public class Difusor extends Reputation.Framework.Difusor { public ArrayList<Agente_Administrador> obtenerAdministradoresConsulta(Tema tema, Fuente_de_Informacion fInformacion) { ArrayList<Agente_Administrador> administradores = new ArrayList<Agente_Administrador>(); Agente_Administrador administrador = new Agente_Administrador(); String name = myAgent.getLocalName(); // Se llaman CadenaXXX if (!tema.getIdentificador().equals("Entrega") && !fInformacion.getIdentificador().equals("1")) { int nro = Integer.parseInt(name.substring(6)); for (int j=1;j<4;j++) { int valor = (nro-1+j) % 16 + 1; System.out.println(myAgent.getLocalName() + "::" + valor); administrador.setIdentificador("Cadena" + valor); administrador.setLocalName("Cadena" + valor); administrador.setName("Cadena" + valor); administradores.add(administrador); } } else { System.out.println("Informacion local"); administrador.setIdentificador(name); administrador.setLocalName(name); administrador.setName(name); administradores.add(administrador); } return administradores; } public ArrayList<Agente_Administrador> obtenerAdministradoresConsulta(Tema tema) { Víctor Daniel PODBEREZSKI - 186 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE return null; //To change body of implemented methods use File | Settings | File Templates. } public ArrayList<Metrica> obtenerMetricasAdministrador(Agente_Administrador administrador, Tema tema) { ArrayList<Metrica> metricas = new ArrayList<Metrica>(); Unidad unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); Escala_Numerica escala = new Escala_Numerica(); escala.setMaximo(1); escala.setMinimo(0); escala.setSalto((float) 0.01); escala.setUtiliza_la_unidad(unidad); escala.setTipo_escala("Nominal"); Metrica metrica = new Metrica(); metrica.setIdentificador("Calificacion porcentual"); metrica.setContiene_escala(escala); metricas.add(metrica); return metricas; //To change body of implemented methods use File | Settings | File Templates. } public ArrayList<Metrica> obtenerMetricasAdministrador(Agente_Administrador administrador) { return null; //To change body of implemented methods use File | Settings | File Templates. } public ArrayList<Agente_Administrador> obtenerAdministradoresInformacion(Tema tema, ArrayList FuentesInformacion) { return null; //To change body of implemented methods use File | Settings | File Templates. } public ArrayList<Agente_Administrador> obtenerAdministradoresInformacion(Tema tema) { ArrayList<Agente_Administrador> administradores = new ArrayList<Agente_Administrador>(); Agente_Administrador administrador = new Agente_Administrador(); String name = myAgent.getLocalName(); // Se llaman CadenaXXX administrador.setIdentificador(name); administrador.setLocalName(name); administrador.setName(name); administradores.add(administrador); return administradores; } } Víctor Daniel PODBEREZSKI - 187 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE D.3.6 Medidor Motor package CadenaTest.Agentes.AgentCadenaPorcentualStandard; import jade.core.Agent; import Reputation.ontology.*; import Reputation.Framework.Recopilador; import Reputation.Framework.Timers; import java.util.ArrayList; import Calculadores.Calculador; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 2/07/2007 * Time: 10:46:57 PM * To change this template use File | Settings | File Templates. */ public class MedidorMotor extends Reputation.Framework.Medidor { public MedidorMotor(Agent agent, long l) { super(agent, l); tipo_de_contrato.setIdentificador("2"); tema = new Tema(); tema.setIdentificador("Motor"); Unidad unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); Escala_Numerica escala = new Escala_Numerica(); escala.setMaximo(1); escala.setMinimo(0); escala.setSalto((float) 0.01); escala.setUtiliza_la_unidad(unidad); escala.setTipo_escala("Nominal"); metrica = new Metrica(); metrica.setIdentificador("Calificacion porcentual"); metrica.setContiene_escala(escala); } protected void calcularReputacion(ArrayList<Reputacion> Reputaciones) { Calculador calc = new CalculadorStandard_Porcentual(); Reputacion rep = calc.Calcular(Reputaciones); resultRep.setValor(rep.getValor()); resultRep.setSobre_el__tema(tema); resultRep.setMedido_en(metrica); Víctor Daniel PODBEREZSKI - 188 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Agente_Administrador administrador = new Agente_Administrador(); administrador.setIdentificador(myAgent.getLocalName()); administrador.setName(myAgent.getName()); administrador.setLocalName(myAgent.getLocalName()); resultRep.setEs_Administrado_Por(administrador); Informacion_propagada ip = new Informacion_propagada(); resultRep.setPor_medio_de(ip); } public ArrayList<Tema> obtenerTaxonomia() { ArrayList<Tema> Temas = new ArrayList<Tema>(); Tema tema; tema = new Tema(); tema.setIdentificador("PostVenta"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Entrega"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Calidad"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Atencion"); Temas.add(tema); tema = new Tema(); tema.setIdentificador("Asistencia"); Temas.add(tema); return Temas; } protected Recopilador getRecopiladorReply(Tema tema) { Recopilador recopilador=null; if (tema.getIdentificador().equals("PostVenta")) { recopilador = new RecopiladorPostVenta(myAgent,Timers.getRecopiladorReplyLapso()); } else if (tema.getIdentificador().equals("Entrega")) { recopilador = new RecopiladorEntrega(myAgent,Timers.getRecopiladorReplyLapso()); } else if (tema.getIdentificador().equals("Calidad")) { recopilador = new RecopiladorCalidad(myAgent,Timers.getRecopiladorReplyLapso()); Víctor Daniel PODBEREZSKI - 189 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } else if (tema.getIdentificador().equals("Atencion")) { recopilador = new RecopiladorAtencion(myAgent, Timers.getRecopiladorReplyLapso()); } else if (tema.getIdentificador().equals("Asistencia")) { recopilador = new RecopiladorAsistencia(myAgent,Timers.getRecopiladorReplyLapso()); } return recopilador; } protected Recopilador getRecopilador(Tema tema) { Recopilador recopilador=null; if (tema.getIdentificador().equals("PostVenta")) { recopilador = new RecopiladorPostVenta(myAgent,Timers.getRecopiladorLapso()); } else if (tema.getIdentificador().equals("Entrega")) { recopilador = new RecopiladorEntrega(myAgent,Timers.getRecopiladorLapso()); } else if (tema.getIdentificador().equals("Calidad")) { recopilador = new RecopiladorCalidad(myAgent,Timers.getRecopiladorLapso()); } else if (tema.getIdentificador().equals("Atencion")) { recopilador = new RecopiladorAtencion(myAgent, Timers.getRecopiladorLapso()); } else if (tema.getIdentificador().equals("Asistencia")) { recopilador = new RecopiladorAsistencia(myAgent,Timers.getRecopiladorLapso()); } return recopilador; } protected ArrayList<Fuente_de_Informacion> getFuentesDeInformacion(Tema tema) { ArrayList<Fuente_de_Informacion> fuentesDeImformacion = new ArrayList<Fuente_de_Informacion>(); Interaccion_Directa id = new Interaccion_Directa(); fuentesDeImformacion.add(id); if (!tema.getIdentificador().equals("Entrega")) { Informacion_propagada ip = new Informacion_propagada(); fuentesDeImformacion.add(ip); } return fuentesDeImformacion; Víctor Daniel PODBEREZSKI - 190 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } } D.3.7 Recopilador Asistencia package CadenaTest.Agentes.AgentCadenaPorcentualStandard; import Reputation.Framework.Recopilador; import Reputation.Framework.Transformador; import Reputation.Framework.Timers; import Reputation.ontology.*; import jade.core.Agent; import java.util.ArrayList; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 2/07/2007 * Time: 10:55:38 PM * To change this template use File | Settings | File Templates. */ public class RecopiladorAsistencia extends Recopilador { public RecopiladorAsistencia(Agent agent, long l) { super(agent, l); tema = new Tema(); tema.setIdentificador("Asistencia"); Unidad unidad = new Unidad(); unidad.setDescripcion(""); unidad.setIdentificador("0"); Escala_Numerica escala = new Escala_Numerica(); escala.setMaximo(1); escala.setMinimo(0); escala.setSalto((float) 0.01); escala.setUtiliza_la_unidad(unidad); escala.setTipo_escala("Nominal"); metrica = new Metrica(); metrica.setIdentificador("Calificacion porcentual"); metrica.setContiene_escala(escala); } protected Reputacion nivelar(Agente_Reputado reputado, Reputacion reputacion) { return null; //To change body of implemented methods use File | Settings | File Templates. } protected ArrayList depurar(ArrayList Reputaciones) { return null; //To change body of implemented methods use File | Settings | File Templates. } Víctor Daniel PODBEREZSKI - 191 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE protected void actualizarApreciaciones(Agente_Reputado reputado, String Valor, ArrayList Reputaciones) { //To change body of implemented methods use File | Settings | File Templates. } protected void calcularReputacion(ArrayList<Reputacion> Reputaciones) { double valor =0; for (Reputacion reputacion : Reputaciones) { valor += Double.parseDouble(reputacion.getValor()); } if (Reputaciones.size() > 0) valor = valor / Reputaciones.size(); else valor = 0.5; String sValor = "" + valor; resultRep.setValor(sValor); resultRep.setSobre_el__tema(tema); resultRep.setMedido_en(metrica); Agente_Administrador administrador = new Agente_Administrador(); administrador.setIdentificador(myAgent.getLocalName()); administrador.setName(myAgent.getName()); administrador.setLocalName(myAgent.getLocalName()); resultRep.setEs_Administrado_Por(administrador); } protected boolean verificarConocimientoReputacionContrato(Tema tema, Agente_Reputador reputador, Agente_Reputado reputado, Fuente_de_Informacion fInformacion, Contrato contrato) { return false; //To change body of implemented methods use File | Settings | File Templates. } public Reputation.Framework.Difusor getDifusor() { return new Difusor(); } public Reputation.Framework.Contacto getContacto(Fuente_de_Informacion fInformacion) { return new Contacto(myAgent, Timers.getContactoLapso()); } public Transformador getTransformador(Metrica Origen, Metrica Destino) { if (Origen.getIdentificador().equals("Calificacion Booleana")) return new Transformadores.TransformadorBooleano_Porcentual(Origen,Destino); else if (Origen.getIdentificador().equals("Calificacion de 1 a 10")) return new Transformadores.Transformador1a10_Porcentual(Origen,Destino); else return new Transformadores.TransformadorDifusa_Porcentual(Origen,Destino); Víctor Daniel PODBEREZSKI - 192 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE } } D.3.8 Administrador Factory package CadenaTest; import Reputation.Framework.Administrador; import jade.core.Agent; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 7/07/2007 * Time: 04:14:24 PM * To change this template use File | Settings | File Templates. */ abstract public class AdministradorFactory { abstract public Administrador Create(Agent myAgent,long milisec); } D.3.9 Cadena Agent package CadenaTest; import Reputation.ReputationAgent; import jade.domain.FIPAAgentManagement.DFAgentDescription; import jade.domain.FIPAAgentManagement.ServiceDescription; import jade.domain.DFService; import jade.domain.FIPAException; import jade.core.Agent; import java.sql.Connection; import data.DBConnect; /** * Created by IntelliJ IDEA. * User: Victor Podberezski * Date: 7/07/2007 * Time: 03:52:24 PM * To change this template use File | Settings | File Templates. */ public class CadenaAgent extends ReputationAgent { protected ObtenerComportamiento comportamiento=null; private AdministradorFactory adminFactory=null; public Connection conection; //= new DBConnect().connect(); public void setup() { Víctor Daniel PODBEREZSKI - 193 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE System.out.println("Agente Cadena " + getAID().getName() + " inicializado."); conection = new DBConnect().connect(); DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("Cadena de suministro"); sd.setName(getLocalName()); dfd.addServices(sd); try { DFService.register(this,dfd); } catch (FIPAException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } addBehaviour(new EscucharPedidos()); EscucharComportamiento escuchar = new EscucharComportamiento(); addBehaviour(escuchar); Disparador disp = new Disparador(this,500); disp.comportamiento = comportamiento; addBehaviour(disp); String name = getLocalName(); int nro = Integer.parseInt(name.substring(6)); int group = nro%3; switch (group) { case 0: addBehaviour(new ConsultarResumenReputacion(this,50000)); break; case 1: addBehaviour(new ConsultarResumenReputacion(this,200000)); break; case 2: addBehaviour(new ConsultarResumenReputacion(this,350000)); break; } } public AdministradorFactory getAdminFactory() { return adminFactory; } public void setAdminFactory(AdministradorFactory adminFactory) { this.adminFactory = adminFactory; } } Víctor Daniel PODBEREZSKI - 194 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE class ConsultarResumenReputacion extends jade.core.behaviours.WakerBehaviour { public ConsultarResumenReputacion(Agent agent, long l) { super(agent, l); //To change body of overridden methods use File | Settings | File Templates. } protected void onWake() { myAgent.addBehaviour(new VerReputaciones(myAgent,15000)); } } Víctor Daniel PODBEREZSKI - 195 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Apéndice E Trabajos preeliminares presentados a congresos A continuación se presentan los trabajos preeliminares realizados, presentados y aceptados en congresos sobre la temática de la tesis. En primero fue aceptada en el JIISIC 2006 y analiza las necesidades de la administración de la reputación dentro de una cadena de suministros. El segundo fue aceptado en la WICC 2006 y presenta la ontología de administración de reputación utilizada en este trabajo. Víctor Daniel PODBEREZSKI - 196 - MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Utilización de agentes y reputación en la administración de la cadena de suministros industriales. Víctor Daniel Podberezski*1 Jorge Salvador. Ierache *1, 2 Facultad de Ingeniería, Universidad de Buenos Aires, Laboratorio de Sistemas Inteligentes Paseo Colón 850 Buenos Aires, Argentina Tel: 54-11-4343-0891 (Int. 140)*1 Universidad de Morón - Facultad de Informática, Ciencias de la Comunicación y Técnicas Especiales, Cabildo 134 Morón(1708), Provincia de Buenos Aires, Argentina Tel: 54-11-5627-2000 *2 [email protected] - [email protected] Abstract El proceso de manufactura ha cambiado radicalmente en los últimos años. La irrupción de la manufactura inteligente y flexible abrió un campo de investigación y desarrollo enorme aún en pleno proceso de crecimiento. La alta competitividad del sector industrial induce a la investigación y refinamiento continuo en los métodos y mecanismos de manufactura con la incorporación de tecnologías de sistemas inteligentes. La Ingeniería del conocimiento es aplicada en este campo para lograr procesos más eficientes y que se refinan a si mismos. La naturaleza descentralizada y compleja donde varios actores interactúan hace del paradigma de agentes algo ampliamente aceptable para su implementación. La toma de decisión de un socio en un proceso productivo se enmarca perfectamente dentro de este escenario y la elaboración de mecanismos de evaluación de confianza y reputación conforma el objetivo de este trabajo. Keywords: Intelligent Agents, Electronic Commerce, Industrial Applications, Reputation 1. Introducción En estos últimos años la demanda de bienes se ha visto superada por la oferta, dándose la situación donde muchos actores ofrecen un mismo producto o productos suplementarios y por lo tanto la colocación de la producción no está asegurada. Mantener la competitividad ha pasado a ser una cuestión primordial para las empresas. Por lo tanto la pericia pasa ahora por producir un bien apetecible por el cliente, teniendo en cuenta sus necesidades particulares y personalizando lo más posible para maximizar su satisfacción. Mejorar la calidad de los productos, ampliar la gama, reducir plazos de Víctor Daniel PODBEREZSKI - 197 - suministro y mejorar en el cumplimiento de los plazos son medidas estratégicas que las empresas pueden seguir para acercarse a este objetivo. La selección de un socio en el proceso de elaboración es de vital importancia y condiciona el éxito o fracaso de la manufactura. Una selección errónea puede conducir a desastres como entregar piezas defectuosas, de baja calidad o fuera de plazo. La elaboración de mecanismos de confianza y reputación cobran fundamental importancia, las consideraciones para su implementación se detallan en este trabajo. La primera sección introduce el problema analizado. La segunda sección trata sobre la manufactura integrada por computador y su evolución a nuestros días. La tercera sección introduce nociones sobre sistemas multiagentes. Las secciones cuarta y quinta hablan sobre la utilización de agentes en la producción y en la cadena de suministros respectivamente. Las últimas secciones introducen los conceptos de confianza y su utilización en la cadena de suministros. La sección seis se ocupa de definir la confianza y reputación. En la sección siete se analizan diferentes modelos de reputación existentes y puntos positivos y negativos en su utilización para reputar agentes en una cadena de suministros. Finalmente, en la sección ocho, se presenta una conclusión definiendo que aspectos deben ser tenidos en cuenta para la utilización de sistemas de reputación en la cadena de suministros. 2.Manufactura integrada por computadora La manufactura integrada por computadora desde principios de los 70 [12] se propone utilizar el poder de análisis, cálculo y procesamiento de las computadoras al servicio de la producción de bienes de mercado [39, 29, 19]. El objetivo de esta tecnología es incrementar la capacidad de manufacturar piezas, productos terminados o semielaborados usando el mismo grupo MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE de máquinas. Para ello se requiere que las herramientas utilizadas sean flexibles y capaces de modificar su programación adaptándose a los nuevos requerimientos del mercado. Recientemente es introducido el concepto de MultiFunctions Integrated Factories (MFIF) [22, 23]. En esta concepción la aplicación de la flexibilidad en la producción abandona el ámbito intra-fábrica para pasar a ser Inter-fábrica. Este paradigma incluye la interconexión de diversas fábricas geográficamente separadas que interactúan entre sí para la elaboración de un producto. Cada fábrica se especializa en un conjunto de tareas que ofrece a quien quiera contratarla. Estas tareas sirven para un conjunto de productos cuyo desarrollo debe repartirse en el tiempo para aumentar la utilidad de producción. Dentro de este escenario comienza a cobrar fuerza la utilización de sistemas multiagentes en los procesos de producción. 3. Agentes y sistemas multiagentes Existen diversas definiciones de lo que es un agente. Una definición generalmente aceptada define a un agente como un sistema de computación que se encuentra situado en un ambiente y es capaz de un comportamiento autónomo con la misión de cumplir sus objetivos de diseño [31, 40, 41]. Se define a un agente como inteligente si tiene la capacidad de realizar acciones autónomas flexibles con el objetivo de lograr la meta propuesta [40]. Se entiende a la flexibilidad como la suma de: - Reactividad: Percibir del ambiente y responder en tiempo a aquellos cambios que ocurren con el objeto de cumplir con el objetivo planteado. - Pro-actividad: Tomar la iniciativa en la realización de acciones orientadas a la resolución del problema - Sociabilidad: Ser capaces de interactuar con otros agentes o humanos para satisfacer sus objetivos de diseño. La anterior es conocida como la definición débil. Existe además una definición fuerte: un agente, además de las características anteriores debe tener una o más de las siguientes características [40]: - Nociones mentales: un agente tiene creencias, deseos e intenciones. Víctor Daniel PODBEREZSKI - 198 - - Racionalidad: realiza acciones a fin de lograr objetivos - Adaptabilidad o aprendizaje - Veracidad: un agente no es capaz de comunicar información falsa de propósito. Un sistema multiagente es un sistema en el que conviven un conjunto de agentes capaces de interactuar entre sí donde cada uno de ellos tienen sus propios objetivos y deben cooperar o competir entre ellos para llevarlos a cabo. [31] 4. Agentes en sistemas de producción La globalización, que afecta a todo el planeta, no es una excepción en las empresas de fabricación. La competitividad global y la rapidez con que cambian los requerimientos de los clientes están forzando importantes cambios en los estilos de producción y configuración de las organizaciones de producción. Cada vez más, la planificación de producción, el scheduling y los mecanismos de control secuenciales y centralizados tradicionales no son suficientemente flexibles para responder a estos nuevos estilos de producción que cambian continuamente y a las variaciones que se producen constantemente en los requerimientos del producto. Las aproximaciones tradicionales no permiten una fácil extensión y reconfiguración de los sistemas de fabricación. Desde hace unos años, la tecnología de agentes ha sido considerada como un enfoque importante para el desarrollo de sistemas de fabricación distribuidos [17, 18]. En los últimos 10 años, los investigadores han estado aplicando tecnología de agentes a la integración de empresas de fabricación y administración de cadenas de suministro, planificación de fabricación, asignación de recursos y ejecución de control, manipulación de materiales, y desarrollo de nuevos tipos de sistemas de fabricación tales como sistemas holónicos de fabricación [2]. Existen diferentes aproximaciones posibles para la modelación de agentes en los sistemas de fabricación basados en agentes. Las dos aproximaciones más importantes son: - Descomposición funcional: los agentes son utilizados para modelar los distintos módulos asignados a funciones, como ser, toma de pedidos, planificación, scheduling, administración de materiales, gestión de transporte y distribución de producto. Este MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE modelado no hay relación entre agentes y entidades físicas. - Descomposición física: los agentes son utilizados para representar entidades del mundo físico, tales como trabajadores, máquinas, herramientas, instalaciones, productos, piezas, características, operaciones, etc. A diferencia del modelado mediante descomposición funcional, en este tipo de modelado existe una relación entre un agente y una entidad física. 5. Administración de cadena suministros mediante agentes de Una cadena de suministro puede ser definida como una red de entidades autónomas o semiautónomas de negocios colectivamente responsables de las actividades de adquisición, fabricación y distribución asociadas con una o más familias de productos relacionados. Diferentes entidades de una cadena de suministro funcionan sujeto a diferentes restricciones y objetivos [37] La administración de cadena de suministros mediante la utilización de agentes ha sido estudiada por diversos autores, entre ellos [6, 10, 11, 20, 30, 37, 38]. El primer desafío que se debe resolver para enfrentar la realización de la administración de la cadena de suministros es determinar qué actividades de las mismas serán ejecutadas por que agentes. Para realizar esto se deben tener en cuenta las regulaciones organizativas, los sistemas existentes y limitaciones algorítmicas. El sistema debe lidiar con la planificación, el agendado y coordinación entre las partes. Una división funcional propuesta por [11] para organizar con agentes la administración de cadena de suministros propone utilizar los siguientes agentes: agente de adquisición de órdenes, agente de logística, agente de transporte, agente de agendado, agente de recursos y agente de despachos. La solución debe ser flexible teniendo en cuenta que ciertos procesos pueden cancelarse, modificarse o agregarse. Los agentes que conforman el sistema deben poder volver a programar sus tareas y modificar los acuerdos pactados. Los tiempo de respuesta deben ser aceptables a nivel productivo y debe poder circular la información y conocimiento para resolver las tareas. La selección de socio para la concreción de un producto es un hito fundamental que determina en gran medida el futuro éxito de la manufactura. Materia prima de mala calidad, entregada fuera de término o Víctor Daniel PODBEREZSKI - 199 - contratos incumplidos pueden resultar en un desastre para el proceso productivo. Para la selección de un socio en un proceso productivo quien proveerá materia prima, insumos o un subproceso, se tienen en cuenta varios aspectos que van desde el precio y la calidad hasta el compromiso y garantía. Entre ellos algunos son fácilmente mensurables y comparables. Por otra parte otros son de difícil captación y se logran mediante la experiencia e interacción entre partes (como el compromiso, respaldo y seriedad). El proceso de selección debe tener en cuenta todas estas variables y mediante su comparación determinar aquel oferente que realice la tarea de la forma más eficaz y presente las garantías de éxito más altas. Dependiendo el proceso o parte de un producto dado puede ser deseable la preeminencia de ciertas características (por ejemplo el precio, la confiabilidad del proveedor o la entrega en termino) por sobre otras. Los agentes dentro del ambiente de la cadena de suministros son dinámicos, su comportamiento se modifica con el tiempo. Por ejemplo el cambio de una máquina puede hacer que un fabricante mejore la calidad de su producción o aumente su velocidad de respuesta. Asimismo puede ocurrir que por problemas financieros los servicios brindados por ella se degraden. El aspecto temporal tiene que tenerse en cuenta. Las mediciones más recientes deben tener más peso que las mediciones más lejanas en el tiempo. Un mismo agente puede brindar diferentes servicios o productos, por ejemplo puede ofrecer cierres y botones. La calidad de cada uno de ellos puede ser diferente. No debe olvidarse que la utilización de agentes en la administración de la cadena está condicionada por la realidad actual de los procesos productivos. Dentro de ellos y para la decisión de a quien confiar una tarea o subproducto se tienen en cuenta estándares de calidad establecidos por entidades reconocidas. Ejemplos de estas son: ISO [16] o IRAM [15]. 6. Confianza y reputación Existe un principio que dice que los agentes no mienten a menos que se los programe para que se comporten de esa manera. Puede suceder que a veces no cumplan un contrato pactado, simplemente porque no son capaces (sea por una cuestión de diseño o de una situación imprevisible en el ambiente donde trabajan) o por haberlo desechado. Así como en la vida real aquellos compromisos que vamos cumpliendo o quebrantando nos van generando con terceros una reputación que puede ser favorable o no. Ese mismo MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE concepto es deseable en la interacción entre agentes. Pero, ¿cómo llevarlo a la práctica? La reputación es un concepto ampliamente utilizado en nuestra vida cotidiana. Vamos a ver una obra de teatro porque una revista la calificó como muy buena, comemos en un restaurante porque un amigo nos dijo que sus pastas son las mejores que probó en la vida, elegimos no ir más a un mecánico porque nos cobró caro y su arreglo se rompió a los dos días. Confiamos en ciertas instituciones, personas y en nuestro juicio para decidir qué hacer y cómo hacerlo. La reputación ha sido analizada desde distintas disciplinas como la sociología, la economía, la psicología y la filosofía. Dentro de la informática y las ciencias de la computación el concepto de la reputación es reciente y diversas metodologías comienzan a producirse en ámbitos académicos. El paradigma de agentes y el e-commerce dieron combustible al motor creativo. La necesidad de interactuar con otros agentes en busca de socios confiables en ambientes dinámicos y abiertos debe ser satisfecha. La confianza es la creencia que tiene un agente que la contraparte realizará lo que prometió (siendo honesto y confiable) o será reciproco (para el bien común de ambos) aun existiendo una oportunidad de desertar para conseguir rentabilidades más altas [28]. La reputación se puede definir como la opinión o perspectiva sobre alguien acerca de algo. [34]. La reputación de un agente se conforma de acuerdo a su accionar en el tiempo. La reputación y la confianza están íntimamente ligadas. Un agente tenderá a tener desconfianza (confianza negativa o baja) hacia un agente con poca reputación. La reputación puede inducir a un vendedor a comportarse bien si sabe que será evitado por futuros compradores como resultado de su reducción de reputación producido por su mala conducta. [28]. Los modelos de reputación intentan guiar la decisión de un agente en determinar cómo, cuándo y con quién interactuar [28]. Zacharia y Maes delinearon las cualidades deseadas de un modelo de reputación con respecto a cómo son las mediciones calculadas y cómo impacta esto en el comportamiento de los actores del sistema [45]: - - Debe ser costoso cambiar de identidad en la comunidad. Esto debe prevenir la entrada de un agente al sistema para comportarse maliciosamente, retirarse y reingresar sin pérdida de utilidad o castigo a raíz del mal desempeño. Nuevos ingresantes no deben ser penalizados teniendo inicialmente bajos valores de Víctor Daniel PODBEREZSKI - 200 - reputación. Si los ingresantes reciben una baja reputación serán menos favorecidos a pesar de ser potencialmente confiables. - Agentes con bajas calificaciones deben poder mejorar su reputación en forma similar a un nuevo ingresante. Esto permite a un agente corregir su comportamiento si demostró comportarse mal en el pasado. - Los costos de realizar transacciones falsas deben ser altos. Esto impide a agentes construir su propia reputación. - Los agentes que tienen una reputación alta deberían tener más alta preeminencia que otros en función de la valoración de reputación que ellos atribuyen a otros agentes. Este presupone que los agentes con la reputación alta darán posiciones verídicas a otros. Sin embargo, éste puede ser discutible si la reputación determina el nivel de ganancia que el agente adquiere ya que esto podría conducir a la creación de monopolios o cárteles en el mercado. Además esto es discutible pues, un buen agente vendedor, no tiene necesariamente que ser un buen calificador. - Los agentes deben ser capaces de proveer evaluaciones personalizadas. Esto presupone otorgar más que un simple valor de +1 o -1 para permitir una mejor evaluación de otro agente. - Los agentes deben ser capaces de guardar en memoria los valores de reputación y darle más importancia a los últimos obtenidos. Esto es necesario para mantener la medida de reputación lo más actual posible y ayudar a prevenir que un agente crea una buena reputación interactuando bien en un principio para luego comenzar a incumplir sus promesas. Existen varios modelos de reputación. Cada uno de ellos con características propias. Jordi Sabater [32] presenta una clasificación de ellos según los siguientes parámetros: - Tipo de paradigma: Existen dos grandes grupos en esta clasificación, una aproximación cognitiva y una aproximación matemática. En los sistemas basados en MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE modelos cognitivos, la confianza es construida mediante creencias subyacentes y la confianza es una función del grado de estas creencias [9]. Los modelos matemáticos utilizan funciones de utilidad, probabilidades y la evaluación de interacciones pasadas y no se basan en asunciones o en creencias. - Fuentes de información: Las fuentes de información utilizadas en un sistema de reputación para la determinación del valor de confianza pueden ser diversas. Desde la información propia recabada por la interacción directa como mediante la de terceros que pueden ser expertos o simplemente testigos. Otra fuente de información utilizada recientemente son los aspectos sociológicos del comportamiento del agente. La información que obtenga el agente dependerá de sus capacidades sensoriales y del ambiente donde se encuentre. - Tipo de visibilidad: La reputación puede ser vista como una propiedad global compartida por todos los observadores o como privado y subjetiva mantenida por cada individuo. - Granularidad del modelo: Un sistema de reputación de simple contexto esta diseñado para asociar un único valor de reputación por agente sin tener en cuenta el contexto. Por el contrario un sistema de reputación de multicontexto tiene los mecanismos necesarios para manejar varios contextos al mismo tiempo para cada agente de acuerdo al contexto. - Asunción del comportamiento de los agentes: En un sistema ideal todos los agentes gustosos intercambiarán información de reputación y lo harán sin falsear su valor. Pero en sistemas competitivos ciertos agentes pueden pretender engañar al agente para beneficio propio. En ese aspecto pueden generarse varios comportamientos frente a esta amenaza. - Tipo de información intercambiada: Una última clasificación se puede establecer de acuerdo a la manera entre que diferentes agentes intercambian información de reputación. En un primer grupo se encuentran los mecanismos de reputación que utilizan valores booleanos. En el otro grupo se encuentran los grupos que utilizan valores continuos de medición. Víctor Daniel PODBEREZSKI - 201 - 7. Utilización administración suministros. de reputación en la de la cadena de Dentro de los sistemas de reputación se encuentran aquellos centralizados donde el valor de reputación es global y no subjetivo. Ejemplo de éstos son los sistemas de reputación on-line [8, 7, 21] y Sporas [45]. En un sistema de administración de cadena de suministros nos encontramos con agentes autónomos que compiten entre sí, que mantienen diferentes puntos de vista sobre sus conceptos de calidad y que no siempre están dispuestos a intercambiar información. Debido a que diferentes agentes en la cadena de suministros tienen formas diferentes de calificar las interacciones esta aproximación centralizada no es adecuada por lo tanto resulta poco recomendable su utilización. La aproximación descentralizada se adecuada a la realidad y su utilización es más acertada. Debe tenerse en cuenta que en diversos agentes pueden calificar de diversas formas y con diferentes variables, se hace entonces necesario lograr algún mecanismo que permita compatibilizar entre las diferentes formas de medición. Por otro lado un agente puede tener otros conceptos de confianza diferentes a uno o no estar dispuesto a proporcionar información veraz, por lo tanto no siempre la información brindada debe ser analizada y determinar si es utilizable o no. Otros modelos de reputación utilizan como información la observación directa, la obtención de valores de reputación mediante la observación de la interacción entre dos agentes y sus resultados. Este tipo de obtención de reputación no puede utilizarse en la administración de cadena de suministro, en primer lugar por que muchas de las variables que se tienen en cuenta en el análisis de una interacción requieren la evaluación directa sobre el resultado obtenido (un elemento físico y no lógico). Por lo tanto la utilización de la observación directa no es una táctica apropiada. Algunos métodos que utilizan esta aproximación son [9], [35] y [36] Otras soluciones, como [4] trabajan en base a ambientes con agentes sociales, donde la reputación se gana de acuerdo a la existencia de roles preestablecidos en una sociedad y su cumplimiento por parte de los agentes. En la administración de cadena de suministros no existe una sociedad armada de agentes, las relaciones de reputación se basan por la interacción y no por “posiciones sociales”, por lo tanto este tipo de acercamiento no es el más adecuado. Existen aproximaciones al tema, tal como la propuesta por Castelfranchi [5] que abordan la medición de reputación en forma cognitiva. En el caso de [5] la base de este modelo es la fuerte relación entre MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE confianza y delegación. Los autores afirman que “La confianza es el trasfondo mental de la delegación” En otras palabras, la decisión que lleva a un agente X a delegar una tarea al agente Y está basada en un conjunto especifico de creencias y objetivos y su estado mental es lo que llamamos “confianza”. Por lo tanto “Sólo un agente con creencias y objetivos puede confiar”. Para construir el estado mental de confianza utilizan una serie de creencias básicas. El grado de confianza es una función de la fuerza de las creencias de confianza. Esta aproximación es aplicable en la cadena de suministros con la consideración de que deben definirse las creencias de reputación para el contexto de aplicación. Hay que hacer notar que es difícil lograr que agentes con creencias diferentes y posiblemente incompatibles puedan intercambiar información de reputación satisfactoriamente. En la interacción entre agentes en una cadena de suministros el resultado que mide la satisfacción es un valor complejo. Existen diversos aspectos en la transacción que son evaluados. La dimensión ontológica debe tenerse en cuenta, de no hacerlo se pierde mucha de esta información y la misma pierde calidad. Algunos de los modelos que tienen en cuenta el aspecto multicontextual son [9], REGRET [32, 33, 34] y FIRE [13, 14]. La cuantificación de las variables debe hacer posible una clasificación rica, otorgando un abanico de valores posibles. De esa forma los agentes pueden estudiar diversos agentes evaluados y determinar cual es el más idóneo. Por otra parte es preferible que las variables a sí mismo puedan ser entendidas por ojos humanos pues muchas veces estos también pueden ser los tomadores de decisiones, evaluadores de ciertas variables o pueden querer verificar que las decisiones se estén realizando de forma adecuada. La forma de mediar cada valor de reputación es también un parámetro a tener en cuenta. Existen sistema de administración de reputación que califican las interacción utilizando valores booleanos: éxito y fracaso, ejemplo de ellos son [35] y [9]. Estos modelos no tienen en cuenta que un contrato se puede llevar a cabo, pero que los resultados obtenidos tengan un grado de satisfacción. En la cadena de suministros un contrato con un tercero es analizado y mas allá de si fue un éxito es deseable conocer el grado de satisfacción logrado. De esa forma es posible más adelante comparar entre agentes que cumplen su contrato pero que lo realizan brindando diferentes calidades o prestaciones. Otros sistemas que tienen esto en cuenta son REGRET [32, 33, 34], FIRE [13, 14], [36], [4], [42, 43, 44] y NodeRanking [24, 25, 26, 27] utilizando para representar un intervalo continuo; y [1] y AFRAS [3] utilizando intervalos difusos. Víctor Daniel PODBEREZSKI - 202 - La utilización de mecanismos de cálculo de reputación donde los valores de reputación de un agente dependen de los agentes con los que tiene tratos, por ejemplo NodeRanking [24, 25, 26, 27] no son adecuados, pues un agente que tiene tratos con otro agente de baja reputación no tiene por que serlo, de igual forma en el caso contrario con agentes de alta reputación. Ninguno de los modelos de reputación anterior contemplan la coexistencia de agentes de reputación centralizados con descentralizados. En la selección de socios en los procesos productivos además de la experiencia previa y la reputación dada por pares se tiene en cuenta la certificación de calidad provista por ciertos agentes certificadores de calidad (por ejemplo: ISO). Las certificaciones en ciertos ambientes son obligatorias por legislación o por política de empresa, por lo tanto debería incluirse este tipo de validación de reputación en el método propuesto y una forma de cuantificarla. El sistema de reputación utilizado no debe generar un tráfico alto de consultas. No se debe saturar la red con mensajes de pedidos de reputación o valores de reputación ni ser muy costoso el mantenimiento y calculo de la misma. 8. Conclusiones Teniendo en cuenta lo analizado y propuesto en las secciones anteriores, el objetivo a lograr para asegurar una adecuada selección de un socio en la cadena de suministros modelada bajo el paradigma de agentes es la realización de un modelo de administración de reputación adecuado. El mismo deberá explotar las bondades de los modelos de reputación existentes, modificando ciertas partes y haciéndolo mas adecuado a las necesidades propias de esta realidad. Entre las características a tener en cuenta se encuentran: - Integración en la arquitectura de la administración de la cadena de suministros sin mayores cambios. - Bajo tráfico de consultas de reputación entre agentes. - Arquitectura mixta: centralizada (agentes de certificación) y descentralizada (opiniones de confianza de terceros). - Soporte multicontextual. - Medición de valores de confianza con varios niveles de satisfacción (por ejemplo intervalos continuos o difusos frente a los booleanos). - Preeminencia de valores cronológicamente más cercanos a los antiguos. MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - - - Agrupamiento inteligente de objetos de medición para afinar la medición (por ejemplo la variable medida ‘t’ (ejemplo: “calidad”) productos A (ej: “tornillos”) y B (ej: “clavos”) del proveedor 1 (“Tornería Tulio”) por ser similares en sus resultados por un lado y por otro lado el producto C (“tuercas”) del mismo proveedor por ser diferente. Aprendizaje y refinamiento progresivo de grupos de objetos de medición. Posibilidad de lectura y participación humana para la verificación de las decisiones tomadas. Preeminencia de valores de reputación provenientes de agentes confiables (que por iteración pasada han demostrado más certeza en sus valores de reputación intercambiados). Posibilidad de trabajar con diferentes métricas de reputación. Diferentes agentes pueden preferir utilizar otras métricas. Deben existir funciones que permitan pasar de una métrica a otra. Esto permite la coexistencia de diferentes modelos de reputación y su compatibilidad) Si para el modelado de agentes se utiliza descomposición física el concepto de reputación puede ser extendido a dentro de la misma fábrica, ayudando al planificador a seleccionar una máquina en particular de acuerdo a su comportamiento dentro de la fábrica. Una línea de investigación que surge es la creación de una arquitectura modularizada de administración de reputación de forma de lograr las características antes expuestas de una manera ágil y fácil de implementar. Una modularización que permita definir un sistema de reputación de acuerdo a las necesidades específicas y responder a las características requeridas del contexto de aplicación. 9. Referencias [6] Chang Yoon, Makatsoris Harris, 2001, Supply chain modeling using simulation, En International Journal of Simulation - Systems, Science & Technology, Vol. 2 No. 1 [7] DeRemate, 2005, http://www.deremate.com/ [8] ebay, 2005, http://www.ebay.com/ [9] Esfandiari B., Chandrasekharan S., 2001, On how agents make friends: Mechanisms for trust acquisition, En Proceedings of the Fourth Workshop on Deception, Fraud and Trust in Agent Societies, Montreal Canada, páginas 2734 [10] Fox, Mark. S., 1992, Integrated Supply Chain Management, Technical Report, Enterprise Integration Laboratory, University of Toronto. [11] Fox Mark S., Barbuceanu Mihai, y Teigen Rune, 2000, Agent-Oriented Supply-Chain Management, 2000, The International Journal of Flexible Manufacturing Systems, 12 (2000), pages 165–188 [12] Harrington J. jr., 1973, Computer Manufacturing., Pub Industrial Press, New York. Integrated [13] Huynh Dong, Jennings Nicholas R., Shadbolt Nigel R., 2004, Developing an Integrated Trust and Reputation Model for Open Multi-Agent Systems, School of Electronics and Computer Science, University of Southampton, UK. [14] Huynh, T. D., Jennings, N. R. and Shadbolt, N., 2004, FIRE: an integrated trust and reputation model for open multi-agent systems. En Proceedings of 16th European Conference on Artificial Intelligence, pages pp. 18-22, Valencia, Spain. [15] IRAM, 2005, http://www.iram.com.ar/ [1] Abdul-Rahman A. y Hailes S., 2000, Supporting trust in virtual communities, En Proceedings of the Hawaii's International conference on Systems Sciences, Maui Hawaii [2] Vicente J. Botti Navarro, Adriana Giret Boggino, 2003, Aplicaciones Industriales de los Sistemas Multiagente [3] Carbo J., Molina J. y Davila J., 2002, Comparing predictions of sporas vs. a fuzzy reputation agent systems. En 3rd International Conference on Fuzzy Sets and Fuzzy Systems, Interlaken, páginas 147-153 [4] Carter J., Bitting E. y Ghorbani A, 2002, Reputation formalization for an information-sharing multi-agent system, Computational Intelligence, 18(2), páginas 515-534 Víctor Daniel PODBEREZSKI [5] Castelfranchi C. y Falcone R., 1998, Principles of trust for MAS: Cognitive anatomy, social importance, and quantification. En Proceedings of the International Conference on Multi-Agent Systems (IC-MAS'98), Paris Francia, Páginas 72-79 - 203 - [16] ISO, 2005, www.iso.org [17] Jennings, N. R.; Corera, J.; y Laresgoiti, I. 1995. Developing Industrial Multi-Agent Systems. In Proceedings of ICMAS’95 423–430. [18] Jennings, N. R., y Wooldridge, M. 1998. Applications of Intelligent Agents. Agent Technology: Foundations, Applications, and Markets 3–28. [19] Kalpakjian Serope, Schmid Steven R., 2002, Manufactura ingeniería y tecnología, Pearson educación [20] LAU Jason, Huang George Q y Mak K L, 2004, Agentbased modeling of supply chains for distributed scheduling, MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE IEEE Transactions on Systems, Man and Cybernetics: Part A, Accepted for publication [21] MercadoLibre, 2005, http://www.deremate.com/ [22] Osanna P. H., Si, L: Multi-Functions Integrated Factory M.F.I.F. - a Model of the Future Enterprise. Conference Proceedings: Internet Device Builder Conference, Sta. Clara, Mai 2000, 6S [23] Osanna P.H., Durakbasa M.N., Si L.X., 2001, Artificial Intelligence-based Metrology and Quality Management in Intelligent Production Environment, IPMM – 2001 [24] Pujol, J.M., Sangüesa, R. and Delgado J.,2002, Distributed and Adaptable Ranking Algorithm for Reputation and Relevance Extraction, En Proceedings of the 5th Catalan Conference on Artificial Intelligence CCIA-02, pp 205-213, Castelló de la Plana, Spain. [25] Pujol J.M., Sangüesa R. y Delgado J., Extracting Reputation in Multi Agent System by means of Social Network Topology, en Proceedings of the First International Joint Conference on Autonomous Agents and Multi-Agent Systems AAMAS-02. Vol. 1, pp 467-474. Bologna, Italy. [33] Sabater Jordi , Sierra Carles , 2002, Reputation and social network analysis in multi-agent systems. AAMAS 2002: 475-482 [34] Sabater J., Sierra C., 2002, REGRET: a reputation model for gregarious societies. En C. Castelfranchi y L. Johnson, editors, Proceedings of the 1st International Joint Conference on Autonomous Agents and Multi-Agent Systems, paginas 475–482. [35] Schillo M., Funk P. y Rovatsos M., 2000, Using trust for detecting deceitful agents in artificial societies, Applied Artificial Intelligence, Edición especial en Confianza, engaño y fraude en sociedades de agents [36] Sen S. y Sajja N., 2002, Robustness of reputation-based trus: Booblean case. En Proceedings of the first international joint conference on autonomous agents and multiagent systems (AAMAS-02), Bologna Italia, Páginas 288-293 [37] Swaminathan Jayashankar M., Smith Stephen F. y Sadeh Norman M., 1998, Modeling Supply Chain Dynamics: A Multiagent Approach, Decision Sciences Volume 29 Number 3 Summer 1998 [26] Pujol Josep M., Sangüesa Ramon y Delgado Jordi, 2003, A Ranking Algorithm based on Graph Topology to Generate Reputation or Relevance, En Web Intelligence (Ning Zhong, Jiming Liu, and Yiyu Yao eds.), ch 18, pp 382395, Springer Verlag, ISBN: 3-540-44384-3. [38] Wagner Tom y Guralnik Valerie, Software Agents for Dynamic Supply Chain Management, 2002 [27] Pujol J.M., Sangüesa R., 2001, Reputation Measures based on Social Networks metrics for Multi Agents Systems, en Proceedings of the 4th Catalan Conference on Artificial Intelligence CCIA-01, pp 205-213, Barcelona, Spain. [40] Wooldridge, M. and Jennings, N.R., 1995. Agent Theories, Architectures and Languages: a Survey in Eds., Intelligence Agents, Berlin: Springer-Verlag, Vol 1, Nro 22 [28] Ramchurn Sarvapali D., HuynhDong, Jennings Nicholas R.,2004, Trust in Multi-Agent Systems, School of Electronics and Computer Science, University of Southampton. [29] Rapetti O, 2002, Apunte de Cátedra CIM I, 75.65 Manufactura Integrada por Computador (CIM) -Facultad de Ingeniería - Universidad de Buenos Aires [30] Rossetti Manuel D. and Hin-Tat Chan, 2003 , A prototype object-oriented supply Chain simulation framework, Proceedings of the 2003 Winter Simulation Conference [31] Russell, S. Norving, P. 1995. Artificial Intelligente: A Modern Approach. Prentice-Hall. [32] Sabater Mir Jordi, 2003, Trust and reputation for agent societies, Tesis Doctoral, Universidad Autónoma de Barcelona Víctor Daniel PODBEREZSKI - 204 - [39] Waldner Jean-Baptiste, 1990, CIM Principles of Computer-integrated Manufacturing, Wiley [41] Wooldridge, M., 2002, An introduction to Multiagent Systems, John Wiley & Sons Ltd. [42] Yu, Bin. Singh, P. 2000. A Social Mechanism of Reputation Management in Electronic Communities. Department of Computer Science. Nort Carolina State University. [43] Yu, Bin. Singh, P. 2001a. An Evidential Model of Distributed Reputation Management. Department of Computer Science. North Carolina State University. [44] Yu, Bin. Singh, P. 2001b. Detecting Deception in Reputation Management. Department of Computer Science. North Carolina State University. [45] Zacharia G. y Maes P., 2000, Trust through reputation mechanisms. Applied Artificial Intelligence, 14:881–90 MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Ontología de administración e intercambio de reputación. Víctor Daniel Podberezski (1), Jorge Salvador Ierache (1), (2) Facultad de Ingeniería, Universidad de Buenos Aires, Laboratorio de sistemas inteligentes (1) Facultad de Informática, Ciencias de la Comunicación y Técnicas Especiales, Universidad de Morón (1), (2) [email protected], [email protected] Abstract El intercambio de apreciación sobre el comportamiento de un agente entre pares es una necesidad creciente a medida que los sistemas multiagentes se van masificando y utilizando en diferentes situaciones. Discriminar agentes con un comportamiento perjudicial para la sociedad de agentes a la que pertenece, que incumple sus compromisos o que no los completa satisfactoriamente de aquellos que cumplen con sus compromisos de forma satisfactoria es una capacidad deseable y muchas veces necesaria. Se presenta una ontología para la administración de reputación flexible para poder utilizarse en diversos escenarios donde la reputación sea necesaria. Keywords: Intelligent Agents, Reputation, Ontology, 1. Introducción La confianza es la creencia que tiene un agente que la contraparte realizara lo que prometió (siendo honesto y confiable) o será reciproco (para el bien común de ambos) aun existiendo una oportunidad de desertar para conseguir rentabilidades más altas [16]. La reputación se puede definir como la opinión o perspectiva sobre alguien acerca de algo. [19]. Durante los últimos años se han propuesto una gran cantidad de modelos para el cálculo e intercambio de reputación entre agentes [1, 3, 4, 5, 9, 10, 15, 19]. Se pretende generar una arquitectura de reputación modular que permite integrar estos modelos y facilitar la configuración del mismo, permitiendo intercambiar información entre ellos o adecuarlo para su utilización en una situación particular. Por lo tanto, una ontología de intercambio de reputación flexible se hace imperativa. A lo largo del trabajo se pretende presentar la ontología desarrollada. En la sección 2 se comentan las características de algunos de los modelos de reputación Víctor Daniel PODBEREZSKI representativos existentes. La sección 3 examina algunas de las ontologías de reputación existentes. La sección 4 presente el problema a solucionar y la sección 5 detalla la solución encontrada. Por ultimo en la sección 6 se ofrece las conclusiones y las futuras líneas de investigación. 2. Diferentes modelos de reputación. Existen gran cantidad de modelos de reputación pensados para el intercambio y administración de opiniones sobre la confianza de las capacidades de diferentes agentes. Entre ellos FIRE [9, 10], NodeRanking [15], REGRET [19], AFRAS [3] o Sporas [23]. Algunos de ellos fueron propuestos para resolver situaciones específicas, por ejemplo la reputación de compradores y vendedores en un entorno online como eBay [5], DeRemate [4] o MercadoLibre [13] o para medir grado de cumplimiento de los roles atribuidos a un agente por la sociedad [1]. Cada uno de ellos propone la utilización de diferentes fuentes de información, diferentes paradigmas, hacen usos de diferentes contextos y manejan diferentes tipos de métricas y formas de evaluar la reputación. Realizando un análisis al conjunto de modelos de reputación se pueden encontrar un conjunto de características que se pueden utilizar para clasificarlos. Jordi Sabater [18] presenta una clasificación de ellos según los siguientes parámetros: - 205 - - Tipo de paradigma: Existen dos grandes grupos en esta clasificación, una aproximación cognitiva y una aproximación matemática. En los sistemas basados en modelos cognitivos, la confianza es construida mediante creencias subyacentes y la confianza es una función del grado de estas creencias [6]. Los modelos matemáticos utilizan funciones de utilidad, probabilidades y la evaluación de interacciones pasadas y no se basan en asunciones o en creencias. MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE - Fuentes de información: Las fuentes de información utilizadas en un sistema de reputación para la determinación del valor de confianza pueden ser diversas. Desde la información propia recabada por la interacción directa u observación como mediante la de terceros que pueden ser expertos o simplemente testigos. Otra fuente de información utilizada recientemente son los aspectos sociológicos del comportamiento del agente y el prejuicio [18]. La información que obtenga el agente dependerá de sus capacidades sensoriales y del ambiente donde se encuentre. - Tipo de visibilidad: La reputación puede ser vista como una propiedad global compartida por todos los observadores o como privado y subjetiva mantenida por cada individuo. - Granularidad del modelo: Un sistema de reputación de simple contexto esta diseñado para asociar un único valor de reputación por agente sin tener en cuenta el contexto. Por el contrario un sistema de reputación de multicontexto tiene los mecanismos necesarios para manejar varios contextos al mismo tiempo para cada agente de acuerdo al contexto. - Asunción del comportamiento de los agentes: En un sistema ideal todos los agentes gustosos intercambiaran información de reputación y lo harán sin falsear su valor. Pero en sistemas competitivos ciertos agentes podrían pretender engañar al agente para beneficio propio. En ese aspecto pueden generarse varios comportamientos frente a esta amenaza [18]. - Tipo de información intercambiada: Una última clasificación se puede establecer de acuerdo a la manera entre que diferentes agentes intercambian información de reputación. En un primer grupo se encuentran los mecanismos de reputación que utilizan valores booleanos. En el otro grupo se encuentran los grupos que utilizan valores continuos de medición. 3. Ontologías de reputación existentes No existen disponibles gran cantidad de ontologías para la medición y administración de reputación. Víctor Daniel PODBEREZSKI - 206 - Trust ontology [20] es una ontología pequeña escrita en OWL/RDF [24] que permite a una persona decir cuanto confía en otra en una área especifica. Utiliza una única métrica consistente en una escala del 1 al 10. Christoph Görn [7] extiende la ontología anterior presentándola como una tupla de 5 elementos del estilo “A confía en B en un tema C durante el tiempo T en un nivel L”. A y B son personas, C es el tema evaluado, T es un intervalo de tiempo en el que es válida la apreciación y L es el nivel de confianza en la escala de 1 a 10. Sara Casare y Jaime Sichman [2] proponen una ontología completa que tiene en cuenta diferentes conceptos de la reputación como, la fuente de información, el rol de los agentes, la modificación en el tiempo del comportamiento; entre otras cosas, pero no tiene en cuenta diferentes métricas (únicamente discrimina en un comportamiento adecuado o inadecuado) y no presenta una descomposición temática del proceso a reputar. 4. Escenario motivador Existe la necesidad de generar una ontología para el intercambio de reputación. La misma debe permitir generar apreciaciones de reputación sobre el comportamiento de un agente ante un contrato entre partes (tanto privado como un contrato social). La reputación es evaluada sobre un agente (agente reputado) y es realizado por otro agente (agente reputador) y es almacenado por un agente para su posterior manipulación (agente colector). La reputación puede ser originada mediante cualquiera de las fuentes de información antes mencionadas y se debe permitir la capacidad de tener en cuenta contextos dentro da la medición de reputación para diferentes tipos de contratos de tal forma que se pueda almacenar diferentes aspectos de cada uno de ellos (temas) en función de una taxonomía. La reputación debe poder ser almacenada en forma centralizada, descentralizada o una combinación de estas dos (por ejemplo ciertas variables del contexto de la reputación de los contratos medidos o administrados por agentes centralizados y otras almacenadas en forma privada por cada agente). Debe ser posible consultar que agentes administran cierto tema y la reputación de uno o más agentes sobre uno o más temas. Una cuestión importante también es la posibilidad de utilizar diferentes métricas para la medición de la reputación, pues diferentes modelos de reputación o incluso diferentes agentes manejan diferentes maneras de evaluar la confianza en un tercero. Se muestra en la MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE figura 1 un diagrama UML que muestra el escenario relatado. 5. Propuesta de la ontología de reputación Para la construcción de la ontología aplicada para el intercambio de reputación se utiliza la metodología propuesta por Grüninger M, Fox M [8]. Dentro de la ontología se identificaron un conjunto de conceptos y relaciones. Además un conjunto de axiomas que se explican a continuación. Agentes: Se Sigue la definición de [17; 22] y se considera a un agente a un sistema de computación que se encuentra situado en un ambiente y es capaz de un comportamiento autónomo con la misión de cumplir sus objetivos de diseño. Un agente debe poder ser identificado unívocamente para diferenciarlo de otros. Agente de reputación: Es un agente con capacidad de evaluar y administrar reputación sobre una cantidad de tipos de contratos y un conjunto de temas. Se pude subdividir en 2 grupos agentes administradores o agentes reputadores Agente administrador: Es un agente de reputación que administra y almacena valores de reputación. Es capaz de solicitar o recibir información de reputación para su manipulación. Agente reputador: Es un agente de reputación que toma el rol de evaluar un aspecto del accionar de un agente reputado en la resolución de un contrato. Agente reputado: Es un agente cuyo accionar para la resolución de un contrato es objeto de reputación. Un mismo agente no puede tomar el rol de reputador y reputado para la evaluación de un contrato dado. Sin embargo en diferentes contratos un mismo agente puede ser objeto de evaluación de reputación (agente reputado) o Agente administrador. En el mismo contrato no hay restricción en que un mismo agente sea reputador y administrador. Fuente de información: Corresponde a la descripción del medio por el cual fue obtenida una medición de reputación. Si divide en primarias y secundarias. Las fuentes de información primarias son aquellas que se obtienen por la evaluación de un contrato donde el agente reputador es testigo de su concreción. Bajo esta categoría el agente reputador puede ser un Víctor Daniel PODBEREZSKI - 207 - observador del contrato o ser participe directo del mismo. Las fuentes de información secundarias son aquellas que se construyen a partir de fuentes primarias e implican generalización, análisis, síntesis, interpretación o evaluación de las mismas. Se subdividen a su vez en reputación propagada que es la obtenida de terceros, la reputacion sociología que es construido de acuerdo al concepto que tiene la sociedad entera de un agente (generalmente de acuerdo a la posición o el papel del agente en la sociedad) y la reputación del prejuicio. Tipo de contrato: Agrupa a un conjunto de acciones, comportamientos o tópicos realizados por agentes a reputar de igual naturaleza. Diferentes tipos de contratos pueden ser almacenados o evaluados por diferentes agentes de reputación. Tema: Faceta de un tipo de contrato que es calificada. Un tipo de contrato se divide en diferentes aspectos en función de una taxonomía que son medidos mediante la reputación. Estos temas a su vez pueden contener subtemas que también son medidos. La combinación de todos generan los temas de un tipo de contrato y conforman la evaluación del comportamiento de un agente en un contrato. Por ejemplo si un tipo de contrato es proveer tubos para la construcción de tuberías, los temas a reputar podrían ser la calidad de los tubos, la atención brindada durante la concreción del contrato y el servicio postventa. La calidad de los tubos podría subdividirse en la presión máxima que soportan, resistencia a la corrosión y la resistencia térmica entre otras características. Diferentes tipos de contratos podrían contener mismos temas para la medición. Y diferentes temas podrían compartir subtemas de evaluación. Diferentes agentes de reputación pueden administrar y almacenar reputación de diferentes temas. Contrato a evaluar: Corresponde a las obligaciones adquiridas entre dos o más agentes que pactan un acuerdo sobre una declaración de voluntades común destinada a reglar sus derechos. Pertenecen a un tipo de contrato preestablecido. Los resultados de este contrato son objeto de evaluación del comportamiento de cada agente y la modificación de la reputación de cada uno de ellos de acuerdo a su accionar. Métrica: Define el método de cálculo utilizado para medir la reputación de un tema de un contrato. Esta compuesto por tipo de valor que utiliza y una escala. Los agentes de reputación utilizan un conjunto de métricas para la valorización de cada uno de los temas a reputar. MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE Escala: Es un conjunto de valores con propiedades definidas. [12] Se subdivide en escala numérica y categórica Escala categórica: Una escala donde los valores medidos son categorías y no se pueden expresar en unidades en un sentido estricto. Escala numérica: Una escala donde los valores medidos son números que pueden ser expresados en unidades en un sentido estricto. La misma puede ser continua o discreta. Puede estar acotada a un intervalo y tener un salto entre valor y valor (lo que le da la máxima precisión. Tienen una unidad. Unidad: Es una medida patrón definida y adoptada por convención contra la cual son comparadas otras cantidades de la misma clase, para expresar magnitudes en relación a esa cantidad [11] Figura 1: Diagrama UML de la ontología de administración e intercambio de reputación Reputación: Es la opinión o perspectiva (valoración) sobre el comportamiento de un agente (agente reputado) por otro agente (agente reputador) acerca de un tema de un contrato, expresada en una métrica en particular. Contiene la fuente de información indicando como obtuvo esa opinión y quien es el agente que administra esa información (agente administrador). Un mismo tema de un contrato puede ser almacenado por diferentes agentes administradores, Víctor Daniel PODBEREZSKI - 208 - estar medida con métricas diferentes, provenir de otra fuente de información y tener una valoración diferente. No obstante para un mismo tema de un contrato, una misma fuente de información, un mismo agente reputador no puede dar diferentes valoraciones con una misma métrica. Se prevé en la arquitectura de administración de reputación la posibilidad de realizar conversiones de métricas para poder comprar temas de reputación valorizados con diferentes métricas. MECANISMOS DE VALORACION DE REPUTACIÓN EN SIST. MULTIAGENTES: UNA ARQUITECTURA FLEXIBLE 6. Conclusiones y trabajos futuros: Conference on Artificial Intelligence, pages pp. 18-22, Valencia, Spain. La ontología propuesta cubre situaciones de sistemas de reputación centralizados con valores de reputación booleanos y sin contextos hasta reputación descentralizada con agentes especializados en la valoración o en la administración de reputación, multicontextuales y con diferentes métricas de reputación. Ejemplo de esta última es el escenario presentado en Podberezski y Ierache [14] para la utilización de reputación dentro de una cadena de suministros en la producción. Los trabajos futuros se orientan en la inserción de la ontología en una arquitectura flexible para la administración de reputación. 7. Referencias: [1] Carter J., Bitting E. y Ghorbani A, 2002, Reputation formalization for an information-sharing multi-agent system, Computational Intelligence, 18(2), páginas 515-534 [2] Casare Sara, Simão Sichman Jaime: Towards a functional ontology of reputation. AAMAS 2005: 505511 [3] Carbo J., Molina J. y Davila J., 2002, Comparing predictions of sporas vs. a fuzzy reputation agent systems. En 3rd International Conference on Fuzzy Sets and Fuzzy Systems, Interlaken, páginas 147-153 [4] DeRemate, 2005, http://www.deremate.com/ [5] ebay, 2005, http://www.ebay.com/ [6] Esfandiari B., Chandrasekharan S., 2001, On how agents make friends: Mechanisms for trust acquisition, En Proceedings of the Fourth Workshop on Deception, Fraud and Trust in Agent Societies, Montreal Canada, páginas 2734 [11] ISO/IEC 15939: 2002 International Standard, Software Engineering – Software Measurement Process. [12] ISO/IEC ISO14598-1: 1999 International Standard, Information Technology – Software product evaluation – Part 1: General Overview. [13] MercadoLibre, 2005, http://www.deremate.com/ [14] Víctor Daniel Podberezski, Jorge Salvador Ierache: Utilización de Agentes y Reputación en la Administración de la Cadena de Suministros industriales. JIISIC 2006: 217-224 [15] Pujol J.M., Sangüesa R., 2001, Reputation Measures based on Social Networks metrics for Multi Agents Systems, en Proceedings of the 4th Catalan Conference on Artificial Intelligence CCIA-01, pp 205-213, Barcelona, Spain. [16] Ramchurn Sarvapali D., HuynhDong, Jennings Nicholas R.,2004, Trust in Multi-Agent Systems, School of Electronics and Computer Science, University of Southampton. [17] Russell, S. Norving, P. 1995. Artificial Intelligente: A Modern Approach. Prentice-Hall. [18] Sabater Mir Jordi, 2003, Trust and reputation for agent societies, Tesis Doctoral, Universidad Autónoma de Barcelona [19] Sabater J., Sierra C., 2002, REGRET: a reputation model for gregarious societies. En C. Castelfranchi y L. Johnson, editors, Proceedings of the 1st International Joint Conference on Autonomous Agents and Multi-Agent Systems, paginas 475–482. [20] Trust ontology 2006, http://www.schemaweb.info/schema/SchemaDetails.as px?id=171 [7] Görn Christoph, 2006, An extended Ontology for Trust Models, http://b4mad.net/2006/01/10/trust.html [21] Wooldridge, M. and Jennings, N.R., 1995. Agent Theories, Architectures and Languages: a Survey in Eds., Intelligence Agents, Berlin: Springer-Verlag, Vol 1, Nro 22 [8] Grüninger M, Fox M. S., 1995, Methodology for the design and evaluation of ontologies, Workshop on Basic Ontological Issues in Knowledge Sharing, Montreal, Canada [22] Wooldridge, M., 2002, An introduction to Multiagent Systems, John Wiley & Sons Ltd. [9] Huynh Dong, Jennings Nicholas R., Shadbolt Nigel R., 2004, Developing an Integrated Trust and Reputation Model for Open Multi-Agent Systems, School of Electronics and Computer Science, University of Southampton, UK. [10] Huynh, T. D., Jennings, N. R. and Shadbolt, N., 2004, FIRE: an integrated trust and reputation model for open multi-agent systems. En Proceedings of 16th European Víctor Daniel PODBEREZSKI - 209 - [23] Zacharia G., 1999, Collaborative reputation mechanisms for online communities, Tesis para master, Instituto de tecnología de Massachussets [24] M. Dean, D. Connolly, F. van Harmelen, J. Hendler, I. Horrocks, D.L. McGuinness, P.F. Patel-Schneider, L.A. Stein, OWL Web Ontology Language 1.0 Reference, W3C Working Draft, 2002. http://www.w3.org/TR/owl-ref/
© Copyright 2024