<?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>0122-3461</journal-id>
<journal-title><![CDATA[Ingeniería y Desarrollo]]></journal-title>
<abbrev-journal-title><![CDATA[Ing. Desarro.]]></abbrev-journal-title>
<issn>0122-3461</issn>
<publisher>
<publisher-name><![CDATA[Fundación Universidad del Norte]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0122-34612009000100009</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Estudio computacional con técnicas heurísticas basadas en recocidos para resolver el problema de secuenciación de tareas]]></article-title>
<article-title xml:lang="en"><![CDATA[A Computational Study Solving the Flow Shop Problem with Annealing-Based Heuristics]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Álvarez Martínez]]></surname>
<given-names><![CDATA[David]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Toro Ocampo]]></surname>
<given-names><![CDATA[Eliana Mirledy]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Gallego Rendón]]></surname>
<given-names><![CDATA[Ramón Alfonso]]></given-names>
</name>
<xref ref-type="aff" rid="A03"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad Tecnológica de Pereira Programa de Ingeniería de Sistemas y Computación ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad Tecnológica de Pereira Facultad de Ingeniería Industrial ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<aff id="A03">
<institution><![CDATA[,Universidad Tecnológica de Pereira Programa de Ingeniería Eléctrica ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>06</month>
<year>2009</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>06</month>
<year>2009</year>
</pub-date>
<numero>25</numero>
<fpage>154</fpage>
<lpage>179</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S0122-34612009000100009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S0122-34612009000100009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S0122-34612009000100009&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[El secuenciación de tareas es una labor diaria de muchas empresas del sector de productos y servicios donde se busca optimizar algún o algunos de varios objetivos; aquí se propone minimizar el tiempo total de ejecución de todas las tareas. En este documento se presentan los resultados de un estudio computacional extensivo de 11 heurísticas basadas en el recocido: recocido simulado, aceptando el umbral, grabado a grabado y 8 heurísticas basadas en algoritmos demons. Para validar la calidad de las respuestas se seleccionaron 30 problemas de la literatura especializada. Se presentan los resultados obtenidos donde se compara la calidad de la solución con los tiempos de ejecución.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[Task sequencing is a daily job of many companies of the products sector and services, where it is sought to optimize one or several objectives. It is proposed here to minimize the total execution time of all tasks. This document presents the results of an extensive computational study of eleven heuristics based on annealing: Simulated Annealing, Threshold Accepting, Record-to-Record and 8 heuristics based on demon algorithms. To validate the quality of the answers, test cases of the specialized literature are used and the results obtained were compared in the quality of the solution and run times.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Algoritmos demons]]></kwd>
<kwd lng="es"><![CDATA[Flow-Shop]]></kwd>
<kwd lng="es"><![CDATA[heurísticas]]></kwd>
<kwd lng="es"><![CDATA[recocido simulado]]></kwd>
<kwd lng="es"><![CDATA[secuenciación de tareas]]></kwd>
<kwd lng="en"><![CDATA[Demons algorithms]]></kwd>
<kwd lng="en"><![CDATA[flow-shop]]></kwd>
<kwd lng="en"><![CDATA[heuristics]]></kwd>
<kwd lng="en"><![CDATA[simulated annealing]]></kwd>
<kwd lng="en"><![CDATA[sequencing of tasks]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[  <font face="verdana" size="2">      <p align="center"><font size="4"><b>Estudio computacional con t&eacute;cnicas heur&iacute;sticas basadas en recocidos para resolver el problema de secuenciaci&oacute;n de tareas</b></font></p>       <p align="center"><font size="3"><b>A Computational Study Solving the Flow Shop Problem with Annealing-Based Heuristics</b></font></p>      <p><b>David &Aacute;lvarez Mart&iacute;nez</b><sup><a href="#aff*">*</a></sup>,<b> Eliana Mirledy Toro Ocampo</b><sup><a href="#aff**">**</a></sup>,<b> Ram&oacute;n Alfonso Gallego Rend&oacute;n</b><sup><a href="#aff***">***</a></sup></p>      <p><a name="aff*">*</a> Ingeniero en Sistemas y Computaci&oacute;n. Docente catedr&aacute;tico, Programa de Ingenier&iacute;a de Sistemas y Computaci&oacute;n, Universidad Tecnol&oacute;gica de Pereira. <a href="mailto:akavallo@gmail.com">akavallo@gmail.com</a></p>     <p><a name="aff**">**</a> Mag&iacute;ster en Investigaci&oacute;n de Operaciones y Estad&iacute;stica, Mag&iacute;ster en Ingenier&iacute;a El&eacute;ctrica. Docente asistente, Facultad de Ingenier&iacute;a Industrial, Universidad Tecnol&oacute;gica de Pereira. <a href="mailto:elianam@utp.edu.co">elianam@utp.edu.co</a></p>     <p><a name="aff***">***</a> Doctor en Ingenier&iacute;a El&eacute;ctrica &Aacute;rea de Autom&aacute;tica. Docente titular, Programa de Ingenier&iacute;a El&eacute;ctrica, Universidad Tecnol&oacute;gica de Pereira. <a href="mailto:ragr@utp.edu.co">ragr@utp.edu.co</a>  <hr/>      <p><b>Resumen</b></p>     <p><i>  El secuenciaci&oacute;n de tareas es una labor diaria de muchas empresas del sector de productos y servicios donde se busca optimizar alg&uacute;n o algunos de varios objetivos; aqu&iacute; se propone minimizar el tiempo total de ejecuci&oacute;n de todas las tareas. En este documento se presentan los resultados de un estudio computacional extensivo de 11 heur&iacute;sticas basadas en el recocido: recocido simulado, aceptando el umbral, grabado a grabado y 8 heur&iacute;sticas basadas en algoritmos demons. Para validar la calidad de las respuestas se seleccionaron 30 problemas de la literatura especializada. Se presentan los resultados obtenidos donde se compara la calidad de la soluci&oacute;n con los tiempos de ejecuci&oacute;n. </i></p>     <p><b>Palabras claves</b>: Algoritmos demons, Flow-Shop, heur&iacute;sticas, recocido simulado, secuenciaci&oacute;n de tareas.</p>   <hr/>        ]]></body>
<body><![CDATA[<p><b>Abstract</b></p>     <p> Task sequencing is a daily job of many companies of the products sector and services, where it is sought to optimize one or several objectives. It is proposed here to minimize the total execution time of all tasks. This document presents the results of an extensive computational study of eleven heuristics based on annealing: Simulated Annealing, Threshold Accepting, Record-to-Record and 8 heuristics based on demon algorithms. To validate the quality of the answers, test cases of the specialized literature are used and the results obtained were compared in the quality of the solution and run times.</p>     <p><b>Key words</b>: Demons algorithms, flow-shop, heuristics, simulated annealing, sequencing of tasks.</p>      <p><b>Fecha de recepci&oacute;n</b>: 3 de septiembre de 2008 <br/><b>Fecha de aceptaci&oacute;n</b>: 24 de marzo de 2009 <hr/>      <p><font size="3"><b>1. INTRODUCCI&Oacute;N</b></font></p>      <p>Muchos trabajos de ingenier&iacute;a, planificaci&oacute;n y manufactura pueden ser modelados como problemas de minimizaci&oacute;n o maximizaci&oacute;n de una funci&oacute;n de costo sobre un conjunto de variables discretas. Esta clase de eventos son llamados problemas de optimizaci&oacute;n combinatorial; han recibido una gran atenci&oacute;n en el campo de la ciencia durante las &uacute;ltimas tres d&eacute;cadas con el logro de grandes avances. Uno de los avances que se han realizado es la subdivisi&oacute;n de este tipo de problemas en dos categor&iacute;as: los que se pueden resolver eficientemente o aquellos donde existe un algoritmo que resuelve toda instancia del ejercicio en un tiempo polinomial, como la programaci&oacute;n lineal, y problemas para los cuales no se conoce un algoritmo que resuelva toda instancia de la situaci&oacute;n propuesta en tiempo polinomial. Estos &uacute;ltimos son referenciados formalmente como    NP; el problema de secuenciaci&oacute;n de tareas es considerado de acuerdo a su complejidad matem&aacute;tica como NP- completo.</p>      <p>El problema de secuenciaci&oacute;n de tareas en sistemas de producci&oacute;n lineal, <i>Flow-Shop,</i> se caracteriza porque todos los trabajos que van a ser programados tienen el mismo flujo de producci&oacute;n, aunque var&iacute;an los tiempos de ejecuci&oacute;n en cada una de las estaciones. Para resolverlo se han propuesto diferentes t&eacute;cnicas y metodolog&iacute;as a fin de encontrar la secuencia &oacute;ptima de fabricaci&oacute;n que cumple con diferentes objetivos, como la inexistencia de tiempos muertos de fabricaci&oacute;n, reducci&oacute;n de tiempo de cambio y ajuste de las m&aacute;quinas, anulaci&oacute;n de retrasos, entre otros, pero teniendo en cuenta las restricciones propias de cada situaci&oacute;n espec&iacute;fica como la velocidad de proceso de las m&aacute;quinas, capacidad de recursos humanos y materiales, etc.</p>      <p>Las t&eacute;cnicas metaheur&iacute;sticas han mostrado su gran potencial como herramientas de soluci&oacute;n en variados campos de aplicaci&oacute;n por su eficiencia en cuanto a tiempos de soluci&oacute;n y calidad de las respuestas obtenidas. Aqu&iacute; se est&aacute;n proponiendo 11 t&eacute;cnicas basadas en algoritmos recocidos para la soluci&oacute;n del problema <i>Flow-Shop</i> que considera como funci&oacute;n objetivo la minimizaci&oacute;n del tiempo total de ejecuci&oacute;n de todas las tareas y se comparan las respuestas obtenidas con las reportadas en la literatura especializada.</p>      <p>Este documento est&aacute; organizado de la siguiente forma: en la secci&oacute;n 2 se describe el problema del <i>Flow-Shop </i>y su modelamiento matem&aacute;tico; en la secci&oacute;n 3 se presentan algunas generalidades de los algoritmos utilizados; en la secci&oacute;n 4 se presenta el procedimiento empleado para calcular la funci&oacute;n objetivo, la estructura de vecindad y la adecuaci&oacute;n de los algoritmos al problema especifico; en la secci&oacute;n 5 se presentan los casos de prueba y los resultados obtenidos y, finalmente, en la secci&oacute;n 6 se plantean las conclusiones y trabajos futuros con respecto a los problemas de secuenciaci&oacute;n.</p>      <p><font size="3"><b>2. DEFINICI&Oacute;N DEL PROBLEMA DEL FLOW-SHOP</b></font></p>      ]]></body>
<body><![CDATA[<p>El problema del <i>Flow-Shop</i> permutacional representa un caso particular del problema del <i>Flow-Shop Scheduling</i> cuyo principal objetivo es entregar una secuencia &oacute;ptima para N trabajos en M m&aacute;quinas.</p>      <p>La soluci&oacute;n del problema consiste en secuenciar n trabajos (i=1,..., n) en m m&aacute;quinas (j=1,...m). Un trabajo consiste en m operaciones y la j-&eacute;sima operaci&oacute;n de cada trabajo debe ser procesada en la m&aacute;quina j, se debe considerar que:</p> <ol>     <li>Al iniciar un trabajo en la m&aacute;quina j este ya ha sido procesado en la m&aacute;quina j-1 y, adicionalmente, la m&aacute;quina j no est&aacute; ejecutando operaci&oacute;n alguna. Cada operaci&oacute;n tiene un tiempo de procesamiento conocido P<sub>ij</sub></li>      <li>Si un trabajo est&aacute; en la i-&eacute;sima posici&oacute;n en la m&aacute;quina 1, entonces ese trabajo estar&aacute; en la posici&oacute;n i-&eacute;sima en todas las m&aacute;quinas.</li>      <li>La secuencia de producci&oacute;n de todos los trabajos es igual.</li>      <li>No se consideran tiempos de ajuste de las m&aacute;quinas entre un trabajo y otro.</li>      <li>Cuando se inicia la ejecuci&oacute;n de un trabajo en una m&aacute;quina no puede ser interrumpido.</li>      <li>El <i>makespan </i>es un par&aacute;metro que indica el tiempo total de ejecuci&oacute;n de todas las tareas.</li>     </ol>     <p>Para la soluci&oacute;n del problema del <i>Flow-Shop</i> permutacional se considera el <i>makespan</i> como funci&oacute;n objetivo a ser minimizada, resolver el problema significa determinar la permutaci&oacute;n que entregue el menor valor de <i>makespan</i>. En este contexto se considera el trabajo J<sub>i</sub> como un conjunto de operaciones, que pasan por cada m&aacute;quina una sola vez:</p> <ul>     ]]></body>
<body><![CDATA[<li>J<sub>i</sub>{o<sub>i1</sub>, o<sub>i2</sub>, o<sub>i3</sub>, ... , o<sub>iM</sub>}, donde o<sub>ij</sub> representa la j-&eacute;sima operaci&oacute;n del trabajo Ji;</li>     <li>o<sub>ij</sub> operaci&oacute;n debe ser procesada en la M<sub>j</sub> m&aacute;quina;</li>     <li>Por cada operaci&oacute;n o<sub>ij</sub> hay asociado un tiempo de procesamiento p<sub>ij</sub>.</li>     </ul>      <p>Tradicionalmente, la notaci&oacute;n del problema es F|<i>permu</i>|C<sub>max</sub> considerando como objetivo minimizar todo el tiempo de procesamiento (<i>makespan</i>).</p>       <p>Un ejemplo del problema permutacional del <i>Flow-Shop</i> se describe a continuaci&oacute;n:</p>  Se definen  &#928;<sub>1</sub>,&#928;<sub>2</sub>,&#928;<sub>3</sub> como permutaciones. El c&aacute;lculo del tiempo final C(&#928;<sub>1</sub>, j) para el i-&eacute;simo trabajo dado en la permutaci&oacute;n &#928; en la m&aacute;quina j puede ser calculado de la siguiente forma:      <p align="center"><a name="e1"><img src="img/revistas/inde/n25/25a09e1.jpg"></a></p>       <p>Bajo estas especificaciones, el valor de la funci&oacute;n objetivo, el makespan C<sub>max</sub>, se define como C(&#928;<sub>N</sub>, M); el tiempo completo de la &uacute;ltima operaci&oacute;n en la &uacute;ltima m&aacute;quina.</p>      <p>Este problema, como muchos otros en el campo de secuenciaci&oacute;n, tiene muchos inconvenientes por resolver ya que t&eacute;cnicamente est&aacute; clasificado como NP-dif&iacute;cil. Sin entrar en detalles t&eacute;cnicos se dice que un problema es NP-d&iacute;f&iacute;cil cuando se demuestra que cualquier algoritmo de soluci&oacute;n tiene un tiempo de ejecuci&oacute;n que aumenta exponencialmente con el tama&ntilde;o del problema &#91;1&#93;. El que un problema est&eacute; catalogado en esta categor&iacute;a no significa que no puede resolverse, sino que se deben proponer algoritmos de soluci&oacute;n que exploten de forma eficiente su misma estructura matem&aacute;tica para que se encuentren soluciones a la mayor&iacute;a de las instancias del problema, en tiempos de ejecuci&oacute;n relativamente peque&ntilde;os.</p>      <p><font size="3"><b>3. HEUR&Iacute;STICAS DE B&Uacute;SQUEDA LOCAL</b></font></p>      ]]></body>
<body><![CDATA[<p>Durante los &uacute;ltimos cuarenta a&ntilde;os se han desarrollado gran cantidad de heur&iacute;sticas para la soluci&oacute;n del problema de secuenciaci&oacute;n de tareas, buscando mejorar el makespan, de forma iterativa, donde cada nueva secuenciaci&oacute;n toma un menor tiempo C<sub>max</sub>. En los a&ntilde;os noventa, las investigaciones se centraron en aplicar metaheur&iacute;sticas de prop&oacute;sito general para el problema del Flow-Shop. Las metaheur&iacute;sticas seleccionan configuraciones que a veces incrementan el makespan y de ese modo obtienen una herramienta para no quedar atrapadas en &oacute;ptimos locales de mala calidad. En esta secci&oacute;n, se describir&aacute;n 11 metaheur&iacute;sticas para el problema del Flow-Shop: recocido   simulado, dos tipos de recocidos determin&iacute;sticos y ocho variantes de algoritmos demons.</p>      <p><font size="3"><b>3.1. Recocido simulado</b></font></p>  El algoritmo del recocido simulado (RS) reproduce un conjunto de &aacute;tomos en equilibrio a una temperatura determinada. El RS empieza con un estado inicial; luego se propone un cambio aleatorio para este estado y se genera un cambio de energ&iacute;a:&#916;E es calculado &#91;1&#93; &#91;2&#93;.  Si el nuevo estado tiene un nivel m&aacute;s bajo de energ&iacute;a que el estado anterior, &#916;E &le; 0, el nuevo estado, es tomado para la siguiente iteraci&oacute;n. Sin embargo, si el nuevo estado tiene un nivel de energ&iacute;a m&aacute;s alto que el anterior, se acepta con una probabilidad P(&#916;E) = exp(-&#916;E/k<sub>B</sub>. T), donde T es la temperatura y kB es la constante de Boltzmann. Esta caracter&iacute;stica hace que el RS sea diferente a los algoritmos de b&uacute;squeda local. El algoritmo RS es presentado en la <a href="#t1">tabla 1</a>.      <p>El programa de enfriamiento en el paso 3.f del RS es crucial para el &eacute;xito del algoritmo. El valor de aceptaci&oacute;n de un empeoramiento de la energ&iacute;a se mueve inversamente proporcional al &#916;E y proporcionalmente a T, que decrece con el tiempo. Si se configura inteligentemente el enfriamiento, el algoritmo puede escapar temprano de &oacute;ptimos locales y explorar en profundidad otras regiones prometedoras.</p>      <p><font size="3"><b>3.2. Recocidos determin&iacute;sticos</b></font></p>      <p>Se presentan dos versiones determin&iacute;sticas del recocido simulado que se denominan: aceptando el umbral y grabado a grabado &#91;2&#93; y &#91;3&#93;. Un movimiento de empeoramiento es aceptado, si la desmejora en la funci&oacute;n objetivo es menor que un monto determinado.</p> <ol>     <li>Aceptando el umbral (AU): un umbral U es especificado como se muestra en la <a href="#T1">tabla 1</a>. Este umbral es la cuota m&aacute;xima de decremento de la funci&oacute;n objetivo aceptada entre una iteraci&oacute;n y la siguiente. En el paso 3.c de AU, una nueva secuencia de tareas es aceptada solo si &Delta;E el cambio de energ&iacute;a, es menor que U, As&iacute;, son aceptadas configuraciones con peor funci&oacute;n objetivo. En el paso 3.e de AU, el umbral es enfriado de acuerdo a lo programado.</li>     <li>Grabado a grabado (GG): en el algoritmo de grabado a grabado tal y como se muestra en la <a href="#T1">tabla 1</a>, el GRABADO es el mejor makespan encontrado hasta el momento. Esta t&eacute;cnica solo puede explorar soluciones con makespan menor que la desviaci&oacute;n, D, m&aacute;s el GRABADO (ver paso 3.b la <a href="#T1">tabla 1</a>). As&iacute;, el GG permite aceptar empeoramientos en la funci&oacute;n objetivo de una nueva configuraci&oacute;n, pero el valor de GRABADO + D sirve como l&iacute;mite de la desmejora que puede ser aceptada.</li>     </ol>     <p><font size="3"><b>3.3. Algoritmos demons</b></font></p>      <p>Los algoritmos demons son una variante del recocido simulado &#91;5&#93;, &#91;6&#93;. El algoritmo demon reemplaza la probabilidad de aceptaci&oacute;n de una configuraci&oacute;n con peor funci&oacute;n objetivo por el concepto de cr&eacute;dito llamado demon. Cuando el algoritmo acepta una secuencia con funci&oacute;n objetivo de peor calidad, el cr&eacute;dito o demon decrece con relaci&oacute;n al deterioro de la nueva configuraci&oacute;n. Similarmente, si la nueva secuencia es de mejor calidad que la anterior, se debita al demon la mejora de la funci&oacute;n objetivo. Una nueva secuencia de peor calidad solo ser&aacute; aceptada si el demon tiene suficiente cr&eacute;dito para pagar la desmejora. El algoritmo demon b&aacute;sico (DB) es dado en la <a href="#T1">tabla 1</a>.</p>      ]]></body>
<body><![CDATA[<p>Wood y Downs &#91;5&#93;, &#91;6&#93; modificaron el DB y desarrollaron cuatro algoritmos demons est&aacute;ndares para optimizaci&oacute;n: algoritmo demon limitado (DL), algoritmo demon aleatorio limitado (DAL), algoritmo demon recocido (DR) y algoritmo demon aleatorio recocido (DAR). Los algoritmos DL, DAL, DR y DAR son presentados en la <a href="#T1">tabla 2</a>.</p>       <p>El DB es su forma original no es un algoritmo apropiado para minimizaci&oacute;n. Wood y Downs &#91;5&#93;, &#91;6&#93; propusieron dos modificaciones que remueven gradualmente energ&iacute;a del demon para enfrentar la minimizaci&oacute;n. Una modificaci&oacute;n es imponer un l&iacute;mite superior espec&iacute;fico como valor al demon para que pueda restringir valores de cr&eacute;dito, despu&eacute;s de movidas con decrementos de energ&iacute;a. El l&iacute;mite superior previene al demon en contra de recibir todo el cr&eacute;dito, de aceptar secuencia de peor calidad. Esta modificaci&oacute;n es incorporada en el algoritmo DL (el l&iacute;mite superior es dado por D0. Ver su implementaci&oacute;n en el algoritmo DL en la <a href="#t2">tabla 2</a>).</p>      <p>La segunda modificaci&oacute;n reduce el valor del demon acorde a una programaci&oacute;n espec&iacute;fica de la misma forma que Kirkpatrick y otros &#91;2&#93;   disminuyen la temperatura en RS. Esta modificaci&oacute;n es incorporada en el algoritmo demon recocido (DR). Con estas dos modificaciones, un algoritmo disminuye el cr&eacute;dito dado al demon. Un algoritmo tendr&aacute; menor probabilidad de aceptar secuencias de peor calidad despu&eacute;s de aceptar configuraciones con bajos valores de makespan, pues este es forzado a buscar secuencias de mejor calidad.</p>      <p>Wood y Downs intentaron incorporar en los algoritmos DL y DR componentes aleatorios en los cuales el valor del demon fuera reemplazado por el valor medio del demon y para que este, a su vez, hiciera el papel de acreedor. El valor del demon es una variable aleatoria gaussiana (normal) centrada alrededor del valor medio del demon (DM) con una desviaci&oacute;n est&aacute;ndar espec&iacute;fica (DSd).</p>      <p>Las dos versiones aleatorias (DAL y DAR) de los algoritmos limitados y recocidos se obtienen reemplazando D con DM (ver la <a href="#t2">tabla 2</a>) y agregando el paso (3.d en la <a href="#t2">tabla 2</a>) para generar el valor del demon de una distribuci&oacute;n con media DM + un valor de ruido gaussiano. Por el uso de componentes aleatorios, Wood y Downs alcanzan largos incrementos en energ&iacute;a que no son permitidos por algoritmos determin&iacute;sticos.</p>      <p>Se se&ntilde;ala que Wood y Downs probaron los cuatro algoritmos (DL, DAL, DR y DAR) para instancias del problema del cartero viajante.</p>      <p><font size="3"><b>3.4. Variantes del algoritmo demon</b></font></p>      <p>Estas versiones fueron construidas con base en cuatro algoritmos demons est&aacute;ndares presentados por Pepper, Golden y Wasil &#91;7&#93;: algoritmo demon recocido limitado (DRL), algoritmo demon aleatorio limitado recocido (DARL), algoritmo demon recocido h&iacute;brido (DRH) y algoritmo demon recocido limitado h&iacute;brido (DRLH). Los algoritmos DRL, DARL, DRH y DRLH son presentados en la <a href="#t3">tabla 3</a>.</p>      <p>En DRL y DARL se aplicaron l&iacute;mites y enfriamiento al valor del demon esperando que este forzara al valor del demon a decrecer lentamente durante el proceso. Esto puede llevar a secuencias de alta calidad.</p>      <p>En el DARL se enfr&iacute;a la desviaci&oacute;n est&aacute;ndar del valor del demon adem&aacute;s de enfriarse el valor medio del demon. En el DRLH, se enfr&iacute;a la desviaci&oacute;n  est&aacute;ndar del valor del demon y se enfr&iacute;a el valor l&iacute;mite del demon. Se tienen as&iacute; diferentes enfriamientos programados para la desviaci&oacute;n est&aacute;ndar, el valor medio del demon y el valor l&iacute;mite del demon. Al mismo tiempo, los componentes aleatorios son reducidos por lo que las versiones h&iacute;bridas tienden hacia su contraparte determin&iacute;stica.</p>      ]]></body>
<body><![CDATA[<p align="center"><a name="t1"><img src="img/revistas/inde/n25/25a09t1.jpg"></a></p>      <p align="center"><a name="t2"><img src="img/revistas/inde/n25/25a09t2.jpg"></a></p>     <p align="center"><a name="t3"><img src="img/revistas/inde/n25/25a09t3.jpg"></a></p>      <p><font size="3"><b>4. PROCEDIMIENTOS</b></font></p>      <p><font size="3"><b>4.1. Codificaci&oacute;n del problema</b></font></p>      <p><font size="3"><b>4.1.1. Matriz de tiempos</b></font></p>      <p>Los tiempos de duraci&oacute;n de cada operaci&oacute;n para un trabajo determinado en una m&aacute;quina se representan mediante una matriz, que se denomina matriz de tiempos o matriz de duraci&oacute;n con la arquitectura mostrada en la <a href="#f1">figura 1</a>.</p>  La columna j de la matriz de tiempos representa el tiempo que tarda en finalizar cada operaci&oacute;n en la m&aacute;quina i. La operaci&oacute;n del trabajo 1 en la m&aacute;quina 1 toma 5 unidades de tiempo, D<sub>1,1</sub> = 5      <p align="center"><a name="f1"><img src="img/revistas/inde/n25/25a09t4.jpg"></a></p>      <p><font size="3"><b>4.1.2. Secuencia de trabajo</b></font></p>      <p>El orden de entrada de los trabajos a las m&aacute;quinas se representa mediante un vector, donde su propia longitud indica el n&uacute;mero de trabajos a procesar;  cada elemento dentro del vector representa la tarea que se ejecutar&aacute; en cada posici&oacute;n, como se observa en la <a href="#f2">figura 2</a>. Si se lee de izquierda a derecha, el trabajo 2 es el primero que se ejecutar&aacute; y el trabajo 4 est&aacute; en la segunda posici&oacute;n del vector; esto representa que el trabajo 4 entrar&aacute; en segunda instancia.</p>     ]]></body>
<body><![CDATA[<p align="center"><a name="f2"><img src="img/revistas/inde/n25/25a09t5.jpg"></a></p>      <p><font size="3"><b>4.1.3. C&aacute;lculo del makespan</b></font></p>      <p>El c&aacute;lculo del makespan guarda relaci&oacute;n con la matriz de tiempos y la secuencia de trabajo, el Flow-Shop presenta las siguientes particularidades: el primer trabajo programado solo debe respetar la secuencia tecnol&oacute;gica y la primera m&aacute;quina nunca tiene tiempo ocioso entre tareas; estas dos propiedades permiten llenar la primera columna y la fila de la matriz de inicio de la siguiente forma:</p> <ul>     <li>El tiempo de inicio de la operaci&oacute;n del primer trabajo en la m&aacute;quina i ser&aacute; el tiempo de inicio de la operaci&oacute;n del primer trabajo en la m&aacute;quina i-1 m&aacute;s el tiempo de duraci&oacute;n de la operaci&oacute;n del primer trabajo en la m&aacute;quina i-1.</li>     <p>T <sub>i,1</sub> = T <sub>i-1</sub> + D <sub>1,i-1</sub>, donde 1 &lt; i &lt; m.</p>      <li>El tiempo de inicio de la primera operaci&oacute;n del trabajo j en la primera m&aacute;quina, donde 1 &lt; j &lt; n, ser&aacute; el tiempo de inicio de la primera operaci&oacute;n del trabajo j-1 en la primera m&aacute;quina m&aacute;s el tiempo de duraci&oacute;n de la primera operaci&oacute;n del trabajo j-1 en la primera m&aacute;quina.</li>     <p>T <sub>1, j</sub> = T <sub>1, j-1</sub>+ D<sub>1,j-1</sub>, donde 1 &lt; j &lt; n.</p>     </ul>     <p>Para terminar la construcci&oacute;n de la matriz de inicio se recorre por columnas o filas y el tiempo de inicio Ti,j ser&aacute; el m&aacute;ximo entre:</p> <ul>     <li>El tiempo de inicio T<sub>i, j-1</sub> m&aacute;s el tiempo de duraci&oacute;n D<sub>i,j-1</sub></li>     ]]></body>
<body><![CDATA[<li>El tiempo de inicio T<sub>i-1, j</sub> m&aacute;s el tiempo de duraci&oacute;n D<sub>i-1,j</sub></li>     </ul>     <p>Luego de terminada la matriz de inicio, el valor del makespan es la suma de las dos esquinas inferiores localizadas a la derecha tanto de la matriz de tiempos ordenada como de la matriz de inicio, D<sub>m, n</sub> + T<sub>m,n</sub> = <i>makespan</i></p>       <p><b>Ejemplo de aplicaci&oacute;n del algoritmo para calcular el makespan</b></p>      <p>Paso 1. Reordenar la matriz de tiempos seg&uacute;n la secuencia dada tal como se muestra en la <a href="#f3">figura 3</a>.</p>     <p align="center"><a name="f3"><img src="img/revistas/inde/n25/25a09t6.jpg"></a></p>      <p>Paso 2. Crear la matriz de tiempos tal y como se muestra en la <a href="#f4">figura 4</a>.</p>     <p>Paso 2.1 Ubicar un cero en la esquina superior izquierda.</p>     <p>Paso 2.2 T<sub>i,1</sub> = T<sub> i-1, 1</sub> + D<sub> i-1, 1</sub>. <a href="#f4">Figura 4</a>.</p>     <p>Paso 2.3 T<sub> 1, j</sub> = T<sub> 1, j-1</sub> + D<sub> 1, j-1</sub>. <a href="#f5">Figura 5</a>.</p>     ]]></body>
<body><![CDATA[<p>Paso 2.4 M&aacute;ximo entre el tiempo de inicio Ti, j-1 m&aacute;s el tiempo de duraci&oacute;n D<sub>i,j-1</sub> y el tiempo de inicio T<sub>i-1</sub>, j m&aacute;s el tiempo de duraci&oacute;n D<sub>i-1,j</sub>, tal como se muestra en la <a href="#f6">figura 6</a></p>     <p align="center"><a name="f4"><img src="img/revistas/inde/n25/25a09f1.jpg"></a></p>     <p align="center"><a name="f5"><img src="img/revistas/inde/n25/25a09f2.jpg"></a></p>     <p align="center"><a name="f6"><img src="img/revistas/inde/n25/25a09f3.jpg"></a></p>       <p>Paso 3. Sumar las esquinas inferiores situadas hacia la derecha de la matriz de inicio y de tiempos. De acuerdo como se muestra en la <a href="#f7">figura 7</a>.</p>     <p align="center"><a name="f7"><img src="img/revistas/inde/n25/25a09f4.jpg"></a></p>       <p>El <i>makespan</i> del ejercicio para la matriz y secuencia dada es:<i> makespan</i> = 31 + 4 = 35.</p>      <p><font size="3"><b>4.2. Estructura de vecindad</b></font></p>      <p>La estructura de vecindad para cualquier algoritmo es muy importante; incluso, se puede asegurar que es la clave de un buen desarrollo. Aqu&iacute; la estructura de vecindad es la misma empleada para los 11 m&eacute;todos estudiados. Luego de analizar el problema de secuenciaci&oacute;n de tareas y las posibles estructuras de vecindad estudiadas, se logra identificar que los mejores resultados alcanzados se encuentran utilizando troca (swap) y corrimiento de tareas.</p>      <p>La troca o <i>swap </i>consiste en seleccionar dos tareas cualesquiera de la secuencia <a href="#f8">figura 8</a>; e intercambiarlas entre s&iacute;, ver <a href="#f9">figura 9</a> para obtener un nueva secuencia ver <a href="#f10">figura 10</a>.</p>      ]]></body>
<body><![CDATA[<p align="center"><a name="f8"><img src="img/revistas/inde/n25/25a09f5.jpg"></a></p>     <p align="center"><a name="f9"><img src="img/revistas/inde/n25/25a09f6.jpg"></a></p>     <p align="center"><a name="f10"><img src="img/revistas/inde/n25/25a09f7.jpg"></a></p>       <p>El corrimiento consiste en seleccionar una tarea al azar de la secuencia, ver <a href="#f11">figura 11</a>; escoger una nueva posici&oacute;n aleatoria para la tarea asignada, ver <a href="#f12">figura 12</a>; y llevar la tarea escogida a la nueva posici&oacute;n dada, ver <a href="#f13">figura 13</a>, obteniendo una nueva secuencia vecina a la anterior, ver <a href="#f14">figura 14</a>.</p>       <p align="center"><a name="f11"><img src="img/revistas/inde/n25/25a09f8.jpg"></a></p>     <p align="center"><a name="f12"><img src="img/revistas/inde/n25/25a09f9.jpg"></a></p>     <p align="center"><a name="f13"><img src="img/revistas/inde/n25/25a09f10.jpg"></a></p>     <p align="center"><a name="f14"><img src="img/revistas/inde/n25/25a09f11.jpg"></a></p>      <p>En este trabajo se defini&oacute; una estructura de vecindad basada en los proÂ­ cesos de intensificaci&oacute;n y diversificaci&oacute;n de la b&uacute;squeda local, creando un m&eacute;todo que combina las t&eacute;cnicas anteriormente nombradas sin dar prioridad a alguno de los dos procesos. Se integra una variable aleatoria con distribuci&oacute;n normal centrada en 0.5, next, Si next es mayor que 0.5, la elecci&oacute;n ser&aacute; la troca, de lo contrario el corrimiento. El algoritmo utilizado se describe en la <a href="#t4">tabla 4</a>.</p>     <p align="center"><a name="t4"><img src="img/revistas/inde/n25/25a09f12.jpg"></a></p>       ]]></body>
<body><![CDATA[<p><font size="3"><b>5. ESTUDIO COMPUTACIONAL</b></font></p>      <p>En esta secci&oacute;n se describen los resultados del an&aacute;lisis computacional, se compara la complejidad de los algoritmos y se detalla la implementaci&oacute;n.</p>      <p><font size="3"><b>5.1. Selecci&oacute;n de la muestra</b></font></p>      <p>Se seleccionaron 30 problemas del Flow-Shop de la librer&iacute;a de &Eacute;ric Taillard del sitio web &#91;8&#93;. El tama&ntilde;o de los problemas tiene un rango que va desde 20 trabajos y 5 m&aacute;quinas hasta 100 trabajos y 20 m&aacute;quinas, que ha sido usado en estudios computacionales anteriores. Los problemas elegidos aleatoriamente se presentan en la <a href="#t5">tabla 5</a> y fueron clasificados de acuerdo al tama&ntilde;o; esta clasificaci&oacute;n se presenta en la <a href="#t6">tabla 6</a>.</p>      <p align="center"><a name="t5"><img src="img/revistas/inde/n25/25a09t7.jpg"></a></p>     <p align="center"><a name="t6"><img src="img/revistas/inde/n25/25a09t8.jpg"></a></p>       <p><font size="3"><b>5.2. Comparaci&oacute;n de complejidad</b></font></p>      <p>Cuando el &#916;E &lt; 0, el esfuerzo computacional requerido para todos los m&eacute;todos es semejante, al contrario de &#916;E &gt; 0. Se puede notar que existen diferencias entre los esfuerzos realizados por cada t&eacute;cnica, esto teniendo en cuenta que las asignaciones similares para todas las t&eacute;cnicas no son tomadas para el estudio. Las comparaciones se muestran en la <a href="#t7">tabla 7</a> y las operaciones son clasificadas as&iacute; a (suma y resta), c (comparaci&oacute;n y asignaci&oacute;n), m (multiplicaci&oacute;n y divisi&oacute;n), e (exponenciaci&oacute;n) y r (generar un n&uacute;mero aleatorio).</p>      <p>La operaci&oacute;n de recocido requiere de una multiplicaci&oacute;n para planes exponenciales negativos o una resta para planes lineales, mientras que la operaci&oacute;n de limitante s&oacute;lo requiere de una comparaci&oacute;n y una asignaci&oacute;n.</p>      <p align="center"><a name="t9"><img src="img/revistas/inde/n25/25a09t9.jpg"></a></p>       ]]></body>
<body><![CDATA[<p><font size="3"><b>5.3. Detalles de la implementaci&oacute;n</b></font></p>      <p>Cada algoritmo fue escrito en MATLAB &reg; 7.0 y todo el trabajo computacional se realiz&oacute; en una m&aacute;quina con unas especificaciones cercanas a una CPU Pentium(R) 3,0 GHz y 504 MB de RAM.</p>      <p>Como se recomienda en la literatura, se determin&oacute; una &uacute;nica variable de par&aacute;metro a los once algoritmos, que fuera capaz de arrojar resultados satisfactorios para todos los problemas de estudio. La idea central era encontrar un par&aacute;metro que fuera lo suficiente fuerte para resolver cada instancia del problema y as&iacute; a la vez probar la robustez del m&eacute;todo. A fin de obtener unos valores eficientes que sirvieran en este estudio se recaracterizaron los par&aacute;metros; tanto los originales como los recaracterizados son dados en la <a href="#t8">tabla 8</a>. Estas caracterizaciones son un intento de estandarizar los par&aacute;metros de los 11 algoritmos en el problema de secuenciaci&oacute;nde tareas.</p>     <p align="center"><a name="t8"><img src="img/revistas/inde/n25/25a09t10.jpg"></a></p>       <p>Para encontrar los valores de los par&aacute;metros, se escogieron 3 problemas de diferente tama&ntilde;o; se crearon par&aacute;metros para cada uno; se recombinaron, y se seleccion&oacute; uno de ellos a fin de obtener un par&aacute;metro que entregara resultados de buena calidad. Los valores de los par&aacute;metros resultantes de los experimentos computacionales de la recombinaci&oacute;n son presentados en la <a href="#t9">tabla 9</a>.</p>      <p align="center"><a name="t9"><img src="img/revistas/inde/n25/25a09t11.jpg"></a></p>      <p>Cada algoritmo fue ejecutado 20 veces para todos los 30 problemas, us&aacute;ndose los par&aacute;metros encontrados con la recombinaci&oacute;n realizada experimentalmente. Como la secuencia inicial fue dada mediante una funci&oacute;n aleatoria, todas las corridas de cada algoritmo tienen una semilla diferente. La soluci&oacute;n entregada por cada ejecuci&oacute;n fue medida con relaci&oacute;n a la soluci&oacute;n &oacute;ptima y se compararon los resultados entre los 11 algoritmos.</p>      <p><font size="3"><b>4.4. Resultados computacionales</b></font></p>      <p>En esta secci&oacute;n se presenta la discusi&oacute;n de los resultados obtenidos al ejecutar los 11 algoritmos implementados para los problemas de Eric Taillard tomados de la referencia &#91;8&#93; de la cual se tomaron 30 problemas en forma aleatoria, que fueron resueltos 20 veces para cada uno de los algoritmos propuestos. Los par&aacute;metros usados son presentados en la tabla 9. Estos son el resultado de un par&aacute;metro &uacute;nico y que ser&aacute; usado en todos los problemas   y con todos los algoritmos. Para su c&aacute;lculo fue necesario llevar a cabo un estudio inicial que involucrara todas las t&eacute;cnicas y los problemas.</p>      <p>Los resultados obtenidos se presentan en la <a href="#t10">tabla 10</a>. El an&aacute;lisis se realiza por grupos teniendo en cuenta: media, desviaci&oacute;n est&aacute;ndar e intervalo de confianza. Adicionalmente se calcula la media total a fin de observar el desempe&ntilde;o global del algoritmo, mediante la expresi&oacute;n:</p>     ]]></body>
<body><![CDATA[<p align="center"><a name="e2"><img src="img/revistas/inde/n25/25a09e2.jpg"></a></p>      <p>En la <a href="#t10">tabla 10</a> se presentan los errores muestrales de las instancias para cada algoritmo, la desviaci&oacute;n est&aacute;ndar y el intervalo de confianza a un 95%, adem&aacute;s del tiempo total de ejecuci&oacute;n.</p>      <p>El error muestral es la desviaci&oacute;n de la respuesta obtenida con respecto al &oacute;ptimo. Los mejores resultados observados son los siguientes:</p>      <p>P el algoritmo con mayor precisi&oacute;n se observa en el RS. M en esta categor&iacute;a se presenta un empate entre los algoritmos DRL y DARL. G el algoritmo con mayor precisi&oacute;n se observa en el AU.</p>      <p>El algoritmo con mejor comportamiento en el contexto global (T) es el RS porque presenta el menor error y la menor desviaci&oacute;n est&aacute;ndar.</p>      <p align="center"><a name="t10"><img src="img/revistas/inde/n25/25a09t12.jpg"></a></p>       <p>En la <a href="#g1">figura 15</a> se presentan los resultados de los algoritmos con mejor calidad de respuesta y mejores tiempos de ejecuci&oacute;n.</p>     <p align="center"><a name="g1"><img src="img/revistas/inde/n25/25a09g1.jpg"></a></p>      <p><font size="3"><b>6. CONCLUSIONES Y RECOMENDACIONES</b></font></p>      <p>Se ha resuelto el problema de secuenciaci&oacute;n de tareas (Flow-Shop) usando 11 versiones basadas en recocidos y clasificadas en recocido simulado, recocido determ&iacute;nistico y algoritmo demons, con los que se obtienen resultados de gran inter&eacute;s acad&eacute;mico.</p>      ]]></body>
<body><![CDATA[<p>En este estudio se obtuvieron en algunos de los casos de prueba respuestas de mejor calidad a las reportadas en la referencia &#91;8&#93;.</p>      <p>En la literatura especializada solo se encuentran implementaciones al FlowShop usando la t&eacute;cnica del recocido simulado; por lo tanto, la inclusi&oacute;n de las otras 10 t&eacute;cnicas es un aporte para la soluci&oacute;n de este problema.</p>      <p>Fueron implementadas, adem&aacute;s del Simulated Annealing, 10 versiones de algoritmos basadas en annealing, en las cuales se busca determinar el n&uacute;mero de par&aacute;metros que mejor comportamiento presenten en los algoritmos. As&iacute;, por ejemplo, con el algoritmo AU se requiere de un solo par&aacute;metro de calibraci&oacute;n y se obtienen resultados similares al algoritmo del RS. En este sentido el AU podr&iacute;a facilitarles a las personas con poca experiencia la soluci&oacute;n de este problema de forma adecuada.</p>      <p>En trabajos futuros se podr&iacute;a intentar aplicar la metodolog&iacute;a propuesta al problema de Job-Shop donde el secuenciamiento de tareas es diferente para cada producto.</p>      <p>Se propone, adem&aacute;s, llevar a cabo la implementaci&oacute;n del problema usando la optimizaci&oacute;n multiobjetivo, que presenta entre los objetivos sugeridos: tiempo de flujo, tardanza media, makespan.</p>      <p><font size="3"><b>BIBLIOGRAF&Iacute;A</b></font></p>      <!-- ref --><p>&#91;1&#93; R. Gallego, A. Escobar and E. Toro, <i>T&eacute;cnicas metaheur&iacute;sticas de optimizaci&oacute;n</i>, 2nd Ed., Pereira: Universidad Tecnol&oacute;gica de Pereira, 2008.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000149&pid=S0122-3461200900010000900001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>&#91;2&#93; S. Kirkpatrick, C. Gelatt, and M. Vecchi, &quot;Optimization by simulated annealing&quot;, Science, vol. 220, pp. 671-680, 1983.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000150&pid=S0122-3461200900010000900002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>&#91;3&#93; G. Dueck, &quot;new optimization heuristics: The great deluge algorithm and the recordÂ­toÂ­record travel,&quot; <i>J. Computat. Phys.,</i> vol. 104, pp. 86-92, 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=000151&pid=S0122-3461200900010000900003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>&#91;4&#93; G. Dueck and T. Scheuer, &quot;Threshold accepting: A general purpose optimization algorithm appearing superior to simulated annealing,&quot; <i>J. Computat. Phys.</i>, vol. 90, pp. 161-175, 1990.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000152&pid=S0122-3461200900010000900004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>&#91;5&#93; I. Wood and T. Downs, &quot;Fast optimization by demon algorithms,&quot; in ACNN &iacute;98; <i>9th Australian Conf.</i> Neural Networks, 1998.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000153&pid=S0122-3461200900010000900005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>&#91;6&#93; --- &quot;Demon algorithms and their application to optimization problems,&quot; in <i>IEEE World Congr. Computational Intelligence</i>, pp. 1661-1666, 1998.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000154&pid=S0122-3461200900010000900006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>&#91;7&#93; J. Pepper, B. Golden and E. Wasil, &quot;Solving the Traveling Salesman Problem with Annealing-Based Heuristics: A Computational Study,&quot; <i>IEEE Trans. Syst., Man, Cybern.</i> A, vol. 32, pp. 72-77, 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=000155&pid=S0122-3461200900010000900007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>&#91;8&#93; &Eacute;. Taillard, &quot;Sheduling instances&quot;, <i>mistic.heig-vd.ch.</i> &#91;Online&#93;. Available: <a href="http://ina2.eivd.ch/" target="_blank">http:// ina2.eivd.ch/Collaborateurs/etd/problemes.dir/ordonnancement.dir/ ordonnancement.html</a>. &#91;Accessed: Feb. 26, 2009&#93;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000156&pid=S0122-3461200900010000900008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body><back>
<ref-list>
<ref id="B1">
<label>[1]</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gallego]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Escobar]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Toro]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<source><![CDATA[Técnicas metaheurísticas de optimización]]></source>
<year>2008</year>
<edition>2nd Ed</edition>
<publisher-loc><![CDATA[Pereira ]]></publisher-loc>
<publisher-name><![CDATA[Universidad Tecnológica de Pereira]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>[2]</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kirkpatrick]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Gelatt]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Vecchi]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Optimization by simulated annealing]]></article-title>
<source><![CDATA[Science]]></source>
<year>1983</year>
<volume>220</volume>
<page-range>671-680</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>[3]</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dueck]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[ew optimization heuristics: The great deluge algorithm and the record-to-record travel]]></article-title>
<source><![CDATA[J. Computat. Phys.]]></source>
<year>1993</year>
<volume>104</volume>
<page-range>86-92</page-range></nlm-citation>
</ref>
<ref id="B4">
<label>[4]</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dueck]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Scheuer]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Threshold accepting: A general purpose optimization algorithm appearing superior to simulated annealing]]></article-title>
<source><![CDATA[J. Computat. Phys]]></source>
<year>1990</year>
<volume>90</volume>
<page-range>161-175</page-range></nlm-citation>
</ref>
<ref id="B5">
<label>[5]</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wood]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
<name>
<surname><![CDATA[Downs]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Fast optimization by demon algorithms]]></source>
<year>1998</year>
</nlm-citation>
</ref>
<ref id="B6">
<label>[6]</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
</name>
<name>
</name>
</person-group>
<source><![CDATA[Demon algorithms and their application to optimization problems]]></source>
<year></year>
<conf-name><![CDATA[ IEEE World Congr. Computational Intelligence]]></conf-name>
<conf-date>1998</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B7">
<label>[7]</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pepper]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Golden]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Wasil]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Solving the Traveling Salesman Problem with Annealing-Based Heuristics: A Computational Study]]></article-title>
<source><![CDATA[IEEE Trans. Syst., Man, Cybern. A]]></source>
<year>2002</year>
<volume>32</volume>
<page-range>72-77</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>[8]</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Taillard]]></surname>
<given-names><![CDATA[É]]></given-names>
</name>
</person-group>
<source><![CDATA[Sheduling instances]]></source>
<year>2009</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
