• No se han encontrado resultados

yor expresividad

El modelo de soluci´on completo para esta tesis corresponde a la combinaci´on de heur´ısticas y el uso de diferentes funciones condicionales y ciclos que permitan al algoritmo optimizar el individuo final propuesto para la resoluci´on del problema. Para la implementaci´on de la plataforma de programaci´on gen´etica se utilizaron los par´ametros de control de acuerdo a los valores est´andares descritos en las tablas 4.1 y 4.2. La funci´on objetivo es ajustada y el algoritmo es de tipo generacional. Para aumentar la expresividad del bloque de hiperheur´ıstica se aumentaron el tipo de funciones que el ´arbol pod´ıa utilizar. El conjunto de funciones utilizadas para el ´arbol fueron de diversos tipos de condiciones y ciclos. Los ciclos manejaron constantes ef´ımeras aleatorias con valores de 5 y 10 para generar el uso de alguna heur´ısticas repetidamente. Otro tipo de ciclo utilizado fue el ciclo while el cual utiliza algunas de las condiciones que se construyeron para este algoritmo.Las funciones que se crearon de tipo condicionales fueron las siguientes:

volumenAlto, volumenBajo: estas funciones determinan si la ruta selecciona- da est´a arriba del 75 % de su capacidad o est´a por debajo del 25 %;

soluci´onMejorada: esta funci´on eval´ua si la ´ultima heur´ıstica utilizada mejor´o la soluci´on o no.

clienteCercaDepot, clienteLejosDepot: El 25 % de los clientes son clasifi- cados como cercanos al almac´en y otro 25 % son clasificados como alejados del almac´en.

rutaMayorCosto, rutaMenorCosto: Condici´on que determina si la ruta sobre la que se est´a trabajando es la de mayor o menor costo.

costoSoluci´onBajo, costoSoluci´onAlto: Estas funciones eval´uan tomando co- mo rango el valor original de la heur´ıstica de construcci´on y el valor del ´optimo ya conocido. En base a esto determinan si el costo de la soluci´on calculado hasta el momento est´a cercano al ´optimo o cercano al valor original.

eligeRuta: En lugar de utilizar un ´ındice que era movido secuencialmente ca- da vez que se mandaba llamar la funci´on cambiaRuta, se implement´o un nodo que utiliza constantes ef´ımeras determinadas por el n´umero de rutas en nuestra soluci´on y realiza una operaci´on sobre dicha ruta elegida.

Figura 5.6: Ejemplo de un posible individuo resultante de la hiperheur´ıstica con mayor expresividad.

Las funciones mencionadas anteriormente tambi´en son utilizadas con funciones condicionales del tipo if else. Las funciones costoSoluci´onBajo y costoSoluci´onAlto son usadas adem´as con una funci´on del tipo switch case. En la figura 5.6 se muestra un posi- ble individuo resultante de este tipo de hiperheur´ıstica, el cual corresponde al programa en LISP (eligeRuta 2 (concatena (for 5 2-int) (eligeRuta 4 (ifElse volumenAlto GENI-I

Or-opt)))). El conjunto de terminales fueron las mismas heur´ısticas de mejoramiento que se utilizaron en la hiperheur´ıstica simple.

5.3.

Resumen

El modelo de soluci´on para resolver instancias de CVRP consta de un bloque con- vertidor de archivos que estandariza la organizaci´on de los datos para que puedan ser entendidos por el sistema. El siguiente bloque genera una soluci´on completa utilizan- do algoritmos de construcci´on, de dos fases o un algoritmo aleatorio dise˜nado para el desarrollo espec´ıfico de esta tesis. Por ´ultimo, el tercer bloque es una hiperheur´ıstica de soluci´on completa que optimiza el resultado obtenido por el algoritmo de construc- ci´on. En este trabajo es probada una hiperheur´ıstica simple, que ´unicamente es una cadena de heur´ısticas de mejora arregladas en forma de ´arbol y una hiperheur´ıstica con mayor expresividad donde adem´as de contener como nodos las heur´ısticas contiene fun- ciones condicionales y c´ıclicas. Para la experimentaci´on con este modelo se utilizaron las instancias propuestas por Taillard y Christofides, Mingozzi y Toth.

Cap´ıtulo 6

Experimentaci´on y an´alisis de resultados

En este cap´ıtulo se describen los experimentos realizados con el modelo de soluci´on planteado en el cap´ıtulo anterior. Para cada secci´on se presenta el dise˜no del experi- mento y su justificaci´on, despu´es de eso se muestran los resultados de cada experimento mediante gr´aficas y tablas. Al final de cada secci´on se presenta un an´alisis general de los resultados obtenidos en cada grupo de experimentos. Por ´ultimo, se presenta una discusi´on general sobre los resultados obtenidos en este cap´ıtulo.

Tabla 6.1: Resultados de las heur´ısticas de ahorro para cada instancia.

instancia ahorro paralelo ahorro secuencial mejor reportado

tai75a 1652.68 2456.19 1618.36 tai75b 1384.47 2339.54 1344.64 tai75c 1400.74 1334.64 1291.01 tai75d 1429.59 2077.21 1365.42 tai100a 2149.53 2957.90 2041.34 tai100b 2045.40 2804.18 1940.61 tai100c 1501.83 2804.25 1406.20 tai100d 1701.43 2016.09 1581.25 tai150a 3220.21 3897.56 3055.23 tai150b 2774.21 3155.89 2656.47 tai150c 2477.67 2824.03 2341.84 tai150d 2830.57 3554.88 2645.39 tai385 27837.07 33436.86 24431.44 vrpnc1 584.64 688.34 524.61 vrpnc2 881.70 1043.66 835.26 vrpnc3 873.23 1203.36 826.14 vrpnc4 1073.39 1403.05 1028.42 vrpnc5 1374.89 1525.01 1291.29 vrpnc11 1089.01 1324.52 1042.11 vrpnc12 873.82 923.64 819.56

Tabla 6.2: Resultados de heur´ısticas de construcci´on para cada instancia.

instancia inserci´on inserci´on barrido mejor instancia paralelo secuencial reportado

tai75a 1715.46 1718.70 1728.25 1618.36 tai75b 1652.65 2234.05 1604.69 1344.64 tai75c 1408.49 1415.62 1401.65 1291.01 tai75d 1502.37 1623.48 1439.65 1365.42 tai100a 2237.30 2245.27 2400.14 2041.34 tai100b 2059.46 2040.12 2278.66 1940.61 tai100c 1511.11 1651.16 1652.23 1406.20 tai100d 1612.88 1878.30 1719.67 1581.25 tai150a 3207.38 3385.19 3352.50 3055.23 tai150b 2743.42 2783.64 2870.98 2656.47 tai150c 2430.46 2576.01 2549.94 2341.84 tai150d 2830.57 3244.97 3108.33 2645.39 tai385 28929.18 29915.32 29694.48 24431.44 vrpnc1 556.66 607.67 563.81 524.61 vrpnc2 883.19 956.62 992.29 835.26 vrpnc3 890.91 978.56 888.43 826.14 vrpnc4 1142.58 1159.44 1246.69 1028.42 vrpnc5 1352.94 1913.69 1562.46 1291.29 vrpnc11 1131.42 1278.77 1404.76 1042.11 vrpnc12 917.91 1128.53 958.89 819.56

La metodolog´ıa que se sigui´o en los experimentos fue primeramente probar los re- sultados obtenidos por las heur´ısticas de construcci´on y las heur´ısticas de mejoramiento de manera individual. Despu´es se prob´o la corrida de experimentos con la hiperheur´ısti- ca simple y la hiperheur´ıstica con mayor expresividad para comparar los resultados entre estas cuatro formas de buscar la soluci´on de cada una de las instancias. Para realizar la comparaci´on entre cada una de las implementaciones se calcul´o un valor al que se le llam´o porcentual y que puede definirse como el escalamiento del valor real con respecto al mejor conocido tomando este ´ultimo como valor nominal igual a 1. El valor porcentual de una soluci´on ser´a por lo tanto el costo real obtenido entre el costo del mejor valor reportado.

6.1.

Heur´ısticas de construcci´on

Para esta fase de la experimentaci´on se corrieron cada una de las instancias usando cada una de las heur´ısticas de construcci´on y los resultados se compararon con el

Figura 6.1: Gr´afica de resultados de heur´ısticas de construcci´on.

Tabla 6.3: Resultados condesados de las heur´ısticas de construcci´on.

algoritmo Promedio porcentual Desviaci´on est´andar% ahorro paralelo +7.2313 3.6902

ahorro secuencial +37.5969 22.8171 inserci´on paralela +9.1166 5.6124 inserci´on secuencial +20.6539 16.2222

barrido +15.7476 8.3813

mejor valor conocido. Se realiz´o ´unicamente una corrida por algoritmo e instancia, ya que estos m´etodos son de tipo determin´ısticos. Los resultados de cada heur´ıstica de construcci´on para cada instancia se muestran en las tablas 6.1 y 6.2. En dichas tablas se ennegrecieron los mejores valores encontrados para cada instancia. En la figura 6.1 se muestra una gr´afica que compara de manera proporcional con respecto al mejor valor reportado los resultados obtenidos por cada heur´ıstica para las diferentes instancias. En la tabla 6.3 se muestran los condensados de los resultados de cada uno de los m´etodos. La columna denominada como promedio porcentual equivale al promedio de las diferencias porcentuales entre el valor obtenido por el algoritmo y el mejor valor conocido. La desviaci´on est´andar representa la variabilidad del valor porcentual de la columna anterior.

La heur´ıstica que en general arroj´o mejores resultados para estas instancias fue la heur´ıstica de ahorro paralelo ya que tanto el valor porcentual de su cercan´ıa con el

Tabla 6.4: Resultados de las heur´ısticas de mejora para cada instancia.

instancia 2-intercambio 3-intercambio Or-opt mejor reportado

tai75a 1645.84 1631.84 1643.13 1618.36 tai75b 1353.45 1345.49 1382.87 1344.64 tai75c 1380.30 1400.74 1386.17 1291.01 tai75d 1429.59 1411.89 1428.07 1365.42 tai100a 2117.81 2149.53 2149.53 2041.34 tai100b 2045.40 2028.09 2025.59 1940.61 tai100c 1501.83 1459.89 1501.83 1406.20 tai100d 1701.43 1672.21 1682.70 1581.25 tai150a 3220.21 3185.20 3217.05 3055.23 tai150b 2774.21 2774.21 2744.39 2656.47 tai150c 2477.67 2408.05 2450.65 2341.84 tai150d 2773.95 2808.43 2806.49 2645.39 tai385 27697.88 27480.90 27825.59 24431.44 vrpnc1 584.64 578.56 584.64 524.61 vrpnc2 855.25 875.70 881.70 835.26 vrpnc3 873.23 862.19 873.23 826.14 vrpnc4 1073.39 1062.22 1071.65 1028.42 vrpnc5 1374.89 1337.78 1350.07 1291.29 vrpnc11 1088.65 1089.01 1089.01 1042.11 vrpnc12 873.82 862.34 873.82 819.56

mejor valor reportado y el valor de su variabilidad fueron menor que los de las otras heur´ısticas, adem´as de que en mucho de los casos fue este algoritmo el que encontr´o la mejor soluci´on. Esto explica en gran parte el por qu´e esta heur´ıstica es la m´as utilizada en paquetes comerciales de resoluci´on de problemas de VRP y la raz´on de que varios investigadores han dedicado gran parte de sus investigaciones a buscar la manera de optimizar este algoritmo ya que en general resulta una heur´ıstica f´acil de implementar y que entrega resultados medianamente buenos en corto tiempo. La heur´ıstica que en promedio estuvo m´as alejada del ´optimo reportado es el m´etodo de ahorro secuencial que adem´as present´o una mayor desviaci´on est´andar que los otros algoritmos. Algo que tambi´en puede analizarse es que en general los m´etodos de tipo paralelo tuvieron un mejor desempe˜no que los de tipo secuencial. El orden del desempe˜no de estas heur´ısticas de la mejor a la que entreg´o resultados m´as pobres para estas intancias son ahorro paralelo, inserci´on paralela, barrido, inserci´on secuencial y ahorro secuencial.

Se hicieron 15 corridas con el algoritmo de construcci´on aleatoria. Los resultados arrojados por este m´etodo, propuesto ´unicamente para experimentaci´on, estuvieron siempre muy por abajo del peor resultado obtenido por alguno de los m´etodos de cons-

Tabla 6.5: Resultados de las heur´ısticas de mejora para cada instancia.

instancia GENI I GENI II SR SE mejor reportado

tai75a 1642.66 1637.63 1637.63 1640.18 1618.36 tai75b 1383.48 1365.47 1357.12 1354.18 1344.64 tai75c 1400.74 1400.74 1384.04 1379.25 1291.01 tai75d 1429.59 1385.33 1424.89 1420.10 1365.42 tai100a 2149.53 2084.02 2149.53 2135.31 2041.34 tai100b 2002.48 2045.40 1999.49 2031.79 1940.61 tai100c 1501.83 1455.62 1474.84 1496.51 1406.20 tai100d 1700.39 1701.43 1701.43 1697.55 1581.25 tai150a 3220.21 3220.21 3220.21 3167.55 3055.23 tai150b 2774.21 2774.21 2774.21 2774.21 2656.47 tai150c 2463.87 2467.39 2451.44 2436.90 2341.84 tai150d 2748.40 2741.54 2814.03 2785.82 2645.39 tai385 27837.07 27837.07 27114.72 27837.07 24431.44 vrpnc1 584.64 581.12 579.81 584.64 524.61 vrpnc2 881.70 881.70 872.51 866.33 835.26 vrpnc3 868.23 860.72 861.39 873.23 826.14 vrpnc4 1062.19 1049.31 1073.39 1066.01 1028.42 vrpnc5 1372.42 1354.81 1363.54 1374.89 1291.29 vrpnc11 1089.01 1089.01 1072.32 1071.24 1042.11 vrpnc12 861.64 857.43 852.43 860.00 819.56

trucci´on o de dos fases. La variabilidad de este algoritmo fue bastante alta, lo cual era de esperarse ya que sus resultados eran obtenidos de manera aleatoria.