Monografias.com > Matemáticas
Descargar Imprimir Comentar Ver trabajos relacionados

Una hiperheurística para la solución del Problema del Viajante Asimétrico



Partes: 1, 2

    1. Resumen
    2. Revisión
      bibliográfica
    3. Solución del
      problema
    4. Conclusiones
    5. Referencias

    Resumen

    El uso de métodos
    aproximativos eficientes para obtener soluciones
    cercanas a las óptimas en diversos problemas
    combinatorios complejos es de gran interés
    por la gran cantidad de aplicaciones que tienen. La literatura refleja diversos
    algoritmos
    heurísticos, metaheurísticos o híbridos para
    la solución de problemas, pero muy pocos con enfoques
    hiperheurísticos.

    En general, los primeros métodos mencionados
    requieren de un dominio de los
    especialistas y un trabajo previo
    de ajuste de parámetros para ser exitosos en una amplia
    gama de instancias de un problema concreto.

    En este trabajo se propone una hiperheurística
    para el Problema del Viajante Asimétrico. La literatura
    revisada no refleja la utilización de este método
    para este tipo de problema. El objetivo
    fundamental no es competir con métodos eficientes
    existentes para mejorar la calidad de las
    soluciones obtenidas por los mismos, sino obtener un
    método robusto que se eficiente.

    Para el diseño
    de la hiperheurística propuesta se definen diversas
    heurísticas simples y estructuras de
    vecindad, que se utilizan en métodos de búsqueda
    local. Se realiza un diseño de experimento con un conjunto
    de instancias descritas en la literatura, y se muestran los
    resultados obtenidos.

    Palabras claves

    Problemas combinatoriales, heurísticas,
    metaheurísticas, hiperheurísticas, el Problema del
    Viajante Asimétrico.

    1. Introducción

    Se pueden encontrar una gran cantidad de problemas
    reales que son modelados y resueltos con técnicas
    de optimización. Entre los que pueden mencionarse
    están los clásicos problemas de diseño de
    redes de
    telecomunicación, los de planificación de horarios, los de
    secuenciación de tareas, los distintos problemas de ruteo,
    u organización de la producción hasta los más actuales en
    ingeniería y re-ingeniería de
    software. Algunas clases de estos problemas son relativamente
    fáciles de resolver, este es el caso, por ejemplo, de los
    problemas lineales, en los que tanto la función
    objetivo como las restricciones son expresiones lineales, que
    pueden ser resueltos con el conocido método
    Simplex; sin embargo, muchos otros tipos de problemas de
    optimización son muy difíciles de resolver, y gran
    parte de ellos corresponden a problemas de Optimización
    Combinatorial.

    Estos problemas difíciles de interés
    práctico resultan intratables si se trata de obtener una
    solución óptima en un tiempo
    razonable mediante técnicas de cálculo.
    Ante esta dificultad, los algoritmos heurísticos se
    revelan como un medio útil para su resolución, ya
    que permiten obtener buenas soluciones, en algunos casos
    óptimas, en un tiempo razonable. En los últimos
    años ha cobrado auge el uso de las metaheurísticas
    [29] que son algoritmos aproximativos, aplicándolos a una
    gama de diferentes problemas. Entre ellos se encuentra el
    Recocido Simulado [10], el Greedy Randomized Adaptive Search
    Procedures
    (GRASP) [12], Búsquedas Tabú [22] o
    los Algoritmos Genéticos [16]. Existen numerosos trabajos
    con aplicaciones de estos métodos en diferentes revistas
    especializadas de Investigación Operativa.

    Sin embargo, esta clase de
    algoritmos presentan esta clase de inconvenientes cuando se trata
    de aplicarlos a un problema específico:

    1. El número de parámetros a ser ajustados
      para obtener un buen desempeño del algoritmo
      puede requerir un tiempo considerable.
    2. La comprensión de estos parámetros,
      básicamente para un usuario no especializados en estos
      métodos. Puede citarse, por ejemplo, que en los
      Algoritmos Genéticos es bastante fácil de
      entender que mientras el tamaño de la población es mas grande, los resultados
      obtenidos deben ser mejores aunque con un costo de
      tiempo mayor. Sin embargo no está muy claro cual
      sería la incidencia en la ejecución del algoritmo
      los ajustes de parámetros, como la probabilidad de
      cruzamientos. Otro ejemplo es el Recocido Simulado, donde la
      literatura describe que los mejores valores de
      r (la velocidad en
      que disminuye la temperatura), se obtiene solo de extensos
      diseños de experimento.
    3. Para un mismo tipo de problema, los parámetros
      ajustados pueden no ser los mejores para cualquier tipo de
      instancia, pueden depender, por ejemplo, del tamaño de
      la instancia, las características de una matriz de
      costos,
      etc.

    Mucho más reciente, cuya literatura aún es
    escasa, es el uso de métodos hiperheurísticos [9]
    para la solución de problemas combinatoriales. Estos
    métodos eliminan las inconveniencias planteadas de las
    metaheurísticas.

    El propósito fundamental de este trabajo es
    realizar el diseño de un algoritmo hiperheurístico
    que solucione de forma eficiente, teniendo en cuenta la calidad
    de la solución y tiempo de ejecución, una amplia
    gama de instancias del Problema del Viajante Asimétrico
    (PVA). Colateralmente, que también pueda ser extensible a
    otros problemas como el Problema de la Mochila Binaria
    (PMB).

    El por qué se diseña una
    hiperheurística para el PVA está dado
    básicamente por las siguientes razones: resolver un
    problema real surgido en la planificación del
    teñido de telas en la industria
    textil [25, 26 y 30], el cual es modelado por el PVA el cual es
    NP – completo [14] al cual se le han aplicado diversos
    algoritmos heurísticos e
    metaheurísticos.

    La literatura reporta bibliotecas de
    instancias generadas con el fin de evaluar la calidad del
    desempeño de nuevos métodos realizados para este
    problema [33].

    El documento tiene una estructura
    formada por tres epígrafes, las conclusiones y
    recomendaciones. En el primer epígrafe se realiza un
    análisis bibliográfico a las
    literaturas utilizadas, en el segundo propone la solución
    al problema, el tercero ofrece un diseño de experimento a
    los resultados obtenidos.

    1. 2.1 El Problema del Viajante
      Asimétrico

      El Problema del Viajante Asimétrico [4 y 7],
      más conocido por su nombre en ingles The Asymmetric
      Traveling Salesman Problem
      , es quizá el problema
      de optimización combinatorial más popular de
      todos. De la manera más simple, el PAV consiste, en
      dadas un conjunto de n ciudades un vendedor debe
      visitar cada una de ellas una sola vez y regresar a su ciudad
      de origen, de tal forma que su recorrido sea mínimo.
      Matemáticamente para cada par de ciudades , se denota como
      la distancia
      entre ellas, la meta es
      encontrar una permutación de las ciudades que
      minimice:

      Existen diversas heurísticas constructivas y
      de búsquedas para la solución de este problema.
      Entre las heurísticas constructivas encontradas para
      este problema se encuentra la popular estrategia
      voraz, la del vecino más cercano, la técnica de
      remiendo, etc.

      2.1.1 Métodos constructivos

      Las heurísticas constructivas aportan
      soluciones del problema por medio de un procedimiento
      que incorpora iterativamente elementos a una estructura,
      inicialmente vacía, que representa a la
      solución. Las heurísticas constructivas
      establecen estrategias para seleccionar las componentes
      con las que se construye una buena solución del
      problema.

      Una de las mejores metaheurística
      constructivas sin duda alguna es GRASP [12], en su
      diseño el parámetro alfa es un aspecto bien
      discutido. Los diferentes autores que han utilizado este
      método lo definen después de realizar un
      análisis estadístico a su problema con
      diferentes valores. Los
      valores extremos de este parámetro brinda dos
      tipos de soluciones: golosas y aleatorias . Existen diversas variantes
      eficientes del método GRASP, una de ellas por ejemplo,
      es la llamada GRASP-Reactivo [12] donde su parámetro
      se va
      actualizando según se desarrollan las iteraciones del
      algoritmo.

      Los métodos golosos y el vecino más
      cercano son dos variantes del método GRASP, que
      realizan una elección que le implique los mejores
      resultados inmediatos, sin tener en cuenta una perspectiva
      más amplia. La heurística del vecino más
      cercano, conocido como Nearest Neighbor, comienza
      escogiendo un nodo inicial aleatoriamente e iterativamente
      busca su nodo más cerca, o si existen varios,
      construye una lista y escoge uno de ellos aleatoriamente. El
      método goloso ó Greedy, busca
      iterativamente los dos nodos más próximos y
      escoger uno aleatoriamente [7].

      Estos métodos aceptan algunas mejoras como
      aplicar una búsqueda local al final de cada
      iteración o al finalizar todas las iteraciones,
      así se obtiene una solución con mejor
      calidad.

      2.1.1.1 Remiendo por cubrimiento de
      ciclos

      El método de remiendo por cubrimiento de
      ciclos construye las soluciones a partir de ciclos realizados
      por las asignaciones obtenidas [7]. Por tanto el primer paso
      para realizar este método es convertir el PVA en un
      problema de asignación.

      El Problema de Asignación (PA) [34] es un
      problema clásico de optimización combinatorial,
      en el cual se encuentra un vasto número de problemas
      de diseño y de distribución de recursos
      en diferentes campos, donde la decisión a tomar es una
      asignación de elementos de un conjunto en otro. Para
      aplicar el PA al PVA se utiliza un grafo bipartito, donde la
      cantidad de nodos es 2n, siendo n el
      número de ciudades y la distancia un valor
      arbitrariamente grande.

      Existen varios métodos para la
      solución del PA. Uno de ellos, muy popular, es el
      método Húngaro, con sus variantes. Los pasos de
      este están descrito por [32], y por muchas otras
      referencias, pero no solucionan (no convergen) algunas
      instancias que presentan soluciones múltiples, y se
      necesitan otros pasos adicionales, no aclarados. Existen
      otros artículos que describen este método
      basado en el problema dual [32], con una complejidad
      , pero es
      engorroso y presenta detalles incompletos para su
      implementación.

      Otro método es por subasta, conocido como
      Auction [31], donde su función objetiva es
      maximizar, y consiste en realizar una subasta donde hay
      n carros a subastar a n personas, con la
      condición de que cada persona se
      lleven un carro. Este método utiliza técnica de
      escalamiento siendo muy eficiente y fácil de
      implementar.

      2.1.2 Cotas inferiores

      Para evaluar la calidad de una solución
      obtenida, en ausencia de la solución óptima, es
      importante contar con métodos que proporcionen cuotas
      inferiores a la solución del problema siendo el AP uno
      de los métodos más difundido. El método
      desarrollado por Held – Karp (HK) [17 y 18] ofrece
      mejores cotas inferiores más cercanas al óptimo
      real .

      2.1.3 Búsquedas locales

      Los métodos de búsquedas locales
      mejoran una solución obtenida comparándolas con
      soluciones vecinas a ella. En un proceso
      iterativo se van obteniendo nuevas soluciones vecinas, de
      mejor calidad, mientras sea posible. Una búsqueda
      local es la que basa su estrategia en el estudio de
      soluciones del vecindario o entorno de la solución
      actual, en general ofrecen óptimos locales.

      Muchos métodos metaheurísticos
      utilizan búsquedas locales como son GRASP, Recocido
      Simulado, Búsqueda Tabú, y Búsqueda en
      Vecindades Variables.
      El término local se emplea con bastante frecuencia en
      los estudios teóricos y prácticos del campo de
      las metaheurísticas de búsqueda. Las
      estructuras de entorno suelen reflejar algún concepto de
      proximidad o vecindad entre las soluciones alternativas del
      problema. Por tanto, una búsqueda local es un proceso
      que, dada la solución actual en la que se encuentra el
      recorrido, selecciona iterativamente una solución de
      su entorno.

      Las búsquedas locales requieren tener en
      cuenta diversos aspectos como son: estructuras de vecindad
      utilizada, criterio para recorrer el espacio de
      solución (para encontrar su óptimo local con la
      primera mejora o con la mejora profunda, etc.) y la forma en
      que se recorre las soluciones vecinas.

      Existen excelentes heurísticas de
      búsquedas para el PVA, como las variantes realizadas
      de Kanellakis-Papadimitriou [20], como 3-Opt [7, 11, 15, 19,
      20 y 23], 4-Opt[15 y 17] cuya complejidad es
      O(n4) y [15] propone un algoritmo de tipo
      O(n2), etc.

      1. Los métodos
        hiperheurísticos

      Las metaheurísticas son estrategias
      inteligentes para diseñar o mejorar procedimientos heurísticos muy
      generales con un alto rendimiento. Entre las más
      populares y bien estudiadas técnicas se encuentran
      GRASP [12], Recocido Simulado [10], Búsquedas
      Tabú [22], y los Algoritmos Genéticos [16]. Las
      cuales se han aplicado con éxito en la solución de un gran
      número de problemas reales.

      Sin embargo, muchos de estos enfoques carecen de la
      robustez para resolver una amplia gama de problemas. Las
      metaheurísticas pueden resolver eficientemente un
      problema real luego de realizar un diseño de
      experimento profundo para ajustar sus parámetros, pero
      no pudiera resolver en lo absoluto, o da soluciones muy
      pobres, a otros casos inclusos derivados de los mismos
      problemas [9]. El ajuste de parámetro de una misma
      metaheurística en la solución de varios
      problemas puede llevar tiempo mucho tiempo.

      En los últimos años los investigadores
      de esta temática han propuesto una nueva
      técnica llamada hiperheurística [9 y 10]. La
      hiperheurística es un algoritmo de clase abstracta que
      opera a un nivel mas alto que las metaheurísticas, y
      dirige a un grupo de
      heurísticas simples (de un nivel más bajo) las
      cuales son aplicadas, dependiendo de la característica
      del espacio de soluciones donde se encuentra explorando
      [9].

      Una hiperheurística selecciona a cada paso la
      más prometedora heurística simple (o una
      combinación de heurísticas) que puede mejorar
      potencialmente la solución. Por otro lado, si no hay
      mejora, es decir, fue encontrada una solución
      óptima local, ella es capaz de diversificar la
      búsqueda a otras áreas del espacio de
      solución realizando una apropiada selección de un nuevo juego de
      heurísticas. Las heurísticas de bajo nivel,
      normalmente representan a los métodos de
      búsquedas locales o a las técnicas
      constructivas [9].

      Todo el dominio de información se concentra en el conjunto
      de heurísticas simple y en la función objetivo.
      La selección de una nueva heurística
      está basada por distintos criterios: los valores
      retornados de la función objetivo, por el tiempo de
      ejecución de la CPU, etc.,
      siendo necesario para estos casos una perturbación de
      la solución [10].

      Los enfoques hiperheurísticos con respecto a
      las metaheurísticas tienen las siguientes ventajas
      principales. Primeramente, una hiperheurística es
      sencilla y rápida de implementar; al mismo tiempo
      puede producir soluciones comparables en calidad a otras ya
      encontradas por eficientes metaheurísticas. Segunda,
      ella no tiene el acceso al conocimiento del dominio específico del
      problema, haciéndola aplicable en pequeños
      estudios o a problemas reales pobremente
      estudiados.

      Finalmente, estas técnicas son robustas:
      pueden ser eficazmente aplicadas a una amplia gama de
      instancias de un problema.

    2. Revisión
      bibliográfica
    3. Solución del
      problema

    3.1 Las estructuras de datos

    En los problemas de optimización combinatorial,
    además de la calidad en las soluciones dadas por los
    métodos implementados, el aspecto más importante a
    tener en cuenta es su tiempo de ejecución. Esto se puede
    lograr realizando un eficiente diseño en las Estructuras
    de Datos (ED) que
    serán implementadas para los algoritmos [1, 2, 8, 13, 24 y
    32].

    Para realizar un diseño eficiente de algoritmos,
    el principal aspecto que un programador debe conocer y tener en
    cuenta son las ED que va a utilizar, así logrará
    que su aplicación sea mucho más eficiente, en otras
    palabras, que brinde sus soluciones en el menor tiempo posible.
    Es importante tener en cuenta que en los tiempos de
    ejecución de un algoritmo deben incluirse los tiempos de
    procesamiento de
    datos, de acceso a datos, etc., y las ED juegan en ello un
    papel fundamental.

    Para la solución del PVA existen varias ED
    diseñadas, la principal es una lista enlazada de punteros,
    en esta podemos guardar la solución obtenida,
    además de utilizar una de tipo grafo, donde son guardados
    los datos del problema.

    3.2 Heurísticas constructivas

    Como se describió en el epígrafe anterior
    para construir las soluciones para el PVA se seleccionaron cinco
    algoritmos: GRASP, aleatorio, el vecino más cercano, un
    goloso y la técnica de remiendos.

    En esta sección se analizará el
    método de remiendos de ciclos. Este método se puede
    desarrollar de varias formas: realizando cubrimiento de ciclos de
    mayor a menor, de menor a mayor o de forma aleatoria, el
    cubrimiento de estos ciclos se explica a
    continuación.

    3.2.1 Remiendo de ciclos

    Para realizar esta técnica es necesario hallar
    los ciclos que son formados de las asignaciones hechas por el
    método Auction para el PA. Después de tener
    las asignaciones el siguiente paso es construir una secuencia
    LC:

    LC =
    C1, C2, … ,
    Cm-1, Cm

    siendo m la cantidad total de ciclos en la
    aplicación PA, Ck representa un ciclo
    ó una subruta del PVA:

    Ck = ck,0, ck,1,
    … , ck,r-1, ck,r, ck,0

    Como resultado del empate o remiendo de un par de ciclo
    Ck, Ck+1 se forma un nuevo
    ciclo C’k buscando la mínima
    distancia {d(ck+1,j ,
    ck,i+1)+d(ck,i , ck+1,j+1)}, para
    realizar un punto de ruptura (Figura 2.1), siendo (1 ≤
    i < r) y (1 ≤ j < p), donde
    | Ck | = r y | Ck+1| = p, quedando
    C’k de la siguiente forma (Figura 2.2):

    C’k = ck+1,0,
    ck+1,1, … , ck+1,j, ck,i+1, …
    , ck,r, ck,1, ck,2, … , ck,i,
    ck+1,j+1, …, ck+1,p,
    ck+1,0

    Figura 2.1 Puntos de rupturas de los
    ciclos Ck, Ck+1

     

    Figura 2.2 Remiendo de
    ciclos

    Los métodos de tipo Patche utilizados
    tienen en cuenta una única forma de unir ciclos, la
    explicada anteriormente. El orden en el que se toman los ciclos
    no es predefinido, lo define la propia
    hiperheurística.

    En este trabajo se propone una modificación a
    estas técnicas realizando búsquedas locales a las
    soluciones obtenidas que permitan mejorar la calidad de las
    mismas. Para esto es necesario realizar un análisis de
    posibles métodos de búsqueda local para el PVA y
    seleccionar los mejores.

    3.3 Heurísticas de
    búsquedas

    En este trabajo se proponen cinco métodos de
    búsquedas locales para el PVA, dos de ellos (Mover
    Nodo
    y Intercambiar Nodo) no se encuentra
    reflejado por ningún autor en la literatura, aunque son
    variantes realizadas a 3-Opt y 4-Opt
    respectivamente los otras son (2-Opt, 3-Opt y
    4-Opt), las cuales son utilizado con frecuencia en los
    trabajos del PVA [4 y 7].

    Las búsquedas locales se pueden realizar de
    diversas maneras, las más utilizadas son la primera mejora
    (tomar como punto de partida la primera solución que
    mejore la solución actual) y la mejora profunda (recorrer
    toda la vecindad de la solución actual y tomar la mejor
    solución vecina), aunque esta última es muy
    rechazada por el costo computacional que genera [32]. En este
    trabajo se utilizará la búsqueda de la primera
    mejora para cada método de búsqueda. La
    razón para ello es que, según un pequeño
    diseño de experimento realizado, las estructuras de
    vecindad propuestas son fuertes, en el sentido de que partiendo
    de diversas soluciones iniciales se obtienen soluciones de
    calidad semejante con la primera mejora o con la mejora profunda,
    consumiendo este último mucho más tiempo de
    ejecución.

    3.3.1 Operador Mover nodo

    En las literaturas estudiadas este movimiento de
    búsqueda no fue descrito por ningún autor aunque es
    una variante que se dijo del operador 3-Opt, la
    búsqueda de Mover Nodo es la siguiente:

    Sea la ruta S0 formada por la siguiente
    estructura:

    S0 = a0, a1,
    … , ai-1, ai, ai+1, ai+2,
    … , aj-1, aj, aj+1, … ,
    an-2, an-1, an, a0

    donde i y j son las dos posiciones a
    utilizar para realizar el movimiento, este método se basa
    en desplazar el nodo situado en la posición i a la
    posición j, como se muestra en la
    Figura 2.3a. Existen dos posibles variantes para el movimiento
    del nodo ai, para obtener la nueva solución vecina
    S1:

    1. Si (i < j), el nodo ai se
      coloca entre el nodo aj y aj+1, lo que
      resulta:
    2. S1 = a0, a1,
      … , ai-1, ai+1, ai+2, … ,
      aj-1, aj, ai, aj+1, … ,
      an-1, an, a0

    3. Si (i > j), el nodo ai se
      coloca entre el nodo aj-1 y aj, por
      tanto:

    S1 = a0, a1,
    … , aj-1, ai, aj, aj+1,
    … , ai-1, ai+1, ai+2, … ,
    an-1, an, a0

    como se muestra en la Figura 2.3b y 2.3c
    respectivamente.

    2.3a 2.3b 2.3c

    Fig. 2.3 Operador Mover
    Nodo

    Una búsqueda mejorada de éste para
    disminuir tiempo de ejecución del algoritmo consiste en
    que para cada iteración de búsqueda con una nueva
    solución de mejor calidad que la anterior, en
    función de los nodos i,j, existen soluciones
    vecinas comunes a las vecindades de la solución actual y
    anterior que no se tienen en cuenta porque ya fueron exploradas.
    Este método es O(n2). La evaluación
    del costo de cada nueva solución posible es parcial y muy
    rápida, pues para un recorrido de n aristas, solo
    es necesario evaluar los costos de 3 de ellas.

    3.3.2 Operador intercambiar nodo

    Este operador es una modificación del operador
    4-Opt y consiste solo en intercambiar dos nodos, a
    diferencias del operador inicial que intercambia dos subrutas.
    Este operador tiene la siguiente estructura:

    Sea la ruta S0 formada como
    sigue:

    S0 = a0, a1,
    … , ai-1, ai, ai+1, ai+2,
    … , aj-1, aj, aj+1, … ,
    an-1, an, a0

    donde i y j son las posiciones
    seleccionadas para realizar el movimiento (Figura 2.4a). Se
    realiza un intercambio entre el nodo ai y
    aj, por tanto la nueva solución vecina
    S1 resulta:

    S1 = a0, a1,
    … , ai-1, aj, ai+1, ai+2,
    … , aj-1, ai, aj+1, … ,
    an-1, an, a0

    como se muestra en la Figura 2.4b.

    2.4a 2.4b

    Fig. 2.4 Operador Intercambiar
    Nodo.

    La mejora de este método es similar al de
    Mover Nodo con O(n2) operaciones,
    aunque utiliza menos tiempo computacional. Su movimiento es muy
    simple, realiza un intercambio de dos variables. De la misma
    manera la evaluación del costo de cada nueva
    solución es parcial, pues para un recorrido de n
    aristas, solo es necesario evaluar los costos de 4 de
    ellas.

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter