# Inteligencia artificial para videojuegos/Modelos racionales de resolución
## Introducción

Los problemas surgen al comparar la situación actual y la deseada (nuestro objetivo). Este conflicto es el que motiva nuestra acción
Por tanto, debemos hacer esa exploración y estudiar la naturaleza de los problemas que nos podemos encontrar. Para poder dar una solución debemos escoger el enfoque y su marco de trabajo adecuados de entre los disponibles.

## Enfoque resolutor

En este enfoque, vemos a la IA como una "máquina" cuya función será resolver puzles o tareas complejas.
Desde el enfoque establecido en el libro A.I.M.A. podemos tratar todo sistema de inteligencia artificial como un agente, donde:
- Los datos de entrada serían percepciones que el agente recibe con sus sensores.
- Los datos de salida serían acciones que el agente realiza con sus actuadores.
- El marco de trabajo sería el entorno que habita el agente.
Será cuestión de usar el enfoque que más ayude a afrontar el proyecto, desde agentes hasta generadores.

## Marco de trabajo

El marco de trabajo (o framework ) con este paradigma se compone de 4 características:
* Tipo de problemas: cómo son los datos de entrada.
* Tipo de soluciones: cómo son los datos de salida.
* Dominio de trabajo: cuáles son las restricciones que aplican a los posibles problemas y soluciones.
* Medida del éxito: qué nivel de éxito tiene una resolución (la cual puede componerse de una/varias soluciones al problema).
Este marco de trabajo se define de igual manera ya sea un proyecto sobre el mundo real (ej. Robótica) o sobre un mundo artificial 100% software como el de un videojuego.

## Tipos de resolutores

Podemos clasificar a los resolutores según ciertos criterios:

### Fuente de información

El resolutor debe tener en cuenta el problema planteado y cualquier otra información que esté a su alcance, la cual puede ser:
- Propia = la que incluye por defecto el diseñador, ya sea implícita (información sobre la forma en la que se debe resolver el problema) o explícita (fichero con datos relevantes para el mismo)
- Adquirida mediante aprendizaje.
Decimos que el resolutor es más autónomo cuanto menos dependiente sea de su información propia.

### Obtención de soluciones

En los sistemas en los que haya varias soluciones, el resolutor puedo obtenerlas:
- Automáticamente (todas a la vez)
- Iterativamente (una tras otra)

### Funcionamiento

- Determinista: la solución sólo depende del problema concreto al que se enfrenta.
- No determinista (estocástico): depende de más cosas, entre las que puede estar el uso de algún factores pseudo-aleatorios (los cuales hacen que la IA no sea tan predecible en la mayoría de los casos). E.g. tiradas de dados.

### Relación con otros resolutores

Es posible tener más de un resolutor abordando un mismo problema. Según la forma en que lo abordan, podemos decir que trabajan de forma:
- Paralela (a la vez)
- Concurrente (turnándose)
Y según la forma en que se relacionan entre sí:
- Competitiva: escogemos el de mayor éxito
- Competitiva: comparten información pudiendo llegar a trabajar en partes distintas del problema

### Reacción a los cambios

Las restricciones temporales y de cómputo han sido un gran estímulo para la IA de videojuegos; siendo hoy en día un intervalo de respuesta normal entre 0,2 (reacción simple) y 0,4 (reconocimiento) segundos.
- Decimos que un resolutor es interactivo si es capaz de reaccionar a cambios dinámicos en el problema

## Modelos de resolutores

Hay cuatro modelos principales de resolutores racionales en función de la información de la que dispongan. Se corresponden con las 4 partes del framework ya vistas:
* 1. Resolutor reflejo simple: no usa ninguna información salvo la del problema.
* 2. Resolutor reflejo basado en modelos: tiene información explícita sobre el dominio de trabajo (normalmente estructura de POO)
* 3. Resolutor basado en objetivos: tiene información explícita sobre cómo deben ser las soluciones.
* 4. Resolutor basado en utilidad: tiene información explícita sobre la medida de éxito.

## Tipos de problemas

Para poder escoger el resolutor adecuado debemos conocer las características del problema a resolver. De esta manera se tendrán en cuenta tres conceptos de cara a dividirlos en tipos. Estas serán visibilidad, determinismo e interdependencia.
Una característica muy importante del problema es su visibilidad.
* Completamente visible, tenemos toda la información.
* Parcialmente visible, hay parte de la información que desconocemos.
* Invisible, desconocemos el problema totalmente pero aún así es posible resolverlo “a ciegas” (Ej. con varios intentos y aprendizaje).
En el enfoque de agente los problemas visibles se llaman entornos observables. Los problemas cuyo número de modificaciones que podemos realizar es finito se conocen como problemas discretos.
Además del determinismo del resolutor, nos interesa el del problema.
* Determinista, cada pareja problema-solución tiene un único valor de éxito.
* No determinista, similar a estocástico pero sin probabilidades, un problema-solución tiene distinto éxito y se intentará que todos sean “aceptables”.
* Estocástico, (tipo de problema No Determinista) un mismo problema-solución tiene distintos éxitos repartidos según distribución de probabilidades.
El problema se considera incierto cuando es estocástico, o determinista y parcialmente visible.
Teniendo en cuenta la interdependencia de los problemas se subdividirán en dos tipos:
* Episódicos si van uno detrás de otro pero son independientes entre sí. Este tipo de problemas nos permite realizar aprendizaje.
* Secuenciales si la solución dada a problemas previos afecta a los siguientes. Esto se puede ver como un meta-problema a resolver por el resolutor, que deberá retener en su memoria cierta información entre problemas.

## Dominios de trabajo

Existen diversas formas de representar computacionalmente los problemas, las soluciones y sus relaciones. Dependiendo de este dominio conseguiremos una mayor facilidad para razonar y aprender o un resolutor más conciso y expresivo. Los siguientes tipos están ordenados con este criterio:
* Representación atómica (con símbolos: A -> s(A), B -> s(B)) donde no se muestra la estructura interna, es una caja negra.
* Representación factorizada (x < 5 ^ A) compuesta por una serie de factores, como valores booleanos o numéricos.
* Representación estructurada basada en objetos con factores y relaciones con otros objetos (a su vez estructurados…).

## Participantes

* Patricia Cabrero Villar.
* Kelvin Comper Dias
* ↑ Si la información propia no es perfecta, puede haber aprendizaje