Anda di halaman 1dari 171

Trabajo Terminal II

"SISTEMA DE NAVEGACI~N GUIADA BASADO EN


TCNICAS DE ALGORITMOS EVOLUTIVOS
SS
Que para obtener el ttulo de
"Ingeniero en Telemtica"
Presenta:
Santilln Moncayo Oriana
Zamudio Alonso Karina
Asesores:
M. en C. Blanca Alicia Rico Jimnez
M. en C. Carlos Hernndez Nava
Dr. Carlos A. Coello Coello
Agosto 2010
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN I NGENI ER~A Y
TECNOLOGAS AVANZADAS
m 3
- -
-3
I *
'r
Trabajo Terminal 11
. J '-Z "9 \
"SISTEMA DE NAVEGACI~N GUIADA BASADO EN
TCNICAS DE ALGORITMOS EVOLUTIVOS~
Que para obtener el ttulo de
"Ingeniero en Telemtica"
Presenta:
Santilln Moncayo Oriana
s.
Zamudio Alonso Karina
Asesores: Ce
M. en C. Blanca Alicia Rico M. en C. Carlos Hemndez
Jimnez Nava
Dr. Carlos A. Coello Coello
Profesor titular
Y-
UDIB ,c
k 0
M. en C. Cynthia E. Enrquez
M. en C. No Torres Cruz
Ortz
Gracias a todos nuestros asesores por su confianza, apoyo y compromiso desde el principio hasta la
finalizacin de ste proyecto. A mi Madre y hermanos por que son la razn de mis expectativas y de
la motivacin para terminar sta etapa de mi vida. A mi pareja por su apoyo incondicional, sus
consejos para continuar en la elaboracin de ste proyecto y que en momentos de oscuridad siempre
estas ahi. A mis amigos por su amistad que en 5 aos a madurado por todos los buenos y malos
momentos que hemos vivido en esta carrera.
Karina Zamudio Alonso
Quiero dar las gracias a cada uno de las personas que me han demostrado su apoyo y cario
incondicional, Quiero agradecer a nuestros asesores por su dedicacin, solidaridad, apoyo, confianza
y amistad a lo largo de este proyecto. A mis padres y hermanos, por que son el motor que rige mi
existencia, por su apoyo, amor, confianza, paciencia y entrega que me han brindado. A mis amigos
que son mi segunda familia y en cada uno de ellos he encontrado a un hermano a lo largo de todo
este trayecto. A esa persona especial, que a pesar de todo me demostro su apoyo en los momentos
difciles y sigue presente en mis pensamientos. A cada uno que directa o indirectamente han influido
en mi vida, gracias.
Oriana Santilln Moncayo
,
lndice
Resumen
Introduccin
Objetivos
1 Panorama General
1. Antecedentes
2. Planteamiento del problema
xv
XVII
XIX
3. Propuesta de solucin 7
3.1. Mdulo 1 . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2. Mdulo 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Ii Marco Terico 11
4. Marco Terico 13
4.1. Breve descripcin de los siguientes conceptos . . . . . . . . . . . . . . . . . . . . . 13
4.1.1. Modelos del proceso del sotfware . . . . . . . . . . . . . . . . . . . . . . . .13
4.1.2. Sistema de gestin de base de datos . . . . . . . . . . . . . . . . . . . . . . 16
4.2. Sistemas de bases de datos espaciales . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.1. Definicin y clasificacin de los datos espaciales . . . . . . . . . . . . . . . 18
4.2.2. Eshvctura de los datos espaciales . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.3. Sistemas de bases de datos espaciales . . . . . . . . . . . . . . . . . . . . . 21
4.2.4. Relacin entre bases de datos espaciales y SIG . . . . . . . . . . . . . . . . 22
4.2.5. Visualizador de mapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.6. XML (Extensible Markup Lunguage) . . . . . . . . . . . . . . . . . . . . . 24
4.2.7. KML(Keyho1e Markup Language) . . . . . . . . . . . . . . . . . . . . . . . 25
. . . . . . . . . . . . . . . . . . . . 4.2.8. CDC (Connected Device Configuration) 25
4.2.9. MIDP (Mobile Infonnation Device pmfile) . . . . . . . . . . . . . . . . . . 26
4.2.10. KVM (Kilobyte Krtual Machine) . . . . . . . . . . . . . . . . . . . . . . . 27
4.3. Descripcin de los modelos de diseos Web . . . . . . . . . . . . . . . . . . . . . . 28
4.3.1. Modelo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3.2. Modelo 2 MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.4. Introduccin a la teora de algoritmos genticos . . . . . . . . . . . . . . . . . . . . 31
4.4.1. Conceptos Bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.2. Heurstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.3. Algoritmos Evolutivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4.4. Programacin Evolutiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4.5. Estrategias Evolutivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4.6. Estrategias Evolutivas vs Programacin Evolutiva . . . . . . . . . . . . . . . 33
4.4.7. Algoritmos Genticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4.8. Diferencias y ventajas de las tcnicas evolutivas con respecto a las tradicionales 36
4.4.9. Problema del agente viajero Travelling Salesman Pmblem - (TSP) . . . . . . 37
4.4.10. Vehicle Route Problem (VRP) . . . . . . . . . . . . . . . . . . . . . . . . . 37
i i I Diseo 39
5 . Diseo
5.1. Diagrama de paquetes
v I IPN Ing . Telmatica
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Diseo de casos de uso 42
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3. Diagrama de clases 55
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1. Agregacin 57
. . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2. Generalizaciones '; . . . : ; . . 57
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4. Diagrama de objetos 59
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5. Diagrama de secuencias 60
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6. Modelo de Base de Datos 63
. . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6.1. Modelo Entidad-Relacin 63
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6.2. Modelo relaciona1 64
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.7. Herramientas utilizadas 65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8. Manejador de base de datos 65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8.1. QuantumGis 67
. . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.2. Patrn de diseo a utilizar : 68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8.3. NetBeans 69
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8.4. LaTeX 70
iV Desarrollo y Puesta en Marcha 71
6 . Desarrollo 73
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1. Requerimientos iniciales 73
6.1.1. Creaci6n de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.1.2. Obtencin de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.1.3. Conversin de coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
. . . . . . . . . . . . . . . . . . . . . . . . 6.1.4. Almacenamiento de informacin 79
6.1.5. Aplicaciones para insertar nodos. arcos y valores para matriz de peso . . . . 79
. . . . . . . . . . . . . . . . . . 6.1.6. wsualizaci6n de la informacin geogrfica 83
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Aplicacin Web Administrativa 86
7 . Generaci6n de itinerarios 97
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1. Qu informacin se necesita? 97
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2. Cmo plantear el problema? 99
Ing . Telmatica UPIITA vi1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. Algoritmo de Floyd 101
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.1. Funcionamiento 101
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4. Algoritmos Genticos 104
. . . . . . . . . . . . . . . . . . . . 7.4.1. Cmo funciona un algoritmo gentico?
. . . . . . . . . . . . . 7.4.2. Cul es el objetivo de utilizar un algoritmo gentico?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.3. Conceptos y funciones
. . . . . . . . . . . . . . . . . . . . . . . . . 7.5. Implementacin de algoritmo gentico
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.1. Representacin de datos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.2. Proceso de seleccin
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.3. Operador de Cruza
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.4. Operador de Mutacin
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6. Resultados obtenidos
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7. Implementacin en cdigo JAVA 121
V Pruebas Adicionales 141
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8. Diferentes Pruebas 143
VI Conclusiones
8 . Conclusiones
VII Bibliografia
Bibliografa
VIII JPN Ing . Telmatica . .
lndice de figuras
3.1. Mdulos principales del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1. El ciclo de vida del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2. Desarrollo evolutivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3. Ingeniera del software basada en componentes . . . . . . . . . . . . . . . . . . . . 16
4.4. El modelo de la OGC (Geometry object model) . . . . . . . . . . . . . . . . . . . . 20
4.5. Esquema de Modelo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.6. Esquema de Modelo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.7. Proceso de un algoritmo gentico bsico . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1. Diagrama de paquetes del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2. Diagrama de caso de uso de sistema general . . . . . . . . . . . . . . . . . . . . . . 43
5.3. Diagrama de caso de uso de Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4. Diagrama de caso de uso de Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5. Diagrama de caso de uso de Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.6. Diagrama de caso de uso de Generador de rutas . . . . . . . . . . . . . . . . . . . . 51
5.7. Diagrama de caso de uso de Celular . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.8. Diagrama de clases del sistema general . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.9. Diagrama de clases de agregacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.10. Diagrama de clases de generalizacin . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.1 1 . Diagrama de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.12. Diagrama de secuencias del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.13. Diagrama de secuencias de pedido . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.14. Diagrama de secuencias de mdulo . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.15. Modelo entidad - relacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.16. Modelo relaciona1 de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.17. Tipos Geometry de PostGIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.1. Creacin de Base de datos espacial . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.2. Distancia en Google Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.3. Coordenadas geogrficas en Google Maps . . . . . . . . . . . . . . . . . . . . . . . 77
6.4. Street View de Google Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.5. Pantalla inicial Aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.6. Pantalla inicial Aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.7. Aplicacin con datos completos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.8. Conexin Quantum Gis - PostGis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.9. Datos Geogrficos en Quantum Gis . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.10. Pantalla inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.1 1 . Registro usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.12. Catlogo de productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.13. Seleccin de productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.14. Carrito de compra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.1 5 . Ubicacin de entrega de pedido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.16. Finalizacin de pedido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.17. Pantalla inicial administrador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.18. Registro de productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.19. Eliminarproductos . . . . . . . . . . . . .
6.20. Modificar productos . . . . . . . . . . . .
6.21. Crear itinerario . . . . . . . . . . . . . .
7.1. Nodos a considerar en nuestro proyecto . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2. Arcos a considerar en nuestro proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 99
x IPN Ing . Telmatica
,,, DICE DE FIGURAS
7.3. Grafo a resolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.4. Matriz de pesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.5. Parte 1 de las iteraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.6. Parte il de las iteraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.7. Estructura bsica de un algoritmo gentico . . . . . . . . . . . . . . . . . . . . . . . 104
7.8. Individuo de una posible solucin . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.9. Mapeo de datos de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.10. Individuo generado apartir de una permutacin . . . . . . . . . . . . . . . . . . . . 109
7.1 1 . Ejemplo de cruza para pennutaciones . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.12. Ejemplo de mutacin para permutaciones . . . . . . . . . . . . . . . . . . . . . . . 111
7.13. Mapeo de los datos de entrada - Pedidos registrados . . . . . . . . . . . . . . . . . . 112
7.14. Ruta obtenida - prueba 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.15. Ruta obtenida - prueba 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.16. Rutaobtenida-prueba3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.17. KmlenGoogleMaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.18. Pgina web con Ruta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7.19. imagenes descargadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
7.20. hagenes descargadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
7.21. Aplicacin emulada Visualizaci6n Mapas . . . . . . . . . . . . . . . . . . . . . . . 146
7.22. Aplicacin emulada Obtencin de coordenadas . . . . . . . . . . . . . . . . . . . . 157
Ing . Telmatica UPIITA XI
lndice de tablas
1.1. Comparaci6n con trabajos terminales realizados en upiita . . . . . . . . . . . . . . . 4
4.1. Relacin entre bases de datos espaciales y SIG . . . . . . . . . . . . . . . . . . . . . 22
5.1. Descripcin de caso de uso Escenario principal . . . . . . . . . . . . . . . . . . . . 44
5.2. Descripcin de caso de uso Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3. Descripcin de caso de uso Administrador . . . . . . . . . . . . . . . . . . . . . . . 48
5.4. Descripcin de caso de uso Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.5. Descripcin de caso de uso Generador rutas . . . . . . . . . . . . . . . . . . . . . . 52
5.6. Descripcin de caso de uso Celular . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.7. Comparativa de manejadores de bases de datos . . . . . . . . . . . . . . . . . . . . 65
XIII
Resumen
Sistema de navegacin guida basado en tcnicas de algoritmos evolu-
tivos
Palabras Clave: Aplicacin Web, algoritmos evolutivos, utilizacin de mapas
Resumen: En este documento describimos el anlisis, diseo e implementacin a detalle de nue-
stro sistema, que lleva por nombre Sistema de navegacin guida basado en tcnicas de algoritmos
evolutivos que es orientado a vehiculos que realicen entregas de pedidos, donde, como primer paso,
el cliente efectua una solicitud de compra por medio de un Aplicacin Web donde se le solicitan los
datos de este y los productos a llevar, el cliente va a tener la facilidad de localizar el destino de entrega
en un mapa, esto ayuda al anlisis y determinacin de la ruta, por que se obtienen las coordenadas
del sitio donde se tiene que entregar el pedido, posteriormente una vez obtenida toda la informacin
necesaria se genera la orden de pedido, una vez recabadas todas las peticiones del da, se crea y orde-
na un itinerario para los transportistas en base a la distancia entre la distribuidora y el destino. Sobre
esto se crea una permutacin que produce el minimo costo de la ruta, esta permutacin es producto de
un algoritmo evolutivo que hace uso de parmetros como la distancia, obteniendo como resultado las
coordenadas de la ruta, por otra parte, el dispositivo mvil se podr conectarse a intemet para poder
acceder a un sitio web donde de desplegar la ruta en un mapa de google maps.
Introduccin
A lo largo de ste documento se describe de forma extensa los conceptos bsicos que investigamos
con el fin de poder establecer una idea de cmo atacar el problema y con ello definir los requerim-
ientos del sistema, definicin del software a utilizar, establecer a nuestros actores principales que
interactuarn con el sistema y fijar las funciones que cada uno podr realizar.
Posteriormente, se muestra la seccin de diseo, donde nos apoyamos por medio de diagramas
para modelar nuestro sistema definiendo la arquitectura del mismo y especificando las funciones de
cada una de las partes que la conformen ya que ms adelante nos sirve de gua al momento de realizar
la implementacin. Despus, en la parte de implementacin, se describe de manera breve y clara
cada funcin que se realiza. Y finalmente se muestran los resultados que se obtuvieron a partir de la
ejecucin de las partes antes mencionadas, as como las conclusiones del presente proyecto.
Objetivos
Objetivo general
Realizar un sistema para el proceso de entrega de pedidos para flotillas de transportistas, generan-
do itinerarios de entrega y proporcionando rutas a travs de algoritmos evolutivos, donde las rutas se
visualizarn por medio de un dispositivo mvil que podr acceder a internet para poder visualizar la
ruta.
Objetivos Particulares.
Introducirnos en la teora de algoritmos evolutivos.
Estudiar, analizar y determinar el nmero de parrnetros para la obtencin de rutas.
i Estudiar, disear e implementar un modelo matemtico que relacione los parmetros determi-
nados.
i Investigar diferentes modelos ya creados para tener de referencia y nos auxilie para comprobar
su funcionalidad con respecto al nuestro.
Investigar y evaluar un algoritmo evolutivo que responda de forma eficiente al modelo matemtico.
i Implementar el algoritmo evolutivo en base al modelo matemtico obtenido mencionado ante-
riormente.
i Obtener rutas mediante la implementacin del algoritmo evolutivo.
XIX
Obietivos
i Crear una aplicacin Web para administrar el registro de los pedidos.
Crear un mdulo dentro de la aplicacin Web para la creacin del itinerario de entrega de los
pedidos.
m Incrustar el API Application Programming Inter$ace de Google Maps en la aplicacin Web para
que el usuario indique la ubicacin de donde se deber entregar el pedido.
i Investigar Ia forma en la que se enviar la ruta hacia el dispositivo mvil.
i Investigar el tema de bases de datos espaciales para la manipulacin de los datos y as imple-
mentarlos en el sistema.
Relacionar la informacin contenida en la base de datos espacial con las rutas obtenidas.
i Evaluar el software en la que se realizar el algoritmo y la base de datos espacial.
i Realizar pruebas y determinar resultados deseados.
xx IPN Ing. Telmatica
Parte 1
Panorama General
Antecedentes
En ste capitulo, mostramos algunos de los proyectos o prototipos que se han realizado en UPI-
ITA, y de igual forma manejaron temas semenjantes relacionados a la determinacin de rutas. Ex-
poniendo asu vez las diferencias de estos proyectos con nuestra propuesta. En la Tabla 1.1, una com-
paracin de los diferentes trabajos realizados en UPIITA:
Adems se puede apreciar las distintas caractersticas encontradas de algunos trabajos terminales
con respecto al nuestro. Una de las primeras diferencias es que ste ofrece al usuario varias opciones
diferentes como lo es la administracin de itinerarios, implementacin de algoritmo evolutivo para la
determinacin de la ruta y navegacin para visualizacin de la ruta.
Antecedentes
CARACTER~STICAS LlVE GU~A MVIL SISTEMA PRP
Dispositivo para consulta Dispositivo mvil instalado en el Laptop Dispositivo mi
vehculo
GPS S S Si
Algoritmo evolutivo
Monitoreo de transito
Consideracin del medio de transporte Si Si Si
Rutas Si Si Si
Cobertura Zona Zacatenco Delegacin Gustavo A. Madero Zona Acueduebr
Lindavista
Arquitectura cliente - servidor Si Si Si
Tabla 1.1: Comparacin con trabajos terminales realizados en upiita
Ing. Telmatica
Planteamiento del problema
Algunos problemas con la operacin de almacenes se debe a que cuentan con un servicio ine-
ficiente en el manejo y control de rutas de distribucin. Ya que el encargado de almacn no realiza
un itinerario de tal forma que cubra los pedidos del da basndose en un criterio de dishibucin que
facilite las entregas de estos, de manera se aproveche las distancias entre un punto y otro. Para no
dar recorridos redundantes o innecesarios que implcan gastos y que en muchos casos la mala dis-
tribucin del rol de entrega genere clientes insatisfechos debido a que no se cumplieron las fechas de
entrega as como el horario. Dada la problemtica anterior, una mejora para este problema es disear
un sistema que facilite y sistematice la creacin del itinerario de entregas por da basado en un criterio
de ordenamiento, que adems, te permita crear las rutas que se deben tomar. De est manera la ruta
que que se genere para cubrir la entrega de todos los pedidos sea la ms corta y as evitar retrasos y
costos para la empresa distribuidora.
Para la determinacin de la ruta se requiere fijar parmetros como; la ruta ms corta y disear un
modelo matemtico por lo que nos permite denotar la complejidad que implica, ya que obteniendo
un buen diseo del modelo matemtico nuestros valores sern ms confiables con respecto a otros
modelos. La eleccin del algoritmo evolutivo va de la mano con el modelo matemtico, sin embargo,
ste se deber elegir de tal forma que se adapte completamente al modelo.
Propuesta de solucin
El sistema cuenta con dos mdulos principales, como se muestra en la fig. 3.1 donde el primero,
se enfoca al dispositivo mvil que traer consigo el conductor del vehculo y por ltimo se contar con
un segundo mdulo; que contendr al servidor y la aplicacin Web, donde se obtendr la informacin
del pedido y del proveedor, adems de generar la ruta por hedio de un algoritmo evolutivo que se
visualizar en el dispositivo mvil.
Propuesta de solucibn
Esquema general donde se involucran los dos mdulos principales
s Clientes
Solicitud dr &ido de entrega
\
' 4 --\ Envio de ruta
Algoritmo para
Base de diitos espac
/ servidor Web
i
Creacln itinerario
"a"&"
Mdulo 1
Mdulo 11
Figura 3.1 : Mdulos principales del sistema
3.1. Mdulo 1
ste se encargar de todo lo referente a la aplicacin del dispositivo mvil, donde se visualizar la
mta desplegada en un mapa. La visualizacin de los mapas se realizar con un servicio web a la cul
podr tener acceso el dispositivo mvil, por lo que se utiliz (Dispositivo Mvil: Nokia N82, con
sistema operativo Symbian). Las tareas para realizar este mdulo sern:
i Esiudiar sobre la creacin de aplicaciones para el sistema operativo Symbian.
i Estudiar funciones, servicios y aplicaciones de Google Maps para la integracin del sistema a
trves de KML.
m Estudiar diseo y alcances de servicios web y su interaccin con sistemas terceros.
8 IPN Ing. Telmatica
3.2. Mdulo II
En ste modulo se realizar la obtencin de las rutas mediante un algoritmo evolutivo ofreciendo
mayores ventajas, as como la aplicacin Web para la obtencin de la informacin del pedido.
i Introducimos a la teora de algoritmos evolutivos
i Estudiar, analizar y determinar los parmetros a tomar en cuenta dentro de las rutas.
Estudiar, disear e implementar un modelo matemtico que relacione todos los parmetros
obtenidos anteriormente.
i Evaluar diferentes algoritmos evolutivos para determinar cal se adecua mejor para resolver el
problema.
i Implementar el algoritmo tomando como base el modelo matemtico obtenido, en un lenguaje
de programacin.
i Estudiar la estructura de las bases de datos espaciales.
Enlazar el algoritmo evolutivo con la informacin de la base de datos espacial de la delegacin
Gustavo A. Madero.
i Crear una aplicacin Web para administrar la informacin del registro de los pedidos y gestione
los itinerarios de los vehculos repartidores.
i Estudiar sistemas de informacin geogrfica para la visualizacin de datos geogrficos.
Ing. Telmatica UPIITA 9
Parte 11
Marco Terico
Marco Terico
4.1. Breve descripcin de los siguientes conceptos
4.1.1. Modelos del proceso del sotfware
A continuacin mostraremos tres tipos de modelos donde cada uno representa una perspectiva
particular, y proporciona slo informacin parcial sobre ese proceso. Los modelos de procesos son:
i El modelo en cascada: Este modelo se muestra en la Figura. 4.1, se llama de esta forma debido a
la cascada de una fase a otra, las principales etapas de este modelo se transforman en actividades
fundamentales de desarrollo:
1. Anlisis y definicin de requerimientos. Los servicios, restricciones y metas del sistema
se definen a partir de las consultas con los usuarios. Por lo que se definen en detalle y
sirven como una especificacin del sistema.
2. Diseo del sistema y del software: El proceso de diseo divide los requerimientos en
sistemas hardware o software. Establece una arquitectura completa del sistema. El diseo
del software identifica y describe las abstracciones fundamentales del sistema software y
sus relaciones.
Marco Terico
3. Implementacin y prueba de unidades: durante esta etapa, el diseo del software se lleva a
cabo como un conjunto o unidades de programa. La prueba de unidades implica verificar
que cada una cumpla su especificacin.
4. Integracin y prueba del sistema: Los programas o las unidades individuales de progra-
mas se integran y prueban como un sistema completo para asegurar que se cumplan los
requerimientos del software. Despus de las pruebas, el sistema se entrega al cliente.
5. Funcionamiento y mantenimiento: Por lo general, sta es la fase ms larga del ciclo de
vida. El sistema se instala y se pone en funcionamiento prctico. El mantenimiento im-
plica corregir errores no descubiertos en las etapas anteriores del ciclo de vida, mejorar
la implementacin de las unidades del sistema y resaltar los servicios del sistema una vez
que se descubran nuevos requerimientos.
Definicin de
requerimientos
h
DiwRo dcl sistema y
dcl software
t
lmplcmcnlacin y
del sistcma
manlcnimicnlo
Figura 4.1 : El ciclo de vida del software
el resultado de cada fase es uno o ms documentos aprobados. La siguiente fase no debe empezar
hasta que la fase previa haya finalizado.
Existen dos tipos de desarrollo evolutivo:
Desarrollo exploratorio, donde el objetivo del proceso es trabajar con el cliente para ex-
plorar sus requerimientos y entregar un sistema final. El desarrollo empieza con las partes
14 IPN Ing. Telmatica
l
4.1 Breve descriucin de los siguientes conceptos
i Desarrollo evolutivo: Se basa en la idea de desarrollar una implementacin inicial, exponindola a los
comentarios del usuario y refinndola a travs de las diferentes versiones hasta que se desarrolla un
sistema adecuado. Las actividades de especificacin, desarrollo y validacin se entrelazan en vez de
separarse, con una rpida retroalimentacin entre estas:
AeiivMsdcs
concurrentes
Esbozo de la Veniones
descripcin 4 intcmdias 11
'I
Validacin
anteriores
Figura 4.2: Desarrollo evolutivo
del sistema que se comprenden mejor. El sistema evoluciona agregando nuevos atributos
propuestos por el cliente.
Prototipos desechables: donde el objetivo del proceso de desarrollo evolutivo es compren-
der los requerimientos del cliente y entonces desarrollar una definicin mejorada de los
requerimientos para el sistema. El prototipo se centra en experimentar con los requerim-
ientos del cliente que no se comprenden del todo.
1. Anlisis de componentes. Se buscan estos componentes para implementar esta especificacion,
donde stos solo proporcionan parte de la funcionalidad requerida.
2. Modificacin de requerimientos. Los requerimientos se analizan utilizando informacin acer-
ca de los componentes que se han descubierto, entonces stos se modifican para reflejar los
componentes disponibles, si las modificaciones no son posibles, la actividad de anlisis de
componentes se puede llevar a cabo nuevamente para buscar soluciones alternativas.
3. Diseo del sistema con reutilizacin. Se disea o se reutiliza un marco de trabajo para el sis-
tema. Si los componentes reutilizables no estn disponibles, se puede tener que disear un
nuevo software.
Ing. Telmatica UPIITA 15
Marco Terico
m Ingeniera de software basada en componentes. Este enfoque basado en la reutilizacin se compone
de una gran base de componentes software reutilizables y de algunos marcos de trabajo de integracin
para estos. Algunas veces estos componentes son sistemas por s mismos que se pueden utilizar para
proporcionar una funcionalidad especifica, como dar formato al texto o efectuar clculos numricos.
En la Figura. 4.3. Aunque la etapa de especificacin de requerimientos y la de validacin son
comparables con otros procesos, las etapas intermedias en el proceso orientado a la reutilizacin son
diferentes. Estas etapas son:
Modificacin de
I
Figura 4.3: Ingeniera del software basada en componentes
4. Desarrollo e integracin. El software que no se puede adquirir externamente se desarrolla, y los
componentes y los sistemas se integran. En este modelo, la integracin de sistemas es parte del
proceso de desarrollo, ms que una actividad separada.
4.1.2. Sistema de gestin de base de datos
Los Sistemas de gestin de base de datos son un tipo de software muy especfico, dedicado a
servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone
de un lenguaje de definicin de datos, de un lenguaje de manipulacin de datos y de un lenguaje de
consulta. En los textos que tratan este tema, o temas relacionados, se mencionan los trminos SGBD
y DBMS, siendo ambos equivalentes, y acrnimos, respectivamente, de Sistema Gestor de Bases de
Datos y DataBase Management System.
i PostgreSQL: PostGreSQL es un sistema de gestin de bases de datos objeto-relaciona1 es una
derivacin libre (OpenSource). Soporta distintos tipos de datos: adems del soporte para los
tipos base, tambin soporta datos de tipo fecha, monetarios, elementos grficos, datos sobre
redes (MAC, IP), cadenas de bits, etc. Tambin permite la creacin de tipos propios.
Incorpora funciones de diversa ndole:
16 IPN Ing. Telmatica
4.1 Breve descripcin de los siguientes conceptos
Manejo de fechas, geomtricas, orientadas a operaciones con redes, etc.
Permite la declaracin de funciones propias, as como la definicin de disparadores.
Soporta el uso de ndices, reglas y vistas.
Permite la gestin de diferentes usuarios, como tambin los permisos asignados a cada
uno de ellos.
PostgreSQL est considerado como la base de datos de cdigo abierto ms avanzada del
mundo. PostgreSQL proporciona un gran nmero de caractersticas que normalmente slo
se encontraban en las bases de datos comerciales tales como DB2 u Oracle.
Caractensticas:
Velocidad de respuesta: La velocidad de respuesta que ofrece este gestor con bases de datos
relativamente pequeas puede parecer un poco deficiente, aunque esta misma velocidad la
mantiene al gestionar bases de datos realmente grandes.
DBMS Objeto-Relacional: PostgreSQL aproxima los datos a un modelo objeto-relacional, y es
capaz de manejar complejas rutinas y reglas Altamente Extensible: PostgreSQL soporta oper-
adores, funcionales mtodos de acceso y tipos de datos definidos por el usuario.
Soporte SQL Comprensivo: PostgreSQL soporta la especificacin SQL99 e incluye caractersti-
cas avanzadas tales como las uniones (joins) SQL92.
Integridad Referencial: PostgreSQL soporta integridad referencial, la cual es utilizada para
garantizar la validez de los datos de la base de datos.
API Flexible: La flexibilidad del API de PostgreSQL ha permitido a los vendedores propor-
cionar soporte al desarrollo fcilmente para el RDBMS PostgreSQL. Estas interfaces incluyen
Object Pascal, Python, Perl, PHP, ODBC, JavalJDBC, Ruby, TCL, C/C++, y Pike.
Lenguajes Procedurales: PostgreSQL tiene soporte para lenguajes procedurales internos, in-
cluyendo un lenguaje nativo denominado PLIpgSQL. Este lenguaje es comparable al lenguaje
procedural de Oracle, PUSQL. Otra ventaja de PostgreSQL es su habilidad para usar Perl,
Python, o TCL como lenguaje procedural embebido.
Ing. Telmatica UPIITA 17
Marco Tedrico
ClientdSewidor: PostgreSQL usa una arquitectura proceso-por-usuario clientdsewidor. Hay
un proceso maestro que se ramifica para proporcionar conexiones adicionales para cada cliente
que intente conectar a PostgreSQL.
4.2. Sistemas de bases de datos espaciales
4.2.1. Definicin y clasificacin de los datos espaciales
Los datos espaciales son datos que pueden ser visualizados, manipulados y analizados por sus
atributos, que denotan una localizacin sobre la superficie del globo terraqueo. Estos atributos espa-
ciales son normalmente dados en forma de coordenadas, que dan la posicin y la estructura de una
caracterstica representada geogrficamente. Los datos espaciales tienen dos propiedades importantes:
se referencia a un espacio geogrfico, es decir, son datos registrados y aceptados sobre un
sistema de coordenadas geogrfico para representar reas de la superficie terrestre. Por lo tanto,
si se tienen diversas fuentes, se puede hacer referencias cruzadas e integrarlas espacialmente.
son representados en una variedad de escalas y cuando son almacenados en escalas relativa-
mente pequeas, representan grandes reas de la superficie terrestre y deben ser generalizados
y simbolizados.
La unidad bsica de los datos espaciales en la representacin vectorial es llamada "objeto ge-
ogrfico", el cual se identifica como una caractexstica del mundo real o fenmeno representado por
un punto, lnea o polgono. En las bases de datos espaciales, los datos vectoriales pueden ser alma-
cenados como parte de la base topogrfica, cuya funcin es proveer la referencia espacial a sistemas
para su visualizacin, manipulacin y anlisis.
Los datos espaciales incluyen un componente que describe la localizacin espacial de un objeto
geogrfico y un componente de atributos para describir sus propiedades y toponimia. El componente
espacial puede ser representado mediante las siguientes formas:
Representacin raster.- Este modelo usualmente se aplica cuando se tienen mallas de puntos
sobre campos continuos, como la elevacin, temperatura y concentraciones qumicas; y cuando
se utilizan mallas de celdas, representan imgenes; se basa en almacenar matrices de valores.
18 IPN Ing. Telmatica
4.2 Sistemas de bases de datos esuaciales
Si las celdas se categonzan por nmeros, uno o ms atributos pueden ser asignados a la celda.
La unidad de rea en las mallas de celdas se llaman pixeles.
El modelo raster fue diseado para el anlisis, modelado y procesamienta de imgenes.
i Representacin vectoria1.- Este modelo se basa en la representacin arco-nodo y es utilizado
para representar reas, lneas y puntos. Los arcos pueden formar conjuntos de lneas. Adems,
mediante arcos se forman polgonos para representar reas. Un caso especial del modelado de
datos vectorial es el modelado de datos puntual, que es una coleccin de puntos independientes
que, establecidas las coordenadas, representan lugares puntuales que se distribuyen irregular-
mente.
4.2.2. Estructura de los datos espaciales
El concepto de un dato espacial tipo Geomery
El campo de la geometra, se entiende comnmente como la rama de las matemticas que estudia
las propiedades y relaciones de puntos, lneas, ngulos, superficies y slidos en cualquier dimensin.
En el contexto del procesamiento de datos espaciales, la palabra geometry supone un nuevo signifi-
cado cuando el OGC (Open Geospatial Consortium) formaliz su uso en la publicacin OpenGIS
Simple Feature Specification for SQL.
En este comunicado el OGC propuso una jerarqua de tipos de datos, llamada geometry object
model, la cual permite que caractersticas espaciales puedan ser representadas en una base de datos.
En el modelo, la palabra geometry es usada para representar una caracterstica espacial como un
"objeto"que tiene al menos un atributo geometric type en la base de datos.
La clase raz del modelo jerrquico geometry object rnodel, es la clase geometry, de la cual no se
pueden crear instancias. La superclase geometry tiene cuatro subclases llamadas: point, curve, sugace
y geometry collection. Se pueden crear instancias de estas subclases las cuales contienen un conjunto
de mtodos, que son utilizados para verificar sus respectivas propiedades geombicas, y soportar el
anlisis espacial. Existen varios tipos geometry en el modelo, como se muestra en la Figura. 4.4 ,
en la cual, los nombres de los objetos se mantienen en ingls para seguir la especificacin. Estos
tipos son primitivas grficas utilizadas para construir la geometra de objetos geogrficos que usan
una o ms primitivas. Un poste de luz, un segmento de carretera, una parcela son ejemplos de estas
primitivas grficas. Estos objetos son llamados simple geometries. Un grupo de islas que es tratado
Ing. Telmatica UPIITA 19
Marco Terico
como una sola entidad geogrfica, e.g. Nueva Zelanda y Fiji, son construidas con- mltiples primitivas
grficas. Estos objetos son llamados complex geometries.
Linear Ring
Figura 4.4: El modelo de la OGC (Geometry object model)
Las primitivas grficas son espacialmente referenciadas a un sistema de coordenadas, la posicin
y orientacin de un objeto siempre estn relacionados a un espacio geogrfico particular. Esta refer-
encia espacial al sistema de coordenadas ayuda a unir los objetos geogrficos a otros, no importando
las primitivas grficas con las cuales fue construido. Adems de su localizacin, un objeto tipo ge-
ometry tiene otros atributos que describen sus caractersticas, tales como el nombre, clasificacin y
dimension. En una base de datos espacial, los objetos que tienen los mismos atributos forman una
capa (layer, en ingls) o tambin llamada feature class; que consecuentemente son almacenadas en la
misma tabla.
20 IPN Ing. Telmatica
4.2 Sistemas de bases de datos es~aciales
4.2.3. Sistemas de bases de datos espaciales
Los sistemas de bases de datos espaciales son definidos como una clase de sistemas de base de
datos que cumplen con las siguientes caractersticas:
m Un sistema de bases de datos espaciales es un sistema de base de datos,
i ofrece tipos de datos espaciales (SDT, por spatial data fypes), un modelo de datos y un lenguaje
de consulta,
m soporta tipos de datos espaciales en su desarrollo, dando un indexado espacial y algontmos
eficientes para la operacin reunin espacial (spatial join).
La primera caracterstica enfatiza el hecho que estos sistemas son completamente sistemas de
bases de datos, capaces de soportar todos los estndares de modelado y consultas, pero con la fun-
cionalidad adicional de efectuar tareas especficas a datos espaciales. Esta habilidad de manipular
y relacionar datos espaciales y no espaciales distingue a sistemas de bases de datos espaciales de
otros sistemas que usan datos con referencias geogrficas, tales como sistemas cartogrficos, diseo
asistido por computadora y sistemas de procesamiento de imgenes para el sensado remoto.
Los tipos de datos espaciales, segunda caracterstica, se refieren al uso de puntos, lneas y polgonos
como forma de representacin geomtrica de objetos o entidades en el espacio.
Los sistemas de bases de datos modernos se caracterizan porque pueden manipular grandes can-
tidades de datos, estos sistemas deben conservar un acceso eficiente mediante tcnicas de indexado.
Esta caracterstica tambin es necesaria en los sistemas de bases de datos espaciales. Sin embargo,
los datos en bases de datos espaciales son representados y referenciados en dos y tres dimensiones,
as los datos en una base de datos espacial deben ser indexados espacialmente. Lo que permite que
los datos sean accedidos y analizados por localizacin (utilizando las coordenadas geogrficas) y por
las relaciones topolgicas que definen la posicin de objetos en el espacio relativo a otro (adyacencia,
contenido y conectividad). Juntos, la localizacin y la topologa permiten varios mtodos de traslape
y combinacin espacial de objetos en las capas de mapas, este tipo de consultas se llaman reuniones
espaciales, y son usadas para propsitos de anlisis.
Ing. Telmatica UPIITA 21
Marco Terico
4.2.4. Relacin entre bases de datos espaciales y SIG
En ambientes de procesamiento de datos espaciales existe una divisin entre sistemas de bases
de datos espaciales y SIG (vase Tabla 4.1). Tomando la ventaja de los avances en las tecnologas
computacionales, los sistemas de bases de datos son desarrollados para almacenar y gestionar grandes
cantidades de informacin referenciada geogrficamente basada en su localizacin. Estos sistemas in-
dexan los datos espacialmente para crear consultas eficientes, proveer mecanismos y procedimientos
requeridos para proteger los datos de una destruccin fsica y perdida o degradacin de la integridad
lgica. Sin embargo, los sistemas de bases de datos espaciales son generalmente dbiles en su fun-
cionalidad para la edicin de datos, en el anlisis de datos y generacin de mapas y otros productos
informacin cartogrfica. Estos procesos y funciones son manejados de mejor forma por SIG, los
cuales son primordialmente diseados para reunir y usar los datos espaciales para esos propsitos.
Sistemas Tareas Primarias
Sistemas de Informacin Geogrfica
m Reunir y editar datos
m Anlisis de datos
m Generacin de mapas y productos de informacin
catogrfica
Sistemas de bases de datos espaciales
m Almacenamiento y gestin espaciales de datos
m Indexado espacial
m Seguridad e integridad de los datos
m Consultas de datos espaciales
Tabla 4.1: Relacin entre bases de datos espaciales y SIG
22 IPN Ing. Telmatica
4.2 Sistemas de bases de datos espaciales
4.2.5. Visualizador de mapas
Para la realizacin de un Visualizador de Mapas puede establecerse con Interfaz de Programacin
de Aplicaciones directa de mapas que incluya el script de las coordenadas. O bien un Sistema de
Informacin Geogrfica(S1G).
A continuacin fundamentaremos ambas tecnologas:
SIG Es un sistema computacional, que consiste en una base de datos que almacena informa-
cin espacial y descriptiva de un entorno geogrfico como parte del Mundo real; permitiendo
la entrada, mantenimiento, anlisis, transformacin, manipulacin y presentacin de datos es-
paciales, de algn punto geogrfico en particular, se dice:
Un SIC sirve para distinguir algunas necesidades importantes cuando las descripciones
geogrficas juegan un papel muy importante en las observaciones.
Un SIG se utiliza para resolver problemas de planificacin y gestin relacionados con
elementos geogrficos, haciendo uso de informacin espacial.
Las partes de un SIG consiste de 4 componentes interrelacionados:
Hardware: Es la parte fsica y es representado por algn tipo de plataforma,.
Software: Realiza la manipularon de los datos y las operaciones a travs del usuario.
Datos espaciales: Elemento base para llevar acabo todas las operaciones deseadas en un
SIG
Personal: Personas encargadas del diseo, implantacin y uso del SIG.
i Interfaz de Programacin de Aplicaciones "Google Maps"
Google Maps es el nombre de un servicio gratuito de Google. Es un servidor de aplicaciones de
mapas en Web. Ofrece imgenes de mapas desplazables, as como fotos satelitales del mundo
entero e incluso la ruta entre diferentes ubicaciones.
La API es un conjunto de sentencias en javascript que permiten hacer el uso de Google Maps
en una aplicacin propia con todas las siguientes caracteristicas:
La capacidad de hacer acercamientos o alejamientos para mostrar el mapa.
Ing. Telmatica UPIITA 23
Marco Terico
El usuario puede controlar el mapa con el mouse o las teclas de direccin para moverse a
la ubicacin que se desee.
Para permitir un movimiento ms rpido, las teclas + y - pueden ser usadas para controlar
el nivel de zoom.
4.2.6. XML (Extensible Markup Language)
XML es un lenguaje que garantiza el intercambio de cualquier tipo de informacin, sin que oca-
sione problemas de tipo contenido o de tipo presentacin. Este garantiza que los datos estructurados
sean uniformes e independientes de aplicaciones o fabricantes, lo que est originando una nueva gen-
eracin de aplicaciones en la Web.
Como su nombre lo indica, es un lenguaje de marcas que ofrece un formato para la descripcin de
datos estructurados, el cual conserva todas las propiedades importantes de SGML. Es decir, XML es
un metalenguaje, dado que con l se puede definir nuestro propio lenguaje de presentacin, a diferen-
cia de HTML, que se centra en la representacn de la informacin. XML se centra en la informacin
de s misma. La particularidad ms importante de XML es que no posee etiquetas prefijadas con an-
terioridad, ya que es el propio diseador el que las crea a su antojo, dependiendo del contenido del
documento.
XML se basa en tecnologa desarrollada a partir de estndares probados y optimizada para la Web.
La iniciativa XML consta de un conjunto de estndares relacionados entre si:
XML (Extensible Markup Language). Es una recomendacin, que significa que el estndar es
estable y que los desarrolladores de Web y de herramientas pueden adoptarlo plenamente.
Namespaces. En XML es una recomendacin que describe la sintaxis y la compatibilidad de
los espacios de nombres para los intrpretes de XML.
m DOM (Document Object Model). Es una recomendacin que ofrece un estndar para el acceso
mediante programacin a los datos estructurados (a travs de scripts), de modo que los desar-
rolladores puedan interactuar de forma coherente con los datos basados en XML y computarlos.
i XSL (Extensible Stylesheet Language). XLS es la cara de presentacin del XML. Este debe
representar de forma independiente a la plataforma utilizada la informacin existente en los
documentos XML.
24 IPN Ing. Telmatica
4.2 Sistemas & bases de datos espaciales
4.2.7. KML(Keyhole Markup Language)
Es un lenguaje de marcado basado en XML para representar datos geogrficos en tres dimen-
siones. Fue desarrollado para ser manejado con Keyhole LT, precursor de Google Earth. Su gramtica
contiene muchas similitudes con la de GML. Los ficheros KML a menudo suelen distribuirse com-
primidos como ficheros KMZ.
Un fichero KML especifica una caracterstica (un lugar, una imagen o un polgono) para Google
Maps. Contiene ttulo, una descripcin bsica del lugar, sus coordenadas(1atitud y longitud) y alguna
otra informacin.
KML es un formato de archivo que se utiliza para mostrar informacin geogrfica en navegadores
terrestres como Google Earth, Google Maps y Google Maps para mviles. KML utiliza una estructura
basada en etiquetas con atributos y elementos anidados y est basado en el estndar XML. Un archivo
km1 puede contener desde un objeto con sus atributos, hasta tantos objetos como sean necesarios.
4.2.8. CDC (Connected Device Configuration)
Las configuraciones (CDC y CDLC~) definen el entorno mnimo necesario para la ejecucin de
aplicaciones java en un grupo amplio de dispositivos mviles (JVM/KVM+paquetes bsicos). CDC
estn enfocados bsicamente para PDAs de ltima generacin o smartphones avanzados. Esta requiere
una mquina virtual java compatible con J2SE 1.4.2 y los siguientes paquetes:
CLDC (Connected Limited Device Configuration)
Connected Limited Device Conjguration
Ing. Telmatica UPIITA
Marco Terico
CLDC es la base para que los perfiles (como MIDP 2, funcionen, proveyendo las apis bsicas y la
mquina virtual KVM 3). CLDC est diseada para equipos microprocesadores RISC o CISC de 16
a 32 bits y con una memoria mnima de 160 KB para la pila de la tecnologa Java. Los dispositivos
cuentan con potencia de clculo, memoria, batera y acceso a red limitados.
Incluye una mquina virtual java reducida(KVM) y los siguientes paquetes:
4.2.9. MIDP (Mobile Znfonnation Device proJile)
Los perles definen paquetes adicionales para soportar funcionalidades bsicas imprescindibles
de cada familia de dispositivos. Mobile Information Device Profile (MIDP) es el perfil ms comn
con CLDC. MIDP 2.0 incorpora apis de interfaz de usuario, de ciclo de vida del programa, almace-
namiento persistente, juegos, trabajo en red y multimedia. Segn la especificacin de la tecnologa
inalmbrica de Java todo dispositivo que soporte MIDP 2.0 debe incluir m'nimamente las siguientes
caractersticas:
Debe permitir archivos Java (JAR 4, de ms de 64 KB. y archivos descriptores de aplicaciones
(JAD) mayores a 5 K.
m Se debe permitir a cada MIDlet la utilizacin de 30 KB de almacenamiento persistente y se
recomienda que las MIDlets incluyan informacin acerca del almacenamiento mnimo con el
que trabajan correctamente.
i El espacio de memoria libre para una aplicacin ejecutndose (Heap o del montn) debe ser
por lo menos de 256 K.
= Soporte para pantallas de 125 x 125 pixeles, con una profundidad de color de 12 bits.
' ~ o b i l e Infonnation Device Pm$le
3~i l obyt e Virtual Machine
4~ava ARchive
26 IPN Ing. Telmatica
4.2 Sistemas de bases de datos espaciales
i Se deben incluir la capacidad de que el dispositivo reaccione a eventos de tiempo (una alarma
a determinada hora, los llamados ticklers o despertadores).
i Soporte para imgenes en formato JPEG y PNG.
= Acceso a contenidos multimedia por el protocolo HTTP 1.1.
4.2.10. KVM (Kilobyte VtrtuQl Machine)
Como ya se explic anteriormente la mquina virtual es la base de la plataforma Java. En el
caso de la plataforma J2ME, debido a las capacidades limitadas de almacenamiento, memoria, proce-
samiento y pantalla de los dispositivos; no se puede integrar una mquina virtual Java (JVM) del las
dimensiones de J2SE o J2EE. Por esto se ha creado una nueva mquina virtual: KVM.
KVM es una mquina virtual Java compacta y portable especficamente diseada para ser la
base de desarrollo en dispositivos pequeos y de recursos limitados. Actualmente CLDC trabaja
sobre KVM. Adems KVM est diseada para mantener los aspectos centrales del lenguaje Java
ejecundose en unos cuantos kilobytes de memoria (de ah su nombre). Aunque KVM deriva de la
mquina virtual J2SE (JVM), algunas caractersticas de esta ltima han sido eliminadas para soportar
CLDC, debido a que resultan demasiado costosas de implementar o su presencia supone problemas
de seguridad, resultando una KVM con las siguientes lirnitantes:
i Soporte de punto flotante.- KVM no soporta nmeros de punto flotante, esto debido a que la
mayora de los dispositivos en los que se implementa no lo soportan tampoco.
i Finalizacin.- Las apis CLDC no incluyen el mtodo object.finalize, as que no se pueden hacer
operaciones de limpieza final antes de que el recolector de basura tome los objetos.
i Manejo de errores.- CLDC slo define tres clases error: java. lang . Error, java . lang . OutOfMemoryEri
y java. 1ang.VirtualMachineError. Todo tipo de errores que no sean en tiempo de
ejecucin se manejan de modo dependiente del dispositivo, esto incluye la finalizacin de una
aplicacin o reinicio del dispositivo.
i Interfaz Nativa Java (JNI).- No se implementa JNI (posibilidad de incluir cdigo en C dentro de
clases Java), primeramente por motivos de seguridad, aunque tambin es considerado excesivo
dadas las limitantes de memoria del dispositivo al que se dirige.
Ing. Telmatica UPIITA 27
Marco Tedrico
43. Descripcin de los modelos de diseos Web
Para crear nuestra aplicacin web necesitamos conocer las diferentes formas existentes para con-
seguirlo, pero cumpliendo con los factores de una buena presentacin, soporte y una mayor funcional-
idad, por eso conoceremos el Modelo %sta Controlador y el modelo anterior a este.
4.3.1. Modelo 1
Si bien es cierto las aplicaciones Web en un inicio fueron simplemente CGIs (Common Gateway
Integace) comendo en un servidor Web con escasos recursos, pronto la gran demanda de las paginas
dinmicas, hicieron que se idearan y construyeran aplicaciones Web mas complejas lo cual natural-
mente incremento la carga en el servidor, anexado a las consultas, tambin cada vez mas complejas,
a la base de datos, hicieron que se pensara por primera vez en la separacin de ambos (presentacin
y acceso a datos).
El modelo 1 es aquel que separa la presentacin del acceso a datos, en una aplicacin Web en Java
(JSP para este caso), se esquematizara de la siguiente manera.
Figura 4.5: Esquema de Modelo 1
28 IPN Ing. Telmatica
4.3 Descripcin de los modelos de diseos Web
El Browser representa la cartula de la aplicacin, mientras que las paginas JSP se encargan
de recoger las peticiones del usuario y generan a la vez la respuesta que se le enva al mismo, Igica
intermedia si se le puede llamar de algn modo, se puede notar que el acceso a datos ya esta manejado
por un JavaBean.
4.3.2. Modelo 2 MVC
Modelo Vista Controlador (MVC) es un patrn de arquitectura de software que separa los datos de
una aplicacin, la interfaz de usuario, y la Igica de control en tres componentes distintos. El patrn
MVC se ve frecuentemente en aplicaciones web, donde la vista es la pgina HTML y el cdigo que
provee de datos dinmicos a la pgina. El modelo es el Sistema de Gestin de Base de Datos y la
Lgica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.
Modelo: Esta es la representacin especfica de la informacin con la cual el sistema opera. La
Igica de datos asegura la integridad de estos y permite todo derivar nuevos datos.
m Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz
de usuario.
Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el
modelo y probablemente en la vista.
Esta dems decir que en este modelo si ocurre una completa separacin de la Igica, los datos y
la presentacin, hasta aqu el MVC, no viene a ser mas que un modelo lgico o arquitectura de diseo
Web.
Ing. Telmatica UPIITA 29
Marco Tedrico
1 response I
5
Figura 4.6: Esquema de Modelo 2
Para finalizar, en esta parte se ha mencionado los conceptos de las herramientas de software que
se han investigado hasta el momento, por lo que nos resta mencionar la parte de algoritmos evolutivos,
que en la siguiente pgina se presenta.
IPN Ing. Telmatica
4.4 Introduccidn a la teon de algontmos genticos
4.4. Introduccin a la teora de algoritmos genticos
En la siguiente informacin se trata de explicar brevemente los conceptos que permitan entender
el porque de un algoritmo evolutivo. As como el encontrar un modelo de mteo existente que pueda
ayudarnos a resolver nuestras necesidades.
4.4.1. Conceptos Bsicos
Los problemas cuya complejidad est acotada por polinomios son los denominados problemas
P. Ms detalladamente, podemos decir que un problema pertenece a la clase si puede ser resuelto en
tiempo polinomial en una computadora determinista.
El trmino determinista significa que sin importar lo que haga el algoritmo, slo hay una cosa que
puede hacer a continuacion (es decir, el paso siguiente se determina por los pasos anteriores).
Un problema pertenece a la clase NP si puede ser resuelto en tiempo polinomial pero usando una
computadora no determinista.Cuando una computadora no determinista es confrontada con varias
opciones, tiene el poder de "adivinai'la correcta (en caso de que sta exista). Una computadora no
determinista no hace nunca elecciones incorrectas que la hagan regresar a un estado previo. Obvia-
mente, las computadoras no deterministas no existen en el mundo real. El no determinismo es una
herramienta imaginaria que hace que los problemas difciles parezcan triviales. Su mayor vala radica
en el hecho de que existe forma de convertir un algoritmo no determinista a uno determinista, aunque
a un costo computacional que suele ser muy elevado.
4.4.2. Heurstica
Existen problemas que no pueden resolverse usando un algoritmo que requiera tiempo polino-
mial. De hecho, en muchas aplicaciones prcticas, no podemos siquiera decir si existe una solucin
eficiente. Asimismo, hay muchos problemas para los cuales el mejor algoritmo que se conoce requiere
tiempo exponencial. Cuando enfrentamos espacios de bsqueda tan grandes , y que adems los al-
goritmo~ ms eficientes que existen para resolver el problema requieren tiempo exponencial, resulta
obvio que las tcnicas clsicas de bsqueda y optimizacin son insuficientes. Es entonces cuando
recummos a las "heursticas". La palabra heurstica se deriva del griego heuriskein, que significa
encontrar o descubrir.
Ing. Telmatica UPIITA 3 1
Marco Terico
Las heursticas fueron un rea predominante en los orgenes de la Inteligencia Artificial. Actual-
mente, el trmino suele usarse como un adjetivo, refirindose a cualquier tcnica que mejore el de-
sempeo en promedio de la solucit de un problema, aunque no mejore necesariamente el desempeo
en el peor caso. Una definicin ms precisa y adecuada sera la siguiente:
Una heurstica es una tcnica que busca soluciones buenas (es decir, casi ptimas) a un costo
computacional razonable, aunque sin garantizar factibilidad u optimalidad de las mismas. En algunos
casos, ni siquiera puede determinar qu tan cerca del ptimo se encuentra una solucin factible en
particular.
4.4.3. Algoritmos Evolutivos
El trmino computacin evolutiva o algoritmos evolutivos, realmente engloba una serie de tcni-
cas inspiradas biolgicamente (en los principios de la teora Neo-Darwiniana de la evolucin natural).
En trminos generales, para simular el proceso evolutivo en una computadora se requiere:
i Codificar las estructuras que se replicarn.
i Operaciones que afecten a los individuos.
i Una funcin de aptitud.
i Un mecanismo de seleccin.
Aunque hoy en da es cada vez ms difcil distinguir las diferencias entre los distintos tipos de
algoritmos evolutivos existentes, por razones sobre todo histricas, suele hablarse de tres paradigmas
principales:
Programacin Evolutiva
i Estrategias Evolutivas
Algoritmos Genticos.
Cada uno de estos paradigmas se origin de manera independiente y con motivaciones muy dis-
tintas.
Ing. Telmatica
4.4 Introduccidn a la teora de algoritmos genticos
4.4.4. Programacin Evolutiva
Lawrence J. Fogel propuso en los 1960s una tcnica denominada "programacin evolutiva", en la
cual la inteligencia se ve como un comportamiento adaptativo.
La programacin evolutiva enfatiza los nexos de comportamiento entre padres e hijos, en vez de
buscar emular operadores genticos especficos (como en el caso de los algoritmos gennticos).
El algoritmo bsico de la programacin evolutiva es el siguiente:
i Generar aleatoriamente una poblacin inicial.
i Se aplica mutacin.
i Se calcula la aptitud de cada hijo y se usa un proceso de seleccion mediante tomeo(normalmente
estocstico) para determinar cules sern las soluciones que se retendrn.
4.4.5. Estrategias Evolutivas
Las estrategias evolutivas fueron desarrolladas en 1964 en Alemania para resolver problemas
hidrodinmicos de alto grado de complejidad por un grupo de estudiantes de ingeniera encabezado
por Ingo Rechenberg.
El algoritmo usa un solo padre y con l se genera un solo hijo. Este hijo se mantena si era mejor
que el padre, o de lo contrario se eliminaba (a este tipo de seleccin se le llama extintiva, porque los
peores individuos obtienen una probabilidad de ser seleccionado de cero).
4.4.6. Estrategias Evolutivas vs Programacin Evolutiva
La Programacin Evolutiva usa normalmente seleccin estocstica, mientras que las estrategias
evolutivas usan seleccin detenninstica. Ambas tcnicas operan a nivel fenotpico (es decir, no re-
quieren codificacin de las variables del problema). La programacin evolutiva es una abstraccin de
la evolucin al nivel de las especies, por lo que no se requiere el uso de un operador de recombi-
nacin (diferentes especies no se pueden cruzar entre s). En contraste, las estrategias evolutivas son
una abstraccin de la evolucin al nivel de un individuo, por lo que la recombinacin es posible.
Ing. Telmatica UPIITA 33
Marco Terico
4.4.7. Algoritmos Genticos
Los algoritmos genticos fueron desarrollados por John H. Holland a principios de los 1960s.
Estos algoritmos usan seleccin probabilstica al igual que la Programacin Evolutiva, y en contra-
posicin a la seleccin detenninstica de las Estrategias Evolutivas. El algoritmo gentico enfatiza la
importancia de la cmza sexual (operador principal) sobre el de la mutacin (operador secundario), y
usa seleccin probabilstica.
El algoritmo bsico es el siguiente:
m Generar (aleatoriamente) una poblacin inicial.
m Calcular aptitud de cada individuo.
m Seleccionar (probabilsticamente) en base a aptitud.
m Aplicar operadores genticos (cruza y mutacin) para generar la siguiente poblacin.
m Ciclar hasta que cierta condicin se satisfaga.
Los algoritmos genticos usan la representacin binaria para codificar las soluciones a un proble-
ma, por lo cual se evoluciona el genotipo y no el fenotipo como en la Programacin Evolutiva o las
Estrategias Evolutivas.
El operador principal en los algoritmos genticos es la cruza, y la mutacin es un operador se-
cundario. En la Programacin Evolutiva, no hay cruza y en las Estrategias Evolutivas es un operador
secundario. Ha sido demostrado que los algoritmos evolutivos requieren de elitismo (o sea, retener
intacto al mejor individuo de cada generacin) para poder converger al ptimo.
El proceso de un algoritmo gentico bsico es el que se muestra en la Figura 4.7. El proceso en el
que cada vez que se iteran los pasos: Evaluacin - Seleccin - Operadores Genticos es llamado una
generacin y se itera creando nuevas generaciones hasta que el criterio de terminacin es cumplido.
La representacin de los individuos (soluciones) se hace mediante cadenas de genes llamadas cromo-
somas en donde se define claramente la solucin, un aspecto muy importante en algoritmos genticos
es definir como se van a representar las soluciones en estos cromosomas ya que esto es lo que va a
permitir un proceso de evaluacin mas sencillo y tambin permitir conseguir mejores resultados. A
continuacin se describen brevemente cada uno de los pasos mostrados en la Figura 4.7.
34 IPN Ing. Telmatica
4.4 Intmduccidn a la teora de al aori ~os aenticos
.[ POBLAC16N INIUAL
i
.
4 EVALUACIN INDIVIDUOS 1
1
SELECC16N PADRES
I
1 OPERADORES GENhl COS 1
1 FIN 1
Figura 4.7: Proceso de un algoritmo gentico bsico
m Poblacin Inicial: En este paso se crean un nmero determinado de individuos aleatoriamente
o tambin se pueden crear de una manera estructurada con la que se va a obtener una mejor
poblacin inicial. En muchos de los problemas en los que se usan algoritmos ge&ticos se usa
un tamao de poblacin de 100 individuos, sin embargo esta cantidad ser diferente.
m Evaluacin de los Individuos: Aqu es donde se mide que tan buenos son los individuos que
hay en la poblacin. En este paso es importante que la funcin de evaluacin tenga en cuenta
todos los aspectos que haran bueno o malo a un individuo.
m Operadores Genticos: Despus del proceso de seleccin, se aplican generalmente dos oper-
adores genticos los cuales son: cruce y mutacin. El cruce nos va a permitir crear posibles
mejores nuevos individuos que sean producto de los buenos padres seleccionados en el paso
anterior, se define una probabilidad de cruce para establecer si en cierta generacin se realiza
el cruce. La mutacin es aplicada generalmente a cada individuo despus del cruce, tambin se
define una probabilidad de mutacin.
m Criterio de Terminacin: El criterio de terminacin generalmente es un nmero dado de itera-
ciones(generaciones),o en algunos casos cierto valor de aptitud que alcance algn individuo.
Ing. Telmatica
Marco Terico
4.4.8. Diferencias y ventajas de las tcnicas evolutivas con respecto a las tradicionales
Existen varias diferencias que vale la pena destacar entre los algoritmos evolutivos y las tcnicas
tradicionales de bsqueda y optirnizacin:
Las tcnicas evolutivas usan una poblacin de soluciones potenciales en vez de un solo individ-
uo, lo cual las hace menos sensibles a quedar atrapadas en mfimos/mximos locales.
= Las tcnicas evolutivas no necesitan conocimiento especfico sobre el problema que intentan
resolver.
i Las tcnicas evolutivas usan operadores probabilsticos,mienttas las tcnicas tradicionales uti-
lizan operadores determinsticos.
Aunque las tcnicas evolutivas son estocsticas, el hecho de que usen operadores probabilsticos
no significa que operen de manera anloga a una simple bsqueda aleatoria.
Es importante destacar las diversas ventajas que presenta el uso de tcnicas evolutivas para re-
solver problemas de bsqueda y optimizacin:
Simplicidad Conceptual.
m Amplia aplicabilidad.
Superiores a las tcnicas tradicionales en muchos problemas del mundo real.
m Tienen el potencial para incorporar conocimiento sobre el dominio y para hibridizarse con otras
tcnicas de bsqueda~optimizacin.
i Pueden explotar fcilmente las arquitecturas en paralelo.
i Son robustas a los cambios dinmicos.
Generalmente pueden auto-adaptar sus parmetros.
i Capaces de resolver problemas para los cuales no se conoce solucin alguna.
Ing. Telmatica
4.4 Intmduccidn a la teora de algoritmos genticos
4.4.9. Problema del agente viajero Travelling Salesman Problem - (TSP)
En ste modelo el objetivo es encontrar el viaje ms corto pasando por un grupo de ciudades,
visitando cada una de ellas solamente una vez y regresar al punto donde se inicio el viaje.
A lo largo de los aos el problema del agente viajero ha ocupado la mente de nu- merosos investi-
gadores. Los motivos son varios. En primer lugar, el TSP es un prob- lema muy sencillo de enunciar,
pero muy difcil de resolver. En segundo lugar, el TSP es aplicable a una gran variedad de problemas
de planificacin. Finalmente, se ha convertido en una especie de problema test, es decir los nuevos
mtodos de opti- mizacin combinatoria son a menudo aplicados al TSP con objeto de tener una idea
de sus potencialidades.
4.4.10. Vehicle Route Problem (VRP)
Los problemas de rutas de vehculos (VRP) en realidad son un amplio conjunto de variantes y
personalizaciones de problemas. Desde los que son ms sencillos hasta algunos que hoy en da siguen
siendo materia de investigacin.
En ellos en general, se trata de averiguar las rutas de una flota de transporte para dar servicio a
unos clientes. Este tipo de problemas pertenece a los problemas de optimizacin combinatoria. En la
literatura cientfica los primeros autores en 1959, estudiaban la aplicacin real en la distribucin de
gasolina para estaciones de carburante.
La funcin objetivo depende de la topologa y caractersticas del problema. Lo ms habitual es
intentar: minimizar el coste total de operacin, minimizar el tiempo total de transporte, minimizar la
distancia total recorrida, minimizar el tiempo de espera, maximizar el beneficio, maximizar el servicio
al cliente, minimizar la utilizacin de vehculos, equilibrar la utilizacin de los recursos, etc. Existen
una gran variedad de tipos de problemas de ruteo de vehculos. A continuacin se enumeran los ms
conocidos:
m Vehicle Routing Problem with Time windows(VRPTW)
En ste modelo un nmero de vehculos estn localizados en un almacn central y tienen que
servir a un grupo de clientes que estn dispersos geogrficamente. Cada vehculo tiene una
capacidad dada, as como el cliente tiene una demanda y ste tiene que ser atendido en un
tiempo determinado.
Ing. Telmatica UPTITA 37
Marco Terico
Pick-up and Delivery Problem with lime Windows(PDP7W) En ste modelo un nmero de
vehculos tiene que atender a un nmero de peticiones para transporte. Cada vehculo tiene una
capacidad. Cada peticin especfica el tamao de la carga que ser transportada, la locacin
donde debe ser adquirida mejora el tiempo y la posicin de entrega mejora el tiempo de entrega.
IPN Ing. Telmatica
Parte 111
Diseo
Diseo
En esta parte se incluye todos los diagramas que consideramos necesario para poder realizar
nuestro proyecto. Estos diagramas son los siguientes:
m Diagrama de paquetes
m Diagrama de clases
m Diagrama de estados
i Diagrama de secuencias
m Diagrama de objetos
5.1. Diagrama de paquetes
Nuestro proyecto lo hemos dividido en tres mdulos, Servidor Web, Algoritmo Evolutivo y
Telfono celular, cada mdulo estar comunicado de forma bidireccional, donde compartirn infor-
macin para que cada uno realice sus funciones principales. A continuacin se muestra el diagrama
correspondiente, denotando los flujos de comunicacin que existir entre ellos.
. s o s a m ~ d s o l u a w d ! ~ ! m d a n b s o u e r i x a
s a ~ o l 3 a j s o l m o ' o t u a l x a a l u a ! q m l a X s o l u a y w p D o ~ d s o l ~ a r n 1 . 1 0 3 a 9 p n X e s o u s r s g y u a a l s g
o s n a p s o - a p o g a s ! a - T S
5.2 Diseo de casos de uso
m Diagrama general: En la Fig. 5.2 se muestra el diagrama de caso de uso que corresponde a nuestro
sistema.
Sistema de navegacin
basado en tcnicas de
algoritmos evolutivos
Administrador
Figura 5.2: Diagrama de caso de uso de sistema general
Ing. Telmatica UPIITA 43
Diseo
Descripcin de caso de uso Diagrama General
Nivel: O
Actor Principal:
Cliente, Administrador, Telfono celular
Personal involucrado e intereses:
Cliente: A quien se le desea satisfacer.
Administrador: Est al tanto del correcto funcionamiento del sistema.
Telfono celular: Har uso de las rutas obtenidas.
Precondiciones:
El usuario deber registrarse en el Sistema
i El transportista deber contar con un telfono celular con conexin a Intemet
Escenario principal de xito:
Se genera itinerario y rutas de pedidos.
Requisitos especiales:
Exista batera del mvil.
i Exista cobertura de redes celulares.
Frecuencia:
Cuando se ingresa por primera vez al sistema.
Tabla 5.1 : Descripcin de caso de uso Escenario principal
44 P N Ing. Telmatica
5.2 Diseo de casos de uso
i Diagrama de caso de uso de Cliente: En la Figura. 5.3 se muestra el diagrama de caso de uso que
corresponde a las actividades que puede realizar el cliente en nuestro sistema.
Salir de
sistema
Figura 5.3: Diagrama de caso de uso de Cliente
Ing. Telmatica 45
Diseo
Descripcin de caso de uso Cliente
Nivel: O
Actor Principal:
Cliente
Personal involucrado e intereses:
Cliente: quien har uso del sistema.
Precondiciones:
i El usuario deber registrarse en el Sistema.
m Ingreso de toda la informacin que le solicite el sistema.
Escenario principal de xito:
Ingresa al sistema exitosamente.
i Realiza el pedido.
Requisitos especiales:
Conexin a Internet.
Frecuencia:
i Cuando se ingresa por primera vez al sistema.
Tabla 5.2: Descripcin de caso de uso Cliente
Ing. Telmatica
5.2 Diseo de casos de uso
m Diagrama de caso de uso de Administrador: En la Figura. 5.4 se muestra el diagrama de caso de uso
que corresponde a las actividades que puede realizar el administrador, como su nombre lo indica, ad-
ministrar los usuarios y los pedidos, para evitar duplicidad de datos y abusos por parte de los clientes .
Ingresar
,/ Sistema
, , C,
Validar
pedidos
-~ - -
Figura 5.4: Diagrama de caso de uso de Cliente
Ing. Telmatica 47
Diseo
Descripcin de caso de uso Administrador
Nivel: O
Actor Principal:
Administrador
Personal involucrado e intereses:
Administrador: quien podr realizar tareas de validacin de usuarios y de pedidos del sistema.
Precondiciones:
I
i Haberse registrado en el sistema como administrador.
Tener pnvilegios de administrador.
1 Escenario principal de xito:
1
i Ingresa al sistema exitosamente.
Validar usuarios.
i Validar pedidos.
i Validar productos.
Requisitos especiales:
i Conexin a Internet.
Tener pnvilegios de administrador.
Frecuencia:
m Cada vez que se ingrese al sistema.
Tabla 5.3: Descripcin de caso de uso Administrador
48 IPN Ing. Telmatica
5.2 Diseo de casos de uso
m Diagrama de caso de uso de Sistema: En la Figura. 5.5 se muestra el diagrama de caso de uso de las
principales actividades que puede realizar el sistema.
r I
Sistema
Figura 5.5: Diagrama de caso de uso de Sistema
Ing. Telmatica UPIITA 49
Diseo
Descripcin de caso de uso Sistema
Nivel: O
Actor Principal:
Administrador, Cliente y Transportista
Personal involucrado e intereses:
Administrador: quien podr realizar la tarea de invocar la aplicacin que genera la ruta.
Transportista: quien podr visualiar la ruta mediante un mapa. Cliente: quien podr consultar el estatus de su
compra.
Precondiciones:
Haber finalizado la lista de pedidos del da
Escenario principal de xito:
= Ingresa al sistema exitosamente.
Generar correctamente la ruta.
Generar correctamente itinerario
Requisitos especiales:
Conexin a Internet.
Frecuencia:
Al finalizar los pedidos del da
Tabla 5.4: Descripcin de caso de uso Sistema
50 IPN Ing. Telmatica
5.2 Diseo de casos de uso
m Diagrama de caso de uso de Generador de rutas: En la Figura. 5.6 se muestra el diagrama de caso de
uso de las principales actividades que puede realizar el sistema.
Recibir Itinerario
/
,/'

Verificar cruces
/
1 y calles
,' ,/'
Q ,=y
Aplicar algoritmo
evolutivo
Generador de Rutas
Generar Ruta
u
-
Figura 5.6: Diagrama de caso de uso de Generador de rutas
Ing. Telmatica UPIITA 5 1
Diseo
Descripcin de caso de uso Generador de rutas
Nivel: O
Actor Principal:
Administrador, Algoritmo Evolutivo
Personal involucrado e intereses:
Administrador: quien podr realizar las tareas de cargar las aplicaciones de creacin de itinerario y ruta.
Algoritmo evolutivo: quin es el encargado de generar el itinerario y la ruta.
Precondiciones:
m Haber obtenido toda la informacin necesaria de las calles,sentidos, cruces y retornos.
Recibir todos los pedidos del da.
Escenario principal de xito:
m Ingresa al sistema exitosamente.
Generar ruta correctamente.
Requisitos especiales:
Tener privilegios de administrador.
Frecuencia:
Cada vez que se desea generar ruta.
Tabla 5.5: Descripcin de caso de uso Generador rutas
Ing. Telmatica
-
5.2 Diseo de casos de uso
Descripcin de caso de uso Celular
Nivel: O
Actor Principal:
Dispositivo Mvil
Personal involucrado e intereses:
Transportista: quien podr realizar visualizar la ruta por medio de su dispositivo mvil.
Dispositivo mvil: quin es el encargado de desplegar el mapa con la ruta.
Precondiciones:
Conexin intemet
Escenario principal de xito:
Visualizacin de la ruta correctamente.
Requisitos especiales:
Batera dispositivo mvil.
Frecuencia:
Cada vez que se desea visualizar la ruta.
Tabla 5.6: Descripcin de caso de uso Celular
Ing. Tel6matica WIITA 53
n l n l a 3 a p o s n a p o s e : , a p a u n ? f l e ! a : L ' S e m 8 y
. e t u a l s ! s l a I i ? z ! l e a J a p a n d a n b s a p v p ! ~ p a e s a l e d ! : , u u d s e 1 a p o s n
a p o s e 3 a p e u r r r i 8 e l p l a e l l s a n u r a s 1 . c . e r n 8 ! + ~ e l u g : n 1 n l a a o u o j a l a L a p o s n a p o s e a a p a w i ? ~ % e ! a
5.3 Diagrama de clases
5.3. Diagrama de clases
El diagrama de Clase muestra los bloques de construccin de cualquier sistema orientado a obje-
tos. Los diagramas de clases describen la vista esttica del modelo o parte del modelo, describiendo
que atributos y comportamientos tienen en lugar de detallar los mtodos para realizar operaciones.
Los diagramas de clases son ms tiles para ilustrar relaciones entre clases e interfaces. Las general-
izaciones, agregaciones, y asociaciones son todas valiosas al reflejar herencias, composicin o uso, y
conexiones respectivamente.
m Cliente: contiene los atributos y mtodos de insercin, modificacin y eliminacin de clientes.
Su propsito es poder identificar al usuario de tipo Cliente para que pueda ingresar al sistema,
su cardinalidad va de uno a varios Clientes.
Pedido: clase que permite al usuario realizar pedidos donde aadir productos, su cardinalidad
es de 1 a * ya que un Cliente puede realizar varios pedidos cada vez que ingresa al sistema.
i Catlogo de productos: aqu es donde se ordenaran los productos por categora, lo que le per-
mitir al cliente tener un mayor control sobre sus peticiones.
i Producto: en esta clase contiene el registro de los productos que esn disponibles para su venta,
as como algunos atributos de los productos, como nombre, existencia, precio, etc.
i Itinerario: contiene el itinerario de entregas del da, este itinerario se generar uno por da para
poder determinar la ruta que incluya todos los pedidos del mismo da.
i Reporte: esta clase se generar una vez que el itinerario se crea, con el fin de informar al
transportista sobre los destinos a los que debe entregar.
i Generador de mtas: considerada una clase de suma importancia, para garantizar las entregas de
la mejor forma, esta clase recibir el itinerario, donde posteriormente analizar la informacin
recibida y determinar la ruta completa.
i Telfono celular: podr visualizar el mapa teniendo conexin a internet.
En la Fig. 5.8 se muestra el diagrama general del sistema
ing. Telmatica UPIITA 55
Diseo
Diagrama de clases del sistema general
-- . .
Pedido \
Cliente
Cem o uno
uno unicarnente
O o rnds
1 o mds
n (donde n > 1)
Figura 5.8: Diagrama de clases del sistema general
56 IPN Ing. Telmatica
5.3 Diagrama de clases
5.3.1. Agregacin
Las agregaciones se usan para describir elementos que estn compuestos de componentes ms
pequeos. Donde destacamos la importancia que tiene cada componente, ya que el Sistema esta ligado
a todos los mdulos por lo que no se puede descartar alguno de ellos, ya que implicara una falla en
el Sistema.
El Sistema General esta conformado por 2 mdulos que son indispensables para su funcionamien-
to ya que entre ellos se comunican, en la Fig. 5.9 estos mdulos se describen a continuacin:
m Diagrama de clases de agregacin
Figura 5.9: Diagrama de clases de agregacin
i ServidorWeb: se encarga de procesar las solicitudes de los clientes, y los pedidos, adems de
recolectar informacin para los siguientes mdulos.
m Telfono celular: Desplegar la ruta a recorrer e interactuar con el transportista.
5.3.2. Generalizaciones
Usarlo para indicar herencia. Dibujada desde un clasificador especifico a un clasificador general,
la implicacin general es que el origen hereda las caractersticas del destino. En la Fig. 5.10 siguiente
diagrama muestra una clase padre generalizando tres clases hijo. Implcitamente, un objeto instanci-
Ing. Telmatica UPIITA 57
Diseo
ado de la clase Administrador, Cliente y Transportistas tendr atributos de la clase Usuario, ya que
puede existir de dos tipos, con diferentes privilegios para acceder al sistema.
Diagrama de clases de generalizacin
p.
y-.--
Administrador
7-L
i Transportista
Inolicencia:String = ""
Ino~eeuro~oci al ~t ri ne: = ""
Figura 5.10: Diagrama de clases de generalizacin
IPN Ing. Telmatica
5.4 Diagrama de objetos
5.4. Diagrama de objetos
Este diagrama nos sirve para modelar las instancias de elementos contenidos en los diagramas de
clases. Adems de mostrar un conjunto de objetos y sus relaciones en un momento concreto
A continuacin en la Fig. 5.1 1, observamos las instancias principales de los objetos del sistema,
y representamos las relaciones con otros objetos de diferentes clases.
i Diagrama de clases de objetos
1
id tiw : int = ' 1'
nombre : Stnng = 'Enrique'
lapellidos : String = 'Mijares'
itelcfono : String = '5556983589'
id-itinerario = '956'
fecha : Datc = '05-05-09' fecha : date = '23-02-09'
IistaProducto : int = '12'
monto : float = '345.98'
subtotal : float = '51.897' no. 4509'
Figura 5.1 1 : Diagrama de objetos
Ing. Telmatica UPIITA 59
Diseo
5.5. Diagrama de secuencias
En esta seccin se muestra ms a detalle las funciones de Cliente y de la creacin de un pedido,
con el propsito de dar un panorama general de la secuencia de las actividades que pueden realizar
cada uno de los mencionados anteriormente.
i Cliente: En la Fig. 5.12, el primer paso para el Cliente es entrar al sistema para poder visualizar
el catlogo de productos, seleccionar los productos de su eleccin para finalmente crear el pedido
introduciendo los datos que el sistema le requerir.
Ingreso cxitoso i
l
I
El pedido se ha geneiado
Figura 5.12: Diagrama de secuencias del cliente
60 TPN Ing. Telmatica
5.5 Diagrama de secuencias
m Pedido: En el diagrama anterior se indica la creacin del pedido, en esta parte se (Fig. 5.13) se
muestra que cada pedido formar parte de un itinerario, adems, el mdulo de la ruta recibir los
parmetros que ste necesite para obtener la ruta para que finalmente pueda ser visualizada en un mapa
sc cnvia datos
Se ha creado itinerariq m
rccibo parametros (
l
I
i
I
1
Sequertce ~ i a ~ r a m(
Figura 5.13: Diagrama de secuencias de pedido
Ing. Telmatica , UPIITA 61
l
e r p o d t r i s v 0 d m - 4 - ~ ! n % a s a p a q a p a n b a n r
w s a n w a l F A ? ^ o ~ g ! s o d s v l a a n b v ' e i s y o d s r n ? . q
5.6 Modelo de Base de Datos
5.6. Modelo de Base de Datos
5.6.1. Modelo Entidad-Relacin
Para el modelo entidad-relacin se crearon seis entidades donde se describe los atributos que nos
interesa de cada uno de ellos. Los usuarios pueden ser tanto administradores como clientes, y tienen
datos que son iguales para ambos, pero con relacin al cliente se necesita saber un identificador que
relacione la compra que hizo un nmero de cuenta y un identificador de cliente. Se contar con una
tabla que contenga la informacin acerca de las ventas realizadas, a su vez tendremos una tabla para
los productos que podrn ser seleccionados por el usuario, estos productos pertenecen a un catalogo
determinado. Lo antes mencionado se muestra en la Fig. 5.15.
Figura 5.15: Modelo entidad - relacin
Ing. Telmatica UPIITA 63
Diseo
IPN
5.6.2. Modelo relacional
La siguiente figura 5.1 6 presenta el modelo relacional con respecto al diagrama entidad - relacion
antes mencionado.
Modelo relacional
usuario --
id-usuanol nombre 1 apellidopat lpasswordl telefono 1 edad ]tipo-usuani] usui i o 1 a+lltdomat 1 calle 1 numint 1 numext 1 colonia 1 cp r v
*
l
l
l
l
dsgedi dol - --
i ~edi do21 Id-usuano [fecha-padid~] desilugar 1 m'uTugarlfacha-entrega] e d o - e y l
A
prodsgsdldo _ 1 - _ _ - _ _
idgedido2Tidgrodufl precio 7
.-
producto -
*
fdgroducio 1 nombre 1 precio 1 id-catalogo 1 nom-~rn<a en 1 prcinocion 1 mnhdad 1
:
catalogo
--L.- - .- - .
id catatogor nombre ]
A-
puntosgrueba
idgrueba 1 mord-iugar 1 des-lugar 1
arcos
i d- ar &T nGbm7desde [ para 1 d i s t e 1 sentfdo l mr - &l
rnapeol
id-mapeyo r =nodo]
Figura 5.16: Modelo relacional de la base de datos
Ing. Telmatica
I
l
l
l
5.7 Herramientas utilizadas
5.7. Herramientas utilizadas
En la presente seccin se explicarn las herramientas que se utilizaron para el desarrollo del
proyecto dando a conocer la importancia de stas y sus caractersticas
5.8. Manejador de base de datos
Se ha elegido utilizar PostgreSQL por razones que nosotros consideramos sustentadas por la
informacin de su desempeo mostrndose una tabla (Tabla 5.7) comparativa de los manejadores de
bases de datos que se mencionarn anteriormente y que a continuacin se presenta.
SGBD Sistema Operativo Caractersticas esenciales
PostgreSql Linux, Mac, Sun, Win Soporta distintos tipos de datos. Veloci-
dad lenta pero de los gestores ms com-
pletos.
MY Sql Linux, Mac, Sun, Win Mltiples motores de almacenamiento.
Agrupacin de transacciones, reunien-
do mltiples transacciones de varias
conexiones para incrementar el nmero
de transacciones por segundo.
Microsoft SQL Server Win Una base de datos robusta para crear
2005 E.E aplicaciones dinmicas. Fuerte soporte
de XML
Tabla 5.7: Comparativa de manejadores de bases de datos
Se tienen la plataforma y el manejador elegidos, ahorapara la eleccin del controlador para la
gestin de conexin entre la base de datos y el desarrollo de entorno ser el que utiliza JAVA que
es JDBC. La arquitectura de JDBC est basada en un conjunto de interfaces y clases que permiten
que cualquier programa escrito en Java acceda a una base de datos, crear y ejecutar sentencias SQL,
recuperar y modificar datos de una base de datos.
Ing. Telmatica UPIlTA 65
Diseo
La opcin que tomamos para tener una base de datos espacial es PostGIS, que es una extensin al
sistema de bases de datos objeto relaciona1 PostgreSQL. PostGIS ha sido certificado en 2006 por el
Open Geospatial Consortium (OGC) lo que garantiza la interoperabilidad con otros sistemas tambin
interoperables. PostGIS almacena la informacin geogrfica en una columna del tipo GEOMETRY,
que es diferente del homnimo "GEOMETRYtilizado por PostgreSQL, donde se pueden almacenar
la geometra en formato WKB (Well-Known Binary), aunque hasta la versin 1.0 se utilizaba la
forma WKT (Well-Known Text). Tambin PostGIS soporta SDT como lo son points, line strings,
polygons, Multi points, Multi line strings, Multi polygons y geometry collections. Adems de datos
espaciales vectoriales como puntos, lneas, polgonos y superficies, es posible definir datos espaciales
raster como un tipo de dato abstracto (ADT, en ingls) en bases de datos objeto-relacionales. Como
resultado, los datos espaciales vectoriales y raster pueden ser almacenados y gestionados dentro de
un mismo sistema de bases de datos espacial.
En la siguiente Figura 5.17 se muestra un esquema de los diferentes datos que soporta PostGIS.
Tipos Geometry de PostGIS
Figura 5.17: Tipos Geometry de PostGIS
66 IPN Ing. Telmatica
5.8 Manejador de base de datos
5.8.1. Quantum Gis
Quantum GIS (QGIS) lo seleccionamos para poder hacer la visualizacin de los datos geogrficos
obtenidos. ste es un Sistema de Informacin Geogrfica (SIG) de cdigo libre para plataformas
GNULinux, Unix, Mac OS y Microsoft Windows. Era uno de los primeros ocho proyectos de la
Fundacin OSGeo y en 2008 oficialmente gradu de la fase de incubacin. Permite manejar formatos
raster y vectoriales, as como bases de datos. Algunas de sus caractersticas son:
i Soporte para la extensin espacial de PostgreSQL, PostGIS.
i Manejo de archivos vectonales Shapefile, ArcInfo coverages, Mapinfo, GRASS GIS, etc.
i Soporte para un importante nmero de tipos de archivos raster (GRASS GIS, GeoTTFF, TIFF,
JPG, etc.)
QGIS es un entorno multiplataforma (Linux, Windows, Mac) de aplicaciones de cdigo abier-
to con muchas caractersticas comunes y las funciones de los STG. Las caractersticas principales
incluyen:
1. Ver vectores de recubrimiento y datos de trama en diferentes formatos y proyecciones, sin
conversin a un formato interno o comn.
i Habilitada espacialmente tablas de PostgreSQL con PostGIS y SpatiaLite
i La mayora de los formatos vectoriales con el apoyo de la OGR * biblioteca, incluyendo
shapefiles de ESRI, MapInfo, SDTS y GML
Formatos de mapa de bits con el apoyo de la GDAL * biblioteca, tales como modelos de
elevacin digital, fotografas areas o imgenes Landsat
i En lnea de datos espaciales sirvi como OGC compatibles con WMS o la CMA
2. Crear mapas de forma interactiva y explorar los datos espaciales con una interfaz de usuario
grfica. Algunas de sus herramientas de la interfaz grfica son las siguientes:
i informacin general del panel
i marcadores espaciales
Ing. Telmatica
Diseo
i identificar y seleccionar las caractersticas
editar y ver atributos de bsqueda
i funcin de etiquetado
diagrama vectorial de superposicin
i cambio del vector y raster simbologfa
i anadir una capa de retcula
i guardar y restaurar proyectos
3. Crear, editar y exportar datos espaciales usando:
i herramientas para la digitalizacin de GRASS y formatos shapefile
i el plugin georeferencer
i herramientas GPS para importacin y exportacin GPX formato, convertir formatos de
GPS a GPX, o hacia abajo o subir directamente a una unidad GPS
4. Realizar anlisis espacial utilizando el plugin para ffools Shapefiles o el plugin integrado de
csped, incluyendo:
Mapa del lgebra
= anlisis del terreno
i Modelacin hidrolgica, de anlisis y muchos otros
2
5.8.2. Patrn de diseo a utilizar
STRUTS
Struts es un framework de los mas conocidos y de fcil construccin, hacen de MVC una opcin
ms que aceptable y recomendable para el desarrollo de cualquier aplicacin Web, bajo el lenguaje
de programacin Java.
Struts es una herramienta de soporte para el desarrollo de aplicaciones Web bajo el patrn MVC
bajo la plataforma J2EE (Java 2, Enterprise Edition). Struts se desarrollaba como parte del proyecto
Jakarta de la Apache Software Foundation, pero actualmente es un proyecto independiente conocido
como Apache Struts.
68 P N Ing. Telmatica
- I
5.8 Manejador de base de datos
Algunas de las caractersticas ms importantes de Struts Framework son las siguientes:
i Una arquitectura general basada en los principios de diseo de Modelo-Vista-Controlador(MVC)
en el que todas las peticiones son procesadas por el controlador que realiza todo el control y
despacha las peticiones a los componentes de la aplicacin apropiados, basndose en los inden-
tificadores lgicos que reducen el acoplamiento entre capas.
i Capacidades de manejo de formularios, como el JavaBean ActionForm que representa el estado
del lado del servidor de los campos de entrada de un formulario, y un marco de trabajo de
validacin que extemaliza la configuracin de un conjunto de chequeos de exactitud que se
aplican a los valores de los campos de entrada, adems implementa estos chequeos tanto en el
lado del cliente como en el lado del servidor.
m El marco de trabajo Tiles para el control de la distribucin de componentes, que soporta la
creacin de sofisticadas plantillas que se pueden reutilizar entre varias pginas, esto permite
una fcil modificacin del aspecto y comportamiento general de toda la aplicacin.
m Un conjunto de etiquetas JSP personalizadas que simplifican el proceso de crear las etiquetas
HTML de la aplicacin para la capa "Vista", y que trabaja conjuntamente con las capacidades
de manejo de formularios y la arquitectura general del controlador.
5.8.3. NetBeans
NetBeans IDE es un entorno de desarrollo, una herramienta para que los programadores puedan
escribir, compilar, depurar y ejecutar programas. Est escrito en Java pero puede servir para cualquier
otro lenguaje de programacin. Existe adems un nmero importante de mdulos para extender el
NetBeans IDE. NetBeans IDE es un producto libre y gratuito sin restricciones de uso.
Tambin est disponible NetBeans Platform; una base modular y extensible usada como estruc-
tura de integracin para crear grandes aplicaciones de escritono. Empresas independientes asociadas,
especializadas en desarrollo de software, proporcionan extensiones adicionales que se integran fcil-
mente en la plataforma y que pueden tambin utilizarse para desarrollar sus propias herramientas y
soluciones.
Una de las grandes ventajas de tiene NetBeans es que un entorno multiplataforma, podras utilzar-
lo en el sistema operativo que tu elijas. Las principipales herramientas que se usaron de NetBeans
Ing. Telmatica UPIITA 69
Diseo
fueron:
Java Web
i Java SE
i Java ME
5.8.4. LaTeX
M# fue una herramienta utilizada para la creacin del documento de Tesis, ya que ofrece una
mejor calidad de la presentacin del documento y tiene multiples funcionalidades a comparacin
de otros editores de texto, como lo son la numeracin automtica de las imgenes e ndices, entre
muchas otras ms, pero dada la importancia de ste documento en especial y el nivel acadmico se
decidio presentar un documento con nivel que se merece. ste es un sistema de composicin de textos,
orientado especialmente a la creacin de libros, documentos cientficos y tcnicos que contengan
frmulas matemticas. LaTeX est formado por un gran conjunto de macros de TeX, escrito por
Leslie Larnport en 1984, con la intencin de facilitar el uso del lenguaje de composicin tipogrfica.
Est formado mayoritariamente por rdenes (macros) construidas a partir de comandos de TeX un
lenguaje de bajo nivel, en el sentido de que sus acciones ltimas son muy elementales pero con la
ventaja aadida de poder aumentar las capacidades de LaTeX utilizando comandos propios del TeX.
Esto es lo que convierte a LaTeX en una herramienta prctica y til pues, a su facilidad de uso, se une
toda la potencia de TeX. Estas caractersticas hicieron que LaTeX se extendiese rpidamente entre un
amplio sector cientfico y tcnico, hasta el punto de convertirse en uso obligado en comunicaciones y
congresos, y requerido por determinadas revistas a la hora de entregar artculos acadmicos.
70 IPN Ing. Telrnatica
Parte IV
Desarrollo y Puesta en Marcha
-
Desarrollo
6.1. Requerimientos iniciales
Antes de llevar a cabo la implementacin de todo el proceso del algoritmo evolutivo, se tuvo que
hacer una serie de pasos necesarios para recabar la abundante informacin de tipo geogrfica utilizan-
do diferentes herramientas como lo son Google Maps; para la recoleccin de datos, bases de datos
espaciales (Postgis) y Sistemas de Informacin Geogrfica (Quantum GIS); para la manipulacin y
visualizacin de los datos geogrficos referenciados en un mapa.
A continuacin se explicar el orden del proceso para toda esta recopilacin.
6.1.1. Creacin de base de datos
La creacin de la base de datos es fundamental para el sistema, ya que en ella, est contenida toda
la informacin que permitir atender las peticiones de los usuarios, realizadas a travs de la aplicacin
web.
Algunos campos de la base de datos mencionada en la seccin 5.6.2 son datos geogrficos, por
lo que no pudieron ser creados de la manera estndar en PostgreSQL, por lo que se decidi crear
una base de datos espacial utilizando PostGis. Para este proceso se tuvo que seleccionar la opcin
de template= template-postgis durante la creacin de la base de datos, como lo muestra siguiente
-
Desarrollo
Figura 6.1.
Creacin de Base de datos espacial
Figura 6.1: Creacin de Base de datos espacial
Una vez creada la base de datos es necesaria crear las tablas correspondientes y sus respectivos
campos. Para crear una tabla con datos espaciales realizamos dos pasos:
1. Creamos una tabla no espacial CREATE TABLE arcos(idarc0 serial NuT NULL,arco character
vasling)
2. Aadimos una columna(carnpo) espacial a la tabla usando la funcin AddGeometryColumn de
OpenGIS.
74 IPN Ing. Telmatica
I
2
SELECT AddGeometryCo1umn(<bdname>,<tab1ename>,<co1umname1 <srid>, <
type>, <dimension>) ;
SELECT AddGeometryColumn(", 'arco~~,~coorarco',32614~~LINESTRING~
12) ;
6.1 Requerimientos iniciales
Cabe aclarar el significado de cada uno de los campos.
i bdname= Nombre base de datos
= tablename= Nombre de la tabla
i columname= nombre de la columna
i srid= Valor entero que identifica el sistema de referencia espacial, para Mxico es 32614.
Este valor es de suma importancia, al principio se hicieron varias pruebas hasta encontrar
el valor inidicado para el rea de Mxico. Una de las razones por las cules era necesaria
tener el srid de Mxico es por que sino era de est forma no podamos hacer otro tipo de
consultas que son importantes como lo son: select astext, select STAsKML,select askml.
type= Tipo de objeto multiespacial P O N , LINESTiUNG, POLYGON, MULTrTPOINT,
GEOMETRYCOLLECTION, GEOMETRY
6.1.2. Obtencin de datos
Una vez delimitado el rea de estudio del proyecto, se procedi a reunir la informacin necesaria.
Para llevar a cabo el algoritmo evolutivo se requiere una matriz de pesos y nodos de todos los puntos
del rea, por lo que se obtuvo est informacin con los datos de la ubicacin en coordenadas geogrfi-
cas y distancias entre puntos. Para realizar dichas tareas se utiliz la herramienta Google Maps que da
la oportunidad de sacar las coordenadas geogrficas, distancia entre puntos y visualizacin de calles
con la opcin Street View, esto para poder verificar el sentido de las calles y cruces entre stas.
Cabe aclarar que muchas de las uniones entre nodos eran lneas rectas, pero en el proyecto se
consideran lo que son retornos y calles las cuales no son lineas rectas, esto afectaba en el momento
en que se tena que generar y dibujar la ruta, ya que no podamos ir de un punto a otro en lnea recta
si esta no era su forma. La solucin para este problema fue dividir la forma en pequeos segmentos
de Inea recta, para que unidos nos pudieran dar la forma deseada, a esta unin de nuevos puntos le
llamamos arcos y la cantidad de esos puntos dependa de la forma y longitud de la calle o retorno.
i Medicin de distancias en Google Maps
Ing. Telmatica UPIITA 75
Desarrollo
Una de las opciones que nos ofrece Google Maps, como se mencion anteriormente, es la
posibilidad de sacar la distancia entre dos puntos, para cada nodo se saco su distancia y cabe
mencionar que esta recoleccin de datos fue manual. Como se muestra en la Figura 6.2.
Distancia en Google Maps
i
2
2
F
1
tJ
ara empezar a dibujar una Iinea
.
. - _ ," P
Figura 6.2: Distancia en Google Maps
IPN Ing. Telmatica
6.1 Reauerimientos iniciales
* Plugin GPS Location Google Maps
Otra de las opciones que nos ofrece Google Maps, es la posibilidad de sacar las coordenadas
latitud, longitud. Para cada nodo se saco sus coordenadas de manera manual, como se muestra
en la Figura 6.3.
Coordenadas geogrficas en Google Maps
Figura 6.3: Coordenadas geogrficas en Google Maps
Ing. Telmatica UPIITA 77
Desarrollo
m Verificacin de sentidos de calle con Street View
Con la nueva caracterstica de Google Maps y Google Earth de visualizar los mapas con
imgenes esfricas a nivel de calle, podemos verificar los sentidos de las calles, lo cual fu un
parmetro importante para la elaboracin del algoritmo evolutivo, como se muestra en la Figu-
ra 6.4. Por cuestiones de tiempo no fue posible verificarlas en sitio.
Street View de Google Maps
IPN
Figura 6.4: Street View de Google Maps
Ing. Telmatica
-
6.1 Requerimientos iniciales
6.1.3. Conversin de coordenadas
Como mencionamos antes, las coordenadas obtenidas en Google Maps estaban en formato ilat-
itud, longitud, pero para visualizarlo en un sistema de informacin geogrfica como Quantum Gis,
se realiz una conversin de coordenadas a formato UTM, ya que este es uno de los sistemas de
coordenadas proyectadas que soporta Quantum Gis.
Para realizar dicha conversin se hizo uso de la API (Interfaz de Programacin de Aplicaciones)
de Java Jscience (JSR- 275), una vez realizada la conversin se almaceno la informacin dentro de la
base de datos. En las lneas siguientes se muestra parte del cdigo para llevar acabo la conversin de
coordenadas.
import org.jscience.geography.coordinates.*;
CoordinatesConverter<LatLong, UTM> latLongToUTM = LatLong.CRS.
getConverterTo (UTM. CRS) ;
LatLong latLong = LatLong.valueOf(19.511461, -99.139187, DEGREE-ANGLE
6.1.4. Almacenamiento de informacin
4
Para el almacenamiento de la informacin se realizaron las consultas necesarias para la insercin
de dichos datos, cabe mencionar que en el inicio el proceso se realiz de manera manual para cada
uno de los nodos, posteriormente se explicar la solucin para que esta insercin fuera automtica.
A continuacin se muestra un ejemplo de consulta para inserci6n de puntos geogrficos:
) ;
UTM utm = latLongToUTM.convert(latLong);
INSERT INTO tabla (name,geom)
VALUES (ST-GeomFromText ( ' name' , ' POINT (coordenadas-utm) ' ,
-1) ) ;
6.1.5. Aplicaciones para insertar nodos, arcos y valores para matriz de peso
Dado el volumen de informacin a insertar en la base de datos, y el nmero de queries utilizado
en los diferentes nodos y arcos, fue necesario generar aplicaciones que ayudarn al rpido almace-
Ing. Telmatica UPIITA 79
Desamllo
narniento de dicha informacin.
Una de las primeras soluciones que se realizaron, fue disear una aplicacin que pudiera leer
archivos de textos; en la cual se ponan todos los nodos recolectados con el siguiente formato:
una vez recolectada la informacin se guardaba en un documento txt, y se proceda a llamar el
archivo para que fuera ledo, se analizara las coordenadas y las converta a formato UTM, adems
insertaba los nodos en la base de datos con la conversin correspondiente. A continuacin se pon-
dr parte del cdigo que se programo resaltando las funciones ms importantes.
archivo = new File ("ruta/archivo.txtw);
fr = new FileReader (archivo);
float lattt=Float.valueOf(lat.trim~)).floatValue();
float longg2=Float.valueOf(longg.trim()).floatValue();
CoordinatesConverter<LatLong,UTM> latLongToUTM = LatLong.CRS.
getConverterTo (UTM. CRS) ;
LatLong latLong = LatLong.valueOf(lattt, longg2, DEGREE\ANGLE);
UTM utm = 1atLongToUTM. convert (latLong) ;
ConsultasDB cb=new ConsultasDB();
cb. insertarpedidos (punto, coordutm) ;
Durante el proceso se tuvo que crear una segunda aplicacin como ayuda para almacenar la abun-
dante informacin, principalmente para insertar arcos, un arco no solo consta de un par de puntos,
sino de segmentos unidos por lneas rectas para que nos dan la forma deseada curva, por lo que la
recoleccin era ms tardada y se tuvo que buscar la forma de agilizar el proceso. A continuacin se
explicar como funciona dicha aplicacin.
En la siguiente Figura 6.5 se muestra la pgina inicial cuando se ha cargado la aplicacin, donde
hemos insertado un script en la pgina para poder tomar las funciones de Google Maps. Se puede
apreciar que hay un marcador, con este iremos seleccionando los diferentes puntos que formaran el
arco y conforme se vayan aadiendo estos puntos se har la conversin a coordenadas UTM cuando
damos click en convertir coordenadas.
80 P N Ing. Telmatica
6.1 Requerimientos iniciales
Pantalla inicial Aplicacin
Figura 6.5: Pantalla inicial Aplicacin
En la Figura 6.6 se muestran las casillas que se van completando de acuerdo a los puntos que
vayamos aadiendo, con informacin como la distancia total, que corresponde a la suma de todos los
puntos y las coordenadas convertidas a UTM. Los nicos datos que se tienen que indicar es el nombre
del punto inicial, final del arco y el sentido de la calle, que es '1' si es a la derecha y 'O' a la izquierda.
Ing. Telmatica UPIITA 8 1
Desarrollo
Pantalla inicial Aplicacin
No hay coordenadas
. .- - - ~ - - - - - ~-
T-G&.-- .- --.- -.- -~ ~~ ~
---~A -
~
:L)iSm& Toid
.- - - - - -
- -. - - . - - - - .
- -. [su-D"! ~
. . . . . . ...
.... . .... .... -. . ..... - . - . . . . . - --.-
PARA IMRODUCIR A BD
---- - - --
Nombrr Fmm
- ..~=--=--. =--,-.-- -
"r o:
............... . . .....
l k
- . . ~.
p&lo
- - - - . - - - - - - - A ~ -
Coad-seo:
7 .~
- . ~ ~. -
! IlnMitnAnoiBD]
Figura 6.6: Pantalla inicial Aplicacin
Despus de haber marcado todos los puntos en las casillas correspondientes se muestra la infor-
macin completa como se aprecia en la Figura 6.7
82 IPN Ing. Telmatica
6.1 Requerimientos iniciales
Aplicacin con datos completos
- .-~ - - - ~ . ..
486885.91965574428
: ~ d m a d s s L~2157213.7519097673,
- -
--
-~ --
1 19.5&545.-99 124986 19.509545.-99.124986
- - -. -
19.509440,-99.125045 19.509440.-99.125045
1-19 508088.-99 125338 --19.508088.-99.125338
~ .~~ ~ - - ~
, --
re-i~tdic ~5~m-mli~-8 l
I--
PARA INIRODUCIR A BD
.---pr- y . ..- -- ~ ~ - - ~ -~ ,--_ - ~ - ~ .. ...
Nombre: 21-22 Fmnc Z1 To: 22
Figura 6.7: Aplicacin con datos completos
6.1.6. Visualizacin de la informacin geogrfica
Una vez recaudada y almacenada la informacin fue necesario verla reflejada en un mapa, para
que pudiramos constatar que los datos eran correctos. Los requisitos previos para hacer este paso
eran tener instalado Quantum GIS y Postgis, haber cargado la base de datos de la delegacin Gustavo
A. Madero y tener almacenado ya en la base de datos los nodos y arcos del rea de estudio en Postgis.
El siguiente paso es cargar esta base de datos a Quantum Gis; para esto se hace una conexin entre
Quantum Gis y Postgis, dando la informacin necesaria para establecer la conexin con los datos de:
nombre, servidor, bd, puerto, nombre de usuario y contrasea, en la Figura 6.8, se muestra la interfaz
para establecer la conexin.
Ing. Telmatica UPIITA 83
. s o p ! p a d s o l a p s o p o u s o l s o v a w u a u p n e l ' s o 3 r a s o l ' z g e u r e l ~ a 3 e q e r a d s o p w a s u ! s o p o u
s o l S O P O J n I t ? h I a s q o a p n d a s 6 . 9 e m 8 y e 1 u g . n 8 m r a u o y m l a s u a p a n d a s s o l s a a n b o [ ~ o d ' s o l v a p
a s e q e l a u a 1 l u o 3 a n b s o 3 y e ~ 8 o a 8 s o l e p s o l e l 3 a l a p s ! 9 w n l u e n o ' u ? ? a u o 3 t ? l e p p l q v s a z a A w n
r n m u o u n - 2 y
6.1 Requerimientos iniciales
Datos Geogrficos en Qnantum Gis
k h m Edtnon Ver Capa Conhguracicn Cornplanentor Vedo-val Aruda
- -
Figura 6.9: Datos Geogrficos en Quantum Gis
UPIITA Ing. Telmatica 85
Desarrollo
6.2. Aplicacin Web Administrativa
Est aplicacin es la encargada de llevar el control tanto de usuarios y clientes, donde en cada
uno de los casos se realizan tareas diferentes y especficas de acuerdo a sus permisos y funciones. A
continuacin se explicar cuales son las partes que la conforman y que pasos se tuvieron que ejecutar
para llevarlo a cabo.
Pantalla inicial
Figura 6.10: Pantalla inicial
86 IPN Ing. Telmatica
6.2 Adicacidn Web Administrativa
En la imagen anterior ejemplifica el ingreso al sistema proporcionando tu cuenta y clave, si no
se cuenta con ello, se puede generar usuarios ingresando todos los datos necesarios para el registro
como se visualiza en la siguiente Figura 6.1 1.
Registro usuario
I NSTI TUTO POLl TECNl CO NACI ONAL
Introduce tus datos
,- ~ - - - -- - -- -
- --
. . . - . . - --p.
~ombre(s): rwP--- llido Paterno:
--
Apellido Materno:
-- -
l
l
1
-- --
- . -
Edad: !Nm. telefnico:
1 -- -
1 calle: - 1
--
-~ --
'Nurn. ext:
~p ~- I l n t : -~ -~ . .-
Colonia:
: c~di go postal: - - Frki nci a: l
,
- . - - . .-- . - . - - ~ --- --
--
-
. . - - - -. - 1
- ~-
~suar l o: I~ontrasefla: Comprobar contrasefa: I
-------.p---- - ~ ~- ---..p..--.
F&A;r~
-. . . . ~ .... . ~ ~ - - - - - . . ~
Figura 6.1 1 : Registro usuario
Ing. TelCmatica UPIITA 87
Desarrollo
Clientes
Una vez obtenida la cuenta, el cliente puede acceder a su sesin y comprar los productos que
prefiera. Hay diferentes catlogos de productos, cada vez que el cliente decida comprar alguno puede
aadirlo a su carrito de compras como se observa en la Figuras 6.126.13, 6.14.
Catlogo de productos
HdmK.rlri.
Figura 6.12: Catlogo de productos
88 IPN Ing. Teltmatica
6.2 Aplicacin Web Administrativa
Seleccidn de productos
7. .
INSTITUTO POLKECNICO NACIONAL
UNI DA0 PROFESIONAL I N T E R ~ Y I P L mU I A EN -LPU V TECNOLOC.IAS AVA-AS 7, l e r ) b l < - 3 , f l
1
;i.>TEivSA CIE WAVCGACIUN GUIADA GAS/ DO E N
Producto
Concepto Cantidad Importe
Figura 6.13: Seleccin de productos
Ing. Telmatica UPIITA 89
Desarrollo
Carrito de compra
-,.-v.
INSTlT UTO POLlTECNlCO NACI ONAL
UNI DAD rOC)FESlOSAl l NT RDl K1 YI l NAI I A EN Y RCNOLOGIbS CIVAUL4-. . lelo . ' 7 % r
6% DE tdAVECjALiCiN GUIADA BASADO E N 1 i
Carrito de compra
Concepto Cantidad Importe
1 5 4394 9-
I ~ , & ~ m d u ~ o s ~
Figura 6.14: Carrito de compra
90 P N Ing. Telmatica
6.2 Avlicacin Web Administrativa
Cuando el cliente ha seleccionado todos sus productos, es momento de que proporcione la infor-
macin para la generacin de rutas, que es el destino. Al cliente se le habilita la opcin de especificar
la ubicacin del sitio de entrega por medio de un mapa de Google Maps e inmediatamente queda
capturada la posicin con sus coordenadas geogrficas. Como lo muestra la Figura 6.1 5
Ubicacin de entrega de pedido
- - -- - - -. - . - -.
(ver mas pmduaos \
Informacin de envio
Fecha de compra: Lu~oc ! 6 do aoocto del 22: 17
nsaorial ~ i m Exteror
Num lnlenor
Ca1is
[san Pedm ~acat emo] 1 - 1 1 - 1
m l a COd~gc Pmtal Pmvincla
119.509159 1
Figura 6.15: Ubicacin de entrega de pedido
El ltimo paso para el pedido es ingresar la informacin de la forma de pago, cabe aclarar que
este paso es simulado ya que no se dio validacin a la cuestin de seguridad para pagos en lnea. La
Figura 6.16 ejemplifica el ltimo paso del pedido.
Ing. Telmatica UPIITA 9 1
e 3 g e y l a ~ - 8 1 1 1 N d I 2 6
o p ! p a d a p u o ! 3 e z ! l r ? u ! d : 9 1 ' 9 e ~ n 8 y
_ < = - . _ = _ _ ; ^ : _ _ _ I _ i _ = _ _ _ _ . Z U _ _ . _ - - _ _ - * - - - - - _ _ _ - _ _ _ I - - *= ---- - = = 5 = - - * - . - - . - .
I i a y w q n u Z
' - m 3 9 1 1
R n y ) - u s L a C
: s w v 3 a o M
m
6 6 . 6 6 1 6 L $ E ~ J " ' ? P @ : l l ~ l ' . l
, * d . k s d A L , ,
. u % \
m o o l ~ o p i i n f j a s a p o f i i p o 3
I z o j ~ I - L I ~ ~ ~ I A 7 . ,
I
- - V . , . -
~ ~ W L I K K Z T ] : p l ? f . I l ? ; 2 D 3 J a l i i f l N
L . , - J , d
v ( 1 1 0 ; i a o c i s p ' E - a r ~ g i s a 1 . 1 n 1 : e ~ d w o , a p e u g a d
e ~ a - e ! n s a p s o r i e p s o l a s a ~ i 6 u l
, . . , ! : , . , ,
I
. , , I r , , , > , b
e
, 1 . 1 > 1 ' ~ , , 1 1 - 1 1 , , < l I I I 1 , , ! i ~ i l ! l i )
q , . , , : ,
[ , l , , ! , , ~ ~ " . $ ! , # - ( . [ '
- -
o ~ ! @ a P U ? ! 3 l = ! @ U ! J
o ~ l a c . m s a a
6.2 Aplicacin Web Administrativa
Administrador
Ya hemos analizado las funciones que puede realizar el cliente, ahora, corresponde analizar la
parte del administrador. Este tiene funciones como altas, bajas, modificaciones y consultas de usuarios
y productos, as como la parte fundamental del proyecto que es la generacn 'de la ruta y ver los
pedidos del da. En la siguiente Figura 6.1 7 se observa la pantalla inicial del administrador con los
mens a los que puede tener acceso.
Pantalla inicial administrador
INSTITUTC PNAL
PIIOCIIONAL I NT E RMS CI C. . ~ ~ =S- . m c w n ~ ~ ~ ~ AVANLWAS - i i o r - f . r i ,P
b POLITECN
b. . . S . . m , . , . . a . m
ICO NACl C
.w.-,"?m.* " ,
* . . lntcio 5 Ver cltlloga dr Praductoi Menu Administrador Cenz r 'Jt.rlo?
t) Hda administrador'
y Eimrnar producios
E S e e s d m e n u ~ c ~ a i a d m n ~ d M d e
, r&imcar productos wrdm a r u nmrmac~ w a m e de
pmawm ciente e meranos
r'es
les
nles
Figura 6.17: Pantalla inicial administrador
Ing. Telmatica UPIITA 93
Desarrollo
Una de las primeras opciones que tiene el administrador es es el registro de productos para los
diferents catlogos, con los campos requeridos para su correcto registro como lo muestra la Figu-
Registro de productos
p '? - a
INSTITUTO POLITECNICO NACI ONAL
I I NI DAD PROf ESI ONAL I NTCI MSCl ?Ll NARl A DI I NGTNtEr<l A Y TECNOLOGt AS AVANZADAS T ~ I 1 or
e t ! c ,3
-i ~a.kNi A VE N/-rVf:'bACiON Gdl ADA RASADO EN '1, t
Introduce los datos del producto a registrar
y Ver pegos aei aia
Figura 6.18: Registro de productos
A su vez, el administrador puede eliminar estos productos o modificar sus atributos como lo son:
el catlogo al que pertenece, su precio, nombre de producto, fotografa y dar de alta alguna promocin,
si es que la tiene. En las Figuras 6.19 y 6.20 se muestra las opciones mencionadas. El administrador
puede hacer stas mismas altas, bajas, consultas y modificaciones para los clientes.
94 P N Ing. Telmatica
6.2 Aplicacin Web Administrativa
Eliminar productos
I NSTI TUTO POLI TECNI CO NACI ONAL
PROfCYONAL INTCRMSCIPLINAUIA CN INCENI<PIA Y TCCNOLOGIAS
, ....
;>lb* E~VIA OE PJAVEGALIUN GSi / l r J A &ASADO EN
% 1111~10 Catalogo 0. Productos Admlnlllrador I l i cuenta , c o i , Contactrna.
Crear 1 re- i . 3
Ver pealaos &l dia
Figura 6.19: Eliminarproductos
Cuando finalizd la jornada de pedidos del da, el administrador tiene la opcin de ver todos los
pedidos hechos como se muestra en la Figura 6.2 1, para despus proceder a crear la ruta con la opcin
de crear itinerario, y este es el punto de partida para dar paso al anlisis del algoritmo evolutivo que
se ver en el siguiente captulo.
Ing. Telmatica UPIITA 95
Desarrollo
Modificar productos
INSTITUTO POLITECNICO NACI ONAL
) PROFESI ON~L I Nt E~DI SCl Pl . l NA~I A M HICWIEUIA Y TECNOIOGIAS AVANZADAS Ti . 1
.E,vi A OE NAVE'SACICII\I GUIADA BASADO EN
J' 1
. C irr ' rrr?' i
ver peaidos a? a a
Figura 6.20: Modificar productos
Crear itinerario
Pedidos del da
Figura 6.21 : Crear itinerario
96 IPN Ing. Telmatica
Generacin de itinerarios
7.1. Qu informacin se necesita?
El tema pncipal de nuestro proyecto fue entender el problema de como hacer una representacin
de los datos en nuestro caso las calles, que de tal manera nos facilitar la obtencin de las rutas. Por
ello, como primer paso fue definir lo que para nosotros seran la informacin a recolectar:
Nodos: Cruces de calles.
Para los nodos se consider su respectiva posicin en coordenadas geogrficas en formato
latitud, longitud y UTM(Sistema de Coordenadas Universal Transversal de Mercator) y
un nombre identificador.
Arcos: Conexin entre nodos.
Los arcos son nuestra representacin de la calles, por lo que consideramos el nodo origen
y nodo destino, la distancia entre ellos, sentido de la calle y en caso de que el tipo de arco
sea irregular (refiriendose si es curvo el cual requiera ms de dos puntos para tener una
semejanza a la calle de un mapa real).
Se considerarn los retornos, en la mayora de las calle y10 avenidad principales se tom en
Generacidn de itinerarios
cuenta los retornos permitidos, auxiliandonos con la aplicacin de Google Street View, de
los cuales tambin se considerarn las caracteristicas que arriba se mencionan.
Teniendo una idea de cmo vamos a visualizar los datos de forma digital, los resultados que obtuvimos
fue la Fig. 7.1, en la cual muestra los nodos a considerar para la generacin de nuestra matriz de
incidencias.
Figura 7.1 : Nodos a considerar en nuestro proyecto
A continuacin en la Fig. 7.2, se muestran los arcos que son alrededor de ms de 500 arcos que
indican sentidos de calles y retornos dando como resultado un grafo dirigido, donde cada nodo esta
conectado con pesos positivos.
, 98 P N Ing. Telmatica
7.2 Cdmo plantear el problema?
Figura 7.2: Arcos a considerar en nuestro proyecto
7.2. ;Cmo plantear el problema?
El TSP (Problema del agente viajero), es una aplicacin conceptualmente sencilla, en donde el
viajero debe visitar cada ciudad dentro de un rea delimitada exactamente una vez y regresar al punto
de partida. Dado el costo del viaje entre todas las ciudades, cmo se debe planear su itinerario para
obtener el minimo costo total de la ruta completa?. El espacio de bsqueda para el TSP, consiste en un
grupo de permutaciones de n ciudades. Cada permutacin de n ciudades trata una posible solucin.
Por lo tanto la solucin consiste en una permutacin que produce el rninimo costo de la ruta y
con ello el espacio de bsqueda es n!. El TSP se volvi popular hace unos aos debido a que reas de
programacin lineal tratarn de resolver problemas combinatorios. El cual fue probado ser un proble-
ma de clase NP-hard que significa que los algoritmos para resolverlo requieren tiempo exponencial. A
raiz de esto, el TSP se convirti en un tema de inters para la comunidad GA(A1gorimtos Genticos),
del cual se han generado diversos algoritmos, estos algoritmos producen soluciones casi optimas a
trves de poblaciones de soluciones potenciales bajo un esquema de seleccin a favor de su aptitud.
La solucin que estamos proponiendo consiste en obtener un espacio considerablemente grande de
posibles soluciones, sin embargo, partiendo de un caso particular, empleamos un algoritmo que nos
ayud a obtener la distancia de todos los nodos, apoyandose en los siguientes parametros.
i Matriz de adyacencias: muestra la distancia entre un vrtice y los demas. El valor de infinito
denota que no hay una ruta directa.
Ing. Telmatica UPIITA 99
Generacin de itinerarios
m Matriz de recorridos:Eventualmente muestra el siguiente vrtice que se necesita en el recorrido
para encontrar la ruta ms corta hacia el siguiente vrtice.
Posteriormente se extraen de la base de datos todos los pedidos que se recibieron durante el da,
por medio de la pgina web y con ello tendriamos la informacin suficiente para el procesamiento y
obtener una solucin.
Ing. Telmatica I
7.3 Algoritmo de Floyd
7.3. Algoritmo de Fioyd
El objetivo de ste algoritmo es encontrar el camino ms corto entre todos los pares de nodos de
un grafo. Dado un grafo g, lo que queremos es hallar el camino ms corto para ir desde el nodo i hasta
el nodo j dentro de todas las posibilidades que se puedan presentar. Lo nico que necesitamos para
resolver este problema es la matriz de pesos del grafo (D), es decir, una matriz que recoge el coste de
ir de un nodo a otro del grafo sin pasar por nodos intermedios. Cuando no hay camino directo entre
dos nodos, la celda correspondiente tendr valor infinito.
7.3.1. Funcionamiento
Veamos un ejemplo de cmo funciona el algoritmo para el siguiente grafo:
Figura 7.3: Grafo a resolver
La matriz de pesos del grafo es:
Figura 7.4: Matriz de pesos
Ing. Telmatica UPIITA 101
Generacidn de itinerarios
Como se explic antes, esta matriz representa el coste de ir de un nodo a otro del grafo sin pasar
por nodos intermedios. En cada iteracin del algoritmo se aade un nodo a travs del cual se pueden
establecer caminos para ir de un nodo a otro, as, al final de la k-sima iteracin, D[i]lj] indica el
menor coste de cualquier camino entre el nodo i y el nodo j que pase por nodos con nmero menor o
igual que k.
A continuacin se muestran los cambios que sufre la matriz en las sucesivas iteraciones que los pro-
ducen y como va quedando por faces:
Figura 7.5: Parte 1 de las iteraciones
102 P N Ing. Telmatica
7.3 Algoritmo de Floyd
Como no podemos representar el infinito, por ejemplo, cuando el valor de una celda de la matriz
de pesos es infinito, lo representaremos con el valor Doubl e . MAX-VALUE, ya que es poco probable
que se presenten pesos de esta magnitud y en dicho caso se podra adaptar esta circunstancia a la
solucin.
Figura 7.6: Parte 11de las iteraciones
Ing. Telmatica UPIITA 103
- j s a n u a w ! d a ~ a s a n b u ! s e u o l e a l e e u l r o j a p s o n p ! a h l p u ! s o n s a n u u w a u a 8 a s a p u o p ' o 3 p ? u a %
o w j u o 8 p l a e n d e p ! u e d a p o r u n d l a s g : p ! 3 y q u ? p a l q o d e u n ( q u a u m p o j e a p r ) J e J a u a ; r ) m
e n a n u
/ u o p e l q o d e l a p
1 o n p ! n ! p u ! e p e r i a p ' \
, : ' l P ! 3 ! U ! ~ 0 ! 3 P l q 0 d \
: e u n a l u s u i e ! A o j e a l e
\
J e J a u a g
- u ? ! 3 e n l e ~ a a p u ? p u y e 1 1 0 6 e p e n l a a h a z a a h e u n o s u ~ m u J O @ A o q q e e u r ! x o ~ d e a s s y u i a n b e l ' ~ y p
s a ' o p e p e u r a l q o ~ d l a e ~ e d e p ! u y a p a ~ d e 3 q 9 w e u n e t ? z p ! ~ d o a n b e l l a n b e s a s ! s a ~ o d q ~ o r a m e l f ) t r s o l
u g - s q a a p ~ 0 . w a l w e p y p w 3 s ! s a @ q a p o ! 3 e d s a u n a p o n u a p n ~ s n q s a 9 ~ s o l a p o a h g a f q o 1 3
. s a u o p n l o s s a ~ o w s q e o s a d s y u r e ~ ~ m o d u q s y m o p u e p
' ( s a ~ o u a i w s a l q r s o d s a u o ! j n l o s s w o a p q x a w ' s e r ! q s a u o p n l o s ) s a u o ! 3 w a u a 8 s a y s a 3 n s o p m a r : ,
n u a n z e l e s a u o ! 3 n l o s s a l q ! s o d a p a u a s e u n m a u a 8 u a u a s ! s u o : , s o 3 g a u a 8 s o a n u o 8 p s g
7.4 Algoritmos Genticos
sta qa -
;e sa-5--
i Calcular aptitud de cada individuo:Una vez generada la poblacin inicial se debe obtener la
aptitud que consiste en la suma total de dicho recomdo tomando de referencia lo obtenido en
el algoritmo de Floyd.
m Seleccionar (probabilsticamente) en base a aptitud: Mediante un mtodo de seleccin, se
determina el individuo que pasar a la siguiente generacin.
m Generar nueva pob1acin:Son todos aquellos individuos que fueron seleccionados en el punto
anterior.
i Aplicar operadores genticos (cruza y mutacin) para generar la siguiente pob1acin:A la
nueva generacin se aplican estos operadores con el fin de reproducirse para resultar una nueva
generacion.
i Ciclar hasta que cierta condicin se satisfaga: Continuar con los pasos anteriores hasta que
un inviduo logre sobrepasar todas aquellas generaciones creadas dado que su aptitud siempre
fue la ms fuerte.
Por otra parte, para seguir continuando con este tema es necesario dar una breve explicacin sobre los
conceptos que estaremos manejando a lo largo de ste capitulo, que se enfoca nicamente al algoritmo
gentico. stos son los siguientes:
Cromosoma: Se le denomina a una estructura de datos que contiene una cadena de parmetros
de diseo o genes. Esta estructura de datos puede almacenarse, por ejemplo, como una cadena
de bits o un arreglo de enteros.
Gene: Es una subseccin de un cromosoma que representa el valor de un solo parmetro.
= Individuo: Se refiere a un solo miembro de la poblacin de soluciones potenciales fig. 7.10,
a un problema. Cada individuo contiene un cromosoma que representa una solucin posible al
problema a resolverse.
Figura 7.8: Individuo de una posible solucin
Ing. Telmatica UPIITA 105
Generacidn de itinerarios
i Aptitud: Es el valor que se asigna a cada individuo indicando su importancia con respecto a
los demas inviduos de la generacin.
i Generacin: Es una iteracin de la medida de aptitud y a la creacin de una nueva poblacin
por medio de operadores de reproduccin.
i Operadores de reproduccin: Es todo aquel mecanismo que influencia la forma en que se pasa
la informacin gentica de padres a hijos. Los operadores de reproduccin que utilizaremos son:
Cruza: Forma un nuevo cromosoma combinando partes de cada uno de sus cromosomas
padres.
Mutacin: Se denomina mutacin a un operador que forma un nuevo cromosoma a travs de
alteraciones (usualmente pequeas) de los valores de los genes de un solo cromosoma
padre.
m Seleccin: Es la seleccin de los que se cruzarn en la siguiente generacin (donde se escogen
a los "mejores").
m Elitismo: Asegura que la aptitud mxima de la poblacin nunca se reducir de una generacin
a la siguiente.
7.5. Implementacin de algoritmo gentico
7.5.1. Representacin de datos
Nosotros representamos nuestros datos de forma entera, es decir, una vez que tenemos todos los
pedidos recolectados, hacemos un mapeo de los datos de los nodos que estan involucrados para asi
poder trabajar con ello para las demas funciones, quedando de la siguiente manera:
Lista de nodos de los pedidos recibidos:
A33- 1 N 8 1 A 1 6 9 1 C4 4 ' A3<2 ~ 8 1 _ 1 _ ^ 3 4 1 N O 2 1 A 1 9 1 3 A 2 7 7 1.' AZBR-
Lista con los nodos mapeador:
1 495 1 1 1 4 ' 211 1 436 1 516 1 152 1 506 1 275 1 2 1 3 M 1-42! -1
Figura 7.9: Mapeo de datos de entrada
106 P N Ing. Telmatica
7.5 Imulementacin de alnoritmo nentico
7.5.2. Proceso de seleccin
Seleccin Mediante Torneo
Se baraja la poblacin, es decir tomamos a cada individuo y desordenamos sus genes dando como
resultado otro individuo, y despus se hace competir a los cromosomas que la integran en grupos de
tamao predefinido (normalmente en parejas) en un torneo del que resultarn ganadores aqullos que
tengan valores de aptitud ms altos (que para nuestro caso ser aquel que tenga la distancia mnima).
La seleccin que se implement fue mediante torneo y a continuacin el algoritmo de la versin
determinstica:
1. Barajar los individuos de la poblacin.
2. Escoger un numero p de individuos (tipicamente 2).
3. Compararlos con base en su aptitud.
4. El ganador del "torneo" es el individuo ms apto.
5. Debe barajarse la poblacin un total dep veces para seleccionar N padres (donde N es el tamao
de la poblacin).
Anlisis de la seleccion mediante torneo
La version detenninistica garantiza que el mejor individuo ser seleccionado "p" veces (tam tor-
neo).
= Complejidad:
1 . Cada competencia requiere la seleccin aleatoria de un nmero constante de individuos
de la poblacin. Esta comparacion puede realizarse en O(1).
2. Se requieren "n" competencias de este tipo para completar una generacin.
3. Por lo tanto, el algoritmo es O@).
= La tcnica es eficiente y fcil de implementar.
= No requiere escalamiento de la funcion de aptitud (usa comparaciones directas).
Ing. Telmatica UPIITA
Generacidn de itinerarios
i Puede introducir una presin de seleccin muy alta (en la version determinstica) porque a los
individuos menos aptos no se les da oportunidad de sobrevivir.
108 IPN Ing. Telmatica
7.5 Implementacin de algoritmo gentico
7.5.3. Operador de Cruza
En los sistemas biolgicos, la cruza es un proceso complejo que ocurre entre parejas de cromoso-
mas. En computacin evolutiva se simula la cruza intercambiando segmentos de cadenas lineales de
longitud fija (los cromosomas). Normalmente la cruza se maneja dentro de la implementacin del al-
goritmo gentico como un porcentaje que indica con qu frecuencia se efectuar. Esto significa que no
todas las parejas de cromosomas se cruzarn, sino que habrn algunas que pasarn intactas a la sigu-
iente generacin, en donde el individuo ms apto a lo largo de las distintas generaciones no se cruza
con nadie, y se mantiene intacto hasta que surge otro individuo mejor que l, que lo desplazar dcha
tcnica se denomina elitismo.
Cruza para Permutaciones
La representacin de permutaciones se usa frecuentemente en problemas de optimizacin combi-
natoria, como el del viajero y consiste bsicamente en usar cadenas de enteros para representar una
perrnutacin como se muestra a continuacin:
L495 .- 1414 ! 2:4 L436 -- - 1 516 1457 1 506 1 775 1766 1 384 1 471
Figura 7.10: Individuo generado apartir de una permutacin
Estudiaremos para nuestro caso la tcnica Partially Mapped Crossover (PMX) El algoritmo es
el siguiente:
1. Elegir aleatoriarnente dos puntos de cruza.
2. Intercambiar estos 2 segmentos en los hijos que se generan (como la cruza de 2 puntos conven-
cional).
3. El resto de las cadenas que conforman los hijos se obtienen haciendo mapeos entre los 2 padres:
4. Si un valor no est contenido en el segmento intercambiado, permanece igual.
5. Si est contenido en el segmento intercambiado, entonces se sustituye por el valor que tenga
dicho segmento en el otro padre.
Ing. Telmatica 109
Generacidn de itinerarios
A continuacin se muestra un ejemplo:
El siguiente intercambio define la serie de mapeo
Si est contenido en el segmento intercambiado, entonces se sustituye
por el valor que tenga dicho segmento en el otro padre.
Figura 7.1 1 : Ejemplo de cruza para permutaciones
7.5.4. Operador de Mutacin
La mutacin se considera como un operador secundario en los algoritmos genticos. Es decir,
su uso es menos frecuente que el de la cruza. En la prctica, se suelen recomendar porcentajes de
mutacin de entre 0.001 y 0.01 para la representacin binaria. El papel que juega la mutacin en el
proceso evolutivo, as como su comparacin con la cruza, sigue siendo tema frecuente de investi-
gacin y debate en la comunidad de computacin evolutiva.
Mutacin para Permutaciones
Comenzaremos nuestra revisin de tcnicas enfocndonos a la representacin de permutaciones
que se suele utilizar en problemas de optimizacin combinatoria (como el del viajero).
Mutacin por insercin
Se selecciona un valor en forma aleatoria y se le inserta en una posicin arbitraria.
110 IPN Ing. Telmatica
7.5 Implernentacidn de algoritmo gentico
Mutacin por desplazamiento
Es una generalizacin de la mutacin por insercin en la que en vez de mover un solo valor, se
cambian de lugar varios a la vez.
Mutacin por Insercin
Si suponemos que elegimos la posicin 7 y decidimos mover ese valor a la
posicin 2, tendramos.
Mutacin por Desplazamiento
Figura 7.12: Ejemplo de mutacin para permutaciones
Ing. Telmatica UPIITA 111
Generacin de itinerarios
7.6. Resultados obtenidos
El resultado de todo el algoritmo evolutivo nos di el orden en que se deben entregar los pedidos
y con ello se obtuvo una ruta a seguir con ayuda del algoritmo de Floyd. En el siguiente ejemplo de-
notaremos los resultados que se obtuvieron con la implementacin de la solucin propuesta. Cuando
generamos los pedidos, stos se guardan en la forma en como fueron llegando, es decir, cada vez que
se registraron pedidos se almacenan en el orden en que la base de datos los recibe. A continuacin se
muestra una cadena que representa los pedidos que se tienen para generar el itinerario:
Ruta obtenida
Lista de nodos de los pedidos recibidos:
: A33 1 A28. 1 1 A16. 9 - 1 C4.4 1 A37. 2 ! CH. 7 1 A34 I A20.2 I A19. 13 1 A27. 7. 1 ! AZC
- . - -
. 1 Lista con los nodos mapeados:
Figura 7.13: Mapeo de los datos de entrada - Pedidos registrados
En la Figura. 7.13 se muestra la cadena mapeada, la cual al hacer el clculo inicial de su aptitud
obtenemos un valor 14,370.03 m, tomndolo como valor de comparacin despues de generar el AG.
Una vez ya mapeados los datos ahora si procedemos a introducir esa cadena de entrada a nuestro
algoritmo gentico. Nuestro tamao de poblacion es de 200, lo que significa que generar alrededor
de 200 diferentes soluciones posibles a evaluar, y tomar en cuenta para determinar un individuo
"ganador". Las implementaciones de cdigo de las funciones del AG, se muestran al final como
un apartado indicando el nombre del mtodo y su objetivo. Al ejecutar el AG, los resultados que
obtuvimos fueron los siguientes: prueba 1
Recapitulando lo que obtuvimos en la entrada:
I
2
i I MAPEO
E l mej or i ndi vi duo de l a gener aci on:
516 421 436 452 384 266 214 275 414 495 506 6726. 66
112 IPN Ing. Telmatica
7.6 Resultados obtenidos
Que conclusiones podemos determinar con esta informacin? En nuestros datos de entrada
la aptitud de nuestro individuo inicial es de 14,370.03 m, una vez que se ha pasado estos datos al AG,
obtenemos que la aptitud del individuo "ganador" resulto de 6726.66, lo que significa que mejoro en
aproximadamente un 40 %, la distancia total del recorrido, obteniendo el orden en que estos pedidos
deben ser entregados:
3
4
Aptitudes
1535. 95 2004. 29 1869. 7700000000002 694. 36 967. 28 1142. 9299999999998
1555. 5600000000002 1491. 5700000000002 1138. 39 1309. 12 660. 81
Lo cual el siguiente paso es decodificar esta cadena para ver de que nodos se trata, y ahora ayudarnos
del algoritmo de Floyd para que nos devuelva el camino entre nodo y nodo para obtener la ruta
completa.
Ruta desplegada en mapa
I
2
Figura 7.14: Ruta obtenida - prueba 1
MAPEO
516 421 436 452 384 266 214 275 414 495 506
Ing. Telmatica 113
Generacin de itinerarios
i
z
3
;Que conclusiones podemos determinar con esta informacin? En nuestros datos de entrada
MAPEO
211 511 419 256 448 330
Aptitudes
i
2
la aptitud de nuestro individuo inicial es de 1 1091.74 m, una vez que se ha pasado estos datos al AG,
El mejor individuo de la generacion:
511 448 256 211 330 419 5972.189999999999
obtenemos que la aptitud del individuo "ganador" resulto de 5972.1 89, lo que significa que mejoro en
aproximadamente un 40 %, la distancia total del recomdo, obteniendo el orden en que estos pedidos
deben ser entregados:
i / MAPEO
Lo cual el siguiente paso es decodificar esta cadena para ver de que nodos se trata, y ahora ayudamos
del algoritmo de Floyd para que nos devuelva el camino entre nodo y nodo para obtener la ruta
completa.
Ruta desplegada en mapa
IPN Ing. Telmatica
7.6 Resultados obtenidos
Zacatenm Ju,
undavista Dios Batiz
Figura 7.15: Ruta obtenida - prueba 2
Prueba 3
I
2
3
4
;Que conclusiones podemos determinar con esta informacin? En nuestros datos de entrada
la aptitud de nuestro individuo inicial es de 8936.02 m, una vez que se ha pasado estos datos al AG,
obtenemos que la aptitud del individuo "ganador" resulto de 5339.3, lo que significa que mejoro en
aproximadamente un 40 %, la distancia total.de1 recorrido, obteniendo el orden en que estos pedidos
deben ser entregados:
MAPEO
342 266 436 256 448 452
Aptitudes
2808.44 1275.0700000000002 1577.4399999999998 1488.01 594.07 1193.07
I
2
El mejor individuo de la generacion:
452 342 256 266 448 436 5339.3
Ing. Telmatica UPIITA 115
i
2
MAPEO
342 266 436 256 448 452
E e q a m d - p u a i q o i . i n 8 : 9 1 ' L e ~ n 8 ! d
s d q q a P o o 3 n a e p i e % a l d s a p q n a
. e l a l d u o 3
q m 8 1 J a u a l q o e n d o p o u o p o u a q u a o u y ~ l a e A I a n A a p s o u a n b e n d p o l d a p o w i u o 8 l e l a p
s o u i a p n e w o y r ! 6 ' e l w a s s o p o u a n b a p J a A e n d e u a p m a s a . ~ e q ! p o 3 a p s a o s v d a i u a m 8 1 s l a p n 3 o ?
7.6 Resultados obtenidos
Generacin KML
Dado que por parte del genetico nos dio genercdigo solo entrega los puntos en coordenadas
geogrficas sin una interpretacin por lo que a estos datos se referenciaron en un mapa para poder ver
el contenido de la informacin. Una forma encontrada fue utilizar KML, que son archivos que nos
permiten manipular datos geogrficos. En la siguiente seccin explicaremos la utilziacin de KML La
generacin de la ruta por medio de KML, fue de gran ayuda para visualizarla en Google Maps, una
vez obtenidos todos los puntos de la ruta pasaron a una funcin que es la encargada de generar dicho
archivo KML, y posteriormente subirlo al servidor de Google Maps para que pueda ser visualizado
pblicamente. En la Figura 7.17 se observa la ruta obtenida y visualizada en Google Maps.
Archivo km1 en Google Maps
Figura 7.17: Kml en Google Maps
El siguiente cdigo muestra la funcin que genera el archivo KML, recibiendo como parmetros
el arreglo de coordenadas de la ruta obtenida.
Ing. Telmatica UPIITA 117
i
2
public static void GeneraKml (String geo [ l ) {
BufferedWriter br = null;
Generacibn de itinerarios
try {
br = new BufferedWriter(new FileWriter("Final.km1"));
br.write("<?xml version=\"l.O\" encoding=\"UTF-8\"?>");.
br . newline ( ) ;
br.write("<kml xmlns=\"http://www.opengis.net/kml/2.2\~~~");
br . newline ( ) ;
br .write ("<Document>") ;
br . newline ( ) ;
br.write("<name>KmlFile</name>");
br . newline ( ) ;
br.write("<Style id=\"thickBlackline\V);
br . newLine ( ) ;
br . write ("<LineStyle>") ;
br . newline ( ) ;
br.write("<color>87000000</color>");
br . newline ( ) ;
br.write("<width>lO</width>");
br . newline ( ) ;
br .write ( " </LineStyle>") ;
br . newline ( ) ;
br.write ("</Style>") ;
br . newline ( ) ;
br .write ("<Placemark>") ;
br . newline ( ) ;
br.~rite("<name>Relative</name>~);
br . newline ( ) ;
br.write("<visibility>l</visibility>");
br . newline ( ) ;
br.write("<description>Tu ruta a seguir</description>");
br . newline ( ) ;
br.write("<styleUrl>#thickBla~kLine</styleUrl>~);
br . newline ( ) ;
br .write ("<LineString>") ;
br . newline ( ) ;
br.~rite(~<tessellate>l</tessellate>");
Ing. Telmatica
7.6 Resultados obtenidos
br . newline ( ) ;
br.write("<altitudeMode>relativeToGround~/altitudeM~de~'~);
br . newline ( ) ;
br.write("<coordinates>");
br . newline ( ) ;
+*r lint i=0; i< geo. length; i++) (
br.write (""tgeo [i] +", 645
br . newline ( ) ;
br.write("</coordinates> " ) ;
br . newline ( ) ;
br .write ("</LineString>") ;
br . newline ( ) ;
br.write(" </Placemark>");
br . newline ( ) ;
br .write ( " </Document>I1) ;
br . newline ( ) ;
br.write("</kml> ll);
} catch (FileNotFoundException ex) (
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally (
try { if (br != null) {br.close();)} catch (IOException ex) {
ex. printStackTrace ( ) ; }
1
Visualizacin de Ruta
Una vez obtenido el ordenamiento de los pedidos con ayuda del algoritmo evolutivo proporcio-
nando una ruta a seguir, el paso siguiente es referenciar est ruta en un mapa para que pudiera ser
entendida y utilizada por el transportista. Teniendo el KML con las coordenadas de la ruta, procedi-
mos a importar el archivo a Google Maps para poder visualizar dicha informacin, adems creamos
Ing. Telmatica UPIITA 119
Generacidn de itinerarios
una pgina web importando este mapa para que el transportista pudiera acceder a la pgina mediante
su dispositivo mvil con conexin a Internet. En la Figura 7.1 8 se muestra la pgina. El transportista
poda visualizar esta pgina, solo con acceder desde su navegador a http://misrutas.webs.com
Pgina web con Ruta
Mis maDas
Figura 7.18: Pgina web con Ruta
LEntras al IPN?
Reglstrate y reclblrds tlps, ayuda,
examen pweba y mas, todo gratls.
i.,;.. i . i . m- i l <. i . ?~wi i i ~' l c m. mi
i
120 IPN Ing. Telmatica
7.7 Implementacin en cdigo JAVA
7.7. Implementacin en cdigo JAVA
En la implementacin ocupamos el lenguaje de programacin java con un jdk 6.0, bajo el DE(Integrated
Development Environment), y partimos por crear una clase denominada Individuo, donde esta
tiene como atributos un arreglo de tipo int y la aptitud como de tipo double, y con ella podremos
crear una poblacin con estas caracteristicas. Nombre de la clase public class Individuo:
public class Individuo {
private int individuo [ ] ;
private double aptitud=O;
public void set Individuo (int ind [] ) {
individuo=new int[ind.length];
for (int i=0; i<ind. length; i++)
individuo [i] = ind[i] ;
1
public void setHijo(int valInd,int pos){
individuo [pos] = valInd;
1
public void setAptitud(doub1e apt){
aptitud=apt;
1
public int [ 1 getIndividuo ( ) [
return individuo;
1
public double getAptitud ( ) {
return aptitud;
1
1
~
Ing. Telmatica UPIITA 121
Generacin de itinerarios
public int [ ] creaPoblacionInicial (int mapEnt [ ] , int numPob) : Crealapoblacin
inicial que necesita el AG, para poder realizar las demas funciones
public int [] creaPoblacionInicial (int mapEnt [ ] , int numPob)
{
Random rnq = new Random();
int aux=mapEnt [O] ;
int k=O, n=O;
n = mapEnt.length;
while (n > 1 ) {
k = rng.nextInt (n) ;
n--;
int temp2 = mapEnt [n] ;
mapEnt [n] = mapEnt [k] ;
mapEnt[k] = temp2;
1
return mapEnt;
pub1 ic int nurnAleatorio (int tam) : Este mtodo como su nombre lo indica genera val-
ores aleatorios dentro de los parametros que recibe.
I / public int numAleatorio (int tam)
3 1
int randomPosition=O;
Random rqen = new Random(); //SE GENE% UN NUMERO ALEATORIO
for (int i=O; i<tam; i++) {
randomPosition = rqen.nextInt(tam);
1
return randomPosition;
122 IPN Ing. Telmatica
7.7 Implemntacidn en cddigo JAVA
public Individuo[] seleccionTorneo(Individuo poblacion[l,int numPob):
Realiza la seleccin por torneo que consiste en barajar al individuo en especifico y seleccionar a uno
de ellos dependiendo de su valor de aptitud y asi generar una nueva generacin.
public Individuo[] seleccionTorneo(Individuo poblacion[],int numPob)
I
Individuo[] newPoblacion=new Individuo[numPob];
int aux [ 1 ;
int pl =O, p2 =O;
for (int i=0; i<newPoblacion. length; i++)
( while (pl==p2)
(
pl=obj.numAleatorio(poblacion.length);
p2=obj.nurnAleatorio(poblacion.length);
1
System.out.println("\nNum aleatorio 1: "+ pl + " aptitud
: " + poblacion [pl] .getAptitud ( ) ) ;
System.out.println("\nNum aleatorio 2: "+ p2 + " aptitud
: " + poblacion [p2] . getAptitud ( ) ) ;
if( poblacion[pl].getAptitud()<poblacion[p2].getAptitud
0
(
System.out.println("\nSELECCIONAMOS: "+ pl + " con
aptitud: " + poblacion[pl].getAptitud());
newPoblacion [i] =new Individuo ( ) ;
newpoblacion [i] . setIndividuo (poblacion [pl] .
getIndividuo ( ) ) ;
newPoblacion[i].setAptitud(poblacion[pl].getAptitud()
1;
1
else
{
Ing. Telmatica UPIITA 123
Generacin de itinerarios
Sy~tem.out.println(~\nSELECCIONAMOS: "+ p2 + " con
aptitud: " + poblacion[p2].getAptitud());
newPoblacion [i] =new Individuo ( ) ;
newpoblacion [i] . setIndividuo (poblacion [ p 2 ] .
getIndividuo ( ) ) ;
newPoblacion[i].setAptitud(poblacion[p2].getAptitud()
1;
1
System.o~t.print(~\n NUEVA POBLACIONn);
for (int i=0; i<newPoblacion. length; i++)
t
System.out.print("\nIndividuo ");
for (int j=0; j<newPoblacion [i] .getIndividuo ( ) . length; j++)
System. out .print (newpoblacion [i] .getIndividuo ( ) [ j] +" ") ;
System.out .print ( " aptitud "+newPoblacion [i] .getAptitud 0 ) ;
System.out .print ("\nn) ;
1
return newPoblacion;
Ing. Telmatica
7.7 Implernentacidn en cddigo JAVA
public Individuo elitismo (Individuo newpoblacion [ 1 ) : Esta funcin se en-
cargar de evaluar a cada individuo con el fin de determinar al mejor de la generacin, con el fin de
que logre sobrevivir durante todo el proceso del AG.
public Individuo elitismo(1ndividuo newPoblacion[])
i nt aux=O;
double val=O;
int pos=O;
Individuo indElit=new Individuo();
val=newPoblacion[O].getAptitud();
pos=o;
for ( i nt i=l; i<newPoblacion. length; i++)
{
if(val<newPoblacion[i].getAptitud())
(
aux=i;
System.out.println("\nIF "+val+"\nn);
1
else
{
aux=i;
val=newPoblacion [i] .getAptitud ( ) ;
pos=i;
System.out.println("ELSE "+val+"\nn);
1
1
System.out .println ("POS "+pos+"\nn) ;
return newpoblacion [pos] ;
Ing. Telmatica UPIITA 125
Generacin de itinerarios
public int puntoscruza (Individuo mapEnt [ ] ) : ste mtodo calcula los puntos de
cruza que se necesitan para realizar el PMX, tomando en cuenta la matriz de entrada para que stos
puntos se encuentren en el rango de los datos que se estn manejando.
I 1 public int puntoscruea (Individuo mapEnt [ ] )
Random rgen = new Randomo;
int tamCadena=mapEnt[O].getIndividuo~) .length;
int pf=O;
for (int i=O; i<tamCadena; i++) {
pf = rgen.nextInt(tamCadena);
I
return pf;
public Individuo[] pmxCrossOver(Individuo mapEnt[],int numPob) : Mto-
do que realiza el operador de cruza, como se menciona anteriormente se empleo la cruza PMX, la cual
genera dos hijos a partir de la cruza de dos padres, stos hijos pueden llegar a tener mas de un mapeo
con el fin de que no se repitan los genes dentro del individuo. La cruza se va a estar evaluando depen-
diendo del parametro denominado probabilidad de cruza, en nuestro caso es de .6, lo cual evaluamos
por medio de una funcion flip para que se lleve a cabo o no el operador de cruza, y asi creando una
nueva generacin de individuos.
if (ob j. f l i p (probcruza) )
t
System.out.println("SE PUEDE HACER LA CRUZA....");
I
2
3
IPN Ing. Telmatica
public Individuo [ ] pmxCrossOver (Individuo mapEnt [ ] , int numPob)
t
for (m=0 ; m<numPob; m+=2)
7.7 Implementacin en cdigo JAVA
Sy~tern.~ut.println(~\n\n*******************~+m+~~
**********************y;
while (pl==p2 )
I
pl=obj.puntosCruza(mapEnt);
p2=obj.puntosCruza(mapEnt);
1
Systern.o~t.println(~\nPNTO DE CRUZA "+m+": "+pl)
I
System.out .println(lfPUNTO DE CRUZA "+m+" : "+p2) ;
hi josCruza [m] =new Individuo ( ) ; //SE CREA EL HIJO 1
int inceros [ ] =new int [mapEnt [m] . getIndividuo ( ) .
length] ;
for(int l=O;l<inCeros.length;l++)
inCeros [1] =-1;
hi josCruza [m] . setIndividuo (inceros) ;
XHijol=inCeros;
Ing. Telmatica UPIITA
Generacin de itinerarios
hijosCruza[m+l]=new Individuo(); //SE CREA EL HIJO
2
hi josCruza [m+l] . setIndividuo (inceros) ;
YHijo2=inCeros;
int ex=O ;
for(int j=limInf;j<=limSup;j++)
t
hi josCruza [m] . setHijo (mapEnt [m+l] . getIndividuo ( )
ijl, j);
ex=hi josCruza [m] . getIndividuo ( ) [ j] ;
XHi jol [ j] =ex;
ex=O;
hi josCruza [m+l] . setHi jo (mapEnt [m] . getIndividuo ( 1
[]Ir 1);
ex=hi josCruza [m+l] .getIndividuo ( ) [ j] ;
YHi jo2 [ j] =ex;
1
System. out .print ("\nPadre 1: \nW) ;
for (int j=0; j<mapEnt [m] .getIndividuo ( ) . length; j++)
1
System. out .print (mapEnt [m] .get~ndividuo ( ) [ j] +"
" )
System. out .print ('l\nIndividuo: " ) ;
for (int j=0; j<hi josCruza [m] .getIndividuo ( ) .
length; j++)
System.out.print(hijosCruza[m].getIndividuo()
[jl+" " 1 ;
/ / I NC I S O B) DEL PASO 3 DE LA CRUZA
for (int b-0; b<hi josCruza [m] . getIndividuo ( ) . length; b
++)
IPN Ing. Telmatica
7.7 Imvlementacin en cddigo JAVA
t
i f (ob j .buscarAPmx (hi joscruza, mapEnt [m] .
getIndividuo ( ) [b] ,m) )
t
while ( (band==O) && hi joslruza [m] .
getIndividuo 0 [b] ==-1)
t
hi josCruza [m] .getIndividuo ( ) [b] =
mapEnt [m] . getIndividuo ( ) [b] ;
band++;
1
band=O ;
1
System.out.print("\nHIJO A EVALUAR: " ) ;
for ( i nt j=0; j<hi josCruza [m] .getIndividuo ( ) . length; j
l
System. out .print (hi josCruza [m] .getIndivido ( 1 [ j] +
86 I //**+******SE HACE EL MAPEO DE LOS ELEYENTOS CONTZNIDOS EN E; SEGMENTO
INTERCAMBIADO*****+***i****+*
for (int y=0; y<hi josCruza [m] .getIndividuo ( ) .length; y
++)
t
if (hi josCruza [m] . getIndividuo ( ) [y] ==-1)
i nt valMapeo=obj.buscarSegmentoContenido(
hi josCruza, mapEnt [m] . getIndividuo ( ) [y], m)
1
hi josCruza [m] .getIndividuo ( ) [y] =valMapeo;
1
Ing. Telmatica UPIITA 129
Generacin de itinerarios
<n l
i n t ar r Aux [ ] =new i n t [ h i j osCr uza [m] . g e t I n d i v i d u o ( ) .
l e n g t h ] ;
for ( i n t j=0; j <h i j osCr uza [m] . ge t I ndi vi duo ( ) . l e ngt h; j
++)
I
ar r Aux [ j ] =h i j osCr uza [m] . g e t I n d i v i d u o ( ) [ j ] ;
1
d i s t =o b j 2 . g e t Di s t a n c i a s ( ar r Aux, p a t h ) ; //DE\TJEL\JE EL
I
ARREGLO CON LAS DISTANCIAS ENTRE NODO Y NODO
for ( i n t j=0; j < d i s t . l e n g t h ; j ++)
loa I
fitness=fitness+dist[j];//CALCULA LA APTITUD DEL
I
INDIVIDUO
APTITUD DEL NUEVO INDIVIDUO
f i t nes s =O;
Syst em. out . p r i n t ("\nHIJO 1: " ) ;
for ( i n t j=0; j <h i j osCr uza [m] . ge t I ndi vi duo ( ) . l e ngt h; j
t
Syst em. o u t . p r i n t ( h i j osCr uza [m] . g e t I n d i v i d o ( ) [ j ] +
" " ) ;
110 /
/ / System. o u t . p r i n t ( h i j o s Cr u z a [ m] .get~ptitud O ) ;
,191 //++****+++*i*******t+*i++++**++*****CR5ACION DE HIJO
IPN Ing. Telmatica
~
7.7 Implementacin en cdigo JAVA
System.out.print ("\nn) ;
System.out.print("\nPadre 2: \nu);
for (int j=0; j<mapEnt [m+l] . get Individuo ( ) . length; j+t)
System. out .print (mapEnt [m+l] .getIndividuo ) [ j] + ") ;
System.out.print("\nIndividuo: " ) ;
for (int j=0; j<hi josCruza [m+l] .getIndividuo ( ) . length;
j+t)
System. out .print (hi josCruza [m+l] . getIndivduo ) [ j
]t" ");
for (int b=0; b<hi josCruza [mtl] .getIndividuo ( ) . length; b++)
t
i f (ob j .buscarAPmx (hi joscruza, mapEnt [m+l] .
getIndividuo ( ) [b] , m+1) )
t
while ( (band==O) && hi josCruza [m+l] .
getIndividuo ( ) [b] ==-1)
{
hi josCruza [m+l] .getIndividuo ( ) [b] =mapEnt [
m+l] .getIndividuo ( ) [b] ;
band++;
1
band=O ;
System.out.print(ll\nHIJO A EVALUAR: ");
for (int j=0; j<hi josCruza [m+l] .getIndividuo ( ) . length; j++)
System.out .print (hi josCruza [m+l] .getIndivduo() [ j] t"
" ) ;
System.out .print ("\nl') ;
//******+**SE HACE EL M4- 53 DE LOS ELEMENTOS CONTtNIDOS SN EL SYSMENTO
Ing. Telmatica UPIITA
Generacidn de itinerarios
for (int y=0; y<hi josCruza [m+l] .getIndividuo ( ) . length; y++)
{
if (hijoscruza [m+l] .getIndividuo 0 [y]==-1)
(
int valMapeo=obj.buscarSegmentoContenid02(
hi josCruza,mapEnt [m+l] .getIndividuo ( ) [y] , m+l)
1
hi josCruza [m+l] . get Individuo ( ) [y] =valMapeo;
159 1 for (int j=0; j<hi josCruza [m+l] .getIndividuo ( ) .length; j+t)
lrn 1
System.out .print (hi josCruza [m+1] .getIndividuo ( ) [ j] +"
167 //****+**+**************+**********+A CRUZA
IMl
eise//SI NO SE CUMPLE FLIP
I
System.out.println("N0 SE PUEDE HACER LA CRUZA....")
;
hijosCruza[m]=new Individuo(); //SE CREA EL HIJO 1
hijosCruza[m+l]=new Individuo(); //SE CREA EL HIJO 2
111 1 int inceros [ ] =new int [mapEnt [m] . get Individuo ( ) . length
1;
hi josCruza [m] . setIndividuo (inCeroc) ;
132 rPN Ing. Telmatica
7.7 Im~iementacidn en ciao JAVA
//LCS PADRES SE PASAN A LA SIG GENZRACION
for (int ]=O; j<rnapEnt [m] .getIndividuo ( ) . length; j++)
hi josCruza [m] . setHi jo (mapEnt [m] . get Individuo ( ) [ j
Ir]);
for (int j=0; j<mapEnt [m+l] . get Individuo ( ) . length; j++)
hi josCruza [m+l] . setHi jo (mapEnt [m+l] .getIndividuo
0 []Ir]);
1
1
System.out.print("\n NUEVA POBLACION");
for (i=0; i<hi joscruza. length; i++)
{
Systern.out.print("\nIndividuo " ) ;
for (int j=0; j<hi joscruza [i] .getIndividuo 0 . length; j++)
System.out .print (hi josCruza [i] .getIndivido ) [ j] +" " ) ;
System.out.print(" aptitud "+hijosCruza[i].getAptitud());
System.out .print ("\ntf) ;
1
return hijoslruza;
/ * hljosCruza[i]-new individuo(); //SE CREA EL HTJO I
hi josCruza [i] .getIndividuo() [ j] =mapEnt~ [i~ll] .getIndividuo
0 [ji;
hi josCruza [i j .getIndiv;duo ( ) ; j] =mapEnt [ i-11 .getIndividuo
O [jI;*/
Ing. Telmatica
Generacin de itinerarios
public Individuo [ ] mutacion (Individuo hi josCruza [ ] ) : Estafuncinemplea
la mutacin por desplazamiento, que practicamente consiste en elegir de valores dentro del rango Nn
tomando como N el tamao del individuo, para que sean ubicados en nuevas posiciones, recomendo a
los demas datos. Este operador tambien emplea un parametro denominado probabilidad de mutacion,
la cual es muy pequea para que por lo menos en una generacin ste operador se cumpla.
public Individuo [] mutacion(1ndividuo hijosCruza[])
(
S ~ S ~ ~ ~ . O U ~ . ~ ~ ~ ~ ~ ~ ~ ( ~ \ ~ \ ~ * * * * * * * * * * * * * * * * * * * I N I C I A * * * * M U T A C I O N
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
for(int i=O;i<hijosCruza.length;i++)
t
if (ob j . f lip (probMutacion) )
t
Sy~tem.out.println(~\n\n****************SE HACE LA
MUTACION*******************************ff);
N=hi josCruza [i] .getIndividuo ( ) . length;
System.out .println (%N "+N) ;
numMut=obj . numAleatorio (N/2) ;
if (numMut==O) numMut=l;
System.o~t.println(~~\nNUM MUTACION: "+numMut);
Sy~tem.o~t.println("\n*****************HIJO A MUTAR
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
for (int m=O;m<hi josCruza [i] .getIndividuo ( ) . length
;m++)
System.out .print (11 "+hi josCruza [i] .
getIndividuo ( ) [m] ) ;
for (int mut=O; mut<numMut; mut++)
t
while (pl==p2 )
t
I
134 IPN Ing. Telmatica
7.7 Implementacin en cdigo JAVA
1
pl=ob j . numAleatorio (hi josCruza [i] .
get Individuo ( ) . length) ;
p2=ob j . nurnAleatorio (hi josCruza [i] .
getIndividuo ( ) . length) ;
1
if (pl<p2)
1
dl=p2;
d2=pl;
1
else
(
dl=pl;
d2=p2;
valorl=hijosCruza[i].getIndividuo() [dl];
valor2=hi josCruza [i] .getIndividuo ( ) [d2] ;
for (int j=hi josCruza [i] .getIndividuo ( ) . length-1; j
>=O; j--)
{
if (j<d2)
(
arrAux [ j] =hi josCruza [i] .getIndividuo ( ) [ j
1;
1
else if ( j==dl )
{
aux=hi josCruza [i] .getIndividuo ( ) [d2] ;
Ing. Telmatica UPIITA 135
Generacin de itinerarios
arrAux[d2]=hijosCruza[i] .getIndividuoO [
d11;
1
else if ( j==d2 )
{
arrAux [d2+l] =aux;
1
else if (j>dl)
t
arrAux [ j] =hi josCruza [i] .getIndividuo ( ) [ j
1;
1
else
t
arrAux [ j+l] =hi josCruza [i] .
11;
1
, get Individuo ( ) [
for (int m=O;m<hi josCruza [i] . get Individuo ( ) . length
;m++)
t
hijosCruza[i].setIndividuo(arrAux);
System. out .print (l' "+hi josCruza [i] .
getIndividuo ( ) [m] ) ;
1
/ / System.out.pr~ntln("\ri~*****************+HIJO EN
MUTACIO>:C********+***~~******+**~);
for (int m=O;m<hi josCruza [i] .getIndividuo ( ) . length
;m++)
System. out .print ( " "thi josCruza [i] .
getIndividuo ( ) [m] ) ;
I
136 P N Ing. Telmatica
7.7 Implementacin en cddigo JAVA
for (int m=O;m<hi josCruza [i] .getIndividuo ( ) . length;
m++)
System. out .print (" "+hi josCruza [i] .
getIndividuo ( ) [m] ) ;
System. out .println ("\n
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
" 1 ;
pl=O;
p2=0;
1
System.out.println("\n*****************~~~o FINAL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
for (int m=O;m<hi josCruza [il . get Individuo ( ) . length
;m++)
System.out .print ( " "+hi josCruza [i] .
getIndividuo ( ) [m] ) ;
numMut=O;
numMut2=0;
arrAux2=new int [hi josCruza [i] .getIndividuo ( ) . length
1;
for (int j=0; j<hi josCruza [i] .getIndividuo ( ) . length; j
++
(
arrAux2 [ j ]=hi josCruza [i] . getIndividuo ( ) [ j ] ;
1
dist=obj2.getDistancias(arrAux2, path);//DEVUELVE EL
ARRZGLO CON LAS 3ISTANCIAS YNTRE YODO Y NODO
System.out.print ( " [ " ) ;
for (int j=0; j<dist . length; j++)
t
System-out .print ( " "+dist [ j] ) ;
Ing. Telmatica UPIITA 137
Generacibn de itinerarios
fitness=fitness+dist[j];//CALCULA LA APTITUD DEL
INDIVIDUO
1
System.out .print ( " ] ") ;
hijosCruza[i].setAptitud(fitness);//INSERTA LA
APTITUD DEL NUEVO INDIVIDUO
fitness=O;
Sy~tem.o~t.println("\n\n****************NO**SE HACE LA MUTACION
*******************************n);
System.out.println("\n******************HIJO NO MUTADO
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
for (int m=O;m<hi josCruza [i] .getIndividuo ( ) . length
;m++)
System. out .print ( " "+hi josCruza [i] .
getIndividuo ( ) [m] ) ;
Systern.~ut.println(~\n******************HIJO FINAL NO MUTADO
. . . . . . . . . . . . . . . . . . . . . . . . . . .
for (int m=O;m<hi josCruza [i] .getIndividuo ( ) . length
;m++)
System.out .print ( " "+hi josCruza [i] .
getIndividuo ( ) [m] ) ;
arrAux2=new int[hijosCruza[i].getIndividuo~) .length
1;
for (int j=0; j<hi josCruza [i] .getIndividuo ( ) . length; j
++)
arrAux2 [ j]=hi josCruza [i] .getIndividuo ( ) [ j] ;
1
dist=obj2.getDistancias(arrAux2, path);//DEVUELVE EL
ARREGLO CON LAS DISTANCIAS ENTRE NODO Y NODO
138 P N Ing. Telmatica
7.7 Implementacibn en c6digo JAVA
System.out .print ( " [ ") ;
for (int j=0; j<dist . length; j++)
(
System.out .print ( " "+dist [ j] ) ;
fitness=fitness+dist[j];//CALCijLA LA APTITUn DEL
II\!DIVTDUG
i
System.out.print (" ] " ) ;
hi josCruza [i] . setAptitud (f itness) ; / / I S S E LA
APTITUD DEL NUEVO ISDTVTDUO
fitness=O;
******************************y;
for (int i=0; i<hi joscruza. length; i++)
t
for (int m=0; m<hi josCruza [i] . get Individuo ( ) . length; m++)
System.out.print(" "+hijosCruza[i].getIndividuo()
[m1 ;
System.out.print(" "+hijosCruza[i].qetAptitud());
System.out.print("\nn);
System.o~t.println("\n\n*****************TE~INA******MUTACION
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
return hijoscruza;
1
Ing. Telmatica
Parte V
Pruebas Adicionales
7.8 Diferentes Pruebas
7.8. Diferentes Pruebas
A lo largo del desarrollo del proyecto se realizaron diferentes pruebas en las reas relacionadas a
este, una de estas reas fue la creacin de aplicaciones para los dispositivos mviles. Ante la necesidad
de visualizar imagenes en el dispositivo, buscamos la manera de poder manipular, analizar y visualizar
imagenes correspondientes a la Delegacin Gustavo A. Madero, por lo que se uso diferentes progra-
mas que nos dan la oportunidad de descargar imagenes de Google Maps sin ningn costo, algunos
de los programas utilizados fueron gMapMarker, Google Maps Images Downloader entre muchos
otros. El utilizado fue gMapMarker dado que descargaba las imagenes con un nivel de zoom bastante
alto (17), solo hay que indicarle las coordenadas de izquierda a derecha, arriba y abajo de la zona
que deseamos obtener los mapas, y guarda las imagenes en una carpeta de salida, en la Figura 7.19
ejemplifica la configuracin de la descarga
Configuracin GMapMarker
Figura 7.19: Imagenes descargadas
A continuacin se muestra un ejemplo de las imagenes obtenidas en la la Figura 7.20
La siguiente tarea era manipular estas imagenes de tal manera que pudieran ser vistas en el dispos-
itivo y unirlas como un rompecabezas de tal manera que se tuviera el mapa completo. En la siguiente
parte de cdigo se muestra como se poda manipular las imagenes.
Ing. Telmatica UPIITA 143
Imagenes descargadas
Figura 7.20: hnagenes descargadas
import java . io . *;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;
import javax.microedition.media.Control.*;
public class Imagen extends Canvas implements CommandListener {
private MoverImagen midlet;
private Image im, im2;
private Command salir;
Ing. Telmatica
,
I
private int x, y;
public Imagen(Mover1magen mid) {
salir = new C~mmand(~'Salir~~,Command.EXIT,l);
this.midlet = mid;
this .addCommand(salir) ;
this.setCommandListener(this);
tryt
7.8 Diferentes Pruebas
r 1 im = Image. createimage ( ' ' /l .pngW) ;
23 1
catch (Exception e) {
System.~ut.println(~~Error al cargar archivo de imagen");
1
x = o;
y = o;
1
public void paint (Graphics g) {
g. setColor (255,255,255) ;
g. fillRect (0,0, getWidth 0, getHeight ( ) ) ;
g. setColor (0,0,0) ;
g.drawImage(im,x,y,Graphics.VCENTERIGraphics.LEET);
g.drawImage(im2,x,yIGraphics.VCENTER~Graphics.RIGHT);
1
protected void keypressed (int keyCode) {
switch (getGameAction (keycode) ) {
case Canvas.DOWN: { if ( (y+40) <getHeight ( ) ) y = y+l;
break; }
case Canvas .LEET: { if (x> O) x = x-1;
break; )
case Canvas.UP: { if (y> O) y = y-1;
break; )
case Canvas. RIGHT : { if ( (x+40) <getWidth ( ) ) x = x+l;
break; }
1
this. repaint ( ) ;
1
public void comrnandAction(Command c, Displayable d){
if (C == salir) {
midlet . salir ( ) ;
1
1
1
Ing. Telmatica UPIITA 145
s a l ! A g u r ~ m d
s a u o ! ~ e q d e s e 1 ~ a u o 3 u a p a n d a s a p u o p W Z I o ~ d o ~ d J o p e l n w a u n a u a g s u i i a a a N a n b s o u r a p J o m
' I Z - L e r n % ! d e 1 u a e u a s q o a s a n b e l l m w d a ~ u a ! n 8 ! s q e p ! l e s 0 1 , 1 1 0 3 e n s a n u i o u 0 8 ~ 9 3 J o p a l u e
7.8 Diferentes Pruebas
Otras de las aplicaciones que se llevaron a cabo fue con sonido, asi podamos escuchar algunos
mensajes y grabaciones . Para esto se hizo uso de la librera de Java J2ME Media. A continuacin
ponemos el cdigo de una aplicacin donde fue utilizada.
3 import java.io.1OException;
l
4 1 import javax.microedition. lcdui .Display;
5 1
import javax .microedition. lcdui . *;
1 import java . io . *;
i / import javax .microedition .media. *;
a 1 import javax .microedition .midlet . *;
s 1 import javax .microedition. lcdui. *;
public class Hola extends MIDlet implements CommandListeneri
Display pantalla;
l6 1
Form ventanal, ventana2, ventana3;
Command botonS, botonsig, botonC, atras;
StringItem cadl, cad2, cad3;
private Form coordenadas;
public Hola ( ) {
pantalla= Display.getDisplay(this);
ventanal= new Form ( ' ' Inicio Repartidorv') ;
ventana2= new Form("Mapa Ruta") ;
ventana3= new Form("0btener Coordenadas");
botonS= new Command ( ' 'Salir", Cornmand.EXIT, 1) ;
botonSig= new Command( 'rRuta",Command.0K,2);
botonC= new Command("Ubicaci\'on", Command.OK12);
Ing. Telmatica UPIITA
atras= new Command (l 'Back", Command.BACK, 1) ;
cadl= new StringItem(" ", "Bienvenido Repartidor");
cad2= new StringItem(" ", "La ruta a seguir es");
cad3= new StringItem ( " ", " Tu ubicaci\' on es") ;
ventanal. append (cadl) ;
ventanal. addcomrnand (botonS) ;
ventanal. addcommand (botonsig) ;
ventanal.addCommand(botonC);
ventana2. append (cad2) ;
ventana2.addCommand(botonS);
ventana2.addComrnand(atras);
public void startApp() {
public void pauseApp 0 {
public void destroyApp(boo1ean unconditional) {
this.notifyDestroyed();
148 P N Ing. Telmatica
7.8 Diferentes Pruebas
if (boton==botonS)
{
notify Destroyed ( ) ;
1
67
68
69
if (boton==botonSig)
{
Audio ("/Ruta.wavW) ;
pantalla.setCurrent(ventana2);
}
public void comrnandAction(Command boton, Displayable d)
(
Audio("/Ubicacion.wav");
Display display = Display.getDisplay(this);
display.setCurrent(new LocationMainForm(this));
1
1
83
84
85
86
m
88
89
90
91
92
Ing. ~el dgca UPIITA 149
(
pantalla.setCurrent(ventana1);
1
if (boton==botonC)
t
if (coordenadas == null) {
102
103
104
IM
106
107
108
109
110
I I I
112
113
114
115
116
public void Audio (String menu) {
try t
InputStream in = null;
in = getClass ( ) . getResourceAsStream(menu) ;
Player sonido = Manager.createPlayer(in, "audio/x-wav");
try I
sonido. start ( ) ; )
catch (MediaException me) { )
1
catch (Exception e) { }
1
IPN Ing. Telmatica
7.8 Diferentes Pruebas
Un ltimo ejemplo de la aplicaciones realizadas, fue obtener las coordenadas geogrficas usando
el GPS del dispositivo mvil, esto se llevo a cabo gracias a la librera de Java J2ME Location, como
lo muestra el cdigo siguiente.
3 import javax.microedition.lcdui.*;
I I
1 import javax.microedition. location. *;
r / import javax.microedition.midlet.MIDlet;
8 1 public class LocationMainForm extends Form implements CommandListener,
LocationListener {
9
10 //Distancia total recorrida actualmente
private double totalCurrentDistance;
private MIDlet midlet;
private QualifiedCoordinates lastcoord;
//Controles de la interfaz
private Command cmdStartClick;
private Command cmdExitClick;
private TextField txtEstadoProveedor;
private TextField txtLongitud;
private TextField txtlatitud;
private TextField txtDistanciaRecorrida;
private TextField txtvelocidad;
private TextField txtcalle;
public LocationMainForm(MID1et midlet){
super ( ' 'Location API E jernplo") ;
this.totalCurrentDistance = 0;
this.midlet = midlet;
this. createUI ( ) ;
1
/ * *
* Contruimos y configuramos el interfaz
* /
private void createUI ( ) {
this .cmdStartClick = new Command ( ' 'Empezar", Command.OK, 1) ;
this.cmdExitClick = new Command("Salir", Comrnand.EXIT, 1);
this.txtCalle = new TextField(' ' Calle: ", null, 50,
TextField. ANY) ;
this.txtEstadoProveedor = new TextField ( ' 'Proveedor:",
null, 50, TextField.ANY) ;
this.txtDistanciaRecorrida = new TextField("Metros recorridos:"
, null, 50, TextField.ANY) ;
this .txtVelocidad = new TextField (' Velocidad: ", null, 20,
TextField.ANY);
this.txtLongitud = new Te~tField("Longitud:~, null, 50,
TextField.ANY);
this.txtLatitud = new TextField("Latitud:", null, 50,
TextField.ANY) ;
this.append(txtEstadoProveedor);
this.append(txtDistanciaRecorrida);
this.append(txtVe1ocidad);
this. append (txtcalle) ;
this.append(txtLongitud);
this.append(txtLatitud);
152 IPN Ing. Telmatica
7.8 Diferentes Pruebas
/ * *
* Configuramos e iniciamos el proveedor de localizaci\'on
* /
private void cmdStartClick-click() throws LocationException {
/ / Establecemos los criterios del proveedor de localizacion
deseado.
Criteria criteria = new Criteriao;
criteria.setCostAllowed(false);
/ / Solicitamos el proveedor de localizaci\'on
LocationProvider provider = LocationProvider.getInstance(criteria
) ;
if (provider == null) {
criteria.setAddressInfoRequired(fa1se);
provider = LocationProvider.getInstance(criteria);
1
Ing. Telmatica UPIITA 153
(
! ( ( ) a b e s s a ~ ~ a b x a ) p u a d d e - s ~ q q
) ( x a u o ~ ? d a 3 x ~ a 2 d n x ~ a ? u 1 ~ 6 u e ~ ~ e ~ e C ) ~ 3 3 ~ 3 (
! ( ( ) a q e l ~ ~ a 6 - x a p r ~ o x d 1 ~ a p ~ ~ o x d ) p a 6 u e q ~ a J e ~ s x a p ~ ~ o x d d ~ ~ q ~
x o p a a ~ o x d
T a p o p e J s a T a p s o 2 e p s o ^ u 0 3 1 n I a s o w e z r T e r 3 T u I / /
S Z I
P Z I
E Z I
Z Z I
I Z 1
O 2 1
6 1 1
8 1 1
L I 1
9 1 1
5 1 1
b l 1
E l 1
2 1 1
1 1 1
0 1 1
m 1
8 0 1
L O 1
9 0 1
S O 1
m 1
E 0 1
U t l
1 0 1
0 0 1
6 6
8 6
L 6
%
S 6
P 6
E 6
7.8 Diferentes Pruebas
this.cmdStartClick-click();
} else if (c == this.cmdExitClick)(
this.crndExitClick();
1
} catch (Exception ex) {
this .append(ex.getMessage ( ) ) ;
1
1
public void locationUpdated(LocationProvider provider, Location
location) {
try
Qualifiedcoordinates coord = location.
getQualifiedCoordinates();
AddressInfo addr = null;
if (coord ! = null) {
this.txtLongitud.setString(String.valueOf(coord.
getlongitude ( ) ) ) ;
this.txtLatitud.setString(String.valueOf(coord.
getlatitude ( ) ) ) ;
addr = location.getAddressInfo0;
1
if (addr ! = null) (
this.txtCalle.setString(addr.getField(Address1nfo.STREET)
Ing. Telmatica UPIITA
this.txt~elocidad.setString(String.valueOf(1ocation.getSpeed
0 ) ) ;
this.lastCoord = coord;
) catch (Exception ex) {
this . append (ex. getMessage ( ) ) ;
/ / Nada
newstate) {
String stateDesc = null;
if (newstate == LocationProvider.AVAILABLE){
stateDesc = "DISPONIBLE";
1 else if (newState == LocationProvider.OUT~OFFSERVICE){
stateDesc = "FUERA DE SERVICIOn;
} else if (newstate == LocationProvider.TEMPORARILYYUNAVAILABLE){
stateDesc = "TEMPORALMENTE FUERA DE SERVICIOn;
1 else {
stateDesc = "DESCONOCIDO';
1
EL cdigo anterior nos da como resultado la emulacin en J2ME con los diferentes campos del
la ubicacin en coordenadas Latitud y Longitud como lo muestra la Figura 7.22
156 IPN Ing. Telmatica
7.8 Diferentes Pruebas
Aplicacin emulada Obtencin de Coordenadas
1 Phone nunba: 123456789 I'
1 1- 177, 1
Figura 7.22: Aplicacin emulada Obtencin de coordenadas
Ing. Telmatica UPIITA 157
Parte VI
Conclusiones
Conclusiones
Durante este proyecto, enfrentamos muchos problemas de tal manera que se tuvo que hacer una
extensa investigacin y con ello pudimos aprender mucho sobre diferentes temas, como lo fue desde
la parte web, la parte de J2ME, Postgis, Quantum Gis que te da un panorama general de todas las
herramientas que se pueden explotar y en la cual fue de gran utilidad para ciertas actividades que
necesitabamos, pero consideramos que el rea ms complicada fue comprender la parte del algoritmo
genetico, y gracias a toda la documentacin recolectada te das cuenta de toda la gama de aplicaciones
en la que esta rea de estudio se encuentra involucrada.
La recoleccin de datos fue complicada al ingresar los nodos uno por uno de forma que se implemen-
tarn aplicaciones para facilitar la adquisicin de stos.
Dentro del algoritmo gentico tuvo muchas complicaciones debido al saber cmo aplicar toda la teora
en una codificacin que nos determine resultados, stos resultados fuerno positivos en los casos ex-
puestos se logra llegar a una distancia minma para todo el recorrido, cumpliendo con el objetivo
de encontrar la distancia mnima del recorrido total, por otra parte, los resultados tuvieron compor-
tamientos sorprendentes ya que se visualiz la toma de retornos para llegar a un punto en especifico,
llegar de un punto a atro utilizando vas alternas que llevaron a una buena generacin de itinerarios.
De alguna u otra manera el implementar algoritmos genticos da cabida a que ms adelante se
implemente para el mismo tema de rutas pero con un mayor nmero de parametros, por ejemplo,
Conclusiones
nmero de semaforos, tiempo, trfico, etc, as como otra aplicaciones de optimizacin, como en la
sealizacion de routers.
Finalmente, gracias a la ayuda de muchas herramientas, aplicaciones, estudio e investigacin se pudo
llevar a cabo el proyecto presente.
Karina Zamudio Alonso
Ing. Telmatica
En el presente proyecto se tuvo que realizar una amplia investigacin en diferentes reas, donde
se entendi la complejidad de las herramientas y teora acerca de estas. Al principio se tena en mente
un proyecto bastante ambicioso, pero se fue aterrizando conforme la marcha de la implementacin.
Uno de los primeros retos a los que nos enfrentamos fue recaudar toda la informacin geogrfica
necesaria del rea de estudio de manera manual, y a pesar de que se utiliz una base de datos de la
delegacin Gustavo A. Madero, esto no minorizo el trabajo de recoleccin, ya que dicha base de datos
solo nos ayudo para corroborar que la informacin recolectada era correcta.
Otro parte que fue una de las ms importantes y difciles fue llevar a cabo el algoritmo evolutivo,
dado que era un tema totalmente desconocido y complejo, sus fundamentos tericos son una parte
complicada de abordar y llevarlo a la prctica. Pero ahora se puede concluir cuales son las ventajas
de un algoritmo evolutivo, no es mejor por s solo a diferencia de otros algoritmos ms conocidos
que sacan rutas, la diferencia radica en que los algoritmos evolutivos hacen uso de otros algoritmos
como Floyd, Dijkstra, para poder realizar sus funciones que son hacer un ordenamiento optimizado
para no hacer recorridos redundantes o innecesarios, una de las primeras condiciones que establece
el algoritmo evolutivo es trabajar en un rea de estudio grande, por que como vaya incrementando el
rea, los resultados se vuelven ms eficientes a diferencia de otros algoritmos.
Por la parte de los dispositivos mviles, recordemos que a pesar de que la tecnologa crece de manera
impresionante incluso para estos dispositivos, seguimos teniendo limitantes de espacio en memo-
ria y ejecucin para algunas tareas, ya que no cuentan con el mismo poder de procesamiento que una
computadora, pero no se duda que en un trabajo a futuro pueda realizarse aplicaciones ms complejas.
Onana Santilln Moncayo
Ing. TelCmatica UPIITA 163
Parte VI1
Bibliografia
Bibliografa
[l ] Ian Sommerfield : Ingeniera de Software. Pearson Addison Wesley, United Kingdom 2004.
[2] Alberk KW Yeung, G. Brent Hall.Spatial Database Systems, Springer.
[3] Martin Fowler. UML Distilled 3rd edition. Pearson Addison Wesley.
[4] Elmasri Navathe, Sistemas de bases de datos, Addison-Wesley Iberoamericana, Segunda edi-
cin.
[5] Dr. Carlos A. Coello Coello: Introduccin a la Computacin Evolutiva (Notas de Curso),
CINVESTAV-IPN, Mayo, 2008.
[6] Zbigniew Michalewicz: Genetic Algorithms + Data Structures = Evolution Programs,Springer,
Third, Revised and extended edition.
[7] Ellis Horowitz, Sartaj Sahni: Fundamentals of computer algorithms, Computer Science Press,
Hardcover, September 1984.
[8] Patricia Jorge Crdenas, Agustn Froufe Quintas, J2ME. Java 2 Micro Edition. Manual de
usuario y tutorial
[ l l ] http://maps.google.com.mx/
[12] http://www.postgresql.org/docs/8.1/
[13] http: //netbeans. org/
[14] http://www.forum.nokia.com//
[15] http : //cede. google. com/
[16] http: / / java. sun.com/
68 IPN Ing. Telmatica

Anda mungkin juga menyukai