memoria optimizacionrutastransporte

78
Facultad de Informática U.C.M OPTIMIZACIÓN DE RUTAS DE TRANSPORTE Proyecto de Sistemas Informáticos Realizado por: Andrés Aguado Aranda, Javier Jiménez de Vega Dirigido por: José Jaime Ruz Ortiz Curso 2012/2013

Upload: carlos-soto

Post on 29-Sep-2015

2 views

Category:

Documents


0 download

DESCRIPTION

Memoria OptimizacionRutasTransporte

TRANSCRIPT

  • Facultad de Informtica U.C.M

    OPTIMIZACIN DE RUTAS DE TRANSPORTE

    Proyecto de Sistemas Informticos

    Realizado por: Andrs Aguado Aranda, Javier Jimnez de Vega

    Dirigido por: Jos Jaime Ruz Ortiz

    Curso 2012/2013

  • 2 Facultad de Informtica U.C.M

  • 3 Facultad de Informtica U.C.M

    RESUMEN

    En este proyecto hemos desarrollado una aplicacin de escritorio que genera una ruta de transporte de pasajeros, determinando la mejor forma de realizar el recorrido y tratando de reducir los costes de la empresa de transporte al mnimo. La aplicacin recibe los datos de los domicilios de los pasajeros, los agrupa, en la medida de lo posible, en funcin de ciertos parmetros en paradas mediante algoritmos de Clustering y determina la forma ptima de recogerles y transportarles mediante un algoritmo gentico. Todo esto est implementado ayudndonos del proveedor de mapas online, Google Maps, del que se toman y reflejan datos de mapas reales.

    En las siguientes secciones procederemos a explicar cmo hemos obtenido la ruta ptima para el transporte de los pasajeros e introduciremos los conceptos clave en los que hemos basado el proyecto, necesarios para comprender el funcionamiento de la aplicacin. A continuacin, detallaremos la implementacin de la aplicacin y acabaremos con las conclusiones que hemos extrado, incluyendo posibles ampliaciones del proyecto.

    Palabras clave: Optimizacin, Clustering, Algoritmos Genticos, Servicios Web, Web Mapping.

  • 4 Facultad de Informtica U.C.M

    ABSTRACT

    In this project we have developed a desktop application that manages a passenger route, determining the best way to make the journey and trying to reduce the cost of the carrier, to the minimum. The application receives data from the homes of the passengers, groups them by clustering algorithms in stops, if possible, and determines the optimal way to pick them up and transport them using a genetic algorithm. All of this is implemented using online maps, like Google Maps, which we take online maps.

    In the following sections we explain what is and how a route works. Then we introduce the key concepts on which we based the project, necessary to understand the functioning of the application. Finally, we will explain deeply the application development, ending with the conclusions we have drawn, including possible extensions of the project.

  • 5 Facultad de Informtica U.C.M

    TABLA DE CONTENIDO

    Captulo I: Introduccin....................................................................................................7

    Introduccin .................................................................................................................8

    Presentacin del tema..................................................................................................8

    Objetivo y alcance ......................................................................................................10

    Relacin con los estudios .........................................................................................111

    Captulo II: Conceptos y Estado del arte.........................................................................13

    Introduccin al Captulo .............................................................................................14

    Optimizacin de rutas de transporte .........................................................................14

    Componentes de la gestin de rutas......................................................................15

    Estructuracin de los datos para su optimizacin..................................................16

    Algoritmos de agrupamiento o Clustering .................................................................18

    Tipos de algoritmos de Clustering ..........................................................................18

    Programacin Evolutiva..............................................................................................24

    Algoritmos genticos..............................................................................................25

    Web Mapping.............................................................................................................35

    Google Maps ..........................................................................................................36

    Captulo III: La Aplicacin ...............................................................................................37

    Introduccin al Captulo .............................................................................................38

    Base de datos .............................................................................................................38

    Plantilla de pasajero ...............................................................................................39

    Plantilla Base de Datos ...........................................................................................40

    Ventajas de Microsoft Excel como base de datos ..................................................42

    Algoritmo de Clustering..............................................................................................43

    Algoritmo gentico.....................................................................................................48

    Codificacin de datos en genes ..............................................................................48

    Funcin de Evaluacin............................................................................................49

  • 6 Facultad de Informtica U.C.M

    Funciones de seleccin...........................................................................................50

    Cruce ......................................................................................................................53

    Mutacin ................................................................................................................55

    Elitismo...................................................................................................................55

    Conexin con el proveedor de mapas ........................................................................56

    Resultados de detalles de direcciones....................................................................60

    Captulo IV: Desarrollo....................................................................................................63

    Introduccin al Captulo .............................................................................................64

    Sobre Visual Studio.....................................................................................................64

    Visual Studio 2010 ..................................................................................................65

    Lenguaje C# ................................................................................................................66

    Qu es C#?............................................................................................................66

    Por qu C#?...........................................................................................................66

    .NET Framework .........................................................................................................67

    Abstraccin.............................................................................................................67

    Microsoft Excel ...........................................................................................................68

    Captulo V: Conclusiones ................................................................................................70

    Conclusiones Generales .............................................................................................71

    Gua para el usuario ...................................................................................................71

    Resultados ..................................................................................................................73

    Posibles ampliaciones.................................................................................................75

    Bibliografa .....................................................................................................................77

  • 7 Facultad de Informtica U.C.M

    CAPTULO I: INTRODUCCIN

  • 8 Facultad de Informtica U.C.M

    INTRODUCCIN

    En este primer apartado de la memoria se realiza una descripcin general del tema que abordar el proyecto y los objetivos a cumplir.

    PRESENTACIN DEL TEMA

    El auge de la informtica ha mejorado la calidad de vida de sus usuarios, tanto a gran escala, como el caso de las grandes empresas, como a nivel de usuario particular. Una de las principales tareas para la que se usan los computadores es la optimizacin de recursos para aumentar la eficiencia y el rendimiento de las correspondientes tareas, traducindose en mejoras econmicas a medio plazo. Concretamente, la optimizacin de rutas en medios de transporte es uno de los grandes ahorros que se han conseguido gracias a la utilizacin de estas tcnicas.

    El diseo y optimizacin de rutas es tremendamente ventajoso en cualquier mbito y situacin para cualquier tipo de usuario, en especial para las empresas de transporte cuyas prdidas y ganancias se basan en la distribucin ptima tanto del tiempo, como del combustible, que estn directamente relacionadas con la distancia recorrida. Esto es aplicable a cualquier tipo de vehculo areo, terrestre o martimo.

  • 9 Facultad de Informtica U.C.M

    Ilustracin 1 - GPS

    Una de las funciones que ms ha evolucionado en los ltimos aos en las organizaciones es la de la distribucin. Sin embargo, esta evolucin ha derivado inexorablemente en un incremento de la complejidad de las operaciones de transporte, lo que unido a diversos factores, tales como la necesidad de reducir los costes de produccin, el constante incremento de los precios del transporte o el aumento de los niveles de exigencia en las relaciones cliente-proveedor, han situado a la gestin logstica como un elemento clave dentro de la estrategia de las empresas.

    Un gestor de rutas es una aplicacin informtica que a partir de un conjunto de puntos, entre ellos un punto de destino final prefijado, selecciona un punto inicial y una ruta que recorra los restantes puntos intermedios de manera ptima, es decir, minimizando el tiempo y la distancia de dicha ruta.

    Un factor fundamental para la optimizacin de rutas son los algoritmos de agrupamiento o Clustering, que posteriormente explicaremos su funcionamiento y aplicacin a este proyecto. El anlisis de clsteres es una coleccin de mtodos

  • 10 Facultad de Informtica U.C.M

    estadsticos que permiten agrupar casos sobre los cuales se miden diferentes variables o caractersticas. De este modo podremos formar grupos de puntos prximos y fijar una parada intermedia, reduciendo as el tiempo y el coste de combustible de la ruta.

    OBJETIVO Y ALCANCE

    El proyecto consiste en la elaboracin de una aplicacin de gestin de rutas que permita elaborar, mediante algoritmos de Clustering y genticos, un recorrido ptimo de recogida de trabajadores de una empresa.

    Como datos de entrada de la aplicacin tenemos las ubicaciones de las viviendas de los pasajeros de la ruta. Los empleados rellenarn una plantilla con la informacin correspondiente y se la enviarn al administrador. ste colocar los archivos en el directorio oportuno para que la aplicacin incorpore a la base de datos el contenido de estas plantillas.

    El programa agrupar las viviendas en un conjunto de paradas intermedias de tal manera que no se supere una distancia mxima entre las viviendas de la misma parada. Para ello se utilizarn algoritmos de Clustering. Despus recorrer dichas paradas de forma ptima. El orden ser calculado mediante un algoritmo gentico. Al acabar de procesar toda la informacin, devolver un mapa donde se mostrar la ruta a seguir por el conductor del transporte contratado por la empresa.

    Ilustracin 2 - Esquema circuito de la aplicacin

    Recibe las direcciones

    de los pasajeros

    Agrupa los pasajeros en

    paradas

    Calcula la forma ophma de recorrer las paradas

    Muestra la ruta y sus datos en el

    mapa

  • 11 Facultad de Informtica U.C.M

    Este es un ejemplo del resultado que mostrar la aplicacin:

    Ilustracin 3 - Ejemplo muestra de una ruta

  • 12 Facultad de Informtica U.C.M

    RELACIN CON LOS ESTUDIOS

    Para la realizacin de este proyecto hemos utilizado diversos conceptos aprendidos a lo largo de las diferentes asignaturas cursadas durante la carrera. Tambin hemos encontrado tiles conceptos externos a la misma, adquiridos a travs de la experiencia profesional y formacin complementaria a la Ingeniera Informtica, como cursos, seminarios, etc...

    Las asignaturas estudiadas en la facultad que nos han resultado ms tiles para la planificacin y el desarrollo de este proyecto han sido las siguientes:

    Ingeniera del Software Esta asignatura ha resultado fundamental en la realizacin del proyecto durante todas sus fases: elaboracin de requisitos, diseo, implementacin y gestin. Gracias a los conocimientos de elaboracin de documentos y desarrollo estructurado, hemos sido capaces de realizar el proyecto de una forma ms eficiente.

    Programacin Evolutiva Debido a que la forma de optimizar las rutas se ha realizado mediante algoritmos genticos, el estudio de esta asignatura ha sido clave.

    Metodologa y Tecnologa de la Programacin Esta asignatura nos ha ayudado a mejorar la eficiencia de los algoritmos comunes utilizados para el proyecto y para el diseo del algoritmo de Clustering que permite el agrupamiento de los pasajeros en paradas cercanas. Adems, hemos utilizado el algoritmo del viajante para comparar resultados con nuestro algoritmo gentico.

  • 13 Facultad de Informtica U.C.M

    CAPTULO II: CONCEPTOS Y ESTADO DEL ARTE

  • 14 Facultad de Informtica U.C.M

    INTRODUCCIN AL CAPTULO

    En este captulo se har una breve descripcin de los conceptos que se emplean en este proyecto para el correcto entendimiento de la aplicacin. Explicaremos el concepto de optimizacin de rutas de transporte y sus diferentes puntos a considerar.

    Posteriormente explicaremos cmo hemos resuelto el problema de agrupacin mediante Clustering, donde definiremos en qu consiste este concepto y cmo lo hemos aplicado.

    Despus explicaremos en profundidad qu es un Algoritmo Gentico y su papel en la aplicacin, ya que es la piedra angular de la optimacin en nuestro proyecto. Para ello comentaremos los diferentes conceptos que se usan en la aplicacin y cmo los hemos utilizado para resolver el problema de la optimizacin de rutas reales.

    Finalmente abordaremos el tema del Web Mapping, o cartografa en la web, de la que nos hemos servido para representar los mapas y obtener los datos sobre las distancias y las rutas de forma real.

    Este apartado refleja los conceptos que hemos aprendido durante la investigacin previa al desarrollo del proyecto.

    OPTIMIZACIN DE RUTAS DE TRANSPORTE

    Las rutas de transporte de pasajeros consisten en la recogida de los clientes en puntos prefijados, que llamamos paradas, distribuidas geogrficamente a lo largo de un territorio y donde todos estos clientes tienen un punto de destino comn prefijado.

    La ruta depende de dos parmetros bsicamente: el espacio y el tiempo. Con el objetivo de minimizar estos parmetros calcularemos la forma de recorrer las distintas paradas de la ruta.

    La eficiencia de estas rutas depende en gran medida de la distribucin geogrfica de las paradas y su distancia al punto de destino. La finalidad de estas rutas de cara a la empresa es recoger a todos los pasajeros posibles con el menor coste. Por ello cuanta menos distancia recorra el vehculo, menos combustible gastar y ms barato ser cada viaje. Por ello, el parmetro clave en estas optimizaciones es la distancia recorrida.

  • 15 Facultad de Informtica U.C.M

    En la vida real estas distancias estn sujetas a accidentes geogrficos y a organizaciones urbansticas de las diferentes localidades as como a los cambios en la ruta, que hacen que un planteamiento terico en lnea recta sea totalmente irreal. Por ello todos los parmetros del sistema deben ser contrastados con un proveedor de mapas online que devuelva datos reales del recorrido. De esta forma se asegura la eficiencia real del recorrido que llevar a cabo el transporte.

    El tiempo es otro de los parmetros fundamentales de la optimizacin de rutas, ya que los pasajeros deben llegar a una hora fijada previamente con el cliente. Este tiempo que tarda en recorrer la distancia de la ruta ser inherentemente variable, debido a las numerosas circunstancias que hacen que el trfico que circula por las vas aumente o disminuya en funcin del horario de la ruta. Aunque algunos proveedores de mapas online analizan el trfico y lo calculan en funcin del momento, esto no es aplicable a nuestro proyecto ya que el recorrido debe ser el mejor a esa hora prefijada, de forma general y aplicable a todos los das laborables. Por lo tanto, la ruta debe tener un margen de tiempo mayor al calculado en la optimizacin de la propia ruta, para hacer frente a distintas eventualidades a la hora de efectuar el recorrido.

    Definiremos ahora las partes que componen una ruta de transporte.

    COMPONENTES DE LA GESTIN DE RUTAS

    Para gestionar adecuadamente una ruta, desde la captura de informacin de las viviendas de los pasajeros hasta la obtencin de la ruta ptima, se deben tener en cuenta los siguientes componentes:

    Pasajeros

    Son empleados de la empresa que contrata el servicio de transporte. Envan los parmetros de localizacin (direccin de la vivienda) y turno de trabajo, que son esenciales para la agrupacin en paradas. Los pasajeros recibirn un punto y una hora de recogida en funcin de su posicin en la ruta.

    Paradas

    Las paradas son localizaciones fsicas donde se recogen a los pasajeros. Cada parada puede tener varios pasajeros asociados. Cada una de las paradas que se creen deber estar situada en un punto medio entre las viviendas de todos los pasajeros asociados a esta y en un punto con capacidad para que el vehculo de transporte efecte la recogida de pasajeros.

  • 16 Facultad de Informtica U.C.M

    Transporte

    El transporte puede ser cualquier vehculo con capacidad para albergar a todos los pasajeros que componen la ruta. Deber recorrer las diferentes paradas en el orden establecido y tratando de mantener el tiempo estipulado tanto de llegada al destino, como de recogida de pasajeros. El conductor del transporte recibir los detalles de la ruta, en los que se incluye el mapa con las paradas distribuidas y los horarios estipulados.

    Vas de la ruta

    Indica por donde circular el transporte. En funcin del tipo de va (autova, va urbana, etc.) depender la velocidad que pueda adquirir el transporte, lo cual afecta directamente al tiempo en el que se pueda completar la ruta.

    ESTRUCTURACIN DE LOS DATOS PARA SU OPTIMIZACIN

    Como ya hemos comentado los parmetros principales de nuestro proyecto son la distancia y el tiempo. Estos regirn tanto las funciones de agrupacin o Clustering como el algoritmo gentico. El Clustering slo depender de la distancia de las paradas entre s, mientras que el algoritmo gentico est determinado por las distancias y por el tiempo que tarda el transporte en recorrerlas. Es importante definir las variables que debe aportar cada componente del gestor de rutas, as como las que debe recibir para poder participar en la optimizacin. Estas son:

    Pasajeros

    Parmetros de entrada:

    Direccin de la vivienda. Turno de trabajo

    Variables de salida:

    Parada asignada Hora de recogida

  • 17 Facultad de Informtica U.C.M

    Restricciones:

    El nmero de pasajeros no debe exceder las plazas del transporte Todas las direcciones deben de ser de la misma localidad

    Paradas

    Parmetros de entrada:

    Direccin de la vivienda. El turno de trabajo de cada pasajero.

    Variables de salida:

    Localizacin de cada una de las paradas. Hora de recogida de los pasajeros por la ruta.

    Restricciones:

    Las paradas deben estar en lugares aptos para efectuar la recogida. La distancia mxima para agrupar un pasajero en una parada no ser

    mayor a la estipulada por el administrador.

    Transporte

    Parmetros de entrada:

    Localizacin de cada una de las paradas. Tiempo de llegada. Capacidad mxima del transporte

    Variable de salida:

    Distancia a recorrer Tiempo total en realizar la ruta

    Cuando se hayan definido los parmetros de entradas de los pasajeros, el sistema ir calculando progresivamente las variables de salida utilizando los algoritmos de Clustering y gentico.

  • 18 Facultad de Informtica U.C.M

    ALGORITMOS DE AGRUPAMIENTO O CLUSTERING

    Los mtodos de agrupamiento o Clustering constituyen un tipo de aprendizaje por descubrimiento muy similar a la induccin. En el aprendizaje inductivo, un programa aprende a clasificar objetos basndose en etiquetados proporcionados por un profesor (aprendizaje supervisado). En los mtodos de agrupamiento no se suministran los datos etiquetados: el programa debe descubrir por s mismo las clases naturales existentes.

    Las funciones de densidad de probabilidad suelen tener una moda o un mximo en una regin; es decir, las observaciones tienden a agruparse en torno a una regin del espacio de patrones cercana a la moda. Las tcnicas de agrupamiento analizan el conjunto de observaciones disponibles para determinar la tendencia de los patrones a agruparse.

    Estas tcnicas permiten realizar una clasificacin asignando cada observacin a un agrupamiento (clster), de forma que cada agrupamiento sea ms o menos homogneo y diferenciable de los dems.

    Los agrupamientos naturales obtenidos mediante una tcnica de agrupamiento mediante similitud resultan muy tiles a la hora de construir clasificadores cuando no estn bien definidas las clases (no existe un conocimiento suficiente de las clases en que se pueden distribuir las observaciones), cuando se desea analiza un gran conjunto de datos (divide y vencers) o, simplemente, cuando existiendo un conocimiento completo de las clases se desea comprobar la validez del entrenamiento realizado y del conjunto de variables escogido.

    Los mtodos de agrupamiento asocian un patrn a un agrupamiento siguiendo algn criterio de similitud entre individuos. Tales medidas de similaridad deben ser aplicables entre pares de individuos, entre un individuo y un agrupamiento y, finalmente, entre pares de agrupamientos. Generalmente, como medidas de agrupacin se emplean mtricas de distancia. Algunas de las ms habituales son la distancia eucldea, simple, normalizada o ponderada o la distancia de Mahalanobis.

    TIPOS DE ALGORITMOS DE CLUSTERING

    Los agrupamientos detectados dependen del algoritmo empleado, del valor dado a sus parmetros, de los datos utilizados y de la medida de similitud adoptada.

    Se han propuesto cientos de algoritmos de agrupamiento ms o menos especficos.

  • 19 Facultad de Informtica U.C.M

    Segn se use o no una funcin criterio se distinguen los algoritmos directos o constructivos (basados en aproximaciones heursticas) de los algoritmos indirectos o por optimizacin.

    La estructura general de un algoritmo iterativo de agrupamiento directo es la siguiente:

    Ilustracin 4 - Algoritmo de agrupamiento iterativo

    La exposicin de los algoritmos de Clustering concluir con un mtodo basado en grafos que utiliza la matriz de similaridad para construir los distintos agrupamientos. ste mtodo es muy fcil de entender aunque, como sucede con todos los mtodos basados en grafos, consume demasiados recursos.

  • 20 Facultad de Informtica U.C.M

    Ilustracin 5 - Clculos de distancias entre dos puntos

    El algoritmo que hemos diseado para esta aplicacin est basado en varios de los diferentes tipos de algoritmos de agrupamiento que existen.

    Mtodo adaptativo

    El mtodo adaptativo es un algoritmo heurstico de agrupamiento que se puede utilizar cuando no se conoce de antemano el nmero de clases del problema. Entre sus ventajas se encuentran su simplicidad y eficiencia. Adems, las observaciones se procesan secuencialmente.

    Por desgracia, su comportamiento est sesgado por el orden de presentacin de los patrones y presupone agrupamientos compactos separados claramente de los dems.

    El primer agrupamiento se escoge arbitrariamente. Se asigna un patrn a un clster si la distancia del patrn al centro del clster no supera un umbral. En caso contrario, se crea un nuevo agrupamiento.

    Este algoritmo incluye una clase de rechazo a la hora de clasificar observaciones. Los patrones se asignan por la regla de mnima distancia. Algunos patrones no son clasificados si el cuadrado de la distancia al agrupamiento ms cercano es mayor que el umbral.

  • 21 Facultad de Informtica U.C.M

    Ilustracin 6 - Algoritmo de agrupamiento adaptativo

    Algoritmo de los k medias

    El algoritmo de las K medias(o K-means) es probablemente el algoritmo de agrupamiento ms conocido. Es un mtodo de agrupamiento heurstico con nmero de clases conocido (K). El algoritmo est basado en la minimizacin de la distancia interna (la suma de las distancias de los patrones asignados a un agrupamiento al centro de dicho agrupamiento). De hecho, este algoritmo minimiza la suma de las distancias al cuadrado de cada patrn al centro de su agrupamiento.

    El algoritmo es sencillo y eficiente. Adems, procesa los patrones secuencialmente (por lo que requiere un almacenamiento mnimo). Sin embargo, est sesgado por el orden de presentacin de los patrones (los primeros patrones determinan la configuracin inicial de los agrupamientos) y su comportamiento depende enormemente del parmetro K.

  • 22 Facultad de Informtica U.C.M

    Ilustracin 7 - Algoritmo de las K medias

    Mtodos basados en grafos: Matriz de similaridad

    El principal inconveniente de la mayor parte de los algoritmos heursticos es su dependencia respecto al orden en que se le presentan los patrones. Los mtodos basados en grafos, igual que los algoritmos GRASP, intentan evitar este hecho pero su coste computacional los hace inaplicables en muchas ocasiones.

    La matriz de similaridad se emplea para mostrar el grado de similaridad entre un conjunto de patrones. Se construye una matriz S simtrica de tamao NxN, siendo N el nmero de patrones del conjunto de entrenamiento. S[i,j] toma el valor 1 si la distancia entre los patrones i y j queda por debajo de un umbral preestablecido. En caso contrario, S[i,j] vale 0. Por lo tanto, con un bit por celda podemos almacenar la matriz de similaridad.

  • 23 Facultad de Informtica U.C.M

    Ilustracin 8 - Algoritmo de agrupamiento por matriz de similaridad

  • 24 Facultad de Informtica U.C.M

    PROGRAMACIN EVOLUTIVA

    Muchos problemas de optimizacin que aparecen en los mbitos de las ingenieras son muy difciles de solucionar por medio de tcnicas tradicionales, por lo que a menudo se aplican algoritmos evolutivos, inspirados en la naturaleza, que recogen un conjunto de modelos basados en la evolucin de los seres vivos.

    El inicio de la utilizacin de las estrategias evolutivas en la solucin de este tipo de problemas data del ao 1960 cuando John Holland plante la posibilidad de incorporar los mecanismos naturales de seleccin y supervivencia a la resolucin de problemas de Inteligencia Artificial (Adaptation in Natural and Artificial Systems). Esta investigacin fue fundamentalmente acadmica, siendo su realizacin prctica en aquella poca muy difcil. La simulacin de procesos de evolucin natural de las especies da como resultado una tcnica de optimizacin estocstica que posteriormente fue llamada algoritmos evolutivos, y que fueron enmarcados dentro de las tcnicas no convencionales de optimizacin para problemas del mundo real. A partir de la creacin de estas estrategias evolutivas aparecieron otras vas de investigacin como son:

    Algoritmos Genticos (Goldberg), Programacin Gentica (Koza), Programacin Evolutiva (Fogel), y Estrategias de Evolucin (Rechenberg/Schwefel), en donde la estrategia de evolucin ms conocida hoy en da son los algoritmos genticos.

    Los algoritmos genticos constituyen una tcnica poderosa de bsqueda y optimizacin con un comportamiento altamente paralelo, inspirado en el principio darviniano de seleccin natural y reproduccin gentica. En este principio de seleccin de los individuos ms aptos, tienen mayor longevidad y por tanto mayor probabilidad de reproduccin. Los individuos descendientes de estos individuos tienen una mayor posibilidad de transmitir sus cdigos genticos a las prximas generaciones.

    Las aplicaciones de los algoritmos genticos han sido muy conocidas en reas como diseo de circuitos, clculo de estrategias de mercado, reconocimiento de patrones, acstica, ingeniera aeroespacial, astronoma y astrofsica, qumica, juegos, programacin y secuenciacin de operaciones, contabilidad lineal de procesos, programacin de rutas, interpolacin de superficies, tecnologa de grupos, facilidad en diseo y localizacin, transporte de materiales y muchos otros problemas que involucran de alguna manera procesos de optimizacin.

  • 25 Facultad de Informtica U.C.M

    ALGORITMOS GENTICOS

    Los algoritmos genticos son estrategias de bsqueda estocstica basados en el mecanismo de seleccin natural y en algunos casos se involucran aspectos de gentica natural, imitando a la evolucin biolgica como estrategia para resolver problemas Los algoritmos genticos difieren de las estrategias de bsqueda convencionales en que estos (los AGs) trabajan sobre un conjunto de potenciales soluciones, llamado poblacin. Esta poblacin est compuesta de una serie de soluciones llamadas individuos y un individuo est conformado por una serie de posiciones que representan cada una de las variables involucradas en los procesos de optimizacin y que son llamados cromosomas. Estos cromosomas estn compuestos por una cadena de smbolos que en muchos casos esta presentada en nmeros binarios. En un algoritmo gentico cada individuo est definido como una estructura de datos que representa una posible solucin del espacio de bsqueda del problema.

    Las estrategias de evolucin trabajan sobre los individuos, que representan las soluciones del problema, por lo que estos evolucionan a travs de generaciones. Dentro de la poblacin cada individuo es diferenciado de acuerdo con su valor de aptitud, que es obtenido usando algunas medidas de acuerdo con el problema a resolver. Para la obtencin de las prximas generaciones se crean nuevos individuos, llamados hijos, utilizando dos estrategias de evolucin bsicas como son el operador de cruce y el de mutacin (empleadas generalmente de forma aleatoria).

    Una nueva generacin es obtenida mediante la utilizacin del operador de seleccin, que bsicamente se realiza sobre los valores de aptitud de los individuos, sobre la poblacin obtenida tras el cruce y la mutacin. El operador de seleccin debe mantener constante el nmero de individuos de la poblacin, y a travs de las generaciones el individuo con mayor valor de aptitud tiene mayores posibilidades de ser seleccionado en la siguiente generacin. Entre el conjunto de soluciones candidatas generadas aleatoriamente muchas no funcionarn en absoluto y sern eliminadas; sin embargo, por puro azar, unas pocas pueden resultar prometedoras y pueden mostrar actividad, aunque slo sea actividad dbil e imperfecta, hacia la solucin del problema. Estas candidatas prometedoras se conservan y se les permite reproducirse. Se realizan mltiples copias de ellas, pero las copias no son perfectas; se introducen cambios aleatorios durante el proceso de copia. Esta descendencia prosigue con la siguiente generacin, formando un nuevo acervo de soluciones candidatas que son nuevamente sometidas a una ronda de evaluacin de aptitud. Las

  • 26 Facultad de Informtica U.C.M

    candidatas que han empeorado o no han mejorado con los cambios en su cdigo son eliminadas de nuevo; pero, de nuevo por puro azar, las variaciones aleatorias introducidas en la poblacin pueden haber mejorado a algunos individuos, convirtindolos en mejores soluciones del problema, ms completas o ms eficientes.

    De nuevo, se seleccionan y copian estos individuos vencedores hacia la siguiente generacin con cambios aleatorios, y el proceso se repite. Las expectativas son que la aptitud media de la poblacin se incrementar en cada ronda y, por tanto, repitiendo este proceso cientos o miles de rondas, pueden descubrirse soluciones muy buenas del problema; en otras palabras, tras varias iteraciones el algoritmo converge al individuo con mejor valor de aptitud, el cual representara el ptimo o subptimo del problema.

    Ilustracin 9 - Diagrama de flujo de algoritmo gentico

  • 27 Facultad de Informtica U.C.M

    Vocabulario en Algoritmos Genticos

    Los algoritmos genticos toman para su definicin terminologa utilizada en Gentica Natural y Ciencia Computacional, por lo que la literatura especfica es una combinacin entre los trminos naturales y los artificiales, por esto se debe tener en cuenta:

    La Estructura de codificacin con la cual se construyen las soluciones para el problema se llaman cromosomas. Uno o ms cromosomas pueden ser requeridos para conformar una poblacin.

    El conjunto completo de cromosomas se llama genotipo y un individuo en particular, un organismo resultante, se llama fenotipo.

    Cada cromosoma contiene una serie de valores individuales llamados genes. Cada gen contiene informacin valiosa de una variable en particular y su

    ubicacin dentro del individuo se conoce como loco. Los diferentes valores de un gen son llamados alelos.

    Componentes de un Algoritmo Gentico

    Los algoritmos genticos se pueden caracterizar a travs de los siguientes componentes:

    Problema a optimizar:

    Los algoritmos genticos tienen su campo de aplicacin importante en problemas de optimizacin complejos, donde se tiene diferentes parmetros o conjuntos de variables que deben ser combinadas para su solucin. Tambin se enmarcan en este campo problemas con muchas restricciones y problemas con espacios de bsqueda muy grandes. Este tipo de optimizacin difiere en muchos aspectos de los procesos convencionales de optimizacin, ya que los algoritmos genticos:

    Trabajan sobre un conjunto codificado de soluciones, no sobre las soluciones mismas.

    Trabajan sobre un conjunto de soluciones, no sobre una solucin nica. Utilizan informacin simple para determinar la aptitud de los individuos,

    dejando de lado los procesos de derivacin u otra informacin adicional. Usan procesos de transicin probabilstica para la bsqueda de la solucin,

    no reglas determinsticas.

    Gracias a estas caractersticas, los algoritmos genticos no requieren informacin matemtica adicional sobre optimizacin, por lo que pueden tomar otro tipo de funciones objetivo y todo tipo de restricciones (lineales y no lineales) definidas sobre espacios discretos, continuos o espacios de bsqueda combinados.

  • 28 Facultad de Informtica U.C.M

    La robustez de los operadores de evolucin hace muy efectivos a los algoritmos genticos en procesos de bsqueda de soluciones globales. A diferencia de las soluciones obtenidas con un algoritmo gentico, las bsquedas tradicionales operan sobre una solucin particular del problema, buscando soluciones ptimas en las cercanas de esta solucin particular, en muchos casos no encontrando soluciones globales para el problema. Por ello, los algoritmos genticos proveen una gran flexibilidad para ser combinados con heursticas especficas para la solucin de un problema en particular.

    Representacin para la solucin del problema:

    Para la solucin de un problema en particular es importante definir una estructura del cromosoma de acuerdo con el espacio de bsqueda. En el caso de los algoritmos genticos la representacin ms utilizada es la representacin binaria, debido a su facilidad de manipulacin por los operadores genticos, su fcil transformacin en nmeros enteros o reales, adems de la facilidad que da para la demostracin de teoremas.

    La codificacin de nmeros reales en cadenas de nmeros binarios se debe hacer teniendo en cuenta el siguiente proceso y la precisin requerida para la solucin del problema.

    Decodificacin del cromosoma:

    Para determinar el nmero real que la cadena binaria de caracteres representa. Es importante tener en cuenta que la cadena no representa un nmero real, sino que este nmero binario etiqueta un nmero dentro del intervalo inicialmente fijado.

    Evaluacin de un individuo:

    Nos muestra el valor de aptitud de cada uno de los individuos. Esta aptitud viene dada por una funcin que es la unin entre el mundo natural y el problema a resolver matemticamente. Esta funcin de aptitud es particular para cada problema particular a resolver y representa para un algoritmo gentico lo que el medio ambiente representa para los humanos.

  • 29 Facultad de Informtica U.C.M

    Operadores Evolutivos: Seleccin

    Un algoritmo gentico puede utilizar muchas tcnicas diferentes para seleccionar a los individuos que deben copiarse hacia la siguiente generacin, pero abajo se listan algunos de los ms comunes. Algunos de estos mtodos son mutuamente exclusivos, pero otros pueden utilizarse en combinacin, algo que se hace a menudo.

    Las diferentes variantes en la operacin de seleccin son:

    Seleccin elitista: se garantiza la seleccin de los miembros ms aptos de cada generacin. (La mayora de los AGs no utilizan elitismo puro, sino que usan una forma modificada por la que el individuo mejor, o algunos de los mejores, son copiados hacia la siguiente generacin en caso de que no surja nada mejor).

    Seleccin proporcional a la aptitud: los individuos ms aptos tienen ms probabilidad de ser seleccionados, pero no la certeza.

    Seleccin por rueda de ruleta: una forma de seleccin proporcional a la aptitud en la que la probabilidad de que un individuo sea seleccionado es proporcional a la diferencia entre su aptitud y la de sus competidores. (Conceptualmente, esto puede representarse como un juego de ruleta: cada individuo obtiene una seccin de la ruleta, pero los ms aptos obtienen secciones mayores que las de los menos aptos. Luego la ruleta se hace girar, y en cada vez se elige al individuo que posea la seccin en la que se pare la ruleta).

    Seleccin escalada: al incrementarse la aptitud media de la poblacin, la fuerza de la presin selectiva tambin aumenta y la funcin de aptitud se hace ms discriminadora. Este mtodo puede ser til para seleccionar ms tarde, cuando todos los individuos tengan una aptitud relativamente alta y slo les distingan pequeas diferencias en la aptitud.

    Seleccin por torneo: se eligen subgrupos de individuos de la poblacin, y los miembros de cada subgrupo compiten entre ellos. Slo se elige a un individuo de cada subgrupo para la reproduccin.

    Seleccin por rango: a cada individuo de la poblacin se le asigna un rango numrico basado en su aptitud, y la seleccin se basa en este ranking, en lugar de las diferencias absolutas en aptitud. La ventaja de este mtodo es que puede evitar que individuos muy aptos ganen dominancia al principio a expensas de los menos aptos, lo que

  • 30 Facultad de Informtica U.C.M

    reducira la diversidad gentica de la poblacin y podra obstaculizar la bsqueda de una solucin aceptable.

    Seleccin generacional: la descendencia de los individuos seleccionados en cada generacin se convierte en toda la siguiente generacin. No se conservan individuos entre las generaciones.

    Seleccin por estado estacionario: la descendencia de los individuos seleccionados en cada generacin vuelve al acervo gentico preexistente, reemplazando a algunos de los miembros menos aptos de la siguiente generacin. Se conservan algunos individuos entre generaciones.

    Seleccin jerrquica: los individuos atraviesan mltiples rondas de seleccin en cada generacin. Las evaluaciones de los primeros niveles son ms rpidas y menos discriminatorias, mientras que los que sobreviven hasta niveles ms altos son evaluados ms rigurosamente. La ventaja de este mtodo es que reduce el tiempo total de clculo al utilizar una evaluacin ms rpida y menos selectiva para eliminar a la mayora de los individuos que se muestran poco o nada prometedores, y sometiendo a una evaluacin de aptitud ms rigurosa y computacionalmente ms costosa slo a los que sobreviven a esta prueba inicial.

    Operadores Genticos: Cruce y Mutacin

    Una vez que la seleccin ha elegido a los individuos aptos, stos deben ser alterados aleatoriamente con la esperanza de mejorar su aptitud para la siguiente generacin.

    Existen dos estrategias bsicas para llevar esto a cabo. La primera y ms sencilla se llama mutacin. Al igual que una mutacin en los seres vivos cambia un gen por otro, una mutacin en un algoritmo gentico tambin causa pequeas alteraciones en puntos concretos del cdigo de un individuo.

    El segundo mtodo se llama cruce, e implica elegir a dos individuos para que intercambien segmentos de su cdigo, produciendo una descendencia artificial cuyos individuos son combinaciones de sus padres. Este proceso pretende simular el proceso anlogo de la recombinacin que se da en los cromosomas durante la reproduccin sexual. Las formas comunes de cruzamiento incluyen al cruzamiento de un punto, en el que se establece un punto de intercambio en un lugar aleatorio del genoma de los dos individuos, y uno de los individuos contribuye todo su cdigo anterior a ese punto y el otro individuo contribuye todo su cdigo a partir de ese punto para producir una descendencia, y al cruzamiento uniforme, en el que el valor de una posicin dada en el genoma de la descendencia corresponde al valor en esa posicin

  • 31 Facultad de Informtica U.C.M

    del genoma de uno de los padres o al valor en esa posicin del genoma del otro padre, elegido con un 50% de probabilidad.

    Los operadores genticos en este caso son operadores con memoria, guardando en cada iteracin los cdigos genticos de los mejores individuos a travs de las generaciones. Los procesos de evolucin darviniana generalmente son procesos mimticos a travs de las generaciones.

    Ventajas de los Algoritmos genticos

    El primer y ms importante punto es que los algoritmos genticos son intrnsecamente paralelos. La mayora de los otros algoritmos son en serie y slo pueden explorar el espacio de soluciones hacia una solucin en una direccin al mismo tiempo, y si la solucin que descubren resulta subptima, no se puede hacer otra cosa que abandonar todo el trabajo hecho y empezar de nuevo. Sin embargo, ya que los AGs tienen descendencia mltiple, pueden explorar el espacio de soluciones en mltiples direcciones a la vez. Si un camino resulta ser un callejn sin salida, pueden eliminarlo fcilmente y continuar el trabajo en avenidas ms prometedoras, dndoles una mayor probabilidad en cada ejecucin de encontrar la solucin. Otra ventaja del paralelismo es que, al evaluar la aptitud de una cadena particular, un algoritmo gentico sondea al mismo tiempo cada uno de los espacios a los que pertenece dicha cadena. Tras muchas evaluaciones, ira obteniendo un valor cada vez ms preciso de la aptitud media de cada uno de estos espacios, cada uno de los cuales contiene muchos miembros. Por tanto, un AG que evale explcitamente un nmero pequeo de individuos est evaluando implcitamente un grupo de individuos mucho ms grande. De la misma manera, el AG puede dirigirse hacia el espacio con los individuos ms aptos y encontrar el mejor de ese grupo. En el contexto de los algoritmos evolutivos, esto se conoce como teorema del esquema, y es la ventaja principal de los AGs sobre otros mtodos de resolucin de problemas.

    Debido al paralelismo que les permite evaluar implcitamente muchos esquemas a la vez, los algoritmos genticos funcionan particularmente bien resolviendo problemas cuyo espacio de soluciones potenciales es realmente grande, demasiado vasto para hacer una bsqueda exhaustiva en un tiempo razonable. La mayora de los problemas que caen en esta categora se conocen como no lineales. En un problema lineal, la aptitud de cada componente es independiente, por lo que cualquier mejora en alguna parte dar como resultado una mejora en el sistema completo. No es necesario decir que hay pocos problemas como ste en la vida real. La no linealidad es la norma, donde cambiar un componente puede tener efectos en cadena en todo el sistema, y donde cambios mltiples que, individualmente, son perjudiciales, en combinacin

  • 32 Facultad de Informtica U.C.M

    pueden conducir hacia grandes mejoras en la aptitud. La no linealidad reduce una explosin combinatoria en el nmero de posibilidades. El paralelismo implcito de los AGs les permite superar incluso este enorme nmero de posibilidades, y encontrar con xito resultados ptimos o muy buenos en un corto periodo de tiempo, tras muestrear directamente slo regiones pequeas del vasto paisaje adaptativo.

    Otra ventaja notable de los algoritmos genticos es que se desenvuelven bien en problemas con un paisaje adaptativo complejo: aqullos en los que la funcin de aptitud es discontinua, ruidosa, cambia con el tiempo, o tiene muchos ptimos locales. La mayora de los problemas prcticos tienen un espacio de soluciones enorme, imposible de explorar exhaustivamente; el reto se convierte entonces en cmo evitar los ptimos locales, es decir, las soluciones que son mejores que todas las que son similares a ella, pero que no son mejores que otras soluciones distintas situadas en algn otro lugar del espacio de soluciones. Muchos algoritmos de bsqueda pueden quedar atrapados en los ptimos locales. Los algoritmos evolutivos, por otro lado, han demostrado su efectividad al escapar de los ptimos locales y descubrir el ptimo global incluso en paisajes adaptativos muy escabrosos y complejos. Los cuatro componentes principales de los AGs -paralelismo, seleccin, mutacin y cruzamiento- trabajan juntos para conseguir esto.

    Otra rea en el que destacan los algoritmos genticos es su habilidad para manipular muchos parmetros simultneamente. Muchos problemas de la vida real no pueden definirse en trminos de un nico valor que hay que minimizar o maximizar, sino que deben expresarse en trminos de mltiples objetivos, a menudo involucrando contrapartidas: uno slo puede mejorar a expensas de otro. Los AGs son muy buenos resolviendo estos problemas: en particular, su uso del paralelismo les permite producir mltiples soluciones, igualmente buenas, al mismo problema, donde posiblemente una solucin candidata optimiza un parmetro y otra candidata optimiza uno distinto, y luego un supervisor humano puede seleccionar una de esas candidatas para su utilizacin. Si una solucin particular a un problema con mltiples objetivos optimiza un parmetro hasta el punto en el que ese parmetro no puede mejorarse ms sin causar una correspondiente prdida de calidad en algn otro parmetro, esa solucin se llama ptimo paretiano o no dominada.

    Finalmente, una de las cualidades de los algoritmos genticos que, a primera vista, puede parecer un desastre, resulta ser una de sus ventajas: a saber, los AGs no saben nada de los problemas que deben resolver. En lugar de utilizar informacin especfica conocida a priori para guiar cada paso y realizar cambios guiados expresamente hacia la mejora, los AGs realizan cambios aleatorios en sus soluciones candidatas y luego utilizan la funcin de aptitud para determinar si esos cambios producen una mejora.

  • 33 Facultad de Informtica U.C.M

    Como sus decisiones estn basadas en la aleatoriedad, todos los caminos de bsqueda posibles estn abiertos tericamente a un AG; en contraste, cualquier estrategia de resolucin de problemas que dependa de un conocimiento previo, debe inevitablemente comenzar descartando muchos caminos a priori, perdiendo as cualquier solucin novedosa que pueda existir. Los AGs, al carecer de ideas preconcebidas basadas en creencias establecidas sobre cmo deben hacerse las cosas o sobre lo que de ninguna manera podra funcionar, los AGs no tienen este problema. De manera similar, cualquier tcnica que dependa de conocimiento previo fracasar cuando no est disponible tal conocimiento, pero, de nuevo, los AGs no se ven afectados negativamente por la ignorancia. Mediante sus componentes de paralelismo, cruzamiento y mutacin, pueden viajar extensamente por el paisaje adaptativo, explorando regiones que algoritmos producidos con inteligencia podran no haber tenido en cuenta, y revelando potencialmente soluciones asombrosas y creativas.

    Limitaciones de los Algoritmos Genticos

    Aunque los algoritmos genticos han demostrado su eficiencia y potencia como estrategia de resolucin de problemas, no son la panacea. Los AGs tienen ciertas limitaciones; sin embargo, se demostrar que todas ellas pueden superarse y que ninguna de ellas afecta a la validez de la evolucin biolgica.

    La primera y ms importante consideracin al crear un algoritmo gentico es definir una representacin del problema. El lenguaje utilizado para especificar soluciones candidatas debe ser robusto; es decir, debe ser capaz de tolerar cambios aleatorios que no produzcan constantemente errores fatales o resultados sin sentido. Hay dos maneras principales para conseguir esto. La primera, utilizada por la mayora de los algoritmos genticos, es definir a los individuos como listas de nmeros -binarios, enteros o reales- donde cada nmero representa algn aspecto de la solucin candidata. En otro mtodo, la programacin gentica, el propio cdigo del programa s cambia. Ambos mtodos producen representaciones robustas ante la mutacin, y pueden representar muchos tipos diferentes de problema con xito.

    El problema de cmo escribir la funcin de aptitud debe considerarse cuidadosamente para que se pueda alcanzar una mayor aptitud y verdaderamente signifique una solucin mejor para el problema dado. Si se elige mal una funcin de aptitud o se define de manera inexacta, puede que el algoritmo gentico sea incapaz de encontrar una solucin al problema, o puede acabar resolviendo el problema equivocado (esta ltima situacin se describe a veces como la tendencia del AG a engaar, aunque en

  • 34 Facultad de Informtica U.C.M

    realidad lo que est pasando es que el AG est haciendo lo que se le pidi hacer, no lo que sus creadores pretendan que hiciera).

    Adems de elegir bien la funcin de aptitud, tambin deben elegirse cuidadosamente los otros parmetros de un AG, como son el tamao de la poblacin, el ritmo de mutacin y cruzamiento, el tipo y fuerza de la seleccin. Si el tamao de la poblacin es demasiado pequeo, puede que el algoritmo gentico no explore suficientemente el espacio de soluciones para encontrar buenas soluciones consistentemente. Si el ritmo de cambio gentico es demasiado alto o el sistema de seleccin se escoge inadecuadamente, puede alterarse el desarrollo de esquemas beneficiosos y la poblacin puede entrar en catstrofe de errores, al cambiar demasiado rpido para que la seleccin llegue a producir convergencia. La solucin ha sido la evolucin de la evolutividad: las adaptaciones que alteran la habilidad de una especie para adaptarse.

    Un problema con el que los algoritmos genticos tienen dificultades son los problemas con las funciones de aptitud engaosas, en las que la situacin de los puntos mejorados ofrece informacin engaosa sobre dnde se encuentra probablemente el ptimo global. La solucin a este problema es la misma para los algoritmos genticos y la evolucin biolgica: la evolucin no es un proceso que deba encontrar siempre el ptimo global. Puede funcionar casi igual de bien alcanzando la una solucin muy buena aunque no sea la realmente ptima y, para la mayora de las situaciones, eso ser suficiente, incluso aunque el ptimo global no pueda alcanzarse fcilmente desde ese punto.

    Un problema muy conocido que puede surgir con un AG se conoce como convergencia prematura. Si un individuo que es ms apto que la mayora de sus competidores emerge muy pronto en el curso de la ejecucin, se puede reproducir tan abundantemente que merme la diversidad de la poblacin demasiado pronto, provocando que el algoritmo converja hacia el ptimo local que representa ese individuo, en lugar de rastrear el paisaje adaptativo lo bastante a fondo para encontrar el ptimo global. Esto es un problema especialmente comn en las poblaciones pequeas, donde incluso una variacin aleatoria en el ritmo de reproduccin puede provocar que un genotipo se haga dominante sobre los otros. Los mtodos ms comunes implementados por los investigadores en AGs para solucionar este problema implican controlar la fuerza selectiva, para no proporcionar tanta ventaja a los individuos excesivamente aptos. La seleccin escalada, por rango y por torneo son tres de los mtodos principales para conseguir esto.

    Finalmente, varios investigadores aconsejan no utilizar algoritmos genticos en problemas resolubles de manera analtica. No es que los algoritmos genticos no

  • 35 Facultad de Informtica U.C.M

    puedan encontrar soluciones buenas para estos problemas; simplemente es que los mtodos analticos tradicionales consumen mucho menos tiempo y potencia computacional que los AGs y, a diferencia de los AGs, a menudo est demostrado matemticamente que ofrecen la nica solucin exacta.

    WEB MAPPING

    Mapeo Web es el proceso de diseo, implementacin, generacin y muestra de mapas en la Web. Mientras el mapeo web se ocupa principalmente de cuestiones tecnolgicas, la cartografa web estudia, adems, aspectos tericos: el uso de mapas web, la evaluacin y la optimizacin de las tcnicas y los flujos de trabajo, la facilidad de uso de mapas web, aspectos sociales, etc. Todas estas tcnicas han surgido como respuesta a la necesidad de las personas y los negocios a tener un mapa interactivo que revele informacin acerca de la localizacin de personas y objetos. Un caso especial de mapas web son los mapas mviles, que se muestran en los dispositivos mviles, como los Smartphones, PDAs y GPS.

    El uso de la web como un medio de difusin de los mapas puede ser considerado como un gran avance en la cartografa y abre muchas nuevas oportunidades, tales como mapas en tiempo real y contenido personalizado en los mapas, as como el intercambio de informacin geogrfica. Tambin implica muchos desafos debido a las restricciones tcnicas (resolucin de pantalla baja y ancho de banda limitado, en particular, con los dispositivos mviles, muchos de los cuales son fsicamente pequeos, y el uso de conexiones inalmbricas a Internet lentas), derechos de autor y las cuestiones de seguridad, problemas de fiabilidad y complejidad tcnica. Aunque los primeros mapas web eran principalmente estticos, los mapas web de hoy en da pueden ser completamente interactivos y se pueden integrar en mltiples medios de comunicacin. Esto significa que, tanto el mapeo web, como la cartografa web, tienen que lidiar con la interactividad y usabilidad.

    En nuestra aplicacin hemos usado uno de los Servicios de Localizacin ms conocidos. Google Maps. Hemos utilizado este servicio ya que es el ms completo en cuanto a opciones de representacin y ofrece una amplia variedad de APIs para interactuar con el servicio Web, siendo todo esto gratuito.

  • 36 Facultad de Informtica U.C.M

    GOOGLE MAPS

    Google Maps es una aplicacin de servicio de Web Mapping cuya tecnologa est proporcionada por Google. Alimenta muchos servicios basados en mapas, como el sitio web de Google Maps, Google Ride Finder, Google Transit y los mapas incrustados

    en pginas web de terceros a travs de Google Maps API. Ofrece mapas de calles, un planificador de rutas para viajar a pie (beta), en coche, en bicicleta (beta), o con el transporte pblico. Tambin es un localizador geogrfico de lugares, edificios o comercios en diversos lugares del mundo.

    Las imgenes de satlite de Google Maps no se actualizan en tiempo real, sino que se esto se produce con una periodicidad semestral.

    El sistema de localizacin de Google Maps est basado en coordenadas cartogrficas. Estn en el sistema WGS84 1 y se mostrar la latitud y la longitud, positiva para Norte y Este, negativa para Sur y Oeste.

    Algunas de las funcionalidades de Google Maps son:

    Visualizacin de mapas en formato mapa o captura por satlite Bsqueda de direcciones. Diseo de rutas entre dos puntos, para automviles, a pie y en transporte

    pblico. Calculo de distancias y de tiempo entre eso dos puntos. Adems tiene en cuanta el trfico en tiempo real y otros modificadores de la circulacin normal

    Visualizacin de imgenes de satlites de toda la geografa.

    Ilustracin 10 - Google Maps

  • 37 Facultad de Informtica U.C.M

    CAPTULO III: LA APLICACIN

  • 38 Facultad de Informtica U.C.M

    INTRODUCCIN AL CAPTULO

    En este apartado describiremos cmo funciona y en qu consiste la aplicacin de forma detallada. Empezaremos describiendo la base de datos que hemos diseado y empleado para almacenar los usuarios y las paradas a tratar y por qu nos decantamos por esta opcin.

    Posteriormente, hablaremos de cmo hemos aplicado los algoritmos de agrupamiento (Clustering) para obtener el menor nmero de paradas y comprobaremos cmo esto reduce el tiempo y la distancia utilizados por el transporte durante su ruta de recogida.

    A continuacin, se explicar cmo hemos codificado los datos de la ruta para aplicarles el algoritmo evolutivo. Dentro de este punto, comentaremos tambin las diferentes funciones de seleccin, cruce y mutacin que hemos empleado y por qu nos hemos decidido por ellas.

    Por ltimo, explicaremos la forma de relacionarse con el proveedor de mapas online, recoger la informacin que enva y la forma de conectar todos los componentes de la aplicacin.

    BASE DE DATOS

    La base de datos de la aplicacin la hemos realizado mediante ficheros Excel debido a su facilidad de uso gracias a ciertas bibliotecas de C# que indicaremos ms adelante.

    Existen dos tipos de ficheros Excel, uno de ellos ser utilizado por los pasajeros para pasar la informacin al administrador de la aplicacin, mientras que el otro tipo de fichero se utilizar para almacenar toda la informacin necesaria para el correcto funcionamiento de la aplicacin, obtenida a partir de la suma de la informacin de los ficheros enviados por los pasajeros y las rutas calculadas mediante los algoritmos implementados.

  • 39 Facultad de Informtica U.C.M

    PLANTILLA DE PASAJERO

    Mediante esta plantilla, que se muestra en la Ilustracin 11 - Ejemplo Plantilla Excel de los usuarios, los pasajeros registran su informacin en la aplicacin, especialmente la de su lugar de residencia y su turno de trabajo, a partir de la cual se generar la ruta del transporte. El usuario tendr que rellenar todos los campos y posteriormente enviar el fichero al administrador de la aplicacin por correo electrnico. A la hora de rellenar los datos, hay algunos datos preestablecidos y en los que el usuario no podr escoger libremente si no que se le obligar a elegir entre una serie de opciones. ste es el caso del Tipo de operacin (Alta, Baja o Modificacin) o el Turno de trabajo (Maana, Tarde o Noche).

    Una vez recibidos los datos, el administrador colocar en la carpeta apropiada, junto a las dems plantillas recibidas, para que el sistema recupere la informacin de cada usuario y la guarde en el archivo de base de datos principal.

    Aqu podemos ver u ejemplo de informacin de un usuario:

    Ilustracin 11 - Ejemplo Plantilla Excel de los usuarios

    Como podemos ver, se pueden enviar varios usuarios dentro de la misma plantilla de pasajero.

    Los campos a rellenar son:

    Tipo de operacin: Este campo determina como tratar la informacin que enva cada pasajero. Si se quiere dar de alta, se introducir un nuevo pasajero eligiendo la opcin Alta, si el usuario quiere modificar algn parmetro de su informacin, elegir la Modificacin y por ltimo, si quiere darse de baja en el servicio de ruta, elegir la opcin Baja

    DNI: DNI del empleado para diferenciarlo de otros empleados con el mismo nombre.

  • 40 Facultad de Informtica U.C.M

    Nombre y apellidos: Nombre y apellidos del empleado. Esta informacin se usar para visualizar los viajeros que se subirn al transporte en cada parada.

    Direccin: Esta ser la direccin que se tendr en cuenta para el clculo de la ruta.

    Cdigo Postal: Ayuda a identificar la poblacin en la que se encuentra la direccin del pasajero.

    Telfono: til por si se debe contactar con algn pasajero de manera urgente. Turno de trabajo: Esto nos servir para agrupar las personas que participaran

    en la ruta, ya que comparten el mismo horario de entrada al trabajo.

    Una vez se importen los datos al fichero principal de la base de datos, los ficheros enviados por el usuario se eliminarn.

    PLANTILLA BASE DE DATOS

    La plantilla que sirve para almacenar la informacin til para la aplicacin consta de una pestaa que contiene toda la informacin que los usuarios han enviado a travs de sus plantillas y una hoja por cada ruta calculada donde se almacenarn las paradas de las mismas y el orden en el que deben recorrerse para hacer la ruta ptima. Hay una ruta por cada turno de trabajo (maana, tarde y noche).

    En la siguiente ilustracin se muestra la hoja Pasajeros, que recoge la suma de la informacin que mandan los usuarios, aadiendo a sta, la ruta y la parada asignada a cada usuario registrado.

    Ilustracin 12 - Plantilla Base de Datos. Hoja Pasajeros

  • 41 Facultad de Informtica U.C.M

    En la siguiente imagen, podemos apreciar el formato que tiene cada hoja donde se almacenan las rutas de cada turno de trabajo:

    Ilustracin 13 - Plantilla Base de Datos. Hoja Rutas

    En cada una de estas pestaas guardamos el nmero de paradas que se han generado para dar servicio a todos los pasajeros que aparecen en la pestaa de Pasajeros antes mencionada. Adems, aparecer el turno de la ruta que puede tomar los valores: Maana, Tarde o Noche. A cada turno se le asignan rutas independientes.

    Cada parada tendr asignadas unas coordenadas de latitud y longitud, que servirn para enviarlas al proveedor de mapas y recuperar la direccin a la hora de representar los puntos en el mapa. Tambin tendr asignada un nmero de parada que actuar como identificador junto con el turno de la ruta.

    Cada vez que se carga el programa, se examina la carpeta pensada para que el administrador deposite los archivos enviados por email en busca de nuevos archivos que contengan datos de nuevos pasajeros. En el caso de que haya nueva informacin, se recalcularn todas las agrupaciones de paradas y tambin el orden de recorrerlas

  • 42 Facultad de Informtica U.C.M

    mediante el algoritmo gentico, debido a que un pasajero ms o menos podra hacer variar la forma de optimizar la ruta. La base de datos siempre tendr que estar encuadrada en la propia carpeta de desarrollo del proyecto para su correcto funcionamiento, junto con las platillas que envan los usuarios.

    VENTAJAS DE MICROSOFT EXCEL COMO BASE DE DATOS

    Utilizando este formato de base de datos, no slo se facilita el uso de la misma a los usuarios que no posean conocimientos tcnicos, ya que el Excel es una herramienta intuitiva y de uso muy extendido, adems, permite al administrador disponer de la informacin de toda la aplicacin, de forma clara y sencilla sin ser necesario que ste posea conocimientos de Bases de Datos o que se haya creado un procedimiento para extraer la informacin. En cualquier momento, y con una herramienta tan familiar como Excel, se puede recuperar cualquier dato concreto de la base de datos. Esto agilizar tareas de mantenimiento y correccin de errores, ya que no se necesitar personal cualificado para la realizacin de las mismas.

    Adems, utilizando para el desarrollo de la aplicacin Visual Studio como lo hemos hecho, existen libreras que facilitan la operacin sobre ficheros Excel, por lo que, la forma de escribir, leer y, en definitiva, manipular estos ficheros se hace bastante sencilla.

  • 43 Facultad de Informtica U.C.M

    ALGORITMO DE CLUSTERING

    El algoritmo de agrupamiento de pasajeros en paradas (Clustering), est basado en una mezcla de los diversos tipos de Clustering que mostrbamos en la descripcin de stos anteriormente.

    La direccin de las casas est representada en coordenadas geogrficas de longitud y latitud que se habrn conseguido a travs del Servicio Web de mapas Google Maps. La distancia entre paradas y casas est calculada en distancia eucldea, esto se realiza durante nuestro algoritmo de Clustering, ya que de esta manera se ahorra numerosos accesos al servicio de mapas, lo que ralentizara la recogida de datos al estar pidiendo siempre las distancias al propio servicio. Adems, como son distancias que el pasajero recorre a pie, no est sujeto a normas de circulacin y puede atravesar obstculos que los vehculos no, como parques, calles peatonales, direcciones prohibidas...

    El algoritmo recibe las viviendas de los pasajeros que habr que agrupar y, en la primera iteracin, se crear una parada para cada vivienda. A continuacin, el algoritmo crea una matriz de distancias entre las viviendas y las paradas, si todas las casas tienen una parada a menos de la distancia estipulada como lmite, se dan como buenas las paradas y se realiza otra agrupacin sobre las mismas, volviendo a calcular la matriz de distancias. Si alguna casa no cuenta con una parada de la ruta lo suficientemente cerca, se desecha esa agrupacin y se retorna como agrupacin final el conjunto de paradas anterior.

    class Clustering { //Matrices que almacenaran las coordenadas de las paradas y las casas private Double[][] puntos = new Double[2][], casas = new Double[2][]; //0 Latitud, 1 Long private int[] casasParadaTemp; public Clustering(PointLatLng[] coordenadas) { puntos[0] = new Double[coordenadas.Length]; puntos[1] = new Double[coordenadas.Length]; casas[0] = new Double[coordenadas.Length]; casas[1] = new Double[coordenadas.Length]; casasParadaTemp = new int[coordenadas.Length]; for (int i = 0; i

  • 44 Facultad de Informtica U.C.M

    puntos[1][i] = coordenadas[i].Lng; casas[0][i] = coordenadas[i].Lat; casas[1][i] = coordenadas[i].Lng; } puntos = clusterParadas(); //De aqu saldr en la matriz puntos, //los puntos de cada parada y en la matriz casas las paradas que les corresponde }

    Una vivienda deber tener una parada de la ruta como mximo a 700 metros de ella. Esta distancia se ha calculado para que no resulte excesiva de andar para los pasajeros y que no sea tan pequea como para entorpecer la funcin del Clustering.

    //Calcula distancia entre 2 puntos de forma euclidiana public Double distancia(Double lat1, Double lng1, Double lat2, Double lng2) { return Math.Sqrt(Math.Pow(lat1 - lat2, 2) + Math.Pow(lng1 - lng2, 2)); }

    El algoritmo iterar un nmero de veces igual al nmero de casas para ir agrupando, dos a dos, todas las casas que estn cercanas, en paradas. De esta forma, cada vez que se hace una iteracin y se hayan agrupado dos casas en una parada, se vuelve a crear una matriz de distancias y la de agrupaciones, comprobando que en esta solucin parcial no haya ninguna casa que est a una distancia superior a 700 metros, de su lugar de recogida. Estas iteraciones seguirn hasta que no se produzca ninguna nueva agrupacin, lo que devolver la solucin. De esta forma, podra generarse paradas inservibles, esto es que no sea la ms cercana a ninguna vivienda a pesar de que parta de ellas. Por ello, al final del algoritmo se recorrern todas las paradas para descartar las que no tengan viajeros que acudan a ellas.

    La parada siempre se pone en la mediatriz de la recta que cruza los dos puntos agrupados, para que la distancia de las viviendas de los pasajeros a las paradas sea equitativa.

    El siguiente fragmento de cdigo muestra la funcin principal del algoritmo de Clustering; se encarga de, a partir de las viviendas, si es la primera iteracin, o de las paradas resultantes de la iteracin anterior, calcular las nuevas paradas y calcular si stas son correctas.

    //Calcular nuevas paradas private Double[][] clusterParadas() {

  • 45 Facultad de Informtica U.C.M

    //Matriz de distancias entre las casas y las paradas Double[][] matrizDistancias = new Double[casas[0].Length][]; //Matriz auxiliar para guardar temporalmente las paradas Double[][] puntosAux = new Double[2][]; bool flag = true; //Para controlar si se hacen cambios. //Se agruparn paradas tantas veces como casas haya o hasta que no haya cambios. for (int iteraciones = 0; iteraciones < casas[0].Length && flag; iteraciones++) { puntosAux[0] = new Double[puntos.Length]; puntosAux[1] = new Double[puntos.Length]; //Creamos la matriz de distancias en funcion del nmero de paradas que haya for (int i = 0; i < casas[0].Length; i++) { matrizDistancias[i] = new Double[puntos[0].Length]; } //Para cada casa for (int i = 0; i < casas[0].Length; i++) { //Calculamos la distancia a cada parada for (int j = i; j < puntos[0].Length; j++) { matrizDistancias[i][j] = distancia(casas[0][i], casas[1][i], puntos[0][j], puntos[1][j]); matrizDistancias[j][i] = matrizDistancias[i][j]; } //Si hay ms de 700m desde la casa a la parada, devolvemos el grupo de paradas anteriores. if (!paradasCorrectas(matrizDistancias)) { return puntosAux; } } //Si solo queda una parada, comprobamos si es correcta y salimos devolviendo la parada si lo es o la anterior agrupacin si no. if (puntos[0].Length == 1) { if (paradasCorrectas(matrizDistancias)) { return puntos; } else { return puntosAux; } } //Si las paradas actuales son correctas, intentamos agrupar ms.

  • 46 Facultad de Informtica U.C.M

    //Salvamos las paradas actuales para devolverlas en caso de que la siguiente agrupacin sea incorrecta. puntosAux = (Double[][])puntos.Clone(); //Variable temporal para almacenar distancias cogemos la distancia entre la 1 y la 2 como referencia Double temp; //Array para indicar qu paradas estn agrupadas y con cul int[][] agrupaciones = new int[2][]; agrupaciones[0] = new int[puntos[0].Length]; agrupaciones[1] = new int[puntos[0].Length]; int contParadas=0; //Ponemos todas las agrupaciones a -1 para que coja la 0 tb. for (int i = 0; i < agrupaciones[0].Length; i++) { agrupaciones[0][i] = -1; agrupaciones[1][i] = -1; } //Para cada parada, miramos la ms cercana de las que no estn an agrupadas for (int i = 0; i < puntosAux[0].Length;i++ ) { bool aux = false; temp = 500; //Si la parada a examinar no est cogida if(!agrupaciones[0].Contains(i) && !agrupaciones[1].Contains(i)){ //Para cada parada for(int j=i;j= distancia(puntosAux[0][i], puntosAux[1][i], puntosAux[0][j], puntosAux[1][j])){ agrupaciones[0][contParadas] = i; //Emparezamos la parada i agrupaciones[1][contParadas] = j; //Con la j temp = distancia(puntosAux[0][i], puntosAux[1][i], puntosAux[0][j], puntosAux[1][j]); aux = true; } } //Si no hemos encontrado parada cercana, se empareja la parada consigo misma if (!aux) { agrupaciones[0][contParadas] = i; agrupaciones[1][contParadas] = i; } contParadas++; //Contamos la parada } }

  • 47 Facultad de Informtica U.C.M

    //Una vez agrupadas las paradas, calculamos las nuevas y lo almacenamos en el array puntos. puntos = new Double[2][]; puntos[0] = new Double[contParadas]; puntos[1] = new Double[contParadas]; for (contParadas = contParadas-1; contParadas >= 0; contParadas--) { puntos[0][contParadas] = (puntosAux[0][agrupaciones[0][contParadas]]+puntosAux[0][agrupaciones[1][contParadas]])/2; puntos[1][contParadas] = (puntosAux[1][agrupaciones[0][contParadas]] + puntosAux[1][agrupaciones[1][contParadas]]) / 2; } } //Si llega aqu es que o se han acabado las iteraciones o en esta agrupacin no hay cambios. //Devolvemos la ltima agrupacin ya que o ser la ms reciente y ms correcta que la anterior, o ser igual a la anterior return puntos; }

    El algoritmo, al terminar, devolver un array donde estarn las paradas definitivas con las agrupaciones de las viviendas de pasajeros. De esta forma nos aseguramos que el transporte no se tenga que desplazar expresamente a cada vivienda de cada usuario.

    El orden en el que se almacenan las paradas en el array an no es el orden en el que deben recorrerse las paradas; es un orden aleatorio. Este array ser la entrada del algoritmo gentico que se encargar de calcular el orden en el que stas debern recorrerse para hacer el camino ptimo.

  • 48 Facultad de Informtica U.C.M

    ALGORITMO GENTICO

    El algoritmo gentico que hemos implementado sigue la estructura habitual de codificacin de datos en genes, cromosomas y poblaciones. Sobre ellos, se aplican los operadores de seleccin, cruce y mutacin. Adems incluiremos elitismo, para asegurarnos de que no perdemos el mejor individuo de cada iteracin. Seguidamente, describiremos cada uno de estos pasos detalladamente, incluyendo la funcin de evaluacin de individuos y los criterios que hemos seguido.

    CODIFICACIN DE DATOS EN GENES

    Cada gen ser una parada, codificada como un punto geogrfico de latitud y longitud, que ayudar a que el paso de direcciones y clculos que tenga que hacer el Servicio Web de mapas sea lo ms rpido posible y no tenga ambigedades.

    Generacin de genes, cromosomas y creacin de poblaciones

    La codificacin del problema se basa en escoger cul ser la base del algoritmo, es decir, los genes. En este caso, hemos decidido que cada parada de la ruta sea un gen.

    Cada cromosoma estar compuesto por un array de genes que incluir todos los genes (paradas) y el orden de stos dentro del array indicar el orden en el que se visita cada parada. Esto ser un requisito indispensable a lo largo de todo el algoritmo y se debern realizar comprobaciones en diversos puntos del mismo para comprobar que los cromosomas sigan siendo vlidos. Para ayudar a la generacin de cromosomas diferentes, ordenamos el array de genes de forma aleatoria, lo cual aumenta la diversidad de la poblacin y produce mejores resultados al final del algoritmo. El mejor individuo obtenido ser la solucin del algoritmo.

    A partir de los cromosomas, se generan las poblaciones. Cada poblacin tendr un tamao de 200 cromosomas para que se aplique a ellos el algoritmo gentico y, el resultado de cada iteracin del algoritmo generar una nueva poblacin.

    El resultado del algoritmo ser el mejor cromosoma que se haya obtenido en cualquiera de las iteraciones del algoritmo.

  • 49 Facultad de Informtica U.C.M

    FUNCIN DE EVALUACIN

    Esta funcin calcula y asigna una puntuacin a cada cromosoma para, de esta forma, poder comparar individuos y hallar el mejor. Para ello hemos creado una funcin que calcula las distancias parciales entre todos los puntos en el orden en el que estn en el array y, posteriormente, se suman todas, junto con la distancia entre la ltima parada y el destino de la ruta. Para que la evaluacin tenga un sentido positivo, es decir, a mayor evaluacin, mejor individuo, se resta a un nmero suficiente grande el resultado de esta suma, dando lugar al resultado de la evaluacin.

    En este caso s que hacemos uso del servicio web para hallar las distancias, a diferencia del algoritmo de Clustering que lo hacamos con la distancia euclidiana, ya que refleja un tiempo mucho ms realista para un vehculo.

    public Double getEvaluacion() { Double evaluacion = 0; MapRoute route; MainForm aux = new MainForm(1); RoutingProvider rp = aux.MainMap.MapProvider as RoutingProvider; String[] distanciaString; String aux2; for (int i = 0; i < this.genes.Length-1;i++ ) { aux2 = ""; route = rp.GetRoute(this.genes[i].getPoint(), this.genes[i + 1].getPoint(), false, false, (int)aux.MainMap.Zoom); distanciaString = route.Name.Trim().Split(' '); for (int m = 1; m < distanciaString[0].Length; m++) aux2 += distanciaString[0][m]; if (distanciaString[1] == "km") { if (aux2.Contains(".")) evaluacion += (Convert.ToDouble(aux2) / 10); else evaluacion += (Convert.ToDouble(aux2)); } else { evaluacion += (Convert.ToDouble(aux2) / 1000); } } evaluacion = 500- evaluacion;

  • 50 Facultad de Informtica U.C.M

    aux.Close(); return evaluacion; }

    FUNCIONES DE SELECCIN

    Para las funciones de seleccin, nos hemos decantado por usar diferentes tipos de funciones de seleccin distribuidas de forma proporcional en funcin al nmero de iteraciones; de esta forma nos aseguramos de que nos beneficiamos de las ventajas de todas ellas aplicndolas a las diferentes poblaciones en cada iteracin. A continuacin, mostraremos los algoritmos que implementan cada funcin de seleccin. No las describiremos ya que, tanto su funcionamiento, como la estructura de los algoritmos, lo hicimos anteriormente.

    Ruleta

    public Poblacion ruleta(Poblacion pob){ Poblacion aux = new Poblacion(pob.getIndividuos().Length); ordenar(pob, true); int pos, aux2=0; double random; pob.getIndividuos().ElementAt(0).setPuntAcum(0, pob.getPuntuacion()); for (int i = 1; i < pob.getIndividuos().Length;i++ ){ pob.getIndividuos().ElementAt(i).setPuntAcum(pob.getIndividuos().ElementAt(i - 1).getPuntAcum(), pob.getPuntuacion()); } for (int i = 0; i < pob.getIndividuos().Length;i++ ) { random = Convert.ToDouble(new Random()); for (pos = 0; pos < pob.getIndividuos().Length;pos++){ if(pob.getIndividuos().ElementAt(pos).getPuntAcum() > random || pos == pob.getIndividuos().Length-1){ aux.Replace(aux2,pob.getIndividuos().ElementAt(pos)); aux2++; } } } return aux; }

    Torneo

    public Poblacion torneo(Poblacion pob) { Poblacion aux = new Poblacion(pob.getIndividuos().Length);

  • 51 Facultad de Informtica U.C.M

    int pos1, pos2, pos3, aux2 = 0 ; for (int i = 0; i < pob.getIndividuos().Length; ) { pos1 = ((Convert.ToInt32(new Random())*1000)/pob.getIndividuos().Length); pos2 = ((Convert.ToInt32(new Random()) * 1000) / pob.getIndividuos().Length); pos3 = ((Convert.ToInt32(new Random()) * 1000) / pob.getIndividuos().Length); if (pob.getIndividuos().ElementAt(pos1).getEvaluacion() > pob.getIndividuos().ElementAt(pos2).getEvaluacion()) { if (pob.getIndividuos().ElementAt(pos1).getEvaluacion() > pob.getIndividuos().ElementAt(pos3).getEvaluacion()) { aux.Replace(aux2, pob.getIndividuos().ElementAt(pos1)); } else { aux.Replace(aux2, pob.getIndividuos().ElementAt(pos3)); } } else { if (pob.getIndividuos().ElementAt(pos2).getEvaluacion() > pob.getIndividuos().ElementAt(pos3).getEvaluacion()) { aux.Replace(aux2,pob.getIndividuos().ElementAt(pos2)); } else { aux.Replace(aux2, pob.getIndividuos().ElementAt(pos3)); } } aux2++; } return aux; }

    Universal Estocstico

    public Poblacion universalEstocastico(Poblacion pob) { Double intervalo = ((Double)1) / (Double)pob.getIndividuos().Length; //Intervalo entre marcas Double marcador = Convert.ToDouble(new Random()) ; //Primer marcador Double[] puntos = new Double[pob.getIndividuos().Length+1]; //Guardamos puntos para seleccionar Poblacion aux = new Poblacion(pob.getIndividuos().Length);

  • 52 Facultad de Informtica U.C.M

    int aux2 = 0; puntos[0] = (Double)0; ordenar(pob, false); for (int i = 1; i < pob.getIndividuos().Length;i++ ) { puntos[i] = puntos[i-1] + (pob.getIndividuos().ElementAt(i).getEvaluacion()/pob.getPuntuacion()); } puntos[puntos.Length] = (Double)1; for (int j = 0; j < pob.getIndividuos().Length; j++) { for (int i = 1; i < puntos.Length; i++) { if (marcador >= puntos[i - 1] && marcador < puntos[i]) { aux.Replace(aux2, pob.getIndividuos().ElementAt(i)); i = puntos.Length + 3; aux2++; } } marcador += intervalo; if (marcador > 1) { marcador = 0; } } return aux; }

    Ranking

    public Poblacion ranking(Poblacion pob) { Poblacion aux = new Poblacion(pob.getIndividuos().Length); Double random; int aux2 = 0; ordenar(pob, true); for (int j = 0; j < pob.getIndividuos().Length;j++ ) { random = Convert.ToDouble(new Random()); for (int i = 0; i < pob.getIndividuos().Length;i++ ) { if(random

  • 53 Facultad de Informtica U.C.M

    aux.Replace(aux2, pob.getIndividuos().ElementAt(i)); aux2++; } } } return aux; }

    CRUCE

    El cruce se basa en la reproduccin biolgica, es decir que, a partir de dos cromosomas que harn de padres, se mezclarn sus genes para generar nuevos individuos. Hemos implementado dos mtodos de cruce de cromosomas, Simple y PMX, que se aplican alternativamente a los cromosomas.

    Cruce Simple

    Elegidos un par de cromosomas, se divide el array de genes en un punto elegido al azar intercambindose las partes formando un par nuevo de cromosomas. Una vez hecho esto hay que asegurarse que los cromosomas resultantes tienen todas las paradas, de no ser as, se eliminan las duplicadas y se insertan las que faltan.

    public void cruceSimple(Cromosoma padre1, Cromosoma padre2){ int punto_cruce = (int) ((Convert.ToInt32(new Random())*1000/padre1.getGenes().Length)); Gen aux; Cromosoma p1, p2; p1 = padre1.Clonar(); p2 = padre2.Clonar(); //Cruzamos for (int i = punto_cruce; i < p1.getGenes().Length; i++) { aux = p1.getGenes().ElementAt(i); p1.sustituyeGen(p2.getGenes().ElementAt(punto_cruce), punto_cruce); p2.sustituyeGen(aux, punto_cruce); } //Solucionar si faltan paradas solucionarParadas(p1, todasParadas); solucionarParadas(p2, todasParadas); p1.calcularEvaluacion();

  • 54 Facultad de Informtica U.C.M

    p2.calcularEvaluacion(); if(p1.getEvaluacion() > padre1.getEvaluacion()){ padre1 = p1; } if(p2.getEvaluacion() > padre2.getEvaluacion()){ padre2 = p2; } }

    Cruce PMX

    En este caso el array de genes de los cromosomas se divide por dos puntos al azar intercambindose el segmento inicial y el final. Tambin debemos comprobar que el cromosoma posea todas las paradas de la ruta.

    public void crucePMX(Cromosoma padre1, Cromosoma padre2) { int punto_cruce = (int)((Convert.ToInt32(new Random()) * 1000 / padre1.getGenes().Length)); int punto_cruce2 = (int)((Convert.ToInt32(new Random()) * 1000 / padre1.getGenes().Length)); int temp; Gen aux; if(punto_cruce > punto_cruce2){ temp = punto_cruce; punto_cruce = punto_cruce2; punto_cruce2 = temp; } Cromosoma p1, p2; p1 = padre1.Clonar(); p2 = padre2.Clonar(); for (int i = 0; i < p1.getGenes().Length;i++ ) { if (i < punto_cruce || i >= punto_cruce2) { aux = p1.getGenes().ElementAt(i); p1.sustituyeGen(p2.getGenes().ElementAt(punto_cruce), punto_cruce); p2.sustituyeGen(aux, punto_cruce); } } //Solucionar si faltan paradas solucionarParadas(p1, todasParadas);

  • 55 Facultad de Informtica U.C.M

    solucionarParadas(p2, todasParadas); p1.calcu