Un primer enfoque que podemos abordar cuando la cosa se pone fea en
materia de control de comportamiento son los Autómatas de Estados Finitos o Finite States Machines. Se pone fea cuando el número de comportamientos crece y se pone mucho más fea cuando crecen los diferentes entornos y condiciones bajo los que manifestar estos comportamientos.

Por controlar el comportamiento entendemos la necesidad de que a partir de unos determinados eventos o acciones del usuario, nuestro agente inteligente responda de una forma concreta. De este modo deberemos gestionar el comportamiento de NPCs (Personajes No Jugador), de mascotas, de plantas, puertas …etc. En definitiva, todo lo que requiera un cierto grado de reacción ante determinados
eventos.

Autómata

Una de las propuestas sencillas para llevar un poco la distribución
del comportamiento son los FSMs. Estas herramientas utilizadas inicialmente en informática teórica cobran importancia cuando queremos estructurar el comportamiento. Algunos ingenieros informáticos verán devueltas a la realidad sus peores pesadillas de sus años mozos cuando estudiaban teoría de la computación. Otros,
simplemente pensad que el infierno de Dante era el paraiso al lado de
los estudiantes de este tipo de estructuras. De cualquier modo, lo que en su dia fue una herramienta perfecta de tortura a los alumnos, ahora se torna en una buena manera de trabajar y conseguir resultados aceptables para sistemas que no alcanzan una complejidad extrema.

Pasamos a ver que son y cómo se utilizan. Los FSMs constan de varios elementos: estados, transiciones y acciones. El formalismo matemático será para aquellos interesados, bastante más riguroso. Sin embargo, el objetivo aqui es saber que son y cómo se aplican para resolver este problema.

> Partes de los autómatas FSM

Empezamos identificando cada elemento y lo aplicamos a nuestro propósito, que es utilizarlos como gestores de comportamiento. En un
autómata como el nuestro encontraremos varios elementos: estados, transiciones y comportamientos. Definimos un estado inicial que será a partir del que se procesen los cambios.

El tema es sencillo, los estados representan el momento concreto de la acción, es decir, de entre todos los posibles momentos, cuál es el que está vigente ahora. Un ejemplo claro es el del autómata de las estaciones: Empezando por un esto inicial llamado por ejemplo: ‘Primavera’, el resto de estados serán ‘Verano’,'otoño’ e ‘Invierno’.

Otro elemento es el de las transiciones. En nuestro autómata de las estaciones serán flechas que vinculan un estado con otro y que representan el paso de un estado al siguiente. Tendremos transiciones del estado ‘Primavera’ al estado ‘Verano’ y así sucesivamente para cada uno.

Finalmente tendremos las acciones, que serán propias de cada estado. Por ejemplo en nuestro caso, el autómata tendrá en el estado ‘Primavera’ asociada la acción florecer();, en invierno heladas(); y así sucesivamente. Cada estado tendrá una serie de acciones que definirán el comportamiento.

En nuestro caso un posible autómata aplicado a un juego de estrategia en tiempo real que defina el comportamiento previsto como estrategia general será:

-Estados: ‘Minar recursos’, ‘Crear Ejercito’, ‘Mejorar la tecnología’, ‘Fortificar’ y ‘Atacar’. Con un estado ‘Defender’.

Las transiciones serían las lógicas, una detrás de otra, añadiendo una transición que va al estado ‘Defender’ si ataca el oponente y que retorna al estado del que proviene una vez neutralizado el ataque.

> Funcionamiento

A partir del estado final y en función de las transiciones vamos pasando de un estado a otro ejecutando la lista de acciones que tenemos asignadas a cada estado. Cuanto más alto nivel se aplique a las acciones, más sencillo será interpretar el código. Cuanto mejor estructurado esté el autómata, mayor será la capacidad de incluir nuevos estados o mejorar los actuales.

Si una imagen vale más que mil palabras un video valdrá: “1000*Fotogramas * segundo * segundos de video” veces que una palabra. así que aqui teneis una muy breve pero concisa explicación.

Una herramienta constructora de autómatas se puede ver aqui:

> En resumen

Hemos visto qué son y cómo se utilizan los Autómatas de Estados Finitos para la resolución de problemas en los que es necesario estructurar de una forma aceptable los comportamientos que se darán lugar en nuestro sistema de inteligencia artificial.

Estos son una herramienta muy utilizada ya no solo en entornos de inteligencia artificial sino de ingeniería en general por lo que resulta una buena adquisición de conocimiento y un buen paradigma a la hora de plantear resultados a problemas que requieren de un cierto grado de división en estados.

Aqui teneis una clase rápida (1 hora) del funcionamiento de estos cacharros, cortesia del Instituto Indio de Tecnología Madras.

Y otra muy buena del mismo tipo:

De cualquier forma, vale la pena darle un poco de caña al asunto por lo que os recomiendo a aquellos que no conoceis a fondo estos mecanismos que les echeis un vistazo. La documentación es muy abundante.

Hasta la próxima