martes, 5 de abril de 2011

Inteligencia artificial

La siguiente fase del PFC consistirá en diseñar e implementar el módulo de IA. Estará compuesto por:

- Un razonador para realizar adelantamientos.
- Un controlador fuzzy para los cambios de marcha.
- Un 'cerebro' en el que almacenar todas las percepciones.

El razonador será un motor de selección de reglas del tipo

(1) P) A1 ^ A2^A3^....^An -> C

Las reglas estarán expresadas mediante lógica de predicados de primer orden (http://es.wikipedia.org/wiki/L%C3%B3gica_de_primer_orden).


Es decir tenemos un conjunto de reglas, y un conjunto de hechos (percepciones y medidas sintetizadas a partir de las percepciones), y a partir de esta base de conocimiento, deducimos la acción a realizar.

R |= A ( " Del conjunto de reglas, se deduce la acción ")

En la fórmula de ejemplo (1)La P representa la prioridad, los Ai son los antecedentes ( condiciones que provienen de cálculos y análisis de las percepciones) y C será la acción consecuente.
Las reglas serán tanto simbólicas, como no simbólicas (es decir, representaremos valores tanto con cadenas de letras -- cerca, lejos, etc- como con valores numéricos - 20, 10, etc- según el caso).

El funcionamiento es como se describe a continuación:
Inicialmente leemos el fichero o la base de datos en la que tengamos las reglas almacenadas.
A continuación se ordenan por orden de prioridad (0...N).
El motor se activará cada vez que se detecte algún rival mediante los sensores de oponentes.
Una vez activado, se pasará a un bucle en el que se irá evaluando cada regla, y en el momento que sean verdaderos todos los antecedentes, se seleccionará dicha regla y se disparará la acción consecuente ( la acción estará compuesta por 3 acciones propias de Torcs -aceleración,frenado y dirección).

La evaluación de la regla consistirá en analizar la regla mediante un parser, tokenizando cada antecedente y comprobando que su valor sea cierto para el instante actual. Si todos los antecedentes son ciertos, entonces la regla será evaluada como verdadera y será seleccionada.
A continuación una vez seleccionada, se analizará la parte consecuente y se enviará el conjunto de acciones al cliente.

El controlador fuzzy consistirá en diseñar un controlador difuso de tipo Mamdani, en el que las reglas representarán etiquetas con grados. En próximas entradas se describirá con más precisión y de forma práctica, ya que la teoría en la que se basa es algo tediosa.

El cerebro, en realidad ya existe desde hace varias versiones, es la lista de todas las percepciones tomadas en cada instante.

4 comentarios:

  1. He estado pensando que para el tema de saber la longitud total del cicuito, se puede saber desde la primera vuelta, sin necesidad de vuelta de reconocimiento, aprovechando de que el coche empieza atrás de la meta, se podría tomar el valor de DistanceFromStartLine justo anterior a cuando valga aproximadamente 0( que será el momento en el que estará cruzando la línea de meta)
    Bueno, dejo aparcada la gráficas por ahora, y voy a centrarme en las reglas.
    Saludos.

    ResponderEliminar
  2. PERFECT!!!.. Así ya sabemos la longitud desde un principio!

    Por cierto, el modo de inferencia NO es modus-ponens, puede ser un sistema de reglas de producción con prioridades,pero no lo tengo claro 100% cuál es el nombre exacto.

    Lo que si se puede decir que M |= Accion, es decir, que la acción es consecuencia lógica de las reglas. La "sintaxis" si es similar a la lógica de primer orden (Incluso podríamos decir que son Cláusulas de Horn) ;) .... ya va sonando a Prolog!!

    G

    ResponderEliminar
  3. De acuerdo, he corregido lo del modo de inferencia, pero en realidad ¿no está bien expresado decir que se aplique Modus Ponens en uno de los pasos para disparar la acción? Es decir, (una vez que previamente tengo ordenadas las reglas por prioridad) se comprueban los antecedentes de la regla candidata y al ser todos evaluados como verdaderos, se obtiene el consecuente.

    ResponderEliminar
  4. A ver... Si es cierto que para comprobar la validez de UNA regla, e inferir el consecuente podemos usar Modus Ponens, pero el sistema de inferencia completo, es decir, el conjunto de reglas(de producción) tiene otro sistema de inferencia que NO es Modus Ponens.

    Por ejemplo, tenemos el siguiente conjunto de reglas (M):
    A & B -> C
    A -> D
    B -> E

    En un momento, tras una percepción sabemos que son ciertas A y B. Se puede deducir D ??
    (Pues como siempre depende de las reglas de razonamiento.)

    En nuetro sistema podemos decir que M |= C ... pero NO podemos decir que M |= D , aunque si aplicamos Modus Ponens a la segunda regla SI se cumple, pero el sistema global te dice que SOLO se infiere de la primera regla con más prioridad que se cumpla.

    G

    ResponderEliminar