Distribución jerárquica de las responsabilidades. Comandantes y subcomandantes

3 comments »

A medida que los sistemas se tornan más complejos, nos será necesario distribuir el comportamiento y categorizarlo de forma que podamos gestionar de forma independiente cada uno de ellos.

Será necesario distribuir de algún modo la forma en la que se abordan los diferentes problemas que van surgiendo. En el caso de un juego de estrategia, puede ser necesario llevar una estrategia a varios niveles, por ejemplo en un nivel superior se pretenderá planificar un desarrollo típico (minar recursos, construir un ejército y atacar) y a un nivel más bajo puede pretenderse explorar el mapa o crear estrategias inferiores de mejoras de edificios y unidades.

Para esto utilizaremos estructuras que permitan distribuir y definir los diferentes factores y estrategias. Una solución factible es el uso de comandantes es decir la utilización de una distribución jerárquica.

> Comandantes y subcomandantes en inteligencia artificial.

Del mismo modo en el que se distribuirian las tareas en cualquier sistema jerárquico, al aplicar este concepto en IA tenemos que distribuir objetivos por un lado y abstracción por otro. Conforme bajamos en la escala jerárquica tendremos una distribución de objetivos más cercana a bajos niveles de abstracción (encontrar minas, proteger perímetro, etc) y conforme subimos en la escala serán menos precisos y abstractos (obtener solvencia económica, forjar ejército etc.)

Comandante

Un comandante tendrá una serie de elementos a su cargo y será el indicado de distribuir sus recursos a los subcomandantes. Por otro lado, los subcomandantes serán los encargados de pedir recursos a su superior y de administrar los que tienen para llegar al objetivo concreto.

El comandante puede crear, substituir y relevar subcomandantes conforme a la estrategia de juego. En un momento determinado un subcomandante puede ser necesario para, por ejemplo escrutar el terreno con la finalidad de obtener la posición de las minas. Una vez conseguido este objetivo, los recursos pueden ser liberados tanto los vinculados al juego como los vinculados a memoria interna.

Un posible escenario es el de un comandante que tiene por objetivos atacar al oponente. Inicia la actividad con tres subcomandantes: un administrador de recursos, un scout, un constructor y un subcomandante de guerra. Para ello en las primeras fases del juego suministrará mayores recursos al administrador de recursos y una vez se cumplan los requisitos variará su estrategia. De este modo al inicio el subcomandante bélico no tendrá demasiada relevancia y en los momentos más avanzados del juego cobrará mayor responsabilidad.

> Distribución de subcomandantes apropiada en un juego de estrategia.

Aunque hay una infinidad de propuestas posibles que pueden resultar perfectamente válidas, los más probable es que de una u otra forma las responsabilidades que se distribuyen en esta taxonomía de comandantes figuren completamente o en su gran mayoría.

Encontraremos por tanto varios tipos de subcomandantes, entre ellos los que se comentan a continuación:

- Subcomandante recolector. Se encargará de minar minerales utilizando trabajadores. Hará los cálculos pertinentes para definir el número y la distribución óptima de los trabajadores entre los diferentes centros y puntos de obtención de recursos.

Sus órdenes pueden varias en función de la estrategia general de sus superiores en este caso el del General.

The Daimyo Ladies Procession

- Subcomandante constructor. Se encarga de distribuir los diferentes edificios necesarios en cada momento del juego. Actualiza las construcciones en función de si son eliminadas, sufren daños o si hay excedente de materiales necesarios.

Subcomandante Ingeniero

- Subcomandante de inteligencia. Se encarga de descubrir información acerca del entorno y del enemigo. Tendrá asignados una serie de recursos que harán que sea más o menos presente en el desarrollo. En un primer lugar puede tomar estrategias de eliminación de la niebla del entorno y una vez alcanzados estos objetivos puede distribuir sus scouts para patrullar determinadas áreas susceptibles y dar el aviso al General en caso de que tropas enemigas penetren en el perímetro.

Comandante de Exploracion

- Subcomandante de defensa. Establece regiones con diferentes grados de seguridad y se encarga de defender y fortificar las bases en función de la estrategia que se le haya definido. Puede acceder a la información general obteniendo datos de esto de las areas. Distribuye las unidades de forma que sean efectivas para la defensa y actua en consecuencia cuando se detecta un ataque. Será encargado de establecer edificios y unidades defensivas.

Defense Commander

- Subcomandante de ataque. Crea el ejército y engloba la estrategia de ataque y las tácticas de combate. Buscará puntos donde emboscar y acechará unidades. Distribuirá las unidades propias de forma que sean lo más efectivas posibles.

Subcomandante de Ataque

- Subcomandante de científico. Pone en marcha las estrategias de evolución de unidades militares y civiles así como la mejora de los edificios o la consecución de tecnologías. Será el encargado de aumentar las capacidades de los elementos de la civilización.

Subcomandante Científico

> Ejemplos de enfoque estratégico.

Utilizando estos mecanismos, nos podemos encontrar en la necesidad de generar estrategias diferentes para conseguir nuestros objetivos. Vemos tres enfoques diferentes de lo que podian ser los planes a ejecutar durante el desarrollo de un juego.

—> Juego o escenario primero (reunión de recursos). El ‘Comandante General’ instancia un ‘Subcomandante Recolector’ y le pasa todas las unidades disponibles. Recursos y capacidad de producción totalmente para el recolector.

­—> Segundo escenario. El General genera escuadrones y agrupaciones diferentes. Estos escuadrones son asignados al ‘Subcomandante de Ataque’ y son distribuidos para empezar a atacar.

El General se encarga básicamente de distribuir los recursos entre las diferentes bases en función del grado de necesidad previsto para cada una de ellas. Se puede basar en el análisis del terreno para detectar areas ‘calientes’ o con un mayor valor estratégico. Es posible delegar parte del trabajo a los subcomandantes para que hagan un preproceso de sus necesidades en función del terreno, de este modo la asignación de recursos por parte del General se hará en base a las diferentes peticiones de los Subcomandantes o la las distribuciones propuestas por el o ellos mismos segun sea el caso.

—> Juego tercero. El General gestiona un grupo de bases de forma independiente acorde a la estrategia general de:

1) Generar un nivel de producción aceptable.
2) Construir un cuartel
3) Producir simultaneamente trabajadores y guerreros mientras sea posible.
4) Si hay al menos dos bases que reciben recursos construir una factoria.
5) Producir marines y tanques a la mayor velocidad posible.

Estos son solo algunos de los ejemplos que nos podemos encontrar. Un juego actual está formado por un gran conjunto de reglas de este estilo que son distribuidas de forma más o menos eficiente entre las estructuras internas del programa.

Este es uno de los elementos que incluye totalmente funcionales el juego de estrategia open source ORTS que ya se ha tratado en artículos anteriores. Los más interesados podeis estudiar la IA de este sistema a fondo sabiendo que una de las bases es la gestión mediante el uso de comandantes.

Las clases están completadas y podeis encontrar todos los tipos de comandantes anteriormente comentados y puestas en escena de las diferentes estrategias de juego.

En definitiva, hemos visto que el uso de comandantes en sistemas de IA permite organizar y dividir las necesidades de estrategia y de distribución de la lógica de nuestro sistema de una forma intuitiva y abordable. Conforme la dificultad o la precisión crecen se pueden incluir mayores rangos para los diferentes gestores, es decir, mayor precisión en las responsabilidades.

Hasta la próxima.

Gestión del comportamiento en sistemas de entretenimiento.

No comments »

El comportamiento aplicado a los sistemas informáticos se refiere a la forma en que nuestro sistema responde en el tiempo y a la forma en la que resuelve los problemas. Conforme avanza la complejidad del sistema, se hace más necesario definir una lógica interna organizada y capaz de ser utilizada de forma eficaz y escalable.

La gestión de la lógica será un elemento cada vez más importante en sistemas que requieran un amplio abanico de funcionalidades y que dependan de entornos no siempre fijados ni fijables y de comportamientos del usuario no definidos ni definibles. Si en nuestro sistema pudieramos definir punto por punto el comportamiento que se requiere, no sería necesario ningún sistema de gestión del comportamiento puesto que todo evento vendría determinado por una o varias acciones. En nuestro caso nos enfrentaremos a situaciones en las que no todo está definido (la forma en que la unidad se desplaza por el terreno, la forma en la que se recibe un ataque, la forma en la que se distribuyen y minan los recursos…etc). Será necesario definir comportamientos más complejos que los basados en reglas.

El comportamiento en los sistemas de entretenimiento cada vez cobra mayor importancia. Desde esta perspectiva se puede observar que durante el desarrollo de un juego actual se llevan a cabo muchos cálculos relativos al comportamiento y sobre unidades y elementos muy diferentes. El comportamiento no solo es el asignado a unidades que representan humanos o criaturas con diferentes objetivos sino que se aplica también a elementos más sencillos como los que forman parte del entorno o del escenario. Gestionar bien el comportamiento es una tarea crítica cuando abordamos el diseño de un sistema medianamente complejo que requiera del uso de componentes de inteligencia artificial.

La planificación será clave, es decir, la capacidad de organizar y llevar a cabo tareas más o menos abstractas y finalizarlas con éxito con un determinado propósito. En un juego de estrategia planificar podría ser: explotar recursos, amurallar el perímetro, reunir un ejército, mejorar el estado de las unidades y atacar al enemigo.

Es importante tener la capacidad de rehusar estados y de agrupar comportamientos. Cuando el sistema crece, se suelen añadir muchos requisitos y condiciones que hacen que el control lógico crezca de forma exponencial y la rehusabilidad del mismo decrezca en la misma medida.

La gestión concurrente de los comportamientos también se hace necesaria. Muy frecuentemente será necesario manejar un comportamiento en paralelo como el manejo del desplazamiento o pathfinding sobre una misma unidad mientras que se gestiona el comportamiento de la animación por otro lado.

Para llevar este comportamiento se suelen utilizar algunos mecanismos como los gestores de comportamiento que se basan generalmente en el uso de autómatas de estados finitos (FSM), autómatas de estados finitos Jerárquicos (HFSM) o en árboles de Comportamiento (BT).

Otro de los conceptos que manejaremos serán las respuestas a eventos y por lo tanto las variaciones del comportamiento en base a los estímulos o señales recibidos. Deberemos ser capaces de modificar el comportamiento en función del entorno, del tiempo o de la situación en la que nos encontremos.

Estos son detalles que son necesarios conocer así que manos a la obra!

Agentes inteligentes. Precursores del Agente Smith

No comments »

Uno de los conceptos ampliamente utilizados en la inteligencia artificial es el concepto de Agente. Un agente como descripción general es un elemento lógico que definimos con un propósito concreto y que toma acción en un momento determinado de la ejecución con la finalidad de acercarnos a la consecución de nuestros objetivos.

> 1. Estructura del agente

Un agente tiene generalmente una estructura en la que se identifican 4 elementos: capacidad de percepción, capacidad de acción, objetivos y entorno.

Agente Smith

–> 1.1 La capacidad de percepción viene definida por los elementos capaces de reconocer de los que dispone el agente. Pueden ser sistemas sencillos en los que la percepción puede ser la detección o no de intrusos en su área de acción (definida fácilmente con un booleano) o bien mecanismos más complejos como una matriz de NxM que refleje la visión del agente en una orientación y momento concreto del tiempo y que requerirá un proceso más intenso e incluso una abstracción para agilizar cálculos.

–> 1.2 La capacidad de acción vendría definida por el conjunto de los movimientos, cálculos o respuestas en general que puede llevar a cabo el agente. Pueden ser tan sencillos como (giro izquierda/giro derecha/avanzar/retroceder) o más complejos como (evadir/emboscar/atacar/confundir).

–> 1.3 Los objetivos son la esencia del agente. El comportamiento del mismo irá orientado a la consecución de los mismos.

–> 1.4 El entorno es una característica externa al agente pero que condiciona su comportamiento. Puede ser un mundo tridimensional o una abstracción del mismo reducida a eventos. En otros casos puede ser una
matriz la que modele el entorno o incluso un grafo que represente una topología concreta.

Agentes Inteligentes

> 2. Tipos de agentes

Existe una primera clasificación de los agentes en función de diferentes aspectos como su grado de percepción del entorno o de su capacidad de proceso lógico.

Agentes de mAtrix

–> 2.1 Agentes de reflejo simple

El primero de ellos se basa en reglas sencillas y utiliza aserciones lógicas para llevar a cabo el proceso lógico que decide que acción tomar a cabo. No se tiene en cuenta el entorno donde se desenvuelve más que en la creación de las reglas.

Agentes de lógica Simple

Son rápidos y muy apropiados si el mundo es fácilmente modelable y las acciones generan el resultado apropiado de forma determinista y predecible.

–> 2.2 Agentes bien informados de todo lo que pasa

En este aspecto se requiere un modelo más preciso del entorno donde las acciones que llevamos a cabo produzcan un resultado concreto y podamos observar la evolución del mundo.

Agentes bien informados

–> 2.3 Agentes basados en metas

Este tipo de agentes son más complejos puesto que requieren estructuras más complejas para garantizar comportamientos donde puede ser necesario el uso de técnicas de planificación o de búsqueda complejas que lleven al propio agente a la consecución de sus objetivos.

Agentes por metas

Se modificará el comportamiento en base a la retroalimentación recibida de aplicar las acciones concretas variando así su planificación o sus parámetros de búsqueda.

–> 2.4 Agentes basados en utilidad

Estos se utilizan cuando no solo es necesario llegar a unos determinados objetivos de forma concreta sino que es necesario llegar de una forma eficiente.

Para ello se utiliza una función de utilidad acotada entre 0 y 1 que determina el grado de acercamiento a la meta que producirá el abanico de acciones disponibles. Distribuyendo dicho contenido en un acercamiento nulo (funcion de utilidad igual a cero) y una consecución de la meta (valor igual a uno).

De la correcta definición de la función de utilidad depende el grado de desempeño del agente.

> 3. Arquitectura de un agente

Existen diferentes arquitecturas actualmente.

Codigo Fuente de Agentes de Matrix

–>3.1 Basadas en la Lógica.

Conocidos también como agentes deliberativos, toman decisiones basadas en funciones lógicas que caracterizan el comportamiento. Un ejemplo sería: SI sensor_choque == ACTIVADO ENTONCES dirección = atrás.

–>3.2 Agentes reactivos

Este tipo de agentes actúa en función de los estímulos externos sin tener en cuenta el tiempo pasado del entorno ni el futuro del mismo. Responden de forma directa proporcionando un tiempo de respuesta y de proceso muy alto.

–>3.3 Arquitectura creencia-deseo-intención.

La toma de decisiones pasa por la interacción y el proceso de los elementos almacenados en las estructuras de creencias, deseos e intenciones. Se basan en deliberar primero que hay que hacer en base a los deseos utilizando las creencias y seleccionando posteriormente las acciones a realizar del grupo de intenciones.

–>3.4 Arquitecturas híbridas.

Se tienen en cuenta varias capas que utilizan conceptos del resto de arquitecturas. Suelen ser muy eficaces para el entorno concreto en el que se desarrollan pero poco generalizables a problemas que no sean muy similares.

La elección de una o de otra será en base a nuestro entorno por lo que no hay una mejor o peor solución sin la aplicación al problema en concreto.

> 4. Los tipos de Entornos o Ambientes

A la hora de construir un agente inteligente se tendrá muy en cuenta el entorno para el que se crea. Podemos encontrar varios tipos de entorno.

–> 4.1 Accesibles/No accesibles.

Si a través de los sensores el agente tiene acceso al estado completo del entorno, este es accesible.

–> 4.2 Deterministras/No deterministas.

Si es posible conocer a partir del estado actual y la decisión tomada del agente, el estado futuro del propio entorno y del mismo agente.

–> 4.3 Episódicos/No Episódicos.

Es posible dividir el estado del agente en episodios con características propias.

–> 4.4 Estáticos/Dinámicos.

El ambiente puede cambiar mientras el agente toma una decisión.

–> 4.5 Discretos/Continuos.

Cuando es posible concretar todos los estados del entorno, este es discreto. Cuando no es posible debido a la cantidad y al tipo de variables que intervienen, este será continuo.

Los entornos por lo tanto condicionas en gran medida al agente que queremso construir. De la experiencia dependerá que creemos agentes más precisos y adaptados al entorno y que desempeñen por tanto su trabajo con un mayor grado de precisión y eficiencia.

Hasta la próxima!

Conceptos para la Solución de problemas de Estrategia mediante técnicas de Inteligencia Artificial

No comments »

A la hora de abordar un problema de estrategia utilizando inteligencia artificial deberemos tener en cuenta una serie de
conceptos que toman parte en el panorama actual de soluciones y
que son tremendamente útiles y necesarios en muchos casos.

Este resumen da lugar a una serie de artículos orientados a describir con más detalle cada uno de los elementos y permitirte profundizar en el mundo de la Estrategia utilizando IA.

> Que se aborda y que se resuelve …

Principalmente se resuelven problemas en los que es necesario llevar a cabo acciones no sencillas de coordinar y bajo un desarrollo largo
en el que sería difícil describir de forma directa todos los pasos tener en cuenta.

Se orienta a problemas en los que es necesario reaccionar al entorno
y tener una estrategia diferente en función del mismo.

Un ejemplo claro es el de juego de estrategia donde es necesario llevar un plan maestro (reunir recursos, fortificar la base, crear un ejército y atacar) pero además se necesita tener un alto grado de
libertad para responder a eventos en los que el plan varía, por ejemplo el enemigo ataca la base.

Estos mecanismos se pueden abordar de una forma directa tratando caso
por caso pero el resultado será un código que crecerá exponencialmente y que será difícilmente rehusable, lo que hará que al primer cambio importante nos veamos incapaces de resolverlo en un tiempo aceptable.

Para ello, se han ido desarrollando una serie de técnicas y poniendo en práctica conceptos tanto de la teoría de autómatas como de otros entornos académicos con resultados aceptables y gran difusión entre los desarrolladores.

> Qué elementos intervienen…

Los temas a tener en cuenta en un primer estadio de conocimiento, son los siguientes:

- > Agentes inteligentes.
- >Control de comportamiento.
- >Distribución jerárquica de las responsabilidades.
- >>Comandantes.
- >>>Distribución de subcomandantes en un juego de estrategia.

- >Gestores de comportamiento lógico
- >>>Autómatas de estados finitos (FSM)
- >>>Autómatas de estados finitos Jerárquicos (HFSM)
- >>>Áboles de Comportamiento (BT)
- >Planificadores
- >Paralelizadores

- >Táctica a bajo/alto nivel.

- >Estrategia de combate.
- >>>Táctica VS Estrategia

> En resumen

Cada uno de estos apartados son claves y aportan parte del conocimiento básico necesario para afrontar un problema de inteligencia artificial orientado tanto a los juegos de estrategia como a cualquier otro problema donde se requiera aplicar sistemas con un alto grado de planificación, elementos lógicos e incertidumbre por lo que os servirá para cualquier problema de esta índole.

Disfrutadlo.