Sistema basado en reglas - sistemas inteligentes

24
Universidad de Murcia Facultad de informática. SISTEMAS INTELIGENTES CURSO 3 º, GRUPO 1 , SUBGRUPO 1, Año académico 2013-2014. Nombre: Alcántara Alcántara Luis Ernesto. Fecha de entrega: 8/12/2013.

description

Sistema basado en reglas - Sistemas inteligentes

Transcript of Sistema basado en reglas - sistemas inteligentes

Page 1: Sistema basado en reglas - sistemas inteligentes

Universidad de MurciaFacultad de informática.

SISTEMAS INTELIGENTES

CURSO 3 º, GRUPO 1 , SUBGRUPO 1, Año académico 2013-2014.Nombre: Alcántara Alcántara Luis Ernesto.

Fecha de entrega: 8/12/2013.

Page 2: Sistema basado en reglas - sistemas inteligentes

1. Caso de Estudio.

2. Análisis del problema.

3. Explicación breve de la técnica que se aplicará.

4. Diseño y funcionamiento del procedimiento.

5. Explicación del diseño de base de conocimiento.

6. Manual de Usuario con casos de reales resueltos.6.0 Manual de Usuario.

6.1 Casos reales resueltos.

7. Bibliografía.

Page 3: Sistema basado en reglas - sistemas inteligentes

1.0. Caso de estudio.

La empresa de transportes TTT está dedicada al transporte por tierra de personas y mercancías.

Dicha empresa ha adquirido una red ferroviaria y una flota de trenes y desea modernizar los sistemas de control del tráfico ferroviario en los tramos en los que los trenes pueden circular en las dos direcciones.

Por ello, nos ha contratado para construir un sistema inteligente que controle de forma automática y coordinada los semáforos de las vías y así evitar las posibles colisiones entre los trenes.

2.0. Análisis del problema.

Debemos realizar el sistema de control de tráfico de la estructura que se muestra en la figura de abajo (5 vías y 14 señales de tráfico).

Como se puede apreciar en la figura 1, tenemos la siguientes lista de objetos con sus posibles valores:

S1... S5 → { libre , ocupada } → representan la vía.

L1... L6 → { verde , rojo } → representan a una señal de tráfico.

U1... U8 → { verde, rojo } → representan a una señal de tráfico.

Tenemos que indicar a los diferentes trenes mediante la señalización de los semáforos si pueden salir a un destino determinado, y si este es el caso por cual vía deben circular, por ejemplo, si la señal U1 está en verde entonces puede permitirse que un tren que este en la vía S1 salga, para que esto sea posible y no colisione con el tren que viene de la vía S2, la señal L1 tendría que estar en rojo.

El sistema ha de responder lo mas rápido posible y de forma correcta para cada situación determinada, para conseguir esto, se han de probar las distintas partes del sistema de control, verificando así el correcto funcionamiento de dicho sistema.

Page 4: Sistema basado en reglas - sistemas inteligentes

3.0. Explicación breve de la técnica que se aplicará.

Para resolver este problema utilizaremos un sistema basado en reglas (SBR), para entender que es este sistema y como trabaja, tenemos que entender sus componentes básicos , estos son: la base de hechos (BH), la base de conocimiento (BC) y el mecanismo de inferencias(MI).

(BC) → Contiene todas las reglas que codifican el conocimiento, abajo se puede observar un ejemplo de una parte parcial de una base de conocimiento:

…...etcR20: Si U5=rojo y L5=rojo entonces L1=rojo R21: Si U2=rojo y L2=rojo entonces U6=rojo R22: Si U4=rojo y L4=rojo entonces U6=rojo R23: Si U2=rojo y L2=rojo entonces L6=rojo R24: Si U4=rojo y L4=rojo entonces L6=rojo R25: Si U2=rojo y L2=rojo entonces U7=rojo….etc

Una regla esta formada por:

Una premisa o antecedente: Expresión lógica que va entre las palabras si y entonces.

Una conclusión o consecuente: Expresión lógica tras la palabra entonces.

(BH) → Contiene los hechos establecidos como verdaderos, tanto los datos de entrada “introducidos por el usuario o procedentes de sistemas externos”, como las conclusiones “introducidas durante la ejecución del procedimiento”, abajo se puede observar un ejemplo de una base de hechos al principio de iniciar el procedimiento.

S2=ocupado S3=ocupadoS5=ocupadoU7=verde

(MI) → Selecciona las regla/s que se pueden aplicar y la/s ejecuta con el objetivo de obtener una conclusión.

Figura 2: Componentes básicos de un (SBR).

Page 5: Sistema basado en reglas - sistemas inteligentes

Entendiendo ya cada uno de los componentes de un (SBR) podemos ver sus distintas definiciónes:

1º Un (SBR) es aquel sistema que trabaja mediante la aplicación de reglas, comparación de resultados y aplicación de nuevas reglas.

2º Sistemas diseñados para actuar como un experto humano en un dominio o area de conocimiento en particular.

Figura 3: (SBR 1)

Figura 4: (SBR 2)

Page 6: Sistema basado en reglas - sistemas inteligentes

Hay dos posibles formas de razonamiento:

Encadenamiento hacia delante:

Consiste en buscar un conjunto de metas que se verifican a partir de un conjunto de hechos.

En este tipo de razonamiento la exploración de las reglas corresponde a un razonamiento desde los hechos hacia los objetivos.

Encadenamiento hacia atrás:

Determinar si se verifica un cierta meta con los hechos disponibles.

En este tipo de razonamiento la exploración de las reglas corresponde a un razonamiento desde los objetivos hacia los hechos.

4.0 Diseño y funcionamiento del procedimiento

Para resolver este problema utilizaremos el razonamiento de encadenamiento hacia delante, se muestra a continuación el algoritmo que utiliza el software, aunque cabe indicar que no es exactamente igual al utilizado ya que solo se quiere ilustrar el funcionamiento del “núcleo” de nuestro programa.

Pseudocódigo:

Función Endenamiento-Hacia-Delante()Bhechos = hechos Iniciales; ConjuntoConflicto = equiparar();Mientras no vacio(ConjuntoConflicto) hacer R = Resolver(ConjuntoConflicto); aplicar (Bhechos, R); ConjuntoConflicto = equiparar();Fin_ Mientras;SI isContenida(Meta, Bhechos) devolver “meta encontrada”;Si_no devolver “fracaso”;Fin_Funcion;

El funcionamiento del algoritmo sigue los siguientes pasos (suponemos meta= (S1=libre)):

1 º Obtenemos los hechos iniciales, después buscamos con la llamada a la función equiparar(), un conjunto de reglas cuyas condiciones o acciones sean compatibles con los datos almacenados en la (BH), este conjunto se denomina conjunto ConjuntoConflicto.

P.ej: si tenemos las siguientes reglas en la base de conocimiento:

R1: Si U5=rojo y L5=rojo entonces L1=rojo R2: Si U5=rojo y L5=rojo entonces U6=rojo R3: Si U4=rojo y L4=rojo entonces U6=rojo R4: Si U2=rojo y L2=rojo entonces L6=rojo

y tenemos los siguientes hechos iniciales en la base de hechos:

S2=ocupada S3=ocupada S5=ocupada U5=rojo L5=rojo

tendremos las siguientes reglas en el ConjuntoConflicto:

R1: Si U5=rojo y L5=rojo entonces L1=rojo

Page 7: Sistema basado en reglas - sistemas inteligentes

R2: Si U5=rojo y L5=rojo entonces U6=rojo

2º Se comprueba si en el ConjuntoConflicto esta vacío, es decir, si no se obtuvo en el paso anterior alguna regla, si fuese así terminaríamos el procedimiento y comprobaríamos si la la meta esta contenida ya en la (BH), como este no es el caso seguimos.

3º En este paso la función Resolver(ConjuntoConflicto), nos devuelve la regla que esta contenida en el conjunto conflicto y que se elegió porque tienes mas prioridad.En nuestro problema se indica que las reglas que contengan 'Sx' “si la meta= (Sx=”libre o ocupada”) tienen mas prioridad mientras las demás tienen la misma, si hay empate se elige por orden de aparición, es decir la que tenga el índice más pequeño, por lo cual nos quedamos con la regla: R1: Si U5=rojo y L5=rojo entonces L1=rojo

4º En el cuarto y último paso ejecutaríamos la regla añadiendo, su consecuente a la base de hechos solo si este no esta contenido en ella “ la base de hechos es un conjunto, no puede haber elementos repetidos”, a partir de aquí repetimos el proceso y volvemos al paso 1.

La base de hechos quedaría de la siguiente forma después de terminar el procedimiento:

S2=ocupada S3=ocupada S5=ocupada U5=rojo L5=rojo L1=rojo U6=rojo

Si el procedimiento terminara dejando como resultado la base de hechos anterior, al no estar la meta (S1=libre) en la base de hechos el procedimiento devolvería “fracaso” en caso contrario devolvería éxito.

Se ha intentado modular el programa lo mejor posible utilizando el concepto de programación orientada a objetos, de forma de que cada regla esta organizada en una clase y dentro de estas clase, tenemos los objetos y atributos que forman la regla, que son principalmente los antecedentes y consecuentes.

Page 8: Sistema basado en reglas - sistemas inteligentes

Esto se puede apreciar claramente en el siguiente diagrama.

Figura 4: Diagrama de clase del programa.

El hecho de que la base de conocimientos no cambie implica que solo sea necesario comparar una vez los hechos con los antecedentes, también cuando se aplica una regla esta ya no es necesaria por lo que se puede “ignorar”, aumentando el rendimiento del programa, para lograr esto cada objeto de tipo regla y cada antecedente tiene un atributo de tipo booleano llamado marca, que se pone a true para la regla cuando se aplica y para el antecedente cuando coincide con un hecho.

5.0 Explicación del diseño de la BC.

En nuestro problema tenemos la siguiente base de conocimiento.

R1: Si U1=verde entonces L1=rojo

R2: Si U6=verde entonces L6=rojo

R3: Si L1=verde entonces U1=rojo

R4: Si L6=verde entonces U6=rojo

R5: Si S1=ocupada entonces U2=rojo

R6: Si S2=ocupada entonces L2=rojo

R7: Si S3=ocupada entonces U3=rojo

R8: Si S3=ocupada entonces U4=rojo

R9: Si S4=ocupada entonces U5=rojo

Page 9: Sistema basado en reglas - sistemas inteligentes

R10: Si S5=ocupada entonces L5=rojo

R11: Si U2=verde entonces S1=libre

R12: Si L2=verde entonces S2=libre

R13: Si U3=verde entonces S3=libre

R14: Si U4=verde entonces S3=libre

R15: Si U5=verde entonces S4=libre

R16: Si L5=verde entonces S5=libre

R17: Si U3=rojo y L3=rojo entonces U1=rojo

R18: Si U5=rojo y L5=rojo entonces U1=rojo

R19: Si U3=rojo y L3=rojo entonces L1=rojo

R20: Si U5=rojo y L5=rojo entonces L1=rojo

R21: Si U2=rojo y L2=rojo entonces U6=rojo

R22: Si U4=rojo y L4=rojo entonces U6=rojo

R23: Si U2=rojo y L2=rojo entonces L6=rojo

R24: Si U4=rojo y L4=rojo entonces L6=rojo

R25: Si U2=rojo y L2=rojo entonces U7=rojo

R26: Si U5=rojo y L5=rojo entonces U8=rojo

R27: Si U1=verde entonces (U3=verde o L3=verde)

R28: Si U1=verde entonces (U5=verde o L5=verde)

R29: Si L1=verde entonces (U3=verde o L3=verde)

R30: Si L1=verde entonces (U5=verde o L5=verde)

R31: Si U6=verde entonces (U2=verde o L2=verde)

R32: Si U6=verde entonces (U4=verde o L4=verde)

R33: Si L6=verde entonces (U2=verde o L2=verde)

R34: Si L6=verde entonces (U4=verde o L4=verde)

R35: Si U7=verde entonces (U2=verde o L2=verde)

R36: Si U8=verde entonces (U5=verde o L5=verde)

R37: Si U3=verde entonces U4=rojo

R38: Si L3=verde entonces L4=rojo

R39: Si U4=verde entonces U3=rojo

R40: Si L4=verde entonces L3=rojo

R41: Si U2=verde entonces L2=rojo

R42: Si U3=verde entonces L3=rojo

R43: Si U4=verde entonces L4=rojo

R44: Si U5=verde entonces L5=rojo

R45: Si L2=verde entonces U2=rojo

R46: Si L3=verde entonces U3=rojo

R47: Si L4=verde entonces U4=rojo

R48: Si L5=verde entonces U5=rojo

R49: Si U1=verde entonces U7=rojo

R50: Si L1=verde entonces U7=rojo

Page 10: Sistema basado en reglas - sistemas inteligentes

R51: Si U6=verde entonces U8=rojo

R52: Si L6=verde entonces U8=rojo

R53: Si U7=verde entonces U1=rojo

R54: Si U7=verde entonces L1=rojo

R55: Si U8=verde entonces U6=rojo

R56: Si U8=verde entonces L6=rojo

La base de conocimiento esta formada, por exactamente 56 reglas, cogeremos algunas de estas (las que teníamos que rellenar ) para explicar como funcionan y mostraremos mas abajo la imagen de la figura 1 de nuevo para que se entienda mejor.

R3: Si L1=verde entonces U1=rojo → Evitamos que hallas choques de tres en la salida S1 y S2.

R8: Si S3=ocupada entonces U4=rojo → Si hay un tren en S3 no puede permitirse que otro tren que este en la vía donde esta la señal U4 pase.

R9: Si S4=ocupada entonces U5=rojo → Si en la salida S4 hay un tren, entonces la señal U5 debe de estar en rojo para no permitir que un tren que este en la vía donde esta dicha señal se dirija hacia la salida S4 produciéndose una colisión.

R10: Si S5=ocupada entonces L5=rojo → Análogo al caso anterior (R9), solo que en este caso se trataría de la salida S5.

R14: Si U4=verde entonces S3=libre → Si U4=verde entonces S3 debe de estar libre, por lo que el tren podrá hacía S3.

R15: Si U5=verde entonces S4=libre → Si la señal U5 esta en verde, el tren podrá pasar, por que esto implica S4 esta libre y no se puede producir colisión alguna.

R16: Si L5=verde entonces S5=libre → Si L5 esta en verde entonces el tren podrá pasar hacía S5 por que S5 estará libre, es decir no estará ocupada por ningún tren.

R26: Si U5=rojo y L5=rojo entonces U8=rojo → Si la señal U5 y L5 están en rojo significa que la señal que está en una posición anterior a esta dos señales también debe estar en rojo ya que se entiende que la vía donde esta U5 y L5 esta ocupada por otro tren que viene de frente.

R29: Si L1=verde entonces (U3=verde o L3=verde) → Pasa lo contrario que en en la R26, si el semáforo L1 esta a verde, es porque me podré ir a alguna vía, concretamente por la vía donde esta la señal U3 o la señal L3, por lo tanto alguno de los dos semáforos debe de estar en verde.

R30: Si L1=verde entonces (U5=verde o L5=verde) → SI L1 esta en verde entonces algunas de las señales U5 o L5 han de estar en verde para permitir que el tren puede pasar por alguna de las vías donde están dichas señales.

R39: Si U4=verde entonces U3=rojo → Si U4 esta en verde entonces el tren que viene por U3 no puede pasar porque si no habría un choque por lo que U3 debe de estar en rojo.

R40: Si L4=verde entonces L3=rojo → Es lo contrario a lo que pasa con la anterior regla.

Page 11: Sistema basado en reglas - sistemas inteligentes

R54: Si U7=verde entonces L1=rojo → Si la señal U7 esta verde significa que se le da salida a un tren que viene por S3, cuya vía es compartida por S2, por lo que no debe permitirse la salida del tren que esta en S2 entonces L1 se pone a rojo.

R56: Si U8=verde entonces L6=rojo → Pasa lo mismo que con la R54 pero es otra situación distinta.

6.0 Manual de Usuario con casos de reales resueltos.

6.1 Manual de Usuario.

Para el correcto funcionamiento del programa es imprescindible que se proporcione dos ficheros de entrada en formato .txt, el primero de ellos será la base de conocimiento(BC), el segundo de ellos sera la base de hechos (BH).

Dentro de la base de conocimiento las reglas tendrán que tener la forma de alguno de los tipos que se describen a continuación.

Tipo 1: Rx: Si literal1 entonces literalC

Tipo 2: Rx: Si literal1 y literal2... y literalN entonces literalC

Tipo 3: Rx: Si literal1 entonces (literalC1 o literalC2)

Tipo 4: Rx: Si literal1 y literal2... y literalN entonces (literalC1 o literalC2)

Donde el R indica que es una regla y x el número de la regla, p.ej R1: indica que se trata de la regla número uno.

Mientras que en la base de hechos, los hechos se podrán tal y como se indica en la tabla de abajo.

S1=ocupadaS2=ocupadaS3=ocupadaS5=ocupadaU1=verde

Page 12: Sistema basado en reglas - sistemas inteligentes

Es completamente imprescindible que los ficheros de entrada NO CONTENGAN ESPACIOS EN BLANCOS AL FINAL DE CADA LÍNEA NI AL FINAL DEL FICHERO.

Al ejecutar el programa aparecerá una terminal parecida a la siguiente.

Introducimos los datos que nos pide que son, la base de conocimiento (BC), la base de hechos (BH) y la meta o el objetivo a alcanzar:

Page 13: Sistema basado en reglas - sistemas inteligentes

Inmediatamente introducimos los datos, el programa empieza a funcionar, primeramente obtenemos la base de hehos inicial , luego las reglas que se han ido aplicando y después de esto el contenido final de la (BH) y si se a alcanzado la meta o no, el proceso en detalle se guarda en un fichero llamado log_datos.txt.

Page 14: Sistema basado en reglas - sistemas inteligentes

6.2 Caso reales resueltos

Resolveremos manualmente gran parte del primer caso, para compararlo con la salida que nos da el programa verificando asi el correcto funcionamiento de este, después explicaremos el resultado obtenido para todos los casos.

Caso 1:

Tenemos los hechos S1=ocupada, S2=ocupada, S3=ocupada, S5=ocupada, U1=verde y la meta es que S4=libre.

Si lo hacemos a mano tenemos el siguiente conjunto conflicto:

R1: Si U1=verde entonces L1=rojo R5: Si S1=ocupada entonces U2=rojo R6: Si S2=ocupada entonces L2=rojo R7: Si S3=ocupada entonces U3=rojo R8: Si S3=ocupada entonces U4=rojoR10: Si S5=ocupada entonces L5=rojoR27: Si U1=verde entonces (U3=verde o L3=verde)R28: Si U1=verde entonces (U5=verde o L5=verde)R49: Si U1=verde entonces U7=rojo

Page 15: Sistema basado en reglas - sistemas inteligentes

Entre las reglas regla candidatas tendremos que coger la que mayor prioridad tenga en este caso es la R[5] ya que contiene una Sx y ese tipo de reglas tienen preferencia respecto a las otras.

Por lo tanto tendríamos que tener en la (BH):

S1=ocupada

S2=ocupada

S3=ocupada

S5=ocupada

U1=verde

U2=rojo

Reglas candidatas

R1: Si U1=verde entonces L1=rojo R6: Si S2=ocupada entonces L2=rojo R7: Si S3=ocupada entonces U3=rojo R8: Si S3=ocupada entonces U4=rojoR10: Si S5=ocupada entonces L5=rojoR27: Si U1=verde entonces (U3=verde o L3=verde)R28: Si U1=verde entonces (U5=verde o L5=verde)R49: Si U1=verde entonces U7=rojo

Regla escogida por su prioridad.

R6: Si S2=ocupada entonces L2=rojo

Aplicamos la regla y tenemos que tener en la base de hechos (BH) lo siguiente:

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo

Al añadir el hecho L2=rojo se activan más reglas R[21], R[23] y por último la R[25].

Por lo tanto las reglas candidatas son:

R1: Si U1=verde entonces L1=rojo R7: Si S3=ocupada entonces U3=rojo R8: Si S3=ocupada entonces U4=rojoR10: Si S5=ocupada entonces L5=rojoR21: Si U2=rojo y L2=rojo entonces U6=rojoR23: Si U2=rojo y L2=rojo entonces L6=rojoR25: Si U2=rojo y L2=rojo entonces U7=rojoR27: Si U1=verde entonces (U3=verde o L3=verde)R28: Si U1=verde entonces (U5=verde o L5=verde)R49: Si U1=verde entonces U7=rojo

Page 16: Sistema basado en reglas - sistemas inteligentes

Regla escogida:

R7: Si S3=ocupada entonces U3=rojo

(BH) resultante:

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo U3=rojo

Reglas candidatas:

R1: Si U1=verde entonces L1=rojo R8: Si S3=ocupada entonces U4=rojoR10: Si S5=ocupada entonces L5=rojoR21: Si U2=rojo y L2=rojo entonces U6=rojoR23: Si U2=rojo y L2=rojo entonces L6=rojoR25: Si U2=rojo y L2=rojo entonces U7=rojoR27: Si U1=verde entonces (U3=verde o L3=verde)R28: Si U1=verde entonces (U5=verde o L5=verde)R49: Si U1=verde entonces U7=rojo

Regla escogida porque tiene mas prioridad que R1:

R8: Si S3=ocupada entonces U4=rojo

Contenido de la (BH):

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo U3=rojo U4=rojo

Reglas candidatas:

R1: Si U1=verde entonces L1=rojo R10: Si S5=ocupada entonces L5=rojoR21: Si U2=rojo y L2=rojo entonces U6=rojoR23: Si U2=rojo y L2=rojo entonces L6=rojoR25: Si U2=rojo y L2=rojo entonces U7=rojoR27: Si U1=verde entonces (U3=verde o L3=verde)R28: Si U1=verde entonces (U5=verde o L5=verde)R49: Si U1=verde entonces U7=rojo

Page 17: Sistema basado en reglas - sistemas inteligentes

Regla escogida por su prioridad:

R10: Si S5=ocupada entonces L5=rojo

Contenido (BH):

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo U3=rojo U4=rojo L5=rojo

Reglas candidatas:

R1: Si U1=verde entonces L1=rojo R21: Si U2=rojo y L2=rojo entonces U6=rojoR23: Si U2=rojo y L2=rojo entonces L6=rojoR25: Si U2=rojo y L2=rojo entonces U7=rojoR27: Si U1=verde entonces (U3=verde o L3=verde)R28: Si U1=verde entonces (U5=verde o L5=verde)R49: Si U1=verde entonces U7=rojo

Regla escogida “R1 tiene más prioridad por tener el índice mas pequeño”:

R1: Si U1=verde entonces L1=rojo

(BH):

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo U3=rojo U4=rojo L5=rojo L1=rojo

Reglas candidatas:

R21: Si U2=rojo y L2=rojo entonces U6=rojo R23: Si U2=rojo y L2=rojo entonces L6=rojo R25: Si U2=rojo y L2=rojo entonces U7=rojo R27: Si U1=verde entonces (U3=verde o L3=verde) R28: Si U1=verde entonces (U5=verde o L5=verde) R49: Si U1=verde entonces U7=rojo

Page 18: Sistema basado en reglas - sistemas inteligentes

Regla escogida:

R21: Si U2=rojo y L2=rojo entonces U6=rojo

(BH):

..etc U6=rojo

Reglas candidatas:

R23: Si U2=rojo y L2=rojo entonces L6=rojo R25: Si U2=rojo y L2=rojo entonces U7=rojo R27: Si U1=verde entonces (U3=verde o L3=verde) R28: Si U1=verde entonces (U5=verde o L5=verde) R49: Si U1=verde entonces U7=rojo

Regla escogida:

R23: Si U2=rojo y L2=rojo entonces L6=rojo

(BH):

...etc L6=rojo

Reglas candidatas:

R25: Si U2=rojo y L2=rojo entonces U7=rojo R27: Si U1=verde entonces (U3=verde o L3=verde) R28: Si U1=verde entonces (U5=verde o L5=verde) R49: Si U1=verde entonces U7=rojo

Regla escogida:

R25: Si U2=rojo y L2=rojo entonces U7=rojo

(BH):

..etc U7=rojo

Reglas candidatas:

R27: Si U1=verde entonces (U3=verde o L3=verde) R28: Si U1=verde entonces (U5=verde o L5=verde) R49: Si U1=verde entonces U7=rojo

Page 19: Sistema basado en reglas - sistemas inteligentes

Regla escogida:

R27: Si U1=verde entonces (U3=verde o L3=verde)

Para aplicar este tipo de regla hemos de tener en cuenta lo siguiente:

Si “literalC1” ó “literalC2” está en la BH entonces no hacer nada; en caso contrario Si ⌐ (literalC1) está en BH entonces añadir “literalC2” a la BH; en caso contrario añadir “literalC1” a la BH; FIN_SI;FIN_SI;

Como no se cumple la condición 1ª, debemos comprobar si ⌐(U3=verde) está en la base de hechos:

(BH):

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo U3=rojo U4=rojo L5=rojo L1=rojo U6=rojo L6=rojo U7=rojo

efectivamente es así, por lo que añadimos L3=verde a la base de hechos.(BH):

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo U3=rojo U4=rojo L5=rojo L1=rojo U6=rojo L6=rojo U7=rojo L3=verde

Page 20: Sistema basado en reglas - sistemas inteligentes

Al añadirse L3=verde se activan dos nuevas reglas “R[46] y R[38]”

Por lo tanto tenemos las reglas candidatas:

R28: Si U1=verde entonces (U5=verde o L5=verde) R38: Si L3=verde entonces L4=rojo R46: Si L3=verde entonces U3=rojo R49: Si U1=verde entonces U7=rojo

Regla escogida:

R28: Si U1=verde entonces (U5=verde o L5=verde)

Siguiendo el algoritmo anterior descrito tenemos en la (BH) lo siguiente:

...etc U5=verde

Al aplicarse la R[28] se activan las reglas “R[15] y R[44]” por lo que tenemos las reglas candidatas:

R15: Si U5=verde entonces S4=libre R38: Si L3=verde entonces L4=rojo R44: Si U5=verde entonces L5=rojo R46: Si L3=verde entonces U3=rojo R49: Si U1=verde entonces U7=rojo

Regla escogida:

R15: Si U5=verde entonces S4=libre

(BH):

...etc S4=libre

Reglas candidatas:

R38: Si L3=verde entonces L4=rojo R44: Si U5=verde entonces L5=rojo R46: Si L3=verde entonces U3=rojo R49: Si U1=verde entonces U7=rojo

Page 21: Sistema basado en reglas - sistemas inteligentes

Siguiendo el procedimiento y comparando los resultados obtenidos manualmente con el archivo log_datos.txt que ha generado el programa, hemos comprobado que para cualquier tipo de regla, el programa funciona correctamente, por lo que no hace falta comprobar las reglas que faltan por aplicarse, al final obtenemos en la (BH):

S1=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde U2=rojo L2=rojo U3=rojo U4=rojo L5=rojo L1=rojo U6=rojo L6=rojo U7=rojo L3=verde U5=verde S4=libre L4=rojo

Meta S4=libre ¡ encontrada !.

Para explicar el porque de este y los demas resultados de los diferentes casos volveremos a mostrar la imagen del sistema de control ferroviario.

Tenemos los hechos S1=ocupada, S2=ocupada, S3=ocupada, S5=ocupada, U1=verde y la meta es que S4=libre.

. Como partimos de S1 si queremos llegar a S4 tenemos que tener el semaforo U1 a verde.si este esta en verde estoy implica que no viene ningun tren por la vía donde estan las señalesU2 y L2.

. No podemos pasar por la vía donde esta S3, por que esta ocupada por otro tren así que U3 debe de estar en rojo y L3 esta en verde.

. El semáforo U4 esta en rojo por lo que hemos dicho antes U3 esta ocupada por otro tren.

. El semáforo L4 esta en rojo para que el tren que venga de allí no choque nuestro tren (el que se le da salida “S1 en este caso”).

Page 22: Sistema basado en reglas - sistemas inteligentes

. El semáforo L5 esta en rojo porque la S5 esta ocupada por otro tren.

. El semáforo U6 esta en rojo por que si se diese el caso de que otro tren que venga de S4 no colisione con nuestro tren .

. El semáforo L1 esta en rojo para que no colisione con nuestro tren ya que si se le diese el pase ocuparíamos la misma vía.

. El semáforo U7 esta en rojo para que no colisione con nosotros por el mismo motivo que en el caso anterior.

. El semáforo U5 esta en verde por que la S4 está libre.

Caso 2:

Tenemos los hechos S2=ocupada, S3=ocupada ,S5=ocupada, U7=verde y la meta o objetivo es S1=libre.

Y el obtenemos el siguiente resultado:

Contenido de la BH final:

S2=ocupada S3=ocupada S5=ocupada U7=verde L2=rojo U3=rojo U4=rojo L5=rojo U2=verde S1=libre U1=rojo L1=rojo

META S1=libre ¡ encontrada !.

. Si queremos ir a S1, U7 ha de estar en verde .

. L2 debe de estar en rojo porque S2 esta ocupada por otro tren.

. U3 está en rojo para evitar que colisione con nuestro tren (el que está en S3).

. U4 está en rojo por que S3 está ocupada por nuestro tren.

. L5 está en rojo por que S5 está ocupada.

. U2 está en verde porque S1 está libre.

. Por lo tanto sabemos que S1=libre.

. U1 esta en rojo para evitar que otro tren que esta en S1 choque con nosotros.

. L1 esta en rojo porque cualquier tren que venga de S2 comparte vía con nuestro tren y si se le diese paso chocaría nosotros.

Page 23: Sistema basado en reglas - sistemas inteligentes

Caso 3:

Sabemos que S2=ocupada , S5=ocupada , L6=verde y la meta o objetivo es S1=libre.

y obtenemos como resultado:

S2=ocupada S5=ocupada L6=verde L2=rojo L5=rojo U6=rojo U2=verde S1=libre U4=verde S3=libre U3=rojo L4=rojo U8=rojo

META S1=libre ¡ encontrada !.

. Para ir a S1 primeramente tenemos que tener el semáforo L6 a verde.

. El semáforo L2 esta a rojo por que en S2 hay un tren.

. El semáforo L5 esta a rojo porque S5 esta ocupada por nuestro tren.

. El semáforo U6 esta a rojo por que S4 comparte la via que nuestro tren cruzará para llegar a su destino.. El semáforo U2 esta a verde porque S1 está libre.. El semáforo U4 esta a verde porque no hay ningun tren en S3.. El semáforo U3 esta a rojo porque nosotros cruzaremos por esa via y ningun tren puede venir de frente.. El semáforo L4 esta a rojo para que podamos ir por la via S3 que sabemos que esta libre.. El semáforo U8 esta a rojo porque vamos a pasar por la via donde esta dicho semaforo y no queremos que venga un tren de frente y choque con nosotros.

Page 24: Sistema basado en reglas - sistemas inteligentes

7.0 Bibliografía

La referencía [1] se refiere a una página web en la cuál se encuentra toda la documentación de las funciones disponibles para c++. La referencía [2] se refiere a un tema de la univercidad de oviedo. La referencía [3] se refiere a un artículo de una biblioteca online.

REFERENCIAS

[1] http://www.cplusplus.com/reference/ Se busco información sobre como trabajan las algunas funciones que utiliza el programa.

[2] http://www.aic.uniovi.es/ssii/SSII-T6-SistemasBasadosReglas.pdf Se obtuvo la imagen del (SBR 2) y definicion nº 2 .

[3] http://es.wikipedia.org/wiki/Sistema_basado_en_reglas Se obtuvo la definicion nº 1 del (SBR).