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