Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin
En la presente prctica hemos desarrollado un planificador de rutas de metro con
aprendizaje. Esto significa que el software que presentamos es capaz de calcular la ruta
ptima entre dos puntos cualesquiera de la red de metro de Madrid, as como otras
funciones auxiliares.
Estas otras funciones se pueden resumir en variantes de clculo para las rutas,
presentacin del conjunto total de rutas calculadas, o la asociacin de puntos de inters
de la ciudad con la red de metro, de forma que se pueda presentar un entorno ms
amigable al usuario. Adems, se presentan tambin de forma destacada los puntos de la
red de metro que permite el acceso a otros tipos de transporte (enlace con aeropuerto,
estaciones de tren de largo recorrido, autobuses...) por ser stos los de uso ms comn.
Es importante destacar que para el desarrollo de este programa hemos utilizado unos
mtodos genricos, al tiempo que utilizamos una base de conocimientos externa, de
forma que no slo es aplicable este programa a cualquier red de metro (con los ficheros
con los datos adecuados), sino que tambin sirve para enrutamiento en redes de
ordenadores (aplicacin ms comn en nuestro entorno habitual) o cualquier tipo de red
(carreteras, tren, areas, canalizaciones, etc.)
Codificacin de la informacin
Base de conocimientos
connection(argelles,san_bernardo,cuatro).
connection(san_bernardo,bilbao,cuatro).
connection(bilbao,alonso_martinez,cuatro).
connection(alonso_martinez,colon,cuatro).
connection(colon,serrano,cuatro).
connection(serrano,velazquez,cuatro).
connection(velazquez,goya,cuatro).
connection(goya,lista,cuatro).
En este pequeo ejemplo, vemos que la unidad mnima de informacin no son las
estaciones individuales de la red, sino las conexiones entre cada una de ellas. Vemos
que el formato definido es una conexin entre dos estaciones y la lnea de metro que las
une. De esta forma, enlazando todas las estaciones de la red, el programa puede seguir
desde cada estacin todas las posibles conexiones que tiene a travs de todas las lneas a
las que pertenece.
1
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
Grafa utilizada
Presentacin de resultados
Los resultados del programa se pueden observar de dos formas distintas. Una de ellas,
inmediata, se presenta en el apartado Interaccin con el usuario, en la que se
presentan por pantalla directamente los resultados obtenidos.
Sin embargo, y dado que a veces los resultados son bastante extensos, conviene
analizarlos ms despacio. Por ese motivo el programa genera un fichero soluciones.txt
en el que se almacenan todos los resultados de ejecuciones sucesivas del programa; es
un fichero de texto sencillo que puede consultarse posteriormente con cualquier editor,
y que es creado por el programa en caso de ser la primera ejecucin y no existir
previamente.
2
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
Aprendizaje
Dado que los datos de partida sobre los que trabajamos estn almacenados en un fichero
externo que hemos llamado completo.txt, es lgico que cualquier otra informacin
adicional sobre la que queramos trabajar tambin se guarde en dicho fichero. As, las
ltimas entradas del archivo tendrn el mismo aspecto que toda la informacin restante:
connection(puerta_del_sol,sol,trasbordo).
connection(universidad_carlos_iii,leganes_central,trasbordo).
3
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
Algoritmos implementados
Para el desarrollo de esta prctica se han empleado varios algoritmos parciales
encaminados a proporcionar el resultado final. A continuacin veremos cada uno de
ellos con ms detalle.
rutal
Este algoritmo busca todas las rutas con nmero de paradas menor que Limit. Es un
algoritmo de inundacin: en cada paso sigue todas las conexiones desde el punto en el
que estamos hasta cualquier otra parada a la que est conectada (esto lo evaluamos
analizando si la parada forma parte de la tupla empleada en la representacin de datos
tanto en primer como en segundo lugar).
rutalt
4
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
Este algoritmo busca una ruta que tarde menos de Limit minutos en completarse. Para
ello, no considera nicamente el nmero de paradas que se recorren, como haca el
algoritmo anterior, sino que tambin tiene en cuenta los trasbordos que es necesario
hacer para cambiar de lneas.
Dado que no merece la pena individualizar el tiempo empleado en cada recorrido entre
estaciones y en cada trasbordo, se ha optado por tomar un valor estimado que describa,
en media, los tiempos necesarios para realizar un trasbordo (5 minutos) y para avanzar
de una estacin a la siguiente dentro de una lnea (3 minutos). Con estos valores, se
calcula el tiempo necesario para recorrer una ruta y, al igual que antes, se buscan
aquellas que necesiten menos de una cantidad, en este caso Limit.
Por lo dems, este algoritmo es muy similar al anterior: se siguen todas las conexiones
desde el punto actual, se lleva control de errores para evitar bucles y trasbordos, y la
recursin finaliza cuando se va de una parada a ella misma.
Una pequea diferencia estriba en el uso de Lvisited, que lleva control del nmero de
lneas visitadas de la misma forma que Visited lo lleva del nmero de estaciones.
rutac
5
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
ruta_menos_paradas
ruta_menos_paradas(From,To,Ruta,Lineas):-
mascorta2(From,To,_,_,N,0),rutal(From,To,Ruta,Lineas,N),ins_log(From,To,Ruta,Lineas).
mascorta2(From,To,Ruta,Lineas,N,Limit):-
( (rutal(From,To,Ruta,Lineas,Limit),N is Limit,!) ;
(L1 is Limit+1,mascorta2(From,To, Ruta,Lineas,N,L1))
).
Vemos que este algoritmo invoca a su vez a otros dos: mascorta2, cuyo cdigo se
presenta a continuacin de ruta_menos_paradas, y rutal, que como ya hemos visto
antes busca todas las rutas que lleven del origen (From) al destino (To) con un
nmero de paradas intermedias menor que Limit.
ruta_menos_tiempo
ruta_menos_tiempo(From,To,Ruta,Lineas):-
mtiempo(From,To,_,_,N,0),rutalt(From,To,Ruta,Lineas,N),ins_log(From,To,Ruta,Lineas).
mtiempo(From,To,Ruta,Lineas,N,Limit):-
( (rutalt(From,To,Ruta,Lineas,Limit),N is Limit,!);
(L1 is Limit+1,mtiempo(From,To,Ruta,Lineas,N,L1))
).
6
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
En primer lugar, el comando para invocar la funcin principal, (el nombre del programa,
realmente), es metro. Al teclearlo, (seguido, como siempre y en todas las
instrucciones que se le dan al programa, por un punto), se nos presenta un men con las
distintas opciones del programa:
A partir de este men se elige la opcin deseada y con ello se invoca alguno de los
algoritmos vistos anteriormente:
7
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
Tras elegir la correspondiente opcin, el programa nos pregunta los datos que necesita
para realizar los clculos, en principio las paradas de origen y destino de la ruta que ha
de calcular:
As, si ante el problema de calcular la ruta ms rpida entre las estaciones de sol y
avda_de_america tomamos la solucin extrada del fichero soluciones.txt:
8
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
Vemos que no solamente se presentan los resultados contenidos en las listas, sino que
tambin se muestran unas pequeas estadsticas, con el nmero de paradas, el nmero
de trasbordos y el tiempo empleado.
Aprendizaje
Hemos mencionado varias veces en esta memoria el sistema de aprendizaje del
programa. Bsicamente consiste en la posibilidad de poder introducir nuevas entradas
en la base de conocimientos referentes a destinos finales.
9
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
Vemos que este mecanismo proporciona una gran versatilidad al programa, al poder
adaptarlo segn las necesidades del usuario, ya que se pueden modificar los datos de
partida de forma dinmica. No obstante, el fichero de entrada est escrito en texto
simple, por lo que en caso de necesidad tambin se podra modificar manualmente.
El primero de ellos fue un intento de incluir una opcin ms en el men principal, que
calculara la ruta con menor nmero de trasbordos. Al intentar realizarlo comprobamos
que para que esta opcin fuera factible, la nica solucin posible era calcular la
totalidad de rutas posibles y a partir de ah elegir las de menor nmero de trasbordos.
Esto supondra un desmesurado coste computacional, por lo que preferimos no seguir
adelante con esta opcin.
10
Inteligencia en Redes de Comunicaciones
Prctica Final Pablo Jimnez Bermejo
Ing. de Telecomunicacin, 5 curso Aitor Rubio Elguea
No es tan fcil de corregir sin embargo el problema relacionado con el tiempo y el coste
computacional de los clculos ms largos. En efecto, si se solicita un clculo como el de
todas las rutas posibles o uno que implique demasiadas combinaciones, el proceso
puede ser inabordable.
11