Manual de capa de formaciones introducción



Descargar 15,01 Kb.
Fecha de conversión17.01.2017
Tamaño15,01 Kb.

MANUAL DE CAPA DE FORMACIONES



Introducción


El propósito de este documento es dar una introducción al manejo de la capa de formaciones en el MRCC, para estos se describirán las clases principales, lo que se necesita para su funcionamiento correcto.

Para poder utilizar la capa de formaciones del modelo MRCC se deben tener en cuenta las siguientes clases que se encuentran en el framework, las cuales son necesarias para el correcto funcionamiento del modelo:



  • ZoneManagerState.java

  • ZoneManagerAgent.java

  • Tactic.java

  • ExceptionalRoleMRCC.java

  • StructuralRoleMRCC.java

  • Objective.java

  • NeedDetector.java

Agente Zona


Para poder crear un agente zona es necesario que el agente en su aplicación extienda de la clase ZoneManagerAgent.java de tal forma que puede ser construido por el constructor del padre.

Para el estado del agente, es necesario que el estado de su agente extienda de la clase ZonaManagerState.java e implemente las funciones abstractas:



  • public abstract double proximity(RationalAgentBESA SAg, StructuralRoleMRCC SRA);

  • public abstract void reorganization();

Estas dos funciones permiten a la zona poder reorganizar por compactación o dispersión a sus agentes y poder medir la distancia entre su agente y el rol que le desea asignar.

Ambas funciones son abstractas debido que dependen del modelo del mundo que el diseñador vaya a usar en su aplicación.


Estado de la Zona


Para la creación del estado de la zona es necesario ingresarle los siguientes parámetros:

  • Int minAgents: representa el mínimo número de agentes que puede haber en la zona.

  • Int maxAgents: representa el máximo número de agentes que puede haber en la zona.

  • ArrayList o: Representa los objetivos que tienen asignados la zona, y los cuales debe monitorear y satisfacer.

  • Tactic t: Representa la táctica que de la zona, la cual contiene las diferentes organizaciones de la zona para cada uno de los posibles números de agentes.

  • ActionZone az: representa la zona de acción sobre la cual se rige la zona.

  • ArrayList adjacent: contiene el alias de las zonas adyacentes con las cuales puede negociar.

  • Long detectionNeedPeriod: número que determina cada cuanto se active el detector de necesidades.

  • Double negociationLimit: número que determina el límite de negociación de la zona, si el beneficio costo está por encima de este número se realiza la negociación.

Como se puede observar para crear el estado se necesitan varios tanto de tipo primito, excepto, la táctica, los objetivos y la zona de acción.

Para que las zonas empiecen a funcionar el coach debe llamar el método initDetectionNeeds() y para que los agentes empiecen a cooperar el coach debe llamar el método initCooperation();


Táctica


Una táctica no necesita parámetros para poderse construir, pero si necesitara que después de instanciada, el diseñador le agregue las diferentes instancias que pueden ocurrir después de cada negociación por medio de la función addInstance (int i, ArrayList st), donde i es el número de agentes para esa instancia y st son los roles estructurantes que van a tomar el número de agentes i.

Tactic.java es una clase abstracta y necesitara que alguna clase la herede e implemente su método abstracto de reorganización el cual recibe el modelo del mundo.


Objetivo


Por otro lado un Objetivo es una clase que para construirse necesita una serie de parámetros, estos son:

  • String objectiveName: Este parámetro representa el nombre del objetivo

  • NeedDetector needDetector: Este parámetro representa la forma en que va a ser detectada la necesidad de este objetivo.

  • double lowLimit: valor entre 0 y 1 que representa cuando el objetivo está en una necesidad baja.

  • double highProgressiveLimit: valor entre 0 y 1 que representa cuando el objetivo está en una necesidad alta progresiva.

  • double deadlyHighLimit: valor entre 0 y 1 que representa cuando el objetivo está en una necesidad muy alta.

  • Solution lowLimitSolution: Enum que indica el tipo de solución para la necesidad baja.

  • Solution highProgressiveLimitSolution: Enum que indica el tipo de solución para la necesidad progresivamente alta.

  • Solution deadlyHighLimitSolution: Enum que indica el tipo de solución para la necesidad muy alta.

  • double forgetfulness: factor de olvido de la función de q-learning que utiliza la clase para mantener el valor de necesidad.

  • double learning: factor de aprendizaje de la función de q-learning que utiliza la clase para mantener el valor de necesidad.

Dentro de los parámetros que se necesitan para construir un objetivo, está el detector de necesidad, el cual es una clase abstracta que la tiene que heredar el diseñador he implementar su método abstracto double needDetectionFunction (ZoneManagerAgent ag), el cual debe devolver un valor entre 0 y 1 indicando la necesidad actual del objetivo al cual está asociado, para esto recibe el agente zona donde puede adquirir el modelo del mundo de la misma y de los agentes que están en ella.

ActionZone


La ultima clase que falta entrar a especificar es la actionZone la cual permite modelar la zona de acción del agente zona.

La cual permite definir los limites en una región cuadrada, el milite inferior en X y Y, de igual manera, el límite superior en amabas igualmente.


Rol Estructurante


Otro elemento importante que influye en la utilización de la capa formación son los roles estructurantes, el rol estructurante hereda del rol cooperativo, pero tienes unos elementos adicionales los cuales son:

  • double originalPositionX: este valor representa el punto base del rol estructurante en el eje x.

  • double originalPositionY: este valor representa el punto base del rol estructurante en el eje Y.

  • ArrayList CooperativeActions: Este contenedor tiene las acciones cooperativas que debe poder realizar el agente para cumplir el rol

  • HashMap exceptionRoles: Representa que un mapa con el caso y el rol excepción asociado, llave String con el caso y Valor Rol excepción asociado al caso

  • ActionZone actionZone: Es la zona de acción en la cual cada rol estructurante ejecuta su brain.

Aplicación FutbolGeo


En la aplicación de FutbolGeo, se creó un archivo zonas.properties, en el cual se parametrizan algunas de las propiedades de la capa de formaciones como lo son:

  • Numero de Zonas.

  • Alias de la zona

  • Periodo del detector de necesidades

  • Límite de negociación

  • Número de agentes que están en la zona

  • El alias de los agentes en la zona.

Este archivo permitió poder cambiar la configuración de la capa de formaciones sin necesidad de recompilar el código de la aplicación.

Este archivo se encuentra en la carpeta de recursos del proyecto execution.

Por otro lado, existe un archivo llamado agentes.properties, en el cual se encuentra la configuración de los agentes que van a ser creados en el sistema, este archivo se encuentra en el mismo lugar que el anterior.

El archivo agentes.properties es usado de igual manera por el simulador actual, ambos proyectos deben estar apuntando al mismo archivo para que se ejecute correctamente.

Este archivo fue modificado para que se pudiera agregar el rol estructurante inicial del agente, debido a que esto se encuentra relacionado con la capa formaciones se menciona la modificación realizada.

En la carpeta de fuentes de futbolGeo quedo una carpeta llamada prueba pruebas formaciones en la cual se encuentran todos los constructores de las zonas, tácticas y objetivos de cada una.

Estos builders mencionados permite la construcción de las zonas para poder ser usado por el agente coach.

Algunos parámetros necesarios para la creación de las tácticas y objetivos, se encuentran quemados en los builders respectivamente.


Recomendaciones


  1. Para el funcionamiento correcto de la aplicación con el actual simulador, primero se deben crear los agentes, después las zonas y por el ultimo el coach.

  2. Verificar que en el proyecto Execution en el paquete Execution.Strategies en la clase FinalCoach.java, que las variables agentFile y zoneFile declaradas al inicio de la clase, tengan la ruta exacta en donde se encuentran el archivo agentes.properties y zonas.properties respectivamente

  3. Verificar que en el proyecto PhysicWorld en el paquete Simulator.Simulator.smr en la clase Main, que las variables UBICACION_ARCHIVO_PROPERTIES y agentFile declaradas al inicio de la clase, tengan la ruta exacta en donde se encuentran el archivo propiedades.properties y agentes.properties respectivamente. Y también, en la línea 71 en props.load(new FileInputStream()); verificar que esta la ruta correcta al archivo propiedades.properties.


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal