<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0120-5609</journal-id>
<journal-title><![CDATA[Ingeniería e Investigación]]></journal-title>
<abbrev-journal-title><![CDATA[Ing. Investig.]]></abbrev-journal-title>
<issn>0120-5609</issn>
<publisher>
<publisher-name><![CDATA[Facultad de Ingeniería, Universidad Nacional de Colombia.]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0120-56092007000100019</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Metaheurísticas aplicadas al ruteo de vehículos. Un caso de estudio: Parte 2: algoritmo genético, comparación con una solución heurística]]></article-title>
<article-title xml:lang="en"><![CDATA[Metaheuristics applied to vehicle routing. A case study: Part 2: genetic algorithm, compared to a heuristics solution]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[González Vargas]]></surname>
<given-names><![CDATA[Guillermo]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[González Aristizábal]]></surname>
<given-names><![CDATA[Felipe]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad Nacional de Colombia  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>04</month>
<year>2007</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>04</month>
<year>2007</year>
</pub-date>
<volume>27</volume>
<numero>1</numero>
<fpage>149</fpage>
<lpage>157</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S0120-56092007000100019&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S0120-56092007000100019&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S0120-56092007000100019&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[Este artículo presenta la solución a un problema de ruteo de vehículos a través de dos técnicas diferentes; en primera instancia se aplica un algoritmo genético y se realizan diferentes experimentos, posteriormente se utiliza la metodología de clusterizar primero y rutear después a través de las heurísticas de barrido y búsqueda local, respectivamente. Los resultados de las diferentes técnicas son comparados.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[This paper presents a solution to a vehicle-routing problem by using two different techniques. In the first instance, a genetic algorithm was applied (different experiments were done); later on the cluster first-route second methodology was used via heuristic sweep and local search, respectively. The results of the different techniques were then compared.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[ruteo de vehículos]]></kwd>
<kwd lng="es"><![CDATA[algoritmo genético]]></kwd>
<kwd lng="es"><![CDATA[barrido]]></kwd>
<kwd lng="es"><![CDATA[búsqueda local]]></kwd>
<kwd lng="en"><![CDATA[vehicle-routing]]></kwd>
<kwd lng="en"><![CDATA[genetic algorithm]]></kwd>
<kwd lng="en"><![CDATA[sweep]]></kwd>
<kwd lng="en"><![CDATA[local search]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[  <font size = "2" face = "verdana">     <p>    <center><font size = "4"><b> Metaheurísticas aplicadas al ruteo de vehículos. Un caso de estudio.  Parte 2: algoritmo genético, comparación con una solución  heurística </b></font></center></p>     <p>    <center><font size = "3"><b> Metaheuristics applied to vehicle routing. A case study.   Part 2: genetic algorithm, compared to a heuristics solution </b></font></center></p>     <p><b> Guillermo González Vargas<sup>1</sup>, Felipe González Aristizábal<sup>2</sup> </b></p>     <p>    <br><sup>1</sup> Ingeniero industrial, Universidad Nacional de Colombia. Aspirante a M.Sc.    en Ingeniería Industrial, Universidad de los Andes, Colombia. <a href = "mailto:gu-gonza@uniandes.edu.co">gu-gonza@uniandes.edu.co</a>     <br><sup>2</sup> Ingeniero industrial, Universidad Nacional de Colombia. Aspirante a M.Sc. en    Ingeniería Industrial, Universidad de los Andes, Colombia. <a href = "mailto:fe-gonza@uniandes.edu.co">fe-gonza@uniandes.edu.co</a> </p> <hr size = "1">     <p><b> RESUMEN </b></p>     ]]></body>
<body><![CDATA[<p>   Este artículo presenta la solución a un problema de ruteo de vehículos    a través de dos técnicas diferentes; en primera instancia se aplica    un algoritmo genético y se realizan diferentes experimentos, posteriormente    se utiliza la metodología de clusterizar primero y rutear después    a través de las heurísticas de barrido y búsqueda local,    respectivamente. Los resultados de las diferentes técnicas son comparados.</p>     <p><b>Palabras clave:</b> ruteo de vehículos, algoritmo genético, barrido,    búsqueda local. </p> <hr size = "1">     <p><b> ABSTRACT </b></p>     <p>   This paper presents a solution to a vehicle-routing problem by using two different    techniques. In the first instance, a genetic algorithm was applied (different    experiments were done); later on the cluster first-route second methodology    was used via heuristic sweep and local search, respectively. The results of    the different techniques were then compared. </p>     <p> <b>  Keywords:</b> vehicle-routing, genetic algorithm, sweep, local search.</p> <hr size = "1">     <p>Recibido: abril 18 de 2006    <br>   Aceptado: septiembre 20 de 2006</p>     <p><font size = "3"><b> Introducción </b></font></p>     <p>El presente artículo es el segundo de una serie de tres que fue iniciada    en el número anterior de la presente revista, en este se presentan dos    metodologías de solución diferentes al problema de ruteo de vehículos    (VRP) que surge de la necesidad que una empresa manufacturera presenta para    decidir la localización de una bodega de producto terminado desde la    cual satisfacer la demanda de sus clientes (la descripción del problema    y su formulación matemática se encuentran en el primer artículo).</p>     <p>El artículo comienza con una breve descripción bibliográfica    de los conceptos de heurística y metaheurística. En las siguientes    líneas los autores presentan el concepto de algoritmo genético,    metaheurística ampliamente utilizada en la solución de este tipo    de problemas y se ilustra la metodología implementada describiendo de    manera detallada los operadores utilizados; adicionalmente se exhíben    los resultados obtenidos en los diferentes experimentos realizados. Posteriormente    se aborda el problema limitando el espacio de soluciones a través de    la utilización de la técnica de clusterizar primero - rutear    después (<i>cluster first - routen second</i>) (Olivera, 2004), aplicando    para ello dos heurísticas: el barrido para clusterizar y la búsqueda    local para rutear; igual que en el caso anterior, se registran los resultados.</p>     ]]></body>
<body><![CDATA[<p>Finalmente, los autores comparan los resultados logrados por medio de las diferentes    técnicas y con base en ello se exponen algunas conclusiones.</p>     <p><font size = "3"><b> Heurísticas y metaheurísticas </b></font></p>     <p>El problema de ruteo de vehículos que compete a esta serie de artículos    es de naturaleza combinatoria, tal tipo de problemas es formulado generalmente    como programas de optimización entera, los cuales a su vez pueden ser    reformulados o acotados a través de la exploración de conjuntos    de soluciones factibles (Crainic y Toulouse, 2003). Esta exploración    se realiza por medio de la enumeración implícita, para lo cual    han surgido diferentes métodos tales como el <i>Branch and Bound, Branch    and cut, Branch and price</i>; sin embargo, en muchos problemas del “mundo    real” dichos métodos fallan por diferentes motivos, entre los que    se pueden nombrar los espacios de búsqueda demasiado amplios, o bien,    demasiado complejos debido a las restricciones de los problemas (Burke <i>et al</i>.,    2003). Para evitar inconvenientes como los mencionados es común utilizar    procedimientos heurísticos, con los cuales se sacrifica la garantía    de encontrar una solución óptima a cambio de velocidad y alguna    certeza de encontrar cierto nivel de calidad en la solución hallada (Burke    <i>et al</i>., 2003), por lo que, según Crainic y Toulouse (2003) las heurísticas    son una alternativa muy usada en la solución de problemas de tipo combinatorio.</p>     <p>Según Melián <i>et al</i>. (2003) el término “heurística”    proviene de la palabra griega <i>eureka</i>, utilizada por Arquímedes, y ha    sido utilizado para agrupar un conjunto de algoritmos de búsqueda basados    en estructuras repetitivas, con los cuales se dirigen procesos de decisión    (Burke <i>et al</i>., 2003). En términos generales, una heurística es    el procedimiento repetitivo que identifica una solución factible, con    la cual se espera acercarse a la solución óptima. En el presente    artículo se implementa lo que Torres (2005) denomina heurísticas    de dos fases, específicamente la metodología de clusterizar primero    y rutear después (<i>cluster first-routen second</i>), que consiste en    definir qué nodos del grafo serán abastecidos por determinado    vehículo o depósito (Olivera, 2004) para posteriormente determinar    la ruta a seguir bajo el esquema de un problema de agente viajero (<i>TSP</i>, por    sus siglas en inglés <i>Traveling Salesman Problem</i>), que puede ser solucionado    según Torres (2005) mediante heurísticas de inserción,    vecino más próximo, búsqueda local o algoritmo de Clark    y Wright (1964).</p>     <p>Aunque autores como Lin (1965) han demostrado las bondades de las heurísticas    en problemas de agente viajero, otros (Martí y Moreno, 2003) han sido    enfáticos en afirmar que en muchas ocasiones las heurísticas suministran    soluciones localmente óptimas que pueden estar muy alejadas (en términos    de valor objetivo) de las soluciones óptimas globales, es decir, estas    no dejan de tener una gran limitación para superar óptimos locales    (Crainic y Toulouse, 2003). Frente a este inconveniente se han desarrollado    las denominadas “metaheurísticas”, que son estrategias maestras    que permiten resolver de manera inteligente un problema (Melián <i>et al</i>.,    2003). El término metaheurísticas se obtiene de anteponer a <i>heurística</i>    el sujeto <i>meta</i>, que significa más allá o a un nivel superior,    lo que concuerda con la descripción que Crainic y Toulouse (2003) hacen    de estas técnicas al afirmar que modifican otras heurísticas para    producir mejores soluciones que las encontradas de la manera clásica.</p>     <p>Al igual que las heurísticas, las metaheurísticas no aseguran    una exploración sistemática de todo el espacio de soluciones;    sin embargo, exploran aquellas regiones en las que se cree es posible encontrar    buenas soluciones con base en cierto criterio. Según Crainic y Toulouse    (2003), metaheurísticas bien diseñadas pueden evitar problemas    de ciclaje (secuencias repetitivas de soluciones) y detención en óptimos    locales, con lo cual se supone se deben encontrar mejores soluciones en comparación    de las heurísticas clásicas. Louren&ccedil;o <i>et al</i>. (2003) han    clasificado las metaheurísticas en dos grandes conjuntos; el primero    de ellos, denominado metaheurísticas de vecindario (<i>Neighborhood based    metaheuristics</i>), contiene técnicas como recocido simulado y búsqueda    tabú, las cuales se basan en exploración de soluciones vecinas    a través de la heurística de búsqueda local; y el segundo    grupo, denominado metaheurísticas multiarranque (<i>Multi-start based metaheuristics</i>)    entre las que se encuentran los algoritmos de colonias de hormigas y los algoritmos    evolutivos (entre ellos los algoritmos genéticos, técnica aplicada    en este estudio), genera de manera iterativa diferentes soluciones.</p>     <p><font size = "3"><b> Solución metaheurística: algoritmo genético (GVR) </b></font></p>     <p>Como se ilustró en el artículo anterior, una de las técnicas    metaheurísticas más ampliamente utilizada en los problemas de    ruteo de vehículos son los algoritmos genéticos (GA, por sus siglas    en inglés), técnica que ha evolucionado desde el concepto alemán    de <i>Evolutionsstrategie</i> o el norteamericano de <i>evolutionary programming</i> concebido    en la época de los sesenta hasta llegar a vincularse con la optimización    en 1975 gracias al <i>Genetic Algoritm</i> de John Holland (Reeves, 2003). Las soluciones    generadas mediante algoritmos genéticos se obtienen al utilizar los conceptos    de cruce y la mutación de las ciencias biológicas (LeBlanc et    al., 1999) y las reglas naturales de autorreparación y adaptación    de los seres vivos (Goldberg, 1989). Según Reeves (2003), el uso de algoritmos    genéticos en optimización es muy popular y frecuentemente presenta    resultados exitosos en aplicaciones reales, lo que se respalda claramente en    el comentario de Goldberg (1989), quien afirma que teórica y empíricamente    ha sido probada la posibilidad de lograr búsquedas robustas en espacios    complejos con la aplicación de GA.</p>     <p>Según Goldberg (1989), los algoritmos genéticos difieren de la    mayoría de procedimientos de búsqueda y optimización normales    en cuatro aspectos básicos: </p>    <p>   1. Los algoritmos genéticos trabajan con una codificación de parámetros    (o genotipo) y no con los parámetros en sí mismos (fenotipo),    por esta razón en los GA cada solución (individuo de la población)    está representada por un vector denominado cromosoma, en el que cada    uno de sus componentes (gen) representa un parámetro de la solución. </p>    ]]></body>
<body><![CDATA[<p>   2. Los algoritmos genéticos realizan la búsqueda a partir de una    población de soluciones y no desde una sola solución, lo cual,    según LeBlanc <i>et al</i>. (1999), asegura la exploración de una mayor    porción del espacio de soluciones y evita la caída en óptimos    locales. </p>    <p>   3. Los algoritmos genéticos utilizan la información de la evaluación    de la función objetivo (<i>fitness</i>) para guiar la búsqueda, no conocimiento    auxiliar. </p>    <p>   4. Los algoritmos genéticos utilizan reglas de transición probabilística    y no determinística.</p>     <p><b> Estructura y codificación del algoritmo genético </b></p>     <p>Con base en la información recopilada acerca de los algoritmos genéticos    y las ventajas que ellos ofrecen en la solución de problemas de tipo    combinatorio, se propone la utilización de esta técnica para solucionar    a cada uno de los subproblemas de tipo CVRP que surgen de dividir el problema    original del que trata este caso, tal como se describió en el primer    artículo; por tal motivo, se implementa una estructura general de algoritmo    genético como la que se describe a continuación (los operadores    son los usados en C++):</p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19a1.gif"></center></p>     <p>La representación de cada individuo que compone la población,    las estrategias de cruce y mutación, y los diferentes parámetros    del algoritmo, difieren según los autores e implementadores de las rutinas,    por tanto es importante que el lector conozca aquellas condiciones utilizadas    en el presente caso.</p>     <p><b><i>Codificación de individuos </i></b></p>    <p>   Los individuos se codifican con un cromosoma (vector) de 52 genes (componentes),    cada uno de los cuales debe contener uno de los nodos que componen el grafo    (se excluye el nodo que identifica el origen), en ningún caso pueden    existir genes repetidos, ya que esto indicaría que un nodo está    siendo visitado más de una vez (<a href="#fig01">Figura 1</a>). La ruta que sigue cada vehículo    consiste en partir del origen y visitar consecutivamente los nodos que se indican    en el cromosoma hasta llegar a uno cuya demanda, aunada con la de todos los    nodos visitados anteriormente por el vehículo, supere su capacidad; cuando    esto sucede el vehículo se dirige al origen y se inicia la ruta del vehículo    siguiente.</p>     ]]></body>
<body><![CDATA[<p><a name="fig01"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f1.jpg"></center></p>     <p></p>     <p><b><i>Generación de la población inicial </i></b></p>    <p>   La población inicial es un conjunto de individuos generados de manera    aleatoria de manera que cada uno de sus cromosomas presenta la estructura de    la <a href="#fig01">Figura 1</a>. El tamaño de la población a utilizar en la evolución    del algoritmo es un parámetro del algoritmo y se ajusta por ensayo y    error según los resultados obtenidos.</p>     <p><b><i>Condición de terminación </i></b></p>    <p>   El algoritmo propuesto se detiene después de realizar un determinado    número de generaciones (ciclos); al igual que el tamaño de la    población, es un parámetro del algoritmo y se ajusta por ensayo    y error de tal manera que no se limite la evolución del algoritmo.</p>     <p><b><i>Cálculo de fitness (evaluación del individuo) </i></b></p>    ]]></body>
<body><![CDATA[<p>   El costo de cada cromosoma equivale a la suma de los costos de las rutas recorridas    por cada uno de los vehículos. Para cada vehículo, el costo de    su ruta se calcula con la suma de las distancias recorridas, iniciando con la    distancia entre el origen y el primer nodo; posteriormente se suman las distancias    entre los pares de nodos consecutivos que aparecen en el cromosoma hasta llegar    a aquel que no pueda ser satisfecho con la capacidad del vehículo, en    este momento se suma la distancia entre el último nodo visitado y el    origen y se inicia el mismo procedimiento para el vehículo siguiente;    este proceso se realiza hasta agotar los nodos a visitar. En caso de encontrar    individuos que requieran más de seis vehículos para satisfacer    la demanda de todos los nodos el algoritmo está programado para penalizarlo    incrementando significativamente el costo de su ruta, de tal manera que se reduzca    su probabilidad de reproducirse.</p>     <p><b><i>Ordenación de la población </i></b></p>    <p>   Una vez que la población cuenta con su tamaño indicado, el algoritmo    realiza una ordenación de los individuos, colocando en primer lugar aquel    que posea el mejor <i>fitness</i>, es decir aquella solución que presenta la    menor distancia total recorrida para satisfacer la demanda de todos los nodos.</p>     <p><b><i>Estrategia de selección de padres </i></b></p>    <p>   El algoritmo propuesto utiliza una estrategia elitista para seleccionar a los    individuos que mediante su cruce generan los hijos que conforman la población    de la siguiente generación. La estrategia elitista consiste en definir    una elite de individuos que por sus características superiores (menor    distancia total recorrida) son los encargados de generar, mediante cruces de    miembros de la elite, una proporción de individuos de la siguiente generación.    Para definir esta estrategia es necesario determinar que porcentaje de la población    será considerada elite y qué porcentaje de los hijos será    generada por ella, estos porcentajes son parámetros que deben ser definidos    por ensayo y error según la evolución del algoritmo. Para generar    los hijos restantes hasta completar la población de la siguiente generación    se cruzan indistintamente todos los individuos.</p>     <p><b><i>Estrategia de cruce </i></b></p>    <p>   El cruce es una operación realizada sobre dos cromosomas de una generación,    los cuales generan dos individuos nuevos (hijos u <i>Offsprings</i>) por su combinación.    En el algoritmo propuesto por los autores se utiliza el cruce uniforme (Zhou    <i>et al</i>., 2002), consistente en la generación de un vector binario de la    misma longitud de los cromosomas denominado máscara de cruce, con base    en el cual se combinan los genes de los padres. Los componentes del vector máscara    se generan de manera aleatoria, lo que garantiza que cada cromosoma hijo contiene    una cantidad aleatoria de información de cada uno de los padres. La <a href="#fig02">Figura    2</a> ilustra el cruce uniforme.</p>     <p><a name="fig02"></a></p>     <p></p>     <p>    ]]></body>
<body><![CDATA[<center><img src="img/revistas/iei/v27n1/1a19f2.jpg"></center></p>     <p></p>     <p><b><i> Estrategia de mutación </i></b></p>    <p>   La mutación es un operador que produce cambios espontáneos de    manera aleatoria en algunos individuos de cada población (Zhou <i>et al</i>.,    2002); en el algoritmo propuesto se utiliza como procedimiento de mutación    un intercambio entre dos posiciones del cromosoma, es decir, en individuos seleccionados    de manera aleatoria (según probabilidad de mutación) se seleccionan    aleatoriamente dos posiciones y se intercambian los valores de sus genes (nodos).    La <a href="#fig03">Figura 3</a> muestra un ejemplo del procedimiento de mutación. La probabilidad    de mutación es un parámetro del algoritmo y se ajusta por ensayo    y error según los resultados obtenidos.</p>     <p><a name="fig03"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f3.jpg"></center></p>     <p></p>     <p><b><i>Estrategia de reparación </i></b></p>    ]]></body>
<body><![CDATA[<p>   Al generar cromosomas a partir de la combinación de los genes de los    padres existe la posibilidad de repetir nodos en los hijos, condición    que implica la repetición de la visita a un nodo y por ende la infactibilidad    del individuo, ante esta situación es necesario proporcionar al algoritmo    una estrategia para reparar individuos que tengan este tipo de falencias. La    estrategia de reparación propuesta es la de “primero repetido -    primero faltante”, es decir, el primer nodo que se encuentre repetido    en el cromosoma es reemplazado por el primero que se halla ausente (en orden    lexicográfico).</p>     <p><b> Implementación </b></p>     <p>   Una vez programado el algoritmo descrito el usuario ejecuta el programa ingresando    los parámetros iniciales: tamaño de la población, el porcentaje    de individuos que componen la elite, porcentaje de hijos generados por la elite,    probabilidad de mutación y la cantidad de generaciones a realizar. Estos    parámetros son ajustados por el usuario para manipular la evolución    del algoritmo y de esta forma mejorar los resultados, tal y como se describirá    en las siguientes líneas. El algoritmo genético descrito hasta    el momento fue implementado en C++ y ejecutado en una PC Pentium IV de 2.4 Ghz    con 512 MB de RAM y 120 Gb de disco duro. </p>     <p><b> Experimentos </b></p>     <p>   Con el propósito de ajustar los parámetros de tal manera que el    algoritmo evolucione de la mejor forma posible y por ende se obtengan buenos    resultados, se realizan diferentes experimentos, en cada uno de los cuales se    modifican uno o varios parámetros y se observa el comportamiento del    algoritmo. Los beneficios de un algoritmo se miden según el valor promedio    de los resultados logrados al realizar diferentes réplicas y su desviación    típica (con base en la prueba estadística Anova es posible determinar    si un juego de parámetros presenta resultados estadísticamente    superiores a los obtenidos con valores diferentes), ya que esto es una medida    de la posibilidad de obtener buenos resultados al ejecutar de manera constante    el algoritmo. Aunado a lo anterior, los autores han decidido tener en cuenta    adicionalmente el valor mínimo obtenido con cada juego de parámetros,    ya que en última instancia este es el valor con el que se debe tomar    la decisión de localización.</p>     <p>Para el caso en estudio se realizaron diferentes experimentos aplicados a los    tres nodos candidatos a alojar el centro de distribución de la empresa.    Para cada nodo (9, 28, 49) se realizaron siete experimentos diferentes (<a href="#tab01">Tabla    1</a>); la cantidad de réplicas indica el número de veces que se ejecutó    el procedimiento, esto con el fin de realizar comparaciones estadísticamente    válidas de los resultados coeseguidos.</p>     <p><a name="tab01"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19t1.gif"></center></p>     ]]></body>
<body><![CDATA[<p></p>     <p>Los cuatro primeros experimentos tienen en común la cantidad de generaciones    permitidas y el tamaño de la población. En ellos se modificó    el porcentaje de individuos elite, el porcentaje de hijos generados por la elite    y la probabilidad de mutación. Para comparar los resultados de estos    experimentos se realizó un total de 50 réplicas para cada uno.    Con base en los resultados obtenidos (<a href="#tab02">Tabla 2</a>), y teniendo en cuenta que los    mejores experimentos (para los tres nodos) fueron el 1 (resultado promedio más    bajo) y el 4 (resultado mínimo más bajo<sup><a href="#no03">3</a></sup>), se decidió continuar    la experimentación con sus parámetros, efectuándose los    experimentos 5 y 6, los cuales mantienen una probabilidad de mutación    del 60%, un porcentaje de individuos elite igual al 40% de la población    total, y difieren en la cantidad de hijos generados por la elite que en un caso    es del 60% de la población total y en el otro es del 80%. En estos experimentos    se permitió una mayor evolución al algoritmo, pasando de 100 a    1.000 generaciones (<a href="#tab01">Tabla 1</a>). Debido a que el tiempo computacional se incrementa    al elevar la cantidad de generaciones se decidió reducir el número    de réplicas por experimento, en este caso se realizaron 30. </p>     <p><a name="tab02"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19t2.gif"></center></p>     <p></p>     <p>   Con base en los resultados de los dos últimos experimentos (<a href="#tab02">Tabla 2</a>)    se corroboró que para el caso en estudio lo mejor es mantener la cantidad    de hijos generados por la elite en un 60% de la población total, ya que    el experimento 5 obtuvo el menor resultado promedio, al mismo tiempo que el    menor valor mínimo; es importante dar a conocer al lector que al graficar    la evolución de los algoritmos se encontró que estos convergen    (en todos los casos) al mejor resultado entre las generaciones 300 y 400, por    lo cual se hace innecesaria la utilización de las 1.000 generaciones    propuestas. Con base en las observaciones anteriores, se decidió realizar    un último experimento en el cual se buscó explorar en cada generación    un mayor número de soluciones, para lo que se incrementó el tamaño    de la población, pasando de 50 a 100 individuos por generación,    lo que dio lugar al experimento 7, en él se redujo la cantidad de generaciones    a 500.</p>     <p>Para comparar los promedios de los experimentos, se realizó la prueba    Anova a través del paquete estadístico Minitab 14.<sup><a href="#no04">4</a></sup> Los resultados    para los nodos 9, 28 y 49 se encuentran en las <a href="#fig04">figuras 4</a>, <a href="#fig05">5</a> y <a href="#fig06">6</a>, respectivamente.    En ellas se puede apreciar que para los tres nodos hay una diferencia estadísticamente    significativa entre los resultados de los experimentos 1 y 2 con relación    a los experimentos 3 y 4. En el caso del experimento 1 los resultados son significativamente    menores, mientras que en el experimento 2 los resultados son mayores y entre    los experimentos 3 y 4 no se distingue ninguna diferencia estadística.    En cualquier caso los experimentos 5, 6 y 7 presentan resultados significativamente    menores respecto de los cuatro primeros experimentos; sin embargo, en los tres    últimos no se observan diferencias distinguibles estadísticamente    (salvo en el nodo 48, donde el experimento 7 presenta resultados menores a los    encontrados en el 6).</p>     <p><a name="fig04"></a></p>     ]]></body>
<body><![CDATA[<p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f4.jpg"></center></p>     <p></p>     <p><a name="fig05"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f5.jpg"></center></p>     <p></p>     <p><a name="fig06"></a></p>     ]]></body>
<body><![CDATA[<p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f6.jpg"></center></p>     <p></p>     <p>La evolución de los algoritmos en el experimento 7, para los nodos 9,    28 y 49, candidatos a convertirse en centros de distribución, es la que    se muestra en las <a href="#fig07">figuras 7</a>, <a href="#fig08">8</a> y <a href="#fig09">9</a>, respectivamente. Teniendo en cuenta los    resultados logrados en el último experimento, se obtuvo una distancia    total a recorrer de 1.682,1 km. partiendo del nodo 9, 1.839,2 km partiendo del    nodo 28 y 1.492,5 km. partiendo del nodo 49, con lo cual la empresa debería    localizar su punto de distribución en el nodo 49 y recorrer mensualmente    un total de 1492,5 Km. para satisfacer la demanda de los 53 nodos. </p>     <p><a name="fig07"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f7.jpg"></center></p>     <p></p>     ]]></body>
<body><![CDATA[<p><a name="fig08"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f8.jpg"></center></p>     <p></p>     <p><a name="fig09"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f9.jpg"></center></p>     <p></p>     ]]></body>
<body><![CDATA[<p><font size = "3"><b> Solución heurística: clusterizar primero, rutear después </b></font></p>     <p>Como se mencionó en el primer artículo, en los problemas de ruteo    de vehículos con múltiples depósitos o vehículos    es posible reducir la complejidad del problema acotando el universo de soluciones    a través de lo que Medaglia (2005) llama <i>set covering</i>, o lo que otros    autores conocen como clusterizar o asignar primero, rutear después (<i>cluster    first - routen second</i>) (Olivera, 2004). Esta técnica también    fue aplicada al caso de estudio del presente artículo, utilizando heurísticas    para desarrollar las dos etapas, esto con el propósito de comparar los    resultados obtenidos a través de la aplicación de heurísticas    y metaheurísticas como el algoritmo genético anteriormente expuesto.</p>     <p><b> Clusterización: barrido o sweep </b></p>     <p> Después de evaluar las posibilidades para creación de clusters    expuestas por Olivera (2004) y Ahuja <i>et al</i>. (1993), y buscando utilizar una    técnica que involucre la restricción de capacidad de los vehículos,    se decidió aplicar la técnica de barrido o <i>sweep</i>. Esta técnica    propone establecer un punto de origen en el depósito y desde allí    realizar un barrido para abarcar toda la área geográfica del problema,    determinando así cada uno de los <i>clusters</i>. Este proceso sigue los siguientes    pasos (anónimo, s/f):<sup><a href="#no05">5</a></sup> </p>    <p>   1. Localizar el depósito y todos los clientes en una gráfica. </p>    <p>   2. Centrar el punto de origen del barrido en el depósito y trazar una    línea recta </p>    <p>   3. Realizar el barrido rotando la línea en sentido contrario a las manecillas    del reloj. </p>    <p>   4. Detener la inclusión de un cliente en el barrido cuando el vehículo    haya excedido su capacidad. </p>    <p>   5. Reiniciar el barrido hasta asignar todos los clientes a un <i>cluster</i>.</p>     <p>Para el caso de estudio, la clusterización se realizó ubicando    como ejes centrales las tres posibles localizaciones para la planta, es decir,    determinando las coordenadas polares (&theta;,&rho;)=(0,0) en los nodos 9, 28 y 49, obteniendo    las <a href="#fig10">figuras 10</a>, <a href="#fig11">11</a> y <a href="#fig12">12</a>, respectivamente.</p>     ]]></body>
<body><![CDATA[<p>Es importante resaltar que algunos <i>clusters</i> resultan conformados por un solo    nodo, dada su gran demanda, por lo que es necesaria la capacidad completa de    un vehículo para abastecerlo. También vale la pena mencionar que    al clusterizar desde el nodo 49, solo resultan necesarios cinco vehículos    (<a href="#fig12">Figura 12</a>).</p>     <p><a name="fig10"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f10.jpg"></center></p>     <p></p>     <p><a name="fig11"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f11.jpg"></center></p>     ]]></body>
<body><![CDATA[<p></p>     <p><a name="fig12"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f12.jpg"></center></p>     <p></p>     <p><b> Ruteo: búsqueda local </b></p>     <p>   Una vez definido el conjunto de clientes a atender (<i>cluster</i>) se procede a realizar    la asignación de la mejor ruta, este subproblema generalmente subyace    en un caso de problema de agente viajero (TSP) y puede resultar tan pequeño    como para ser solucionado mediante una técnica de optimización    como la programación lineal (Ahuja <i>et al</i>., 1993). No obstante, en este    caso de estudio la mayoría de los problemas TSP resultantes tienen dimensiones    grandes, por lo que se utilizó la heurística de búsqueda    local para definir la secuencia de nodos a visitar y así atender la demanda    de cada <i>cluster</i>.</p>     <p>La búsqueda local es una heurística en la que se explora el espacio    de soluciones a través de búsquedas de vecindario, esto es, partiendo    de una solución inicial (posiblemente generada de manera aleatoria);    la búsqueda local se mueve a un “vecino” que representa una    mejor solución que la actual de acuerdo a la función objetivo.    La heurística se detiene cuando ninguna de las soluciones existentes    en el vecindario explorado representan mejoras en la función objetivo,    o bien, cuando se considera que el resultado converge (Voudouris y Tsang, 2003).    La estructura general de un algoritmo de búsqueda local puede ser ilustrada    en lenguaje C++ de la siguiente manera:</p>     <p>    ]]></body>
<body><![CDATA[<center><img src="img/revistas/iei/v27n1/1a19a2.gif"></center></p>     <p><b><i>Codificación de la solución </i></b></p>    <p>   Las soluciones se codifican con vector n componentes, donde n indica la cantidad    de nodos pertenecientes al <i>cluster</i> ruteado; el orden en el que aparecen los    nodos en el vector indica la secuencia de la ruta, la cual inicia y finaliza    en el origen. La solución inicial se genera de manera aleatoria.</p>     <p><b><i>Vecinos </i></b></p>    <p>   Un vecino es una solución candidata que se genera a partir de la modificación    de la solución actual; para el caso de estudio la modificación    realizada consistió en el intercambio de las posiciones de dos componentes    de la solución actual. En la búsqueda local implementada se exploró    de manera exhaustiva todo el vecindario de cada solución actual, realizando    todos los intercambios posibles entre pares de componentes del vector. A manera    de ejemplo, la <a href="#fig13">Figura 13</a> muestra el vecindario de un vector de cuatro posiciones.</p>     <p><a name="fig13"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19f13.jpg"></center></p>     <p></p>     ]]></body>
<body><![CDATA[<p><b><i>Condición de terminación </i></b></p>    <p>   En general toda búsqueda local detiene sus iteraciones al encontrar una    vecindad en la cual todos los vecinos representan soluciones en las que no se    mejora la función objetivo. El algoritmo propuesto en este artículo    utiliza tal criterio como condición de terminación; sin embargo,    se adicionó una segunda condición teniendo en cuenta que al algoritmo    propuesto se le permitió cambiar de solución al encontrar un vecino    con valor de la función objetivo igual a la actual. Esta segunda condición    consiste en limitar la cantidad de veces que se acepta el mismo valor en la    función objetivo, es decir, cuando se considera que la solución    converge hacia un óptimo (local o global).</p>     <p><b> Resultados </b></p>     <p> Una vez realizada la clusterización y programado el algoritmo para efectuar    la búsqueda local, se procedió a utilizar esta heurística    para rutear los <i>clusters</i> conformados por más de un nodo, para este efecto    se realizaron 100 réplicas en cada <i>cluster</i> y se obtuvieron los resultados    de la <a href="#tab03">Tabla 3</a>. Sumando las distancias mínimas requeridas para satisfacer    la demanda de cada <i>cluster</i><sup><a href="#no06">6</a></sup> se encontró que para satisfacer la demanda    de todos los nodos es necesario recorrer 1.258,59 km partiendo del nodo 9, 1.772,07    km partiendo del nodo 28 y 1.262,26 km partiendo del nodo 49, con lo cual la    empresa debería localizar su punto de distribución en el nodo    9 y recorrer mensualmente un total de 1.258,59 km para satisfacer la demanda    de los 53 nodos. </p>     <p><a name="tab03"></a></p>     <p></p>     <p>    <center><img src="img/revistas/iei/v27n1/1a19t3.gif"></center></p>     <p></p>     <p><font size = "3"><b> Comparación de resultados y conclusiones </b></font></p>     ]]></body>
<body><![CDATA[<p>   Para el caso estudiado en este artículo la aplicación de la heurística    resulta ser más efectiva que la solución metaheurística    implementada, ya que se observa que en todos los casos los resultados obtenidos    a través del algoritmo genético son mayores que los logrados por    medio de la combinación del barrido para clusterizar y la búsqueda    local para rutear. Los resultados del algoritmo genético son mayores    en un 34% para el ruteo a partir del nodo 9, 4% a partir del nodo 28 y 18% a    partir del nodo 49.</p>     <p>Sin embargo, al analizar en detalle el comportamiento de la técnica    de clusterizar primero y rutear después se detecta que la calidad de    los resultados no depende específicamente del ruteo realizado por la    búsqueda local, ya que se observa que los resultados de esta son altamente    variables (ver desviación típica en la <a href="#tab03">Tabla 3</a>), lo que da pie    a pensar que el mínimo valor obtenido es fruto de la aleatoriedad y no    de una búsqueda esquemática que haga evolucionar satisfactoriamente    el resultado y por ende se trata de óptimos locales que pueden ser mejorados.    Por el contrario, al estudiar la clusterización se aprecia que los nodos    agrupados en cada <i>cluster</i> se convierten en conjuntos que facilitan la distribución    de los productos, y en esto radica la efectividad de la técnica.</p>     <p>Teniendo en cuenta lo anterior, queda abierta la posibilidad de desarrollar    una solución metaheurística más efectiva, basada en el    principio de clusterizar primero y rutear después. Este desarrollo se    ilustra en el tercer artículo de la serie.</p>     <p><font size = "3"><b> Enlaces </b></font></p>     <p><sup><a name="no03">3</a></sup> Es importante notar que el experimento de resultado mínimo para los tres nodos fue el número 1, por lo tanto se seleccionó el siguiente experimento de menor resultado.     <br><sup><a name="no04">4</a></sup> Minitab&reg; Release 14.13. 1972-2004 Minitab Inc. All rights reserved.     <br><sup><a name="no05">5</a></sup> Disponible en: <a href="http://www.cs.tcd.ie/courses/baict/bass/4ict5/Networks2004.pdf">www.cs.tcd.ie/courses/baict/bass/4ict5/Networks2004.pdf</a>. Recuperado en marzo de 2005     <br><sup><a name="no06">6</a></sup> En aquellos cluster en los que no se realizó el ruteo se sumó la distancia requerida para ir y volver del nodo origen al único nodo que compone el cluster.</p>     <p><font size = "3"><b> Bibliografía </b></font></p>     <!-- ref --><p>Ahuja, R., Magnanti, T. and Orlin, J., Network flows: theory, algorithms, and    applications., Englewood Cliffs, New Jersey: Prentice Hall, 1993.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000182&pid=S0120-5609200700010001900001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Anónimo S/F., Network., Disponible en: <a href="http://www.cs.tcd.ie/courses/baict/bass/4ict5/Networks2004.pdf">www.cs.tcd.ie/courses/baict/bass/4ict5/Networks2004.pdf</a>.    Consultado en Marzo de 2004.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000183&pid=S0120-5609200700010001900002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Burke, E., Kendall, G., Newall, J., Hart, E., Ross, P. and Schulenburg, S.,    Hyper-heuristics: an emerging direction in modern search technology., En: Glover,    F. y Kochenberger, G. (Eds.). Handbook of metaheuristics. Kluwer academic publisher,    2003.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000184&pid=S0120-5609200700010001900003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Clarke, G. and Wright W., Scheduling of vehicles from a central depot to a    number of delivery points., Operations Research, 12, 1964, pp.568-581.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000185&pid=S0120-5609200700010001900004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Crainic, T. and Toulouse, M., Parallel strategies for meta-heuristics., En:    Glover, F. y Kochenberger, G. (Eds.), Handbook of metaheuristics, Kluwer academic    publisher, 2003.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000186&pid=S0120-5609200700010001900005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Goldberg, D.E., Genetic algorithms in search, optimization and machine learning.,    Addison- Wesley, 1989.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000187&pid=S0120-5609200700010001900006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>LeBlanc, L., Shtub, A., and Anandalingam, A., Formulating and solving production    planinning problems., En: European Journal of Operational Research, No. 112,    1999.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000188&pid=S0120-5609200700010001900007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Lin, S., Computer solutions of traveling salesman problem., Bell Systems Tech.    J., 44, 1965.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000189&pid=S0120-5609200700010001900008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Louren&ccedil;o, H., Martin, O. and St&uuml;tzle, T., Iterated local search.,    En: Glover, F. and Kochenberger, G. (Eds.), Handbook of metaheuristics, Kluwer    academic publisher, 2003.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000190&pid=S0120-5609200700010001900009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Martí, R. y Moreno, M., Métodos Multiarranque. Inteligencia Artificial.,    Revista Iberoamericana de Inteligencia Artificial. No.19, 2003, pp. 49-60.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000191&pid=S0120-5609200700010001900010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Medaglia, A., Combinatoria para Logística., Coloquio en Optimización    Combinatoria Sesión Avanzada, Universidad de los Andes, marzo, 2005.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000192&pid=S0120-5609200700010001900011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Melián, B., Moreno, J. y Moreno, M., Metaheurísticas: una visión    global. Inteligencia Artificial., Revista Iberoamericana de Inteligencia Artificial,    No.19, 2003, pp. 7-28.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000193&pid=S0120-5609200700010001900012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Olivera, A., Heurísticas para Problemas de Ruteo de Vehículos.,    Instituto de Computación, Facultad de Ingeniería. Universidad    de la República, Montevideo, Uruguay. 2004, Disponible en: <a href="http://www.fing.edu.uy/inco/pedeciba/bibliote/reptec/TR0408.pdf">www.fing.edu.uy/inco/pedeciba/bibliote/reptec/TR0408.pdf</a>.    Consultado en Febrero de 2005.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000194&pid=S0120-5609200700010001900013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Reeves, C., Genetic algorithms., En: Glover, F. and Kochenberger, G. (Ed.),    Handbook of metaheuristics, Kluwer academic publisher, 2003.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000195&pid=S0120-5609200700010001900014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Torres, J. F., Problemas de Ruteo de Vehículos., En: Modelos de Sistemas    Logísticos, Maestría en Ingeniería Industrial, Universidad    de los Andes, 2005.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000196&pid=S0120-5609200700010001900015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Voudouris, C. and Tsang, E., Guided local search., En: Glover, F. and Kochenberger,    G. (Eds.), Handbook of metaheuristics, Kluwer academic publisher, 2003.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000197&pid=S0120-5609200700010001900016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Zhou, G., Min, H. and Gen, M., The balanced allocation of customer to multiple    distribution centers in the supply chain network: a genetic algorithm approach.,    En: Computer and Industrial Engineering, No. 43, 2002.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000198&pid=S0120-5609200700010001900017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ahuja]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
<name>
<surname><![CDATA[Magnanti]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Orlin]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Network flows: theory, algorithms, and applications]]></source>
<year>1993</year>
<publisher-loc><![CDATA[Englewood Cliffs^eNew Jersey New Jersey]]></publisher-loc>
<publisher-name><![CDATA[Prentice Hall]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
</name>
<name>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Network]]></article-title>
<source><![CDATA[]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Burke]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Kendall]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Newall]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Hart]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Ross]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Schulenburg]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Hyper-heuristics: an emerging direction in modern search technology]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Glover]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Kochenberger]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Handbook of metaheuristics]]></source>
<year>2003</year>
<publisher-name><![CDATA[Kluwer academic publisher]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Clarke]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Wright]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Scheduling of vehicles from a central depot to a number of delivery points]]></article-title>
<source><![CDATA[Operations Research]]></source>
<year>1964</year>
<numero>12</numero>
<issue>12</issue>
<page-range>568-581</page-range></nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Crainic]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Toulouse]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Parallel strategies for meta-heuristics]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Glover]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Kochenberger]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Handbook of metaheuristics]]></source>
<year>2003</year>
<publisher-name><![CDATA[Kluwer academic publisher]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Goldberg]]></surname>
<given-names><![CDATA[D.E.]]></given-names>
</name>
</person-group>
<source><![CDATA[Genetic algorithms in search, optimization and machine learning]]></source>
<year>1989</year>
<publisher-name><![CDATA[Addison- Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[LeBlanc]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[Shtub]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Anandalingam]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Formulating and solving production planinning problems]]></article-title>
<source><![CDATA[European Journal of Operational Research]]></source>
<year>1999</year>
<numero>112</numero>
<issue>112</issue>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lin]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Computer solutions of traveling salesman problem]]></article-title>
<source><![CDATA[Bell Systems Tech. J.]]></source>
<year>1965</year>
<numero>44</numero>
<issue>44</issue>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lourenço]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
<name>
<surname><![CDATA[Martin]]></surname>
<given-names><![CDATA[O.]]></given-names>
</name>
<name>
<surname><![CDATA[Stützle]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Iterated local search]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Glover]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Kochenberger]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Handbook of metaheuristics]]></source>
<year>2003</year>
<publisher-name><![CDATA[Kluwer academic publisher]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Martí]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
<name>
<surname><![CDATA[Moreno]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="es"><![CDATA[Métodos Multiarranque: Inteligencia Artificial]]></article-title>
<source><![CDATA[Revista Iberoamericana de Inteligencia Artificial]]></source>
<year>2003</year>
<numero>19</numero>
<issue>19</issue>
<page-range>49-60</page-range></nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Medaglia]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<article-title xml:lang="es"><![CDATA[Combinatoria para Logística]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Coloquio en Optimización Combinatoria Sesión Avanzada]]></conf-name>
<conf-date>marzo, 2005</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Melián]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Moreno]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Moreno]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="es"><![CDATA[Metaheurísticas: una visión global: Inteligencia Artificial]]></article-title>
<source><![CDATA[Revista Iberoamericana de Inteligencia Artificial]]></source>
<year>2003</year>
<numero>19</numero>
<issue>19</issue>
<page-range>7-28</page-range></nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Olivera]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<collab>Universidad de la República^dInstituto de Computación, Facultad de Ingeniería</collab>
<source><![CDATA[Heurísticas para Problemas de Ruteo de Vehículos]]></source>
<year>2004</year>
<publisher-loc><![CDATA[Montevideo ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Reeves]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Genetic algorithms]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Glover]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Kochenberger]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Handbook of metaheuristics]]></source>
<year>2003</year>
<publisher-name><![CDATA[Kluwer academic publisher]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Torres]]></surname>
<given-names><![CDATA[J. F.]]></given-names>
</name>
</person-group>
<article-title xml:lang="es"><![CDATA[Problemas de Ruteo de Vehículos]]></article-title>
<collab>Universidad de los Andes^dMaestría en Ingeniería Industrial</collab>
<source><![CDATA[Modelos de Sistemas Logísticos]]></source>
<year>2005</year>
</nlm-citation>
</ref>
<ref id="B16">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Voudouris]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
<name>
<surname><![CDATA[Tsang]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Guided local search]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Glover]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Kochenberger]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Handbook of metaheuristics]]></source>
<year>2003</year>
<publisher-name><![CDATA[Kluwer academic publisher]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B17">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhou]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Min]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
<name>
<surname><![CDATA[Gen]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The balanced allocation of customer to multiple distribution centers in the supply chain network: a genetic algorithm approach]]></article-title>
<source><![CDATA[Computer and Industrial Engineering]]></source>
<year>2002</year>
<numero>43</numero>
<issue>43</issue>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
