SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
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.
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.
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.
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).
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)
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
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.
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
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
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.
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
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:
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.
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
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
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
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
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
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
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
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”).
. 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.
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.
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).

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

ANFIS
ANFISANFIS
ANFIS
 
Heuristics Search Techniques in AI
Heuristics Search Techniques in AI Heuristics Search Techniques in AI
Heuristics Search Techniques in AI
 
Fuzzy logic and application in AI
Fuzzy logic and application in AIFuzzy logic and application in AI
Fuzzy logic and application in AI
 
First order logic in knowledge representation
First order logic in knowledge representationFirst order logic in knowledge representation
First order logic in knowledge representation
 
Canfis
CanfisCanfis
Canfis
 
Production System in AI
Production System in AIProduction System in AI
Production System in AI
 
Heuristc Search Techniques
Heuristc Search TechniquesHeuristc Search Techniques
Heuristc Search Techniques
 
Semantic net in AI
Semantic net in AISemantic net in AI
Semantic net in AI
 
Production System in AI
Production System in AIProduction System in AI
Production System in AI
 
Genetic algorithms vs Traditional algorithms
Genetic algorithms vs Traditional algorithmsGenetic algorithms vs Traditional algorithms
Genetic algorithms vs Traditional algorithms
 
Unit3:Informed and Uninformed search
Unit3:Informed and Uninformed searchUnit3:Informed and Uninformed search
Unit3:Informed and Uninformed search
 
Election algorithms
Election algorithmsElection algorithms
Election algorithms
 
Computer organisation -morris mano
Computer organisation  -morris manoComputer organisation  -morris mano
Computer organisation -morris mano
 
Aries
AriesAries
Aries
 
Intelligent agent
Intelligent agentIntelligent agent
Intelligent agent
 
Modelos de Color
Modelos de ColorModelos de Color
Modelos de Color
 
Informed search
Informed searchInformed search
Informed search
 
Razonamiento monotono
Razonamiento monotonoRazonamiento monotono
Razonamiento monotono
 
Frames
FramesFrames
Frames
 
First Order Logic resolution
First Order Logic resolutionFirst Order Logic resolution
First Order Logic resolution
 

Similar a Sistema basado en reglas - sistemas inteligentes

Inteligencia artificial unidad iii
Inteligencia artificial unidad iiiInteligencia artificial unidad iii
Inteligencia artificial unidad iiiGuadalupe Lopez
 
Pia grupo12 equipo1
Pia grupo12 equipo1Pia grupo12 equipo1
Pia grupo12 equipo1javicool
 
Guia_programación Comp-EstructurasControl.pdf
Guia_programación Comp-EstructurasControl.pdfGuia_programación Comp-EstructurasControl.pdf
Guia_programación Comp-EstructurasControl.pdfMixelHernandez
 
Circuitos en la Ingenieria de sistema
Circuitos en la Ingenieria de sistemaCircuitos en la Ingenieria de sistema
Circuitos en la Ingenieria de sistemaLuis Molina
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaRolf Pinto
 
Inf 2316(proyecto)
Inf 2316(proyecto)Inf 2316(proyecto)
Inf 2316(proyecto)jair_fni
 
manejo de sentencias de recuperación
manejo de sentencias de recuperaciónmanejo de sentencias de recuperación
manejo de sentencias de recuperaciónSergio Perez
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujocarlospaul
 
Métodos númericos básicos carlos castro
Métodos númericos básicos   carlos castroMétodos númericos básicos   carlos castro
Métodos númericos básicos carlos castrofoyi62
 

Similar a Sistema basado en reglas - sistemas inteligentes (20)

Inteligencia artificial unidad iii
Inteligencia artificial unidad iiiInteligencia artificial unidad iii
Inteligencia artificial unidad iii
 
2.algoritmos
2.algoritmos2.algoritmos
2.algoritmos
 
Algoritmos divide y vencerás
Algoritmos divide y vencerásAlgoritmos divide y vencerás
Algoritmos divide y vencerás
 
Taller algoritmos2
Taller algoritmos2Taller algoritmos2
Taller algoritmos2
 
Algoritmica
AlgoritmicaAlgoritmica
Algoritmica
 
Pia grupo12 equipo1
Pia grupo12 equipo1Pia grupo12 equipo1
Pia grupo12 equipo1
 
Guia_programación Comp-EstructurasControl.pdf
Guia_programación Comp-EstructurasControl.pdfGuia_programación Comp-EstructurasControl.pdf
Guia_programación Comp-EstructurasControl.pdf
 
Circuitos en la Ingenieria de sistema
Circuitos en la Ingenieria de sistemaCircuitos en la Ingenieria de sistema
Circuitos en la Ingenieria de sistema
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad Algoritmica
 
Inf 2316(proyecto)
Inf 2316(proyecto)Inf 2316(proyecto)
Inf 2316(proyecto)
 
51
5151
51
 
Estructura algorítmicas
Estructura algorítmicasEstructura algorítmicas
Estructura algorítmicas
 
Estructura algorítmicas
Estructura algorítmicasEstructura algorítmicas
Estructura algorítmicas
 
Aprendizaje de un perceptrón simple
Aprendizaje de un perceptrón simpleAprendizaje de un perceptrón simple
Aprendizaje de un perceptrón simple
 
manejo de sentencias de recuperación
manejo de sentencias de recuperaciónmanejo de sentencias de recuperación
manejo de sentencias de recuperación
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujo
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Métodos númericos básicos carlos castro
Métodos númericos básicos   carlos castroMétodos númericos básicos   carlos castro
Métodos númericos básicos carlos castro
 
Tarea6
Tarea6Tarea6
Tarea6
 
Tarea6
Tarea6Tarea6
Tarea6
 

Último

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 

Último (20)

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 

Sistema basado en reglas - sistemas inteligentes

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. . 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. 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. 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).