Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Universidad de Murcia
Facultad de informática.
SISTEMAS INTELIGENTES

CURSO 3 º, GRUPO 1 , SUBGRUPO 1, Año académico 2013-...
1. Caso de Estudio.
2. Análisis del problema.
3. Explicación breve de la técnica que se aplicará.
4. Diseño y funcionamien...
1.0. Caso de estudio.

La empresa de transportes TTT está dedicada al transporte por tierra de personas y mercancías.
Dich...
3.0. Explicación breve de la técnica que se aplicará.
Para resolver este problema utilizaremos un sistema basado en reglas...
Entendiendo ya cada uno de los componentes de un (SBR) podemos ver sus distintas
definiciónes:
1º Un (SBR) es aquel sistem...
Hay dos posibles formas de razonamiento:
Encadenamiento hacia delante:
Consiste en buscar un conjunto de metas que se veri...
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...
Esto se puede apreciar claramente en el siguiente diagrama.

Figura 4: Diagrama de clase del programa.

El hecho de que la...
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...
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 ent...
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, cu...
Es completamente imprescindible que los ficheros de entrada NO CONTENGAN ESPACIOS EN
BLANCOS AL FINAL DE CADA LÍNEA NI AL ...
Inmediatamente introducimos los datos, el programa empieza a funcionar, primeramente
obtenemos la base de hehos inicial , ...
6.2 Caso reales resueltos

Resolveremos manualmente gran parte del primer caso, para compararlo con la salida que nos da
e...
Entre las reglas regla candidatas tendremos que coger la que mayor prioridad tenga en este caso
es la R[5] ya que contiene...
Regla escogida:
R7: Si S3=ocupada entonces U3=rojo
(BH) resultante:
S1=ocupada
S2=ocupada
S3=ocupada
S5=ocupada
U1=verde
U...
Regla escogida por su prioridad:
R10: Si S5=ocupada entonces L5=rojo
Contenido (BH):
S1=ocupada
S2=ocupada
S3=ocupada
S5=o...
Regla escogida:
R21: Si U2=rojo y L2=rojo entonces U6=rojo
(BH):
..etc
U6=rojo

Reglas candidatas:
R23: Si U2=rojo y L2=ro...
Regla escogida:
R27: Si U1=verde entonces (U3=verde o L3=verde)

Para aplicar este tipo de regla hemos de tener en cuenta ...
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=v...
Siguiendo el procedimiento y comparando los resultados obtenidos manualmente con el archivo
log_datos.txt que ha generado ...
. 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 e...
Caso 3:
Sabemos que S2=ocupada , S5=ocupada , L6=verde y la meta o objetivo es S1=libre.
y obtenemos como resultado:
S2=oc...
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
funcio...
Upcoming SlideShare
Loading in …5
×

Sistema basado en reglas - sistemas inteligentes

1,910 views

Published on

Sistema basado en reglas - Sistemas inteligentes

Published in: Technology, Business
  • Login to see the comments

  • Be the first to like this

Sistema basado en reglas - sistemas inteligentes

  1. 1. 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.
  2. 2. 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.
  3. 3. 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.
  4. 4. 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: …...etc 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 ….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=ocupado S5=ocupado U7=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).
  5. 5. 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)
  6. 6. 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
  7. 7. 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.
  8. 8. 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
  9. 9. 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
  10. 10. 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.
  11. 11. 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=ocupada S2=ocupada S3=ocupada S5=ocupada U1=verde
  12. 12. 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:
  13. 13. 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.
  14. 14. 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=rojo R10: Si S5=ocupada entonces L5=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
  15. 15. 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=rojo R10: Si S5=ocupada entonces L5=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 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=rojo R10: Si S5=ocupada entonces L5=rojo 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
  16. 16. 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=rojo R10: Si S5=ocupada entonces L5=rojo 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 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=rojo 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
  17. 17. 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=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 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. 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ñales U2 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”).
  22. 22. . 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.
  23. 23. 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.
  24. 24. 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).

×