SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

239
UNIVERSIDAD TECNOLÓGICA DE PEREIRA SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO ÓPTIMO BIDIMENSIONAL PROGRAMA DE INGENIERÍA INDUSTRIAL MAESTRÍA EN INVESTIGACIÓN DE OPERACIONES Y ESTADÍSTICA Por: ELIANA MIRLEDY TORO OCAMPO ALEJANDRO GARCÉS RUIZ Director Tesis presentada como requisito para optar al título de Magíster en Investigación de Operaciones y Estadística Pereira, Diciembre 14 de 2007

Transcript of SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Page 1: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

UNIVERSIDAD TECNOLÓGICA DE PEREIRA

SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO ÓPTIMO BIDIMENSIONAL

PROGRAMA DE INGENIERÍA INDUSTRIAL MAESTRÍA EN INVESTIGACIÓN DE OPERACIONES Y

ESTADÍSTICA

Por:ELIANA MIRLEDY TORO OCAMPO

ALEJANDRO GARCÉS RUIZ Director

Tesis presentada como requisito para optar al título de Magíster en Investigación de Operaciones y Estadística

Pereira, Diciembre 14 de 2007

Page 2: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO ÓPTIMO BIDIMENSIONAL

ELIANA MIRLEDY TORO OCAMPO

Diciembre de 2007

Page 3: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

A Dios y la Virgen María por sus bendiciones diarias; a mi esposo Ramón Alfonso, a mis hijos Daniela, Alfonso, Miguel y a mis padres Hernán y Amparo por su constante apoyo y acompañamiento.

Page 4: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Agradecimientos

A Dios y la Virgen María por sus bendiciones diarias. Al PhD. Ramón Alfonso Gallego R. por su orientación académica y voces de

aliento durante el desarrollo de todo este proyecto. Al MSc Mauricio Granada E. por su asesoría en el inicio del proyecto. A mi orientador de tesis MSc Alejandro Garcés R. por sus consejos

académicos, oportunas orientaciones e incondicional apoyo en esta y en muchas de las tareas que he emprendido.

Al profesor PhD. Rubén Romero Lázaro de la UNESP (Brasil) por la propuesta de desarrollar este tema.

A los MSc(C) Augusto César Rueda Medina y MSc(C) Hugo Andrés Ruiz Flórez por sus valiosas ideas, aportes, acompañamiento y colaboración en tantas horas de trabajo.

A MSc John Fredy Franco Baquero por su colaboración en la edición del documento final.

A mis compañeros de Maestría, especialmente por su calidad humana. A la Universidad Tecnológica de Pereira y la Facultad de Ingeniería

Industrial que hizo posible la realización de mis estudios. A los profesores del programa de Maestría en Investigación de Operaciones

y Estadística de la Universidad Tecnológica de Pereira. Al grupo de Investigación Operacional de la Maestría en Ingeniería Eléctrica

por proporcionar los medios necesarios para la ejecución del proyecto.

Page 5: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Nota de Aceptación

PhD. José Adalberto Soto Mejía

Msc.Juan Fernando López Rendón

Pereira, Diciembre 14 de 2007

Page 6: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Resumen

Por empaquetamiento de rectángulos se entiende una clase de problemas de corte y empaquetado con variadas aplicaciones en la Industria. Uno de los problemas más conocidos de esta clase es el de empaquetado rectangular bi-dimensional tipo guillotina cuyo propósito es obtener una configuración que maximice el área utilizada. Dada su dificultad y su gran aplicabilidad, existe un creciente interés en disponer de procedimientos eficaces y eficientes para resolver este problema. En este trabajo, se hace un recorrido por el estado del arte tanto en el planteamiento del modelo matemático, la codificación del problema y las técnicas de solución. Se presentan tres modelos matemáticos implementados de acuerdo a igual número de codificaciones propuestas adaptadas al algoritmo genético modificado de Chu-Beasley, algoritmo de Búsqueda tabú y un algoritmo híbrido de búsqueda en vecindario variable, recocido simulado y técnicas constructivas. Se comparan las respuestas obtenidas con base a la función objetivo y el porcentaje de uso del área disponible sobre diferentes casos de prueba de la literatura especializada.

Abstract

Packing of rectangles is a class of problems about packing and cutting with varied industrial application. One of the most known problems of this class is the rectangular two dimensional guillotine cutting packing problem whose objective is to obtain a configuration that maximizes the used area. Due to its difficulty and its great applicability, there is an increasing interest in develop effective and efficient procedures which solve this problem. This work studies the state of the art about mathematical model, codification and solution techniques. Three mathematical models are showed with equal number of proposed codifications which have been adapted according to Chu-Beasley’s genetic algorithm, Tabu search and a hybrid algorithm based on neighborhood variable search, simulated annealing and constructive techniques. The obtained answers are compared base on the objective function and perceptual used area by different test cases from technical literature.

Page 7: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

1

TABLA DE CONTENIDO

1. INTRODUCCIÓN ............................................................................................ 91.1. Planteamiento del problema.................................................................. 111.2. Delimitación........................................................................................... 111.3. Objetivos ............................................................................................... 11

1.3.1. Objetivo general ......................................................................... 111.3.2. Objetivos específicos.................................................................. 11

1.4. Justificación........................................................................................... 121.5. Marco referencial................................................................................... 12

1.5.1. Antecedentes.............................................................................. 121.5.2. Marco Conceptual ...................................................................... 151.5.3. Marco Teórico............................................................................. 16

1.6. Diseño metodológico............................................................................. 17

2. PROBLEMAS DE CORTE Y EMPAQUETAMIENTO.................................... 182.1. Generalidades....................................................................................... 182.2. Aplicaciones en la industria................................................................... 212.3. Introducción Histórica............................................................................ 222.4. Unificación de la nomenclatura ............................................................. 222.5. Problemas de corte bidimensional ........................................................ 242.6. Extensión a Polígonos........................................................................... 262.7. Aproximaciones al problema de corte bidimensional ............................ 28

3. MODELOS MATEMÁTICOS DE LOS PROBLEMAS DE CORTE Y EMPAQUETAMIENTO.................................................................................. 293.1. Generalidades....................................................................................... 293.2. Modelo matemático del problema de empaquetamiento rectangular

(3-Dimensional) ..................................................................................... 293.3. Modelo matemático del problema de empaquetamiento cilíndrico.

(3-Dimensional) ..................................................................................... 333.4. Modelo matemático del problema bidimensional propuesto por

Gilmore y Gomory ................................................................................. 353.5. Modelos de programación lineal entera (PLE) para

empaquetamiento de niveles bidimensionales propuesto por Lodi ....... 363.6. Modelo del problema restringido y doblemente restringido bi-

dimensional propuesto por Parreño. ..................................................... 373.7. Problema de empaquetamiento cuando sólo es conocido el ancho

del tablero ó Strip packing problem. ...................................................... 393.8. Modelo Matemático Propuesto - Problema restringido

bidimensional tipo guillotina .................................................................. 413.8.1. Propuesta 1 ................................................................................ 413.8.2. Propuesta 2 ................................................................................ 423.8.3. Propuesta 3 ................................................................................ 43

4. HEURISTICAS CONSTRUCTIVAS y CODIFICACION................................. 47

Page 8: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

2

4.1. Explosión Combinatorial........................................................................ 474.1.1. El problema: Explosión combinatoria ......................................... 474.1.2. Problemas que requieren satisfacción de restricciones.............. 474.1.3. Generar y probar ........................................................................ 484.1.4. Interpolación de la generación y de la comprobación................. 49

4.2. Heurísticas en optimización combinatorial. ........................................... 494.3. Heurísticas Constructivas aplicadas a la solución del problema de

corte de piezas bidimensional. .............................................................. 514.3.1. Métodos Constructivos para corte no guillotina .......................... 524.3.2. Métodos Constructivos para corte guillotina ............................... 54

4.4. Codificación para problemas de corte bidimensional ............................ 604.4.1. Codificación por permutaciones para corte no guillotina propuesta

por Jakobs .................................................................................. 614.4.2. Propuesta 1: Codificación a través de dos vectores para corte

guillotina ..................................................................................... 624.4.3. Propuesta 2: Codificación en diagrama de árbol para corte

guillotina. .................................................................................... 644.4.4. Propuesta 3: Codificación en diagrama de árbol para corte

guillotina. .................................................................................... 724.4.5. Codificación Rectilinear propuesta por Chen, Fu, y Rodrigues .. 75

5. MÉTODOS DE SOLUCIÓN........................................................................... 785.1. Algoritmo genético................................................................................. 78

5.1.1. Un algoritmo Genético simple..................................................... 805.1.2. El problema de la codificación .................................................... 825.1.3. Cálculo de la función objetivo o algún equivalente ..................... 835.1.4. Selección .................................................................................... 845.1.5. Recombinación (Crossover) ....................................................... 865.1.6. Mutación..................................................................................... 885.1.7. Ciclo Generacional ..................................................................... 885.1.8. Criterio de Parada ...................................................................... 885.1.9. Algoritmo Genético modificado – Chu-Beasley .......................... 89

5.2. Implementación del algoritmo genético al problema de empaquetamiento bidimensional restricto tipo guillotina ....................... 90

5.3. Búsqueda Tabú..................................................................................... 925.3.1. Definición.................................................................................... 925.3.2. Configuración Inicial ................................................................... 945.3.3. Generación del vecindario .......................................................... 945.3.4. Implementación de listas tabú .................................................... 955.3.5. Selección del mejor vecino ......................................................... 955.3.6. Duración Tabú ............................................................................ 965.3.7. Criterio de Aspiración ................................................................. 965.3.8. Actualización de la estructura tabú............................................. 975.3.9. Memoria de corto plazo .............................................................. 975.3.10. Memoria de largo plazo .............................................................. 975.3.11. Oscilación estratégica ................................................................ 985.3.12. Encadenamiento de trayectorias ................................................ 99

Page 9: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

3

5.4. Definición de criterios de vecindad aplicados a la solución del problema de empaque bidimensional restricto tipo guillotina .............. 100

5.4.1. Primer criterio ........................................................................... 1005.4.2. Segundo criterio ....................................................................... 1015.4.3. Tercer criterio. .......................................................................... 1015.4.4. Cuarto criterio: .......................................................................... 1025.4.5. Quinto criterio: .......................................................................... 1025.4.6. Sexto criterio:............................................................................ 1035.4.7. Cálculo de la función objetivo ................................................... 104

5.5. Recocido simulado .............................................................................. 1065.5.1. Temperatura. ............................................................................ 1085.5.2. Longitud de la cadena. ............................................................. 1085.5.3. Criterio de parada..................................................................... 1095.5.4. Generación de una nueva configuración. ................................. 1095.5.5. Adaptación al tipo de problema ................................................ 109

5.6. Búsqueda de entorno variable ............................................................ 1105.6.1. Esquemas fundamentales ........................................................ 1105.6.2. VNS Descendente (VND) ......................................................... 1115.6.3. VNS Reducida (RVNS)............................................................. 1125.6.4. VNS Básica (BVNS) ................................................................. 1135.6.5. VNS General ............................................................................ 114

5.7. Adaptación de las técnicas de Recocido simulado y Búsqueda en vecindario variable a la solución del problema de empaquetamientobidimensional restricto tipo guillotina................................................... 114

5.7.1. Algoritmo de búsqueda aleatoria binaria .................................. 1155.7.2. Algoritmo de búsqueda aleatoria real ....................................... 1165.7.3. Algoritmo constructivo .............................................................. 117

6. PRUEBAS Y RESULTADOS OBTENIDOS................................................. 1196.1. Solución mediante el algoritmo genético modificado de Chu-

Beasley 1196.2. Solución mediante el algoritmo Tabú .................................................. 122

6.2.1. Caso 6.1 ................................................................................... 1226.2.2. Caso 6.2 ................................................................................... 1266.2.3. Caso 6.3 ................................................................................... 1276.2.4. Caso 6.4 ................................................................................... 128

6.3. Solución usando un algoritmo híbrido constructivo de búsqueda en vecindad variable y recocido simulado................................................ 132

7. Conclusiones y recomendaciones............................................................... 141

8. Bibliografía .................................................................................................. 144

9. ANEXOS ..................................................................................................... 1499.1. CUI Yadoing . An exact algorithm for generating homogenous T-

shape cutting patterns. Computers & Operations Research. 2007, 34(4): 1107-1120................................................................................. 149

Page 10: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

4

9.2. Algunos Casos de prueba de la referencia [11] .................................. 1509.3. Implementación y desarrollo de los programas de computador. ......... 153

9.3.1. Usando Búsqueda Tabú........................................................... 1539.3.2. Usando el algoritmo híbrido...................................................... 174

9.4. Problema de empaquetamiento rectangular bidimensional tipo guillotina resuelto por algoritmos genéticos ........................................ 177

9.5. Algoritmo de búsqueda tabú aplicado a la solución del problema de corte bidimensional guillotinado .......................................................... 178

9.6. Efecto de la configuración inicial en la solución del problema de corte bidimensional usando el algoritmo búsqueda tabú..................... 179

9.7. Solución al problema de empaquetamiento bidimensional usando un algoritmo híbrido constructivo de búsqueda en vecindad variable y recocido simulado............................................................................. 180

Page 11: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

5

LISTA DE FIGURAS

Figura 2.1. Problema de empaquetamiento en contenedores rectangulares .....19Figura 2.2. Problema de empaquetamiento en contenedores cilíndricos...........19Figura 2.3. Problema del Palet reducido a dos dimensiones .............................20Figura 2.4. Tipos de Cortes................................................................................25Figura 2.5. Tipos de patrones ............................................................................25Figura 2.6. Empaquetamiento de un polígono en un rectángulo con mínima

área. .................................................................................................26Figura 2.7. Respuesta obtenida con algoritmo BL. Altura =22 ...........................27Figura 2.8. Respuesta obtenida con algoritmo genético (1000 iteraciones).

Altura=15..........................................................................................27Figura 3.1. Definición de las variables para el problema de carga de un

contenedor .......................................................................................30Figura 3.2. Sistema Cartesiano del contenedor cilíndrico ..................................34Figura 3.3. a) Nivel de empaquetamiento; b) Nivel normalizado del

empaquetamiento. ...........................................................................37Figura 3.4. Problema restringido y doblemente restringido ................................39Figura 3.5. Solución para un problema restringido.............................................40Figura 3.6. Solución para un Ítem. .....................................................................41Figura 3.7. (a) Corte guillotina, (b) Corte no guillotina........................................43Figura 3.8. Generación de subespacios.............................................................44Figura 4.1. Representación del espacio de soluciones. .....................................48Figura 4.2. Estrategias BL y BF..........................................................................53Figura 4.3. Algoritmos Constructivos..................................................................54Figura 4.4. Ubicación de la primera pieza ..........................................................56Figura 4.5. Pieza contigua a 1 con menor desperdicio.......................................56Figura 4.6. A partir de la primera pieza la próxima a ser escogida es la

pieza 8..............................................................................................57Figura 4.7. Pieza contigua a 8 con menor desperdicio.......................................57Figura 4.8. A partir de la pieza 8 la próxima elegida por la evaluación es la

6 57Figura 4.9. Ubicación de las piezas....................................................................58Figura 4.10. Matriz de desperdicios .....................................................................58Figura 4.11. BL modificado para corte guillotina ..................................................59Figura 4.12. Representación natural de un patrón de empaquetamiento.............60Figura 4.13. Dos permutaciones con el mismo patrón de empaquetamiento.......61Figura 4.14. Alternativa de solución ..................................................................62Figura 4.15. Representación de una alternativa de solución................................63Figura 4.16. Árbol de 2 piezas y codificación .......................................................64Figura 4.17. Árbol de 4 piezas y codificación .......................................................65Figura 4.18. Representación de un cluster...........................................................65Figura 4.19. Árbol de 8 piezas y codificación .......................................................66Figura 4.20. Explicación de los tipos de corte ......................................................66Figura 4.21. Clusters formados por corte vertical.................................................67Figura 4.22. Clusters formados por corte horizontal.............................................67Figura 4.23. Codificación de una posible configuración .......................................68

Page 12: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

6

Figura 4.24. Gráfico de la configuración propuesta en la figura .4.23 ..................69Figura 4.25. Árbol asociado al ejemplo 4.23 ........................................................70Figura 4.26. Árbol de cortes .................................................................................74Figura 4.27. Cortes sobre el tablero según el árbol de corte propuesto en

4.26 ..................................................................................................74Figura 4.28. Solución obtenida.............................................................................75Figura 4.29. Matriz de ubicación de las piezas y conteo de cuadros. ..................76Figura 4.30. Representación rectilinear en el tablero ...........................................76Figura 4.31. Combinación de rectángulos que forman diferentes objetos............77Figura 5.1. Organigrama de Técnicas combinatoriales ......................................79Figura 5.2. Vectores de trabajo ..........................................................................81Figura 5.3. Configuración típica..........................................................................82Figura 5.4. Codificación binaria ..........................................................................83Figura 5.5. Población inicial ...............................................................................84Figura 5.6. Punto de recombinación...................................................................86Figura 5.7. Elementos recombinados.................................................................87Figura 5.8. Recombinación de un punto.............................................................87Figura 5.9. Recombinación en el problema de empaquetamiento

bidimensional ...................................................................................91Figura 5.10. Descendientes generados después de la recombinación ................91Figura 5.11. Concepto de vecindad......................................................................93Figura 5.12. Esquema básico del algoritmo de Búsqueda Tabú ..........................99Figura 5.13. Tipos de desperdicio ......................................................................100Figura 5.14. Primer criterio de vecindad.............................................................101Figura 5.15. Segundo criterio de vecino.............................................................101Figura 5.16. Tercer criterio de vecindad.............................................................102Figura 5.17. Cuarto criterio de vecindad ............................................................102Figura 5.18. Quinto criterio de vecindad.............................................................103Figura 5.19. Sexto criterio de vecindad ..............................................................103Figura 5.20. Nueva disposición ubicando la pieza 12 ........................................104Figura 5.21. Algoritmo Recocido simulado.........................................................108Figura 5.22. Secuencia de los algoritmos ..........................................................115Figura 6.1. Vector de piezas y secciones para el caso 1 .................................120Figura 6.2. Solución obtenida para el caso 6.1 ................................................120Figura 6.3. Vector de piezas y secciones para el caso 6.2 ..............................121Figura 6.4. Solución obtenida para el caso 2. ..................................................121Figura 6.5. Solución de inicio caso 6.1.............................................................123Figura 6.6. Solución de inicio obtenida para el caso 6.1 ..................................124Figura 6.7. Árbol asociado a la codificación de la figura 6.5 ............................125Figura 6.8. Solución final para el caso 6.1 .......................................................126Figura 6.9. Solución de inicio para el caso 6.2.................................................126Figura 6.10. Solución final caso 6.2 ...................................................................127Figura 6.11. Inicial caso 6.3 ...............................................................................127Figura 6.12. Solución Final caso 6.3 ..................................................................128Figura 6.13. Inicial caso 6.4 ...............................................................................128Figura 6.14. Solución final caso 6.4 ...................................................................129Figura 6.15. Comparación resultados del 1 al 25...............................................135

Page 13: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

7

Figura 6.16. Comparación de resultados del 26 al 50 ........................................135Figura 6.17. Resumen de respuestas ................................................................136Figura 6.18. Salida del algoritmo para el caso 10 ..............................................137Figura 6.19. Diagrama de árbol de la figura 6.17 ...............................................137Figura 6.20. Capa 1............................................................................................138Figura 6.21. Capa 2............................................................................................138Figura 6.22. Capa 3............................................................................................138Figura 6.23. Solución obtenida para el caso 10. ................................................139Figura 6.24. Distribución de probabilidad caso 25..............................................140

Page 14: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

8

LISTA DE TABLAS

Tabla 4.1. Tabla de datos ejemplo 4.1...................................................... 54Tabla 4.2. Datos del problema presentado por Oliveira y Ferreira[12] ..... 55Tabla 4.3. Matriz de pesos entre piezas ................................................... 56Tabla 4.4. Comparación de eficiencias de los métodos............................ 60Tabla 4.5. Datos del ejemplo 4.3 .............................................................. 62Tabla 4.6. Datos del ejemplo 4.4 .............................................................. 67Tabla 4.7. Dimensiones de los cluster ...................................................... 71Tabla 4.8. Datos ejemplo 4.5 .................................................................... 73Tabla 5.1. Formas de calcular la función objetivo..................................... 84Tabla 6.1. Dimensiones y cantidad de placas para caso 1. .................... 119Tabla 6.2. Resultado caso 6.1 ................................................................ 120Tabla 6.3. Dimensiones y cantidad de piezas.Caso 6.2 ......................... 121Tabla 6.4. Solución caso 6.2................................................................... 122Tabla 6.5. Resultados con propuesta de solución6.1 ............................. 122Tabla 6.6. Parámetros usados................................................................ 122Tabla 6.7. Características de los casos de prueba. ................................ 122Tabla 6.8. Número de vecinos y penalización ........................................ 130Tabla 6.9. Iteraciones tabú ..................................................................... 131Tabla 6.10. Respuestas obtenidas desde diferentes soluciones de

inicio....................................................................................... 131Tabla 6.11. Valor de los parámetros......................................................... 132Tabla 6.12. Resultados para los casos del 1 al 25 ................................... 133Tabla 6.13. Resultados para los casos del 26 al 50 ................................. 134Tabla 6.14. Resumen de respuestas ........................................................ 136Tabla 6.15. Distribución de frecuencias caso 25 ...................................... 139

Page 15: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

9

1. INTRODUCCIÓN

Figura 1. Tabla 1.

Los problemas de corte y empaquetamiento pertenecen a la categoría de problemas de optimización combinatoria denominados Np- completos debido a que el espacio de soluciones crece de forma exponencial de acuerdo al número de piezas a ser ubicadas. En ambos casos, existen dos tipos de objetos, grandes y pequeños, en donde el espacio definido por el objeto grande debe ser ocupado por los objetos pequeños siguiendo ciertas normas; el ajuste entre objetos grandes y pequeños debe ser lo más eficiente posible, de acuerdo a la función objetivo establecida, generalmente se considera la minimización del espacio no utilizado. Los problemas de corte y empaquetamiento, aparentemente dispares, están conceptualmente relacionados debido a la dualidad entre el material y el espacio ocupado por éste [41].

Existen diferentes criterios para clasificar los problemas de empaquetado, como son el tamaño y la cantidad de las piezas, las dimensiones del problema, entre otras. La consideración de diferentes tipos de restricciones puede originar problemas de empaquetamiento totalmente distintos.

Pueden considerarse las siguientes tres situaciones referidas al conocimiento que se tiene del tablero en que hay que distribuir las piezas [33]:

1. El largo y el ancho del tablero son conocidos. Se pretende, por tanto, distribuir en el tablero aquellas piezas que optimicen la función objetivo considerada. Este problema es conocido como el Bin packing problem

2. Sólo es conocido el ancho del tablero mientras que el largo se considera flexible. En este tipo de problema se desea encontrar la distribución de piezas que minimice el largo del tablero. Este tipo de problema se refiere al caso donde la materia prima es un rollo de papel o tela. En la literatura se conoce como Strip packing problem.

3. No son conocidos ni el largo ni el ancho del tablero. El propósito es distribuir las piezas de tal forma que el rectángulo que esta distribución determina sea el de menor área.

Los problemas de empaquetamiento tienen múltiples aplicaciones en investigación operativa, química, computación gráfica e ingeniería. Esencialmente se trata de acomodar objetos en una determinada región del espacio [49]. Sin embargo,

Page 16: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

10

diferentes inconvenientes particulares a cada problema determinan la disposición de las piezas sobre el patrón (tablero). Entre estos inconvenientes se pueden destacar las propiedades del material del patrón (falta de homogeneidad en el color, calidad,…etc.), la tecnología de corte (que obliga a que exista una determinada distancia entre las piezas), secuencia de empaquetado (los objetos frágiles no pueden estar situados al fondo del patrón), áreas vacías en el interior de objetos irregulares (que pueden ser aprovechadas), etc.

Uno de los problemas más conocidos de esta clase es el de empaquetado rectangular bi-dimensional tipo guillotina. En este se pretende ubicar, sin solapamientos, un conjunto dado de rectángulos en un objeto rectangular de anchura y altura conocidas. El propósito es obtener una configuración que maximice el área utilizada. Dada su dificultad y su gran aplicabilidad, existe un creciente interés en disponer de procedimientos eficaces y eficientes para resolver este problema.

En este trabajo se desarrollará el problema de empaquetamiento bidimensional restricto, desde el modelamiento hasta la presentación de varias codificaciones y alternativas de solución. El esquema del documento tiene la siguiente estructura:

En el capitulo 2 se presenta un panorama general de los problemas de corte y empaquetamiento, iniciando con el de carga de contenedores rectangulares; luego se hace relación al empaquetamiento en cilindros, se comenta el empaquetamiento en palets o estibas, se hace relación a él porque este caso en tres dimensiones se puede reducir a uno bidimensional, se plantean los problemas bidimensionales restrictos, irrestrictos, tipo guillotina y tipo no guillotina, finalmente se hace una extensión del problema bidimensional rectangular al problema bidimensional donde las piezas demandadas tienen forma de polígonos.

En el capitulo 3 se plantean los modelos matemáticos de los problemas tridimensionales rectangular y cilíndrico, así mismo se presentan los modelos matemáticos propuestos y tomados de la literatura para el problema de empaquetamiento bidimensional tipo guillotina usados en el desarrollo de este trabajo.

En el capitulo 4 se hace una explicación de la explosión combinatorial del espacio de soluciones para problemas del tipo NP-completo y la justificación del uso de las heurísticas en la solución de los mismos, luego se presentan algunos de los métodos constructivos más utilizados para los problemas tipo guillotina y tipo no guillotina, finalmente se presentan los tipos de codificación propuestos para las implementaciones computacionales en la solución del caso en estudio usando técnicas metaheurísticas.

En el capitulo 5 se hace un recorrido por las diferentes metaheurísticas utilizadas: Algoritmo genético modificado de Chu-Beasley, Técnica de Búsqueda Tabú, Búsqueda en vecindario variable y Recocido simulado así como su adecuación al problema específico.

Page 17: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

11

En el capitulo 6 se muestran las pruebas y resultados obtenidas con las diferentes técnicas a los casos evaluados, se hace la comparación de los resultados obtenidos con las diferentes técnicas y se comparan además con las mejores respuestas conocidas en la literatura.

En el capitulo 7 se presentan las conclusiones y se plantean las futuras líneas de investigación.

1.1. Planteamiento del problema

Uno de los problemas más conocidos de corte y empaquetamiento es el de empaquetado rectangular bi-dimensional tipo guillotina. En este se pretende ubicar, sin solapamientos, un conjunto dado de rectángulos en un objeto rectangular de anchura y altura conocidas. El propósito es obtener una configuración que maximice el área utilizada y por defecto minimice las áreas desperdiciadas de material disponible atendiendo la demanda de cada uno de los tipos de piezas.

1.2. Delimitación

En este trabajo se pretende resolver el problema bidimensional de empaquetamiento (corte) rectangular tipo guillotina restricto, donde se dispone de una sola hoja de material para ubicar las piezas demandadas. La solución del mismo comprende las fases de modelamiento del problema, codificación de las alternativas de solución y técnicas de solución.

1.3. Objetivos

1.3.1. Objetivo general

Desarrollar una metodología para la solución del problema de empaquetamiento óptimo bidimensional usando técnicas combinatoriales

1.3.2. Objetivos específicos

Estudiar el estado del arte del problema de empaquetamiento bidimensional.

Definir el modelo matemático del problema de empaquetamiento óptimo bidimensional restricto tipo guillotina.

Definir una codificación adecuada para representar la solución del problema.

Adecuar las técnicas de solución al problema planteado de forma que puedan implementarse los operadores propios de cada una de ellas.

Implementar las metodologías propuestas computacionalmente.

Page 18: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

12

1.4. Justificación

Este proyecto busca estudiar e implementar el modelo matemático propuesto para el problema de empaquetamiento óptimo bidimensional (2/B/O/M) para una sola hoja de material, y resolverlo usando técnicas heurísticas constructivas combinadas con técnicas metaheurísticas tales como el algoritmo genético modificado de Chu-Beasley , Búsqueda Tabú entre otras

Este proyecto es de interés institucional, pues con este se pretende avanzar en la temática de la solución al problema de empaquetamiento óptimo incluido en propuesta de investigación presentada por del grupo DINOP (Desarrollo de la investigación operativa) al departamento de investigaciones de la Universidad Tecnológica de Pereira., la cual fue aprobada. Es de interés empresarial porque se pretende desarrollar una metodología apropiada para la solución de este problema que beneficia a las empresas que requieren el uso eficiente de materiales tales como: industrias de maderas, vidrieras, metalmecánica, del sector de plásticos, periódicos entre otros y que forman parte del entorno de la Universidad Tecnológica de Pereira.

Los resultados obtenidos tanto en la parte de modelamiento como la técnica de solución implementada se colocan a disposición de la comunidad académica para ser discutidas.

1.5. Marco referencial

En muchas aplicaciones de la vida real relacionadas con los procesos industriales surgen problemas que la Investigación Operativa engloba bajo la denominación de Problemas de Corte y Empaquetamiento. Muchos procesos de fabricación producen tableros o láminas de grandes dimensiones de madera, metal, papel, plástico o vidrio que luego han de ser cortados en piezas más pequeñas para ajustarse a las necesidades de los clientes.

1.5.1. Antecedentes

En esta sección se hace una descripción general de algunos de los métodos existentes en la literatura con los cuales se ha intentado resolver el problema general.

Métodos Exactos

Existen algunos métodos exactos propuestos para el problema: Beasley (1985)[3],

Page 19: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

13

Tsai et al.(1988)[58] y Scheithauer y Terno (1993)[48] presentan formulaciones enteras. Hadjiconstantinou y Christofides (1995)[25] también proponen otra formulación. Arenales y Morabito (1995)[2] presentan un Branch and bound basado en un tipo especial de grafo (AND/OR graph). Fekete y Schepers (1997)[16] crean un procedimiento basado en la representación mediante grafos de la posición relativa de las piezas en un patrón posible. Finalmente, Caprara y Monaci (2004)[9] presentan un algoritmo con algunas mejoras respecto a la propuesta de Fekete y Schepers.

También se ha introducido el concepto de cota superior con el fin de asegurar que el área total de las piezas cortadas no exceda la superficie del tablero de forma que se asegure que el número de piezas de cada tipo caiga dentro de los límites apropiados y se plantean en el modelo matemático mediante ecuaciones que representan restricciones dentro del mismo. La función objetivo es maximizar el valor de las piezas cortadas y la solución de esta formulación será una cota superior para el problema de corte.

Algoritmos Heurísticos

Se explica a continuación los métodos heurísticos propuestos para el problema. En primer lugar se enunciaran los métodos constructivos y posteriormente los metaheurísticos.

Se pueden distinguir los siguientes métodos que han sido empleados en la solución del problema:

Métodos constructivos

El procedimiento más empleado para colocar las piezas es el algoritmo Bottom-left

(BL). A partir de un orden de las piezas a cortar, el algoritmo consiste en colocar cada pieza en el tablero lo más abajo posible y una vez hecho esto mover la pieza todo lo que pueda hacia la izquierda. Al aplicar este método pueden quedar áreas no aprovechables (desperdicios).

Una modificación de la estrategia anterior que intenta aprovechar las áreas no aprovechables es la estrategia Bottom-left-fill(BLF). Este procedimiento antes de colocar una pieza según la estrategia BL comprueba si se puede colocar en alguna de las áreas no aprovechables que se han generado hasta el momento.

Otro método utilizado en la literatura para construir una solución a partir de un orden de las piezas, es el mecanismo Difference Process (DP) de Lai y Chan[33].

Page 20: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

14

La estrategia Difference Process(DP) intenta colocar cada pieza en la esquina posible del resto del diseño más cercana a la esquina inferior izquierda del tablero. Para medir cuál es la posición se emplea la distancia euclídea. Al igual que con el método anterior existen patrones que no puede alcanzarse con esta estrategia.

Metaheurísticos

De los métodos metaheurísticos para el problema sólo uno es para el problema general, el propuesto por Beasley (2003), mientras que el resto de métodos son para el caso restringido, para dar claridad se supone que el número de piezas a

cortar de cada tipo i debe estar dentro de unos límites ,i iP Q con (0 )i iP Q , el

problema restringido, tiene una cota superior para el número de piezas de cada tipo

que se pueden utilizar, por tanto 0iP i y sin darle peso a las piezas.

En 1997, Lai y Chan presentan un procedimiento basado en simulated annealing.

El procedimiento consiste en una lista con el orden de corte de las diferentes piezas, de tamaño M. Por ejemplo, se supone m=5. Una solución se representa por la lista {2, 3,5,4,1} lo que indicaría que la pieza 2 se corta en primer lugar, después la pieza 3,…, y finalmente la pieza 1. En esta representación si una pieza puede cortarse más de una vez se crean copias de esa pieza. Posteriormente estas piezas son cortadas según el procedimiento Difference Process. Las soluciones se generan mediante intercambios de piezas en la lista. Para los resultados computacionales presentan un conjunto de problemas generados aleatoriamente, en los cuales el objetivo es minimizar el desperdicio del tablero y se resuelven problemas de hasta 35m .

En 1997, Lai y Chan describen un procedimiento evolutivo. Usan la misma representación que en el anterior trabajo. Su algoritmo incluye un procedimiento de mejora basado en dividir la lista ordenada de piezas activas (cortadas) e inactivas (no cortadas) y examinar si alguna de las piezas, actualmente, inactivas puede ser cortada. Se presentan resultados computacionales para un conjunto de problemas generados aleatoriamente, donde el objetivo es, como en el trabajo anterior, minimizar el desperdicio del tablero. El problema más grande que resuelven tiene m=10.

En 2001 Leung utilizan un algoritmo evolutivo, en el que usan la representación de las soluciones de Lai y Chan[34] . Muestran que existen patrones que no pueden alcanzarse por los procedimientos de BL y DP. Presentan un Simulated Annealing con un movimiento que corresponde a intercambiar dos piezas en la lista o mover una pieza a una nueva posición de la lista. También presentan un algoritmo

Page 21: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

15

genético que incluye cinco diferentes tipos de operadores de cruce. Resuelven 8 problemas test, pero no presentan detalles de los resultados. Resuelven problemas con 30m .

En 2004 Beasley[3] presenta un algoritmo genético para el caso general. El algoritmo está basado en una nueva formulación no lineal para el problema. La formulación también admite extensiones para el problema con más de un tablero, el problema con algunas zonas del tablero que no se pueden utilizar y el problema donde las piezas se pueden rotar. Los resultados computacionales son los mejores hasta el momento. Resuelve problemas con hasta 1000 tipos de piezas y recopila la mayoría de instancias test utilizadas para el problema. Además crea una nueva batería de problemas basados en los estudios de Fekete y Schepers.

1.5.2. Marco Conceptual

Los problemas de corte y empaquetamiento, están estrechamente relacionados. Se supone que se tiene un tablero del que se desean cortar una serie de piezas, donde el valor de cortar cada pieza no tiene por qué ser exactamente su área. El objetivo es obtener la mayor ganancia al cortar ese tablero. También se debe tener en cuenta que, en algunos casos, las piezas no pueden ser rotadas ya que si el material a cortar tiene alguna veta o dibujo una pieza (l,w) no es igual a una pieza (w,l) con l w . Este problema se conoce comúnmente como el problema

restringido bi-dimensional de corte no-guillotina.

Definido formalmente, el problema consiste en cortar un rectángulo de dimensiones (L,W) que se denomina tablero, de longitud L y anchura W, un conjunto de

rectángulos ( , )i il w , que se denominan piezas, de longitud il y anchura

iw (i=1,....,m). Cada pieza tiene orientación fija, es decir, no puede ser rotada. Los

cortes deben ser paralelos al tablero. El número de piezas de cada tipo i debe

estar dentro de unos límites ,i iP Q con (0 )i iP Q . Por notación se define

1

m

ii

M Q y se puede suponer sin pérdida de generalidad que todas las

dimensiones son enteras. Cada tipo de pieza i tiene asociado un valor iv y el

objetivo es maximizar el valor total de las piezas cortadas. Se puede hablar de tres tipos de problemas:

El problema no restringido, donde no existen límites, ni superiores, ni inferiores, para el número de piezas a cortar de cada tipo, excepto la cota superior trivial. El problema restringido, donde está acotado superiormente el número de piezas de

Page 22: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

16

cada tipo, y el problema doblemente restringido, donde además de estar acotado el número máximo de algunos tipos de piezas a cortar, se exige cortar un número mínimo de piezas de algunos tipos.

Se define la eficiencia de un tipo de pieza i como /( * )i i i ie v l w , es decir, el

beneficio por unidad de superficie de la pieza tipo i. Algunos autores diferencian dos tipos de problemas, dependiendo de la eficiencia de las piezas: el problema sin

pesos (un-weighted) donde el valor de cada pieza es el área de la pieza ( 1 )ie i y

el problema con pesos (weighted) donde el valor de la pieza no tiene porque

depender del área de la pieza ( / 1)ii e , por lo que pueden existir piezas

pequeñas con valores superiores a otras más grandes.

1.5.3. Marco Teórico

El problema de empaquetamiento óptimo de contenedores es un problema clásico de investigación de operaciones, cuyo objetivo en general es aumentar el volumen consumido al almacenar ciertos productos en relación con el volumen total disponible en la bodega o contenedor que los almacena. En otras palabras, se desea encontrar una configuración de ubicación y disposición de productos de tal manera que el volumen sin usar del contendor sea mìnimo o próximo a cero.

Una solución del problema no puede ser determinada analíticamente, y en términos computacionales, es poco probable que exista un algoritmo de baja complejidad que aborde el problema de forma determinística. Una configuración o solución del problema debe considerar cuatro objetivos: maximizar el volumen utilizado, maximizar el peso de la carga, maximizar el equilibrio(centro de gravedad) del contenedor , maximizar el costo asociado a la carga.

Al considerar estos objetivos el problema debe ser tratado como un problema de optimización multiobjetivo [35]. Por lo tanto, un problema de esta naturaleza, haría una búsqueda demasiado compleja para determinar numéricamente una frontera eficiente (Pareto óptimo). Este tipo de problemas requieren, por tanto, el uso de técnicas de optimización como las metaheurísticas, a fin de obtener una solución aproximada del problema. Así el problema puede ser tratado como uno de único objetivo en el cual todas estas características son incluidas en la función objetivo a través de una combinación convexa de los mismos.

En la revisión bibliográfica que se ha realizado se descompone el problema de empaquetamiento tridimensional en un problema bidimensional para simplificarlo se relajan las condiciones de altura, luego con base en esa respuesta se vuelve al problema original y se resuelve.

La metodología consiste en estudiar el estado del arte de los algoritmos de solución, así como el de los modelos matemáticos. Es apropiado destacar que el

Page 23: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

17

grupo DINOP ha venido adelantado estudios en estas técnicas aplicadas a otros problemas similares [50],[51],[52],[53].

Los mayores beneficios del desarrollo de este proyecto son, entre otros:

Aportar al desarrollo investigativo de la facultad de Ingeniería Industrial en el área de investigación operativa, línea de optimización de la producción.

Generar la apertura de un nuevo campo de desarrollo empresarial que permita mostrar la maestría en Investigación Operativa y Estadística como un ente consultor de empresas regionales y nacionales

1.6. Diseño metodológico

La investigación inicia con una revisión bibliográfica para conocer el estado del arte del empaquetamiento óptimo. Luego se hará una adecuación del modelo a los operadores de las metaheurísticas que serán usadas y se compararan los resultados con casos de la literatura a través del desarrollo de un aplicativo especializado.

El resultado final incluye el desarrollo del software necesario para simular, comparar y evaluar resultados. Adicionalmente, el simulador estará asociado a una base de datos con información sobre casos de prueba típicos para evaluar los diferentes métodos

Page 24: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

18

2. PROBLEMAS DE CORTE Y EMPAQUETAMIENTO

Figura 2. Tabla 2.

2.1. Generalidades

El empaquetamiento de cajas dentro de contenedores es de gran importancia en la actividad de manejo de materiales y en las actividades de logística de las organizaciones. Un contenedor está definido como una caja rectangular la cual debe usarse de forma que la cantidad de espacios sin utilizar sean mínimos. Las cajas deben ser elementos que puedan apilarse, adicionalmente todo tipo de mercancías deben ser empacadas dentro de las cajas para facilitar su manejo. El proceso de empaquetamiento debe ser manual o debe ser controlado por un equipo de control numérico. El problema general de empaquetamiento considera el número óptimo de contenedores para empacar un conjunto de cajas rectangulares de diferentes dimensiones donde el objetivo es minimizar el total de área sin utilizar.

El problema de empaquetamiento de contenedores está clasificado como un problema tridimensional (3D) (figura 2.1), otro tipo de problema que la industria presenta es el empaquetamiento en contenedores circulares o cilíndricos (figura 2.2), en ingeniería de comunicaciones es común la tarea de acomodar fibra óptica en un tubo del menor radio posible. El problema de empaquetamiento de contenedores está relacionado como un problema bidimensional (2D) cuando se refiere a problemas de corte bidimensional y al empaquetamiento sobre estibas o palets, definiendo como estiba, a un armazón de madera, plástico u otros materiales empleado en el movimiento de carga que facilita el levantamiento y manejo con pequeñas grúas hidráulicas (figura 2.3).

En el caso general del problema de corte bidimensional se dispone de una superficie S de cierto material y que tiene unas dimensiones *L W determinadas.Además, se dispone de un conjunto de n piezas distintas, cada uno de las cuales tiene unas dimensiones *i il w y un beneficio ib asociado.

El problema consiste encontrar la distribución de las piezas sobre la superficie S, dado un determinado número de piezas de cada tipo, de forma que el beneficio obtenido sea máximo y el desperdicio de material sea mínimo.

Page 25: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

19

Z

Y

X

caja i

Ancho

Largo

Alto

Figura 2.1. Problema de empaquetamiento en contenedores rectangulares

Figura 2.2. Problema de empaquetamiento en contenedores cilíndricos.

Page 26: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

20

Figura 2.3. Problema del Palet reducido a dos dimensiones

Este problema se puede formular matemáticamente tal como se muestra en la Ec.(2.1):

1

:

n

i ii

M aximizar b x

sujeto a

R

(2.1)

Siendo ,i ib x el beneficio asociado y el número de piezas de cada tipo i a ser

cortadas respectivamente y {R} el conjunto de restricciones específicas de cada problema. Se debe tener en cuenta que según el tipo de problema en concreto éste podrá estar sujeto a otro tipo de restricciones características del caso en particular. De todos modos, aún suponiendo el caso del problema más sencillo e ignorando algunas de las restricciones, los problemas de corte son denominados NP-completo.

Es un problema de tipo NP-completo, dado que los patrones de empaquetamiento incrementan exponencialmente con el número de rectángulos que deben ser empacados. La magnitud del espacio de búsqueda es mayor que la del problema del agente viajero. Por ejemplo, si el número de placas a ser ubicadas es de 25, el tamaño del espacio de soluciones está dado por !25225 . Mientras que el espacio de soluciones del agente viajero es del orden de 3110 para un caso con igual número de ciudades considerando que todas las ciudades estén conectadas entre sí.. Esta es una de las razones para usar las técnicas metaheurísticas como herramienta de solución [32].

El problema descrito considera un alto grado de diversidad en los tipos de placas o piezas rectangulares y un único tablero en los que deben ser empacadas. Además, sin pérdida de generalización, se asume que todas las entradas son enteros positivos. La posibilidad de rotar las placas un ángulo de 90º también puede ser considerada.

Page 27: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

21

2.2. Aplicaciones en la industria

Sus aplicaciones se pueden observar en industrias de perfiles metálicos, corte de maderas, papel, plástico, piel, aluminio o vidrio en donde los componentes rectangulares tienen que ser cortados desde grandes hojas de material; en un contexto de depósitos o almacenes las mercancías deben ser ubicadas en estanterías; en periódicos artículos y avisos tienen que ser organizados en páginas. En estas aplicaciones las unidades de estandarización son los rectángulos, y tienen una función objetivo común que consiste en que todas las piezas requeridas se ubiquen en un mínimo número de hojas de material, este problema de optimización resultante es conocido en la literatura como el problema bidimensional de bin-packing (2BP). En otros contextos como las empresas papeleras o de industrias textiles la unidad de material es un rollo y la función objetivo es cortar todos los ítems usando la mínima dimensión del rollo (2SP)..

Lo que ocurre normalmente, por ejemplo en la industria textil, es que tras una primera etapa de producción en la que se realiza el diseño de las prendas, ya se disponen de las telas necesarias y se conocen los patrones que se desean obtener de cada una de ellas.

En la etapa siguiente, intervienen una o más personas especializadas que son quienes van distribuyendo y cortando los patrones sobre la tela. Si se quisiera automatizar esta etapa del esquema de producción textil, el sistema a desarrollar debería cumplir con ciertos requisitos para que su implementación fuese realmente beneficiosa para la empresa implicada. Estos requisitos son los siguientes:

La proporción media del desperdicio de telas obtenida por el sistema debería ser igual o menor que la obtenida por un humano especializado. Se sabe que, normalmente, el desperdicio producido por un profesional del corte es de aproximadamente el 30% de la tela original, por lo que, el sistema a desarrollar debería al menos igualar este resultado.

El tiempo de ejecución para la obtención de un resultado admisible, no debe en ningún caso provocar una demora en el proceso global de producción, pues en tal caso, no proporcionaría ningún beneficio notable para la industria en cuestión.

A la hora de resolver el problema, se deben considerar y aplicar todas las restricciones referentes a la legalidad de los patrones. Por ejemplo, algunos patrones tienen orientación y ésta debe seguir la dirección del material. Existen, además, materiales cuya calidad no es la misma en toda su superficie esto ocurre, por ejemplo, con el cuero y la madera y en estos casos se suele aprovechar las zonas de mejor calidad para fabricar las piezas de mayor valor.

Page 28: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

22

2.3. Introducción Histórica

El problema de corte y empaquetado (Cutting and Packing Problem) es un problema que se comenzó a plantear y estudiar hace ya algún tiempo. Salvo algunas excepciones como Kantorovich en 1939 y Brooks en 1940, las primeras aproximaciones de interés para problemas reales aparecieron a partir de 1961. Fue en este año cuando Gilmore y Gomory [21] publicaron su aproximación por programación lineal. Posiblemente, éste haya sido uno de los artículos con mayor relevancia dentro de esta área.

A partir de ese momento, multitud de artículos con aproximaciones y estudios diversos acerca de las posibles variaciones del problema aparecen cada año. Con lo cual, la documentación existente se hace aún más extensa hasta llegar al punto en que es bastante complicado saber qué documentos se ajustan mejor al tipo de problema por el cual se está interesado.

Quizás, por este motivo, Sweeney y Paternoster [49] realizaron una completísima recopilación que engloba más de 400 libros, artículos y demás documentación en inglés publicada entre 1940 y 1990, que tratan de problemas de corte y empaquetado. Pero lo que elaboraron no es sólo una recopilación de documentación, sino que además, proporciona una clasificación de los estudios según la dimensión del problema, tipo del problema y tipo de aproximación a la solución empleada.

2.4. Unificación de la nomenclatura

A partir de unos modelos básicos, existen gran cantidad de variantes, derivadas de la amplia gama de aplicaciones prácticas existentes y dependiendo de quién lo esté tratando.

Dyckhoff [14] desarrolló un esquema que generaliza la clasificación presentada por Hinxman [30], a finales de los 80, publica un artículo cuyo principal objetivo consiste en unificar las distintas notaciones existentes en la literatura relacionada con este tipo de problemas. En el documento, además, pretende describir una clasificación de las diversas tipologías y clases de problemas relacionados. Esta se lleva a cabo basándose en la estructura lógica básica de cada uno de ellos e identificando así ciertas propiedades comunes a los diversos problemas. Estas características comunes de todo problema de corte y empaquetado son las que se detallan a continuación:

Existen dos grupos básicos de elementos. Un inventario de elementos mayores y un conjunto de pequeños elementos. A estos elementos también se les llama objetos o figuras.

La finalidad del problema será distribuir el conjunto de los pequeños elementos a lo largo de los elementos mayores.

Page 29: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

23

Por otro lado, las peculiaridades o características que hacen que un tipo de problema se distinga de otro suelen ser las siguientes:

Dimensión (unidimensional, bidimensional, tridimensional o problemas multidimensionales).

Cantidad disponible de objetos grandes y pequeños (medida entera o fraccionaria).

Forma de las figuras u objetos (regular o irregular).

Tamaño de los objetos.

Orientación de los objetos.

Combinación de los objetos.

Disponibilidad de los objetos.

Restricciones inherentes al tipo de patrón (tipo de corte a emplear, separación entre los patrones, etc.).

Objetivos del problema en sí.

La notación es la siguiente:

Dimensionalidad

(N) Número de dimensiones

Tipo de asignación

(B) Todas las láminas o tableros y una parte de las piezas demandadas.

(V) Una parte de los tableros y todas las piezas demandas.

Surtido de tableros o láminas almacenadas

(O) Un tablero.

(I) Tableros idénticos.

(D) Tableros diferentes.

Surtido de piezas demandadas.

(F) Pocas piezas de diferentes tamaños.

(M)Muchas piezas de muchos tamaños.

Page 30: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

24

(R)Muchas piezas de relativamente pocas dimensiones.

(C)Muchas piezas pero idénticas.

Como comenta Dyckhoff, dentro del tópico de los problemas de corte y empaquetado, aparecen problemas cuya estructura lógica y finalidad última es la misma pero aparecen descritos en la literatura con nombres diferentes. A continuación, se presenta una lista con los nombres más frecuentemente empleados para referirse a este tipo de problemas:

Problemas de Corte y Empaquetado (Cutting and Packing Problems).

Marker Making Problems.

Cutting Stock y Trim Loss Problems.

Bin Packing, Dual Bin Packing, Strip Packing, Vector Packing y Problema de la Mochila (Knapsack Problem).

Problemas de Carga de un Vehículo o Contenedor.

Assortment, Dividing, Nesting o Partitioning Problems.

Line Balancing, Memory Allocation y Multiprocessor Scheduling Problems.

2.5. Problemas de corte bidimensional

Morabito y Morales [39],[40] hacen la siguiente clasificación de los patrones de empaquetamiento:

Patrones guillotina y no guillotina:

Un corte es de tipo guillotina si cuando se aplica sobre un rectángulo produce dos nuevos rectángulos, es decir, si el corte va de un extremo a otro del rectángulo original; en otro caso se denomina del tipo no guillotina. Un patrón es de tipo guillotina si se puede obtener por sucesivos cortes de tipo guillotina Figura 2.4(a), 2.5(a). Un patrón es no guillotina si es obtenido por sucesivos cortes de guillotina y no guillotina Figura 2.4(b), 2.5(b)).

Patrones de primer orden y orden superior:

Un corte es de primer orden no guillotina si cuando se aplica en un rectángulo produce nuevos rectángulos de tal manera que no forma un patrón de guillotina Figura 2. 4(b). Un patrón es llamado de primer orden no guillotina si es obtenido por sucesivos cortes guillotina o cortes de primer orden no guillotina Figura 2.5(b).

Page 31: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

25

2.4(a) Corte Guillotina 2.4(b)Corte no guillotina

Figura 2.4. Tipos de Cortes

2.5(a) Patrón Guillotina

2.5(b)Patrón de primer orden

Figura 2.5. Tipos de patrones

Page 32: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

26

En este trabajo se desarrollarán técnicas de solución que permitan resolver el problema en la clasificación de Dyckhoff (2/B/O/M) para el caso en que se disponga de una única hoja de material. En este tipo de problema bidimensional se debe ubicar una parte de las piezas, las cuales presentan diversos tamaños, en un único tablero con base en la demanda.

2.6. Extensión a Polígonos

Stefan Jakobs [32] hace una propuesta para el problema de corte bidimensional cuando las figuras demandadas son polígonos planteando que puede realizarse una reducción del problema a uno de empaquetamiento de rectángulos con algunas consideraciones: primero encaja los polígonos dentro de rectángulos con la mínima área posible para todas las piezas, rotándolas alrededor del centro de gravedad de todas las esquinas en un número fijo de iguales incrementos angulares como se muestra en la figura 2.6. Cada incremento debe encajar el rectángulo paralelamente a los ejes x y y. con el mínimo de área calculada. Finalmente la minimización de los incrementos es ejecutada, después de haber encajado cada polígono en rectángulos se empieza a ubicarlos uno tras otro tan próximo como sea posible, llevando así el problema a uno de empaquetamiento bidimensional rectangular.

Figura 2.6. Empaquetamiento de un polígono en un rectángulo con mínima área.

Jakobs en su trabajo compara soluciones encontradas aplicando el constructivo BL con respuestas obtenidas con el algoritmo genético, según sus conclusiones es

Page 33: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

27

más eficiente el algoritmo genético que el BL. Estas comparaciones se pueden observar en las figuras 2.7 y 2.8.

Figura 2.7. Respuesta obtenida con algoritmo BL. Altura =22

Figura 2.8. Respuesta obtenida con algoritmo genético (1000 iteraciones). Altura=15

Page 34: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

28

2.7. Aproximaciones al problema de corte bidimensional

Al igual que se han estudiado diversas variantes del problema, también se han desarrollado distintas aproximaciones a la solución del mismo. Algunas de estas aproximaciones que se han seguido son las siguientes:

Algoritmos de Programación Dinámica y Variantes.

Métodos de Programación Entera. En este caso, uno de los algoritmos más empleados es la ramificación y acotamiento (Branch-and-Bound).

Búsquedas Heurísticas.

Aproximaciones mediante Redes Neuronales.

Aproximaciones mediante uso de sistemas expertos o sistemas basados en el conocimiento.

Métodos que emplean paralelismo.

En un artículo de Salkin y Kluyver [47] se describen la mayoría de los métodos anteriores para el caso del problema de la mochila unidimensional. Se plantean las bases de cada una de las técnicas y se realiza una comparativa entre ellas. Resulta un documento de interés en cuanto a que proporciona una visión general de los distintos métodos.

Otro artículo de gran interés es el Dowsland [13]. En este artículo se seleccionan un conjunto de las variantes del problema de corte y empaquetado más estudiadas y se analizan para cada una de estas variantes, cuáles han sido las soluciones propuestas de mayor relevancia.

En el marco referencial se hizo un recorrido por las diferentes técnicas de solución referenciados bibliográficamente, después de la construcción del anteproyecto se encontró un documento que fue de gran relevancia en el desarrollo de este trabajo y se refiere a un documento presentado por Yaodong Cui basado en el procedimiento de ramificación y acotamiento combinado con técnicas de programación dinámica. El tablero a ser utilizado es dividido en segmentos homogéneos verticales y a partir de ellos se empiezan a ubicar las piezas, con base en esta idea se obtienen configuraciones que siempre serán del tipo guillotina, para validar la técnica se presentan 50 casos de prueba para los que no se admite rotación de las piezas, cada caso cuenta con 20 tipos diferentes de piezas, se trata de problemas restringidos donde no es necesario cortar todas las piezas, los resultados se presentan con base al porcentaje de área utilizada [11].

Page 35: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

29

3. MODELOS MATEMÁTICOS DE LOS PROBLEMAS DE CORTE Y EMPAQUETAMIENTO.

Figura 3. Tabla 3.

3.1. Generalidades

Los problemas de corte y empaquetamiento, como se ha mencionado, están estrechamente relacionados. Es así como Vendramini [59] resuelve el problema de cargue de contenedores relajándolo inicialmente a un problema bidimensional y luego construyendo columnas sobre el patrón obtenido para llevarlo a tres dimensiones. Adicionalmente en [41] se muestra como el problema de embalaje en estibas o palets se puede reducir a uno de dos dimensiones, este problema es habitual en las fábricas donde se reciben o entregan cajas de diferentes dimensiones. Con base en lo anterior en este capitulo se presentarán dos modelos en tres dimensiones: rectangular y circular, algunos modelos bidimensionales con modificaciones de acuerdo a las características específicas del caso considerado y finalmente se plantearan los modelos bidimensionales restringidos tipo guillotina adoptados en este trabajo.

3.2. Modelo matemático del problema de empaquetamiento rectangular (3-Dimensional)

Uno de los modelos más aceptados en la literatura especializada es el propuesto por CHEN [10]. Éste considera sólo un contenedor, tanto las cajas a ser empacadas como el contenedor son totalmente simétricos como se muestra en la figura 3.1.

Las cajas serán dimensionadas por ri, qi y pi y el contenedor por H, W y L. El objetivo es encontrar una configuración de apilamiento o empaquetamiento de cajas de forma que el volumen utilizado en el contenedor sea maximizado, considerando las restricciones dimensionales del mismo. Este problema puede ser ampliado a múltiples contenedores [42], donde hay múltiples objetivos, como; maximizar el espacio utilizado y minimizar el número de contenedores. En algunos casos se consideran otros objetivos como maximizar el valor de la carga, maximizar el peso y considerar el centro de equilibrio del contenedor, entre otros.

Page 36: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

30

Z

Y

X

caja i

caja k

pi

ri

qi

rk

yi

Wj

pk

qk

(0,0,0) (xk,yk,zk))

(xi,yi,zi)

Contenedor j

1; 0; 0 1; 0; 0

0; 0; 1 0; 0; 1

0; 1; 0 0; 1; 0

1; 0

1; 0

1; 0

xi yi zi xk yk zk

xi yi zi xk yk zk

xi yi zi xk yk zk

ik ik

ik ik

ik ik

l l l l l l

W W W W W W

h h h h h h

a b

c d

e f

Figura 3.1. Definición de las variables para el problema de carga de un contenedor

A continuación se describen algunas notaciones necesarias para comprender el modelo matemático del problema:

N: Numero de cajas disponibles para apilar.

Si: Variable binaria que indica si la caja fue ubicada en el container. Cuando esto ocurre Si = 1, en caso contrario Si =0.

(xi, yi, zi): variables que indican la localización de la caja teniendo como punto de referencia el vértice inferior izquierdo trasero

(lxi, lyi, lzi): variables binarias que indican para cual eje del contenedor el lado pi de la caja está en paralelo. Como la altura de la caja siempre está en paralelo con la altura del contenedor se puede decir que (lxi, lyi, 0). (orientación de la caja)

Page 37: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

31

(wxi, wyi, wzi): variables binarias que indican para cual eje del contenedor el lado qi

de la caja está en paralelo. Como la altura de la caja siempre está en paralelo con la altura del contenedor se puede decir que (wxi, wyi, 0). (orientación de la caja)

(hxi, hyi, hzi): variables binarias que indican para cual eje del contenedor el lado ri

de la caja está en paralelo. Como la altura de la caja siempre está en paralelo con la altura del contenedor se puede decir que siempre será (0, 0, 1). (orientación de la caja)

Adicionalmente, existen otras variables que son usadas para indicar el posicionamiento de las cajas en relación a otras cajas.

aik : en caso de que sea 1, indica que la caja i está a la izquierda de la caja k.

bik : en caso de que sea 1, indica que la caja i está a la derecha de la caja k.

cik : en caso de que sea 1, indica que la caja i está atrás de la caja k.

dik : en caso de que sea 1, indica que la caja i está al frente de la caja k.

eik : en caso de que sea 1, indica que la caja i está abajo de la caja k.

fik : en caso de que sea 1, indica que la caja i está encima de la caja k.

Así, el problema puede ser modelado de la siguiente manera:

1 1

* * * * *m N

j j j j i i ij i

Minimizar L W H n p q r (3.1)

1. Evitar superposición de cajas en el contenedor

. . . (1 ). , ,i i xi i xi i xi k ikx p l q w r h x a M i k i k (3.2)

. . . (1 ). , ,k k xk k xk k xk i ikx p l q w r h x b M i k i k (3.3)

. . . (1 ). , ,i i yi i yi i yi k iky q w p l r h y c M i k i k (3.4)

Page 38: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

32

. . . (1 ). , ,k k yk k yk k yk i iky q w p l r h y d M i k i k (3.5)

. . . (1 ). , ,i i zi i zi i zi k ikz r h q w p l z e M i k i k (3.6)

. . . (1 ). , ,k k zk k zk k zk i ikz r h q w p l z f M i k i k (3.7)

2. Garantizar que el par de cajas evaluadas con las ecuaciones anteriores estén dentro del contenedor.

1 , , ,ik ik ik ik ik ik ij kja b c d e f s s i k j i k (3.8)

. . . (1 )i i xi i xi i xi ix p l q w r h L S M i (3.9)

. . . (1 )i i yi i yi i yi iy p l q W r h W S M i (3.10)

. . . (1 )i i zi i zi i zi iZ p l q W r h H S M i (3.11)

1

1m

ijj

s i (3.12)

1

.N

ij ji

s M n j (3.13)

Page 39: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

33

3. Garantizar que un posicionamiento de cajas, obedezca a las limitaciones físicas dadas por las dimensiones del contenedor.

. . . (1 ) i i xi i xi i xi ix p l q w r h L S M i (3.14)

. . . (1 ) i i yi i yi i yi iy p l q W r h W S M i (3.15)

. . . (1 ) i i zi i zi i zi iZ p l q W r h H S M i (3.16)

M es un número entero arbitrario grande.

A pesar que el modelo matemático puede ser simplificado, seguirá siendo un problema complejo de solución no trivial, siendo clasificado como un problema NP-completo (completo en tiempo polinomial no determinístico) [26,27,28]. Esta clasificación del problema permite afirmar que para problemas de gran tamaño (un número elevado de cajas) sólo es posible encontrar soluciones de forma eficiente usando algoritmos de optimización combinatorial o metaheurísticas.

3.3. Modelo matemático del problema de empaquetamiento cilíndrico. (3-Dimensional)

El problema general de empaquetamiento circular debe ser modelado como un problema de programación no lineal, donde el objetivo es encontrar una disposición que permita la ubicación de piezas cilíndricas de diferentes radios de forma que se minimice la cantidad de radio desperdiciado.

La letra I simboliza el conjunto de todos los elementos a ser empaquetados e i

simboliza un elemento de I. El radio y las coordenadas del ith elemento son ir y

( , )i ix y respectivamente. El sistema cartesiano mostrado en la figura 3.2 con el

origen en el centro del contenedor considera todo el conjunto de los diferentes pares de cada elemento expresado como:

( , ) : , ,H i j i I j I j i (3.17)

Page 40: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

34

X

Y

ro

xj

yi

yj

xi

Figura 3.2. Sistema Cartesiano del contenedor cilíndrico

Con los símbolos definidos e inspirados en el estudio de George [20] el problema está modelado de la siguiente forma:

0

:

Minimizar r

Sujeto a(3.18)

2 20 ,i i ix y r r i I (3.19)

2 2( ) ( ) i j i j i jx x y y r r

( , )i j H

(3.20)

0 ,r (3.21)

,i ix y (3.22)

i H (3.23)

Page 41: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

35

En estas expresiones, ir es conocido como un número real positivo, ,i ix y y or son

desconocidos, i I . En este modelo hay (2n + 1) variables continuas determinísticas y n + n (n+1)/2 restricciones donde n es el número de elementos a ser empacados, 1, 2,....,I n . La Ec. (3.19) garantiza que ningún elemento quede

por fuera del contenedor . La Ec. (3.20) Indica que no haya traslape de las piezas.

Un conjunto de números reales 1, 1,..., ,o n nr y x y x y que satisfaga las Ec. (3.19) y

(3.20) se denomina solución factible.

3.4. Modelo matemático del problema bidimensional propuesto por Gilmore y Gomory

El modelo matemático para problema de empaquetamiento en dos dimensiones está dado por un conjunto de n piezas rectangulares cada una de ellas tiene una altura hi y con anchos wi i=1,2,….n el objetivo es ubicar las piezas en el mínimo número de espacios rectangulares (hojas de material), cada uno tiene una altura Hy un ancho W. Se asume que 0 iw W

El primer modelo fue desarrollado por Gilmore y Gomory [22]; ellos propusieron una columna propósito basada en la enumeración de todos los subconjuntos de elementos que pueden ser ubicado en una hoja de material. Siendo Aj un vector columna binario de n elementos ija con (i=1,…,n) tomando el valor de 1 si el item i

pertenece al jth modelo y el valor de 0 en caso contrario. El conjunto de todos los posibles modelos es representado por la matriz A compuesto por todos los posibles Aj columnas (j=1,…M) y que corresponden al siguiente modelo matemático

1

minM

jj

x

S. a:

(3.24)

1

1 ( 1,..., )M

ij jj

a x i n (3.25)

0,1 ( 1,..., ),jx j M (3.26)

Page 42: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

36

Donde jx toma el valor de 1 si el modelo j pertenece a la solución y el valor cero en

caso contrario. Se observa que las ecuaciones (3.24) y (3.26) validan el modelo en una dimensión, la única diferencia es que las '

jA s son todas columnas que

satisfacen

1

n

ij ii

a h H (3.27)

Debido a la gran cantidad de columnas que aparecen en A, la única forma de manipular el modelo es generando dinámicamente columnas a medida que se necesitan. Para una dimensión Gilmore y Gomory [31,32] tomaron la programación dinámica aprovechando la generación de columnas para solucionarlo, y asociándolo a un problema binario de mochila; para dos dimensiones ellos observaron muchas dificultades, por ello usaron una estrategia consistente en ubicar las piezas a cortar en filas formando niveles y resolviéndolo a través de dos etapas de programación dinámica.

Beasley [3] considera el problema de corte bidimensional en el cual la ganancia está asociada con cada elemento y el objetivo es maximizar la rentabilidad del subconjunto de elementos ubicados en una única hoja de material (Problema de corte). Este problema fue formulado como un problema de programación lineal entera en una representación discreta del espacio geométrico y usando coordenadas en las cuales los elementos pueden ser localizados denominado las variables de la siguiente manera:

1 s i e l i t e m i e s lo c a li z a d o e n la e s q u in a d e r e c h a e n e l p u n to ( p ,q )

d e o t r a f o r m a0i p qx (3.28)

Para 1,... , 0,... 0,...,i ii n p W w y q H h

3.5. Modelos de programación lineal entera (PLE) para empaquetamiento de niveles bidimensionales propuesto por Lodi

Los problemas de PLE involucran un número polinomial de variables y restricciones que han sido obtenidas por Lodi en [36] Para un caso especial donde las piezas deben ser ubicadas por niveles.

Muchos de los algoritmos de aproximación para (2/B/O/M) se resuelven ubicando los elementos en filas formando niveles. El primer nivel es el fondo de la hoja de material y los elementos son ubicados en el fondo. El siguiente nivel está determinado por la línea horizontal dibujada en la parte superior del ítem más alto ubicado en el nivel inferior y así sucesivamente ver fig 3.3

Page 43: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

37

12

46

3 5

( )a ( )b

Figura 3.3. a) Nivel de empaquetamiento; b) Nivel normalizado del empaquetamiento.

3.6. Modelo del problema restringido y doblemente restringido bi-dimensional propuesto por Parreño.

Dentro del marco referencial se ha descrito este modelo matemático, se menciona nuevamente para explicar el modelo con un ejemplo numérico.

Definido formalmente, el problema consiste en cortar un rectángulo de dimensiones (L,W) que se denomina tablero, de longitud L y anchura W, un conjunto de rectángulos ( , )i il w que se denominan piezas, de longitud il y anchura

iw ( 1,..., )i m . Cada pieza tiene orientación fija, es decir, no puede ser rotada. Los

cortes deben ser paralelos a los lados del tablero. El número de piezas de cada tipo i debe estar dentro de unos límites. ,i iP Q con (0 )i iP Q . Por notación se

define

1

m

ii

M Q (3.29)

El problema no restringido, donde no existen límites, ni superiores, ni inferiores, para el número de piezas a cortar de cada tipo, excepto la cota superior trivial:

ii i

L WQ

l w1,..., .i m (3.30)

Page 44: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

38

El problema restringido, donde está acotado superiormente el número de piezas de cada tipo se pueden utilizar:

ii i

L Wi Q

l w(3.31)

El problema doblemente restringido, donde además de estar acotado el número máximo de algunos tipos de piezas a cortar, se exige cortar un número mínimo de piezas de algunos tipos: 0ii P .

Se define la eficiencia de un tipo de pieza i como /( )i i i ie v l w , es decir, el beneficio

por unidad de superficie de la pieza de tipo i. En la figura 3.4 se observa un ejemplo donde hay un tablero (10,10) el número de piezas es m=10 y el número de piezas posibles a cortar es M=21. En la figura 3.4(a) se observa la solución óptima para el problema restringido, donde se obliga a cortar algunas piezas, concretamente para las piezas tipo: 1,2,3,7 donde al menos se debe cortar una pieza.

Piezail iw iP iQ iv ie

1 3 2 1 2 7 1.166

2 7 2 1 3 20 1.428

3 4 2 1 2 11 1.375

4 6 2 0 3 13 1.083

5 9 1 0 2 21 2.333

6 8 4 0 1 79 2.468

7 4 1 1 2 9 2.25

8 1 10 0 1 14 1.4

9 3 7 0 3 52 2.476

10 4 5 0 2 60 3

Tabla 3.1 Datos ejemplo Tablero: L=10 W=10

Page 45: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

39

7

6

5

3 4

1 2

8

9

10

10

9 9

11

72

7

10

3

9 9

1

7

a) Restringido. Óptimo 247b)Doblemente restringido. Óptimo 220

10

Figura 3.4. Problema restringido y doblemente restringido

3.7. Problema de empaquetamiento cuando sólo es conocido el ancho del tablero ó Strip packing problem.

Strip packing problem (SPP) pertenece a la categoría de problemas de empaquetado con muchas aplicaciones en la industria. Trata la disposición de un conjunto de rectángulos de diferentes dimensiones sobre una anchura fija y altura indeterminada, de manera que la altura alcanzada por dichos objetos sea la menor posible. Estos objetos no pueden superponerse y, en determinados casos, pueden ser girados respecto a su orientación inicial. El objetivo de tal disposición es minimizar el área desperdiciada o residuos, que correspondería con aquellas zonas de los patrones ni ocupadas por ninguna pieza.

Para el caso bidimensional los ítems a empaquetar son rectángulos. Por lo tanto, los rectángulos R(wi,hi) (para i = 1, ..., n, donde wi representa la anchura e hi la altura del rectángulo i) han de ser colocados sobre un objeto llamado banda, de anchura fija (w) y altura, en principio, infinita, teniendo como objetivo final minimizar la altura alcanzada por los mismos (Figura 3.5). Para ello, los rectángulos, que no pueden solaparse, tienen que cumplir una serie de requisitos:

• Como mínimo, uno de los lados de cada rectángulo ha de tener una longitud menor a w.

Page 46: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

40

• Una vez colocados, los lados de los rectángulos han de estar paralelos a los ejes de la banda.

• Los rectángulos pueden ser o no rotados ± 90º.

A estas restricciones se le suele unir una más, relativa a si las piezas colocadas han de seguir algún corte de tipo guillotina. Un corte es de tipo guillotina si cuando se aplica sobre un rectángulo produce dos rectángulos nuevos. Un patrón de ordenación (o solución final) es de tipo guillotina si se puede obtener por sucesivos cortes de tipo guillotina [41]. En otras palabras, la disposición final de los objetos en el patrón es de tipo guillotina, si la misma puede ser conseguida mediante sucesivos cortes de lado a lado de alguno de los rectángulos que se van obteniendo con anterioridad. En caso contrario, se dice que el problema es de tipo no guillotina.

Cada solución al problema del SPP vendrá representada por un conjunto de permutaciones {(ri,ai,bi) para i = 1, ..., n} de los rectángulos {R(wi,hi) i = 1, ..., n},donde:

• ri representa si R(wi,hi) es rotado o no (ri=0 representaría al objeto no girado).

• (ai,bi) son las coordenadas de la posición de la esquina inferior izquierda del rectángulo respecto al origen de coordenadas (Figura 3.6).

Altura alcanzada

w

h

Figura 3.5. Solución para un problema restringido.

Page 47: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

41

Figura 3.6. Solución para un Ítem.

El problema del SPP está ampliamente documentado por un gran número de trabajos. En base a diversas heurísticas y metaheurísticas, se han desarrollado gran cantidad de algoritmos cuyo objetivo es encontrar, dentro del conjunto de posibles soluciones, aquella o aquellas cuya altura final esté más próxima al valor óptimo del problema. En el trabajo de Turton y Hopper [31], se puede encontrar una amplia referencia acerca de estos procedimientos heurísticos y metaheurísticos aplicados a la problemática del SPP bidimensional.

3.8. Modelo Matemático Propuesto - Problema restringido bidimensional tipo guillotina

3.8.1. Propuesta 1

El problema ha sido formulado como un problema lineal entero en [36], en una primera aproximación a la solución del problema se abordó un nuevo planteamiento. Para una adecuada formulación matemática del problema, se implementa la siguiente notación:

L: altura del tablero rectangular de almacenamiento.

W: ancho del tablero.

M: número total de piezas rectangulares a ser ubicadas.

i {1,2,…,m}: conjunto de índices de los tipos de rectángulos.

li: altura de la placa rectangular de tipo i.

wi: ancho de la placa de tipo i.

k: alternativa de solución k conformada por dos vectores(uno de piezas y otro de cortes)

Page 48: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

42

Sk: número máximo de secciones de la alternativa de solución k.

La expresión matemática de la función objetivo para una alternativa de solución kes:

.secciones( 1)

.placas( ) .placas( )1 .secciones( ) 1

- k k

k k

k

S s

k m ms m s

Fobj L W l w (3.32)

La minimización de la función objetivo mostrada en (3.32) está sujeta al cumplimiento de las siguientes restricciones, a fin de obtener una solución factible:

Todas las piezas tienen una orientación fija, es decir, no se permiten rotaciones de 90ª. Esto significa que una placa de ancho w y altura l es distinta a una pieza de ancho l y altura w.

Las placas deben ser ubicadas dentro de la paleta de forma ortogonal. Esto quiere decir que los lados de las placas son paralelos a los lados de la paleta.

El ancho y la altura de cada placa no deben exceder las dimensiones de la paleta.

Las dimensiones de las placas y las de la paleta son números enteros positivos.

Todos los cortes realizados sobre el tablero se consideran perfectos, sin grosor.

Puede haber varias placas del mismo tipo.

El objetivo del problema consiste en ubicar las placas sobre la paleta de forma que la diferencia entre el área de la paleta y el área total ocupada por las placas sea mínima (minimizar el desperdicio). Una alternativa factible de solución será aquella en la que todas las placas quedan contenidas dentro del tablero, ubicadas ortogonalmente y sin traslaparse unas con otras. Por lo tanto, se pretende encontrar una solución factible que minimice el área desperdiciada.

3.8.2. Propuesta 2

Esta segunda propuesta se basa en un modelo planteado por el profesor Víctor Parada en [55] y consiste en la siguiente expresión.

Se define el problema formalmente así: se tiene (W,L) y ( , )i iw l pares ordenados

que denotan las dimensiones del tablero y de la pieza i a cortar respectivamente. Sean además i ix y b la cantidad mínima y máxima demandada de cada una de las

piezas y se denota con n el número total de piezas demandadas, adicionalmente no se permiten rotaciones La formulación del problema se describe con las siguientes ecuaciones [55].

Page 49: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

43

i i iMin WL w l x

S.a

(3.33)

1 i n (3.34)

,ix entero i (3.35)

Cortes factibles (3.36)

La figura 3.7 se muestra dos patrones de corte, uno factible (a) y uno infactible (b)

(a)(b)

Figura 3.7. (a) Corte guillotina, (b) Corte no guillotina

3.8.3. Propuesta 3

Dado un número finito n piezas rectangulares de área Ai x i Ay i que deben ser

ubicadas en un tablero igualmente rectangular de área AT xT AyT . El problema se define como restringido cuando se limita el número máximo de piezas (D) a ubicar de cada tipo. No es necesario que todas las piezas sean ubicadas en el tablero. La función objetivo consiste en maximizar el área efectiva utilizada en el tablero principal.[56]

El modelo propuesto divide el tablero principal en sub-espacios (S) asegurando que en cada sub-espacio se ubiquen piezas de un mismo tipo formando una matriz rectangular de piezas como se muestra en la figura 3.8(a).

Page 50: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

44

Subespacio

A

SubEspacio

B

(a) (b)

Figura 3.8. Generación de subespacios

Adicional a esto, los sub-espacios deben ser seleccionados de tal forma que el corte sea tipo guillotina. Un corte es factible de tipo guillotina si cuando al ser aplicado sobre un rectángulo produce dos nuevos rectángulos, es decir, si el corte va de un extremo a otro del rectángulo original; en otro caso se denomina de tipo no guillotina [56].

En cada sub-espacio generado por los cortes tipo guillotina debe ser ubicada la mayor cantidad de piezas del mismo tipo de tal forma que el desperdicio total sea minimizado, un forma de lograrlo consiste en ubicar piezas del mismo tipo en un arreglo matricial como se muestra en la figura 3.8 (b). Un arreglo de estas características puede ser generado por una secuencia de cortes guillotina aún en los casos en donde la demanda restrinja posiciones nulas (espacio sin utilizar).

El problema propuesto puede ser modelado matemáticamente de la siguiente forma:

(3.37)

(3.38)

(3.39)

Page 51: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

45

(3.40)

(3.41)

(3.42)

(3.43)

(3.44)

(3.45)

En donde

f: función objetivo : desperdicio total

Ai : área de cada una de las posibles piezas.

Uki : numero de piezas del tipo i colocadas en el sub espacio k horizontalmente

Vki: numero de piezas del tipo i colocadas en el sub espacio k verticalmente

Ns: número de subespacios.

N: números naturales (enteros positivos).

n: número de tipos de piezas.

Di :demanda por cada tipo de pieza.

Xk : ancho del subespacio.

Yk: : altura del subespacio.

Page 52: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

46

El producto corresponde al número de piezas totales del tipo i localizadas en el sub-espacio k, mientras que el número de piezas ubicadas debe ser un número natural tal como se muestra en Ec.(3.38). El total el número de elemento de cada tipo debe ser inferior a la demanda del mismo Ec.(3.39) y en cada sub-espacio los elementos ubicados en forma de arreglo matricial deben ser factibles lo cual significa que el número de elementos horizontales multiplicados por la longitud de cada elemento debe ser menor a la longitud del sub-espacio ( ) como se muestra en la Ec.(3.40) y análogamente en la Ec.(3.41) para el caso vertical.

Para asegurar que las piezas ubicadas en cada subespacio sean del mismo tipo se plantean las Ecs. (3.42) y (3.43). Esa restricción además de permitir el desarrollo de un constructivo eficiente, garantiza que los cortes en los subespacios sigan siendo de tipo guillotina. Así mismo, la Ec.(3.44) indica que el corte debe ser tipo guillotina.

Page 53: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

47

4. HEURISTICAS CONSTRUCTIVAS y CODIFICACION

Figura 4. Tabla 4.

4.1. Explosión Combinatorial

La solución de problemas combinatoriales, normalmente está asociada a un proceso de búsqueda. Salvo en problemas muy simples, la búsqueda de soluciones no puede realizarse en forma exhaustiva, por lo que los investigadores han desarrollado una gran cantidad de métodos alternativos de búsqueda que encuentran soluciones “de buena calidad”' y en muchos casos inclusive óptimas. Lo mismo aplica para solucionar problemas de optimización para los cuales se han desarrollado métodos aproximados, a veces involucrando cierta aleatoriedad.

4.1.1. El problema: Explosión combinatoria

La manera empírica de solucionar problemas combinatorios es a través del ensayo y el error.: En un primer paso se enumeran todas las combinaciones de las cuales se seleccionan las soluciones que satisfagan las condiciones del problema planteado en un segundo paso. En la mayoría de los casos sin embargo, “generar y probar” no es aceptable en términos del tiempo computacional. Esto es obvio si el sistema de combinaciones es infinito. Pero aunque sea finito muchas veces es muy grande, y se presentan casos donde el espacio de combinaciones crece de forma exponencial. En este caso, la generación de combinaciones genera una explosión combinatoria (del cuál generalmente sólo es posible realizar una búsqueda exhaustiva invirtiendo varios miles de millones de años)[45].

4.1.2. Problemas que requieren satisfacción de restricciones

Un ejemplo típico es un problema que consta de n variables desde V1,…, Vn que toman respectivamente valores en un rango finito, tales como un intervalo de números enteros. El problema es encontrar asignaciones de valores a las variables tales que satisfagan las restricciones del modelo, en este caso que estén dentro del intervalo permitido.

Si por ejemplo se considera el caso donde se tienen 15 variables V1,…, V15, con la condición que los valores que pueden tomar las variables deben estar en el dominio de {1,…, 15} y para cuál se desean encontrar todas las soluciones que satisfagan las siguientes restricciones:

Page 54: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

48

V1 < V2

V2 < V3

...

V14 < V15

Claramente, hay solamente 1 solución a este problema, a saber:

V1 =1, V2 =2,…, V15=15

A continuación se muestran algunas técnicas heurísticas para resolver problemas combinatoriales.

4.1.3. Generar y probar

Se pueden enumerar las asignaciones posibles escogiendo una variable no-asignada, eligiendo un valor en su dominio como su asignación, y repitiéndolo hasta que todas las variables se le asignen valores. Este proceso crea un árbol, donde cada nodo interno de este árbol corresponde a una opción no determinística del valor para asignar a una variable, y las hojas son todas asignaciones completas posibles.

Las hojas que satisfacen las restricciones del problema serían soluciones factibles. Las que violan las restricciones serían soluciones infactibles. Para ser más gráfica la situación se muestra en la figura 4.1 como se construye el espacio de soluciones, donde los círculos violetas representan valores elegidos, los cuadrados rojos representan valores infactibles, los valores factibles son representados por los diamantes verdes. Los triángulos verdes y rojos indican que el árbol no puede seguir creciendo por esas regiones.

Figura 4.1. Representación del espacio de soluciones.

Page 55: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

49

Para el problema en estudio, hay 15 variables, cada una de las cuales toma uno de 15 valores posibles: esto significa que hay 15^15 = 437.893.890.380.859.375asignaciones posibles. Siendo optimistas y suponiendo que se dispone de una computadora rápida capaz de comprobar las asignaciones 10^9 por segundo para decidir si cada uno puede ser una solución factible o infactible, la comprobación de todas las posibilidades toma aproximadamente 14 años.

4.1.4. Interpolación de la generación y de la comprobación

La técnica de “Generar y probar” genera asignaciones y las chequea cuando todos los valores se han generado, en ese momento revisa si la solución es factible o infactible. Se puede mejorar el proceso interpolando la generación y la comprobación: después de que cada opción se puede comprobar si cualquier restricción se viola. Por ejemplo, en el problema las restricciones planteadas son V1 < V2, V2 < V3, ...,V14 < V15. Así, tan pronto como se han generado valores paraV1 y V2 , se puede comprobar inmediatamente si V1 < V2

4.2. Heurísticas en optimización combinatorial.

En este tema se van a presentar las ideas básicas de las técnicas de optimización heurística en dominios discretos.

Conviene recordar que la formulación general de un problema de Investigación Operativa consiste en optimizar f(X), siendo:

( )

.

( ) 0

( )

0

Optimizar f X

s a

H X

G X B

X

Teniendo en cuenta que optimizar puede ser maximizar o minimizar, y que tanto la función objetivo como las restricciones puede ser de carácter lineal y no lineal.

Tratando de buscar la etimología de la palabra heurístico se encuentra que proviene del griego heuriskein, término que puede ser traducido por encontrar o descubrir.

También la expresión utilizada por Arquímedes, eureka, que significa "lo he encontrado", al descubrir el denominado principio de Arquímedes, está relacionada con el término heurístico.

Mucho más cercano en el tiempo, el término heurístico fue utilizado a mediados del siglo pasado por dos de los precursores de la Inteligencia Artificial. Polya en 1957 en su obra How to Solve It lo utiliza por vez primera en este contexto. Años más

Page 56: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

50

tarde Simon (1963) define heurístico como un proceso que puede resolver un problema dado pero no ofrece garantía de encontrar el óptimo.

La definición que hoy en día más se ajusta al sentido con el que se usa la palabra heurístico es la siguiente: procedimiento simple, a menudo basado en el sentido común, que se supone va a ofrecer una buena solución (no necesariamente la óptima) de un modo fácil y rápido a problemas difíciles.

La justificación de métodos heurísticos se fundamenta en el hecho de la existencia de problemas de optimización pertenecientes a la categoría denominada NP. Es decir, los problemas para los que no existe un algoritmo de solución que sea polinomial con el tamaño del problema. Si se demuestra que un problema de optimización pertenece a esta categoría de problemas NP, es práctica habitual el abordarlo por medio de heurísticos de optimización. Desde un punto de vista práctico, para aquellos problemas donde la búsqueda exhaustiva sea ineficiente o para aquellos problemas donde la cardinalidad del espacio de búsqueda aumenta exponencialmente con el tamaño del problema, va a tener sentido la utilización de algoritmos heurísticos, como es el caso de este trabajo.

Por lo que respecta a las ventajas derivadas de la utilización de heurísticos para resolver problemas de optimización, quizás la más importante sea la mayor flexibilidad en el manejo del problema que se deriva de las mismas en contraposición con el formalismo que implican las técnicas de la investigación operativa clásica. El gran inconveniente derivado de la utilización de los métodos heurísticos radica en que no es posible conocer a priori la calidad de la solución obtenida con los mismos, desconociéndose por tanto la cercanía de dicha solución con respecto al óptimo global.

Tratando de establecer unos criterios genéricos acerca de en qué condiciones se aconseja utilizar estos procedimientos heurísticos, se tiene que su uso es adecuado cuando se verifica una o más de las siguientes condiciones:

No existe un método exacto de solución, o en el caso de que dicho método exacto exista, el mismo requiere de mucho gasto computacional o de memoria.

No es necesario encontrar la solución óptima, en el sentido del óptimo global sino que es suficiente con obtener una solución suficientemente buena.

Los datos son poco confiables y por tanto no tiene sentido el tratar de encontrar el óptimo global para dichos datos, ya que el mismo no puede ser más que una aproximación al óptimo global que corresponde a los datos correctos.

Existen limitaciones de tiempo en proporcionar la respuesta o de memoria en computador que va a efectuar los cálculos

Se va a utilizar el resultado proporcionado por el heurístico de optimización como solución inicial para un algoritmo exacto de tipo iterativo, el cual reduciría

Page 57: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

51

considerablemente el número de iteraciones si parte de una solución inicial suficientemente buena.

Desde un punto de vista de estrategias usadas para llevar a cabo búsquedas heurísticas se pueden distinguir básicamente cuatro tipos: constructivas, mejora de una solución, de descomposición y de reducción.

La idea básica en las búsquedas heurísticas constructivas consiste en ir añadiendo componentes individuales a la solución inicial hasta que se obtiene una solución inicial factible. Un ejemplo de búsqueda heurística constructiva es la búsqueda voraz.

En las búsquedas heurísticas basadas en la mejora de una solución, se parte de una solución para en cada paso buscar en la vecindad de la misma una solución mejor, la cual en el caso de que exista reemplaza a la solución actual.

La búsqueda heurística basada en la descomposición divide el problema en subproblemas más manejables, de modo que al resolver dichos subproblemas se obtiene una solución al problema inicial por integración de las soluciones obtenidas en cada subproblema. La más famosa heurística de descomposición es la denominada “divide y vencerás”.

Finalmente, existen algunas búsquedas heurísticas basadas en la técnica de reducción. Se trata en este caso de identificar alguna característica que presumiblemente debe poseer la solución óptima, para de este modo simplificar el problema de búsqueda.

Las heurísticas pueden ser dependientes del problema o independientes del mismo. Las primeras, conocidas como heurísticas, son válidas únicamente para el problema particular para el que han sido diseñadas, mientras que las segundas, las llamadas metaheurísticas, pueden aplicarse a cualquier problema.

El problema de corte bidimensional restricto que se trata en este trabajo tiene una magnitud del espacio de búsqueda tan grande que supera el espacio de búsqueda del problema del agente viajero. Si por ejemplo n=25 rectángulos entonces el espacio de soluciones está dado por 252 .25! , que representan el número de patrones de empaquetamiento posibles, razón que justifica la exploración de herramientas heurísticas y metaheurísticas que permitan dar alternativas de solución para el problema [23].

4.3. Heurísticas Constructivas aplicadas a la solución del problema de corte de piezas bidimensional.

Se explica a continuación los métodos heurísticos propuestos para el problema. En primer lugar se enunciaran los métodos constructivos y posteriormente las codificaciones propuestas.

Page 58: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

52

4.3.1. Métodos Constructivos para corte no guillotina

Estrategia BL y BLF

Algunas propiedades del algoritmo BL son las siguientes:

El primer elemento es un límite superior a los patrones posibles del empaquetamiento.

Dados n rectángulos, el número 2 . !n n es un límite superior para patrones de empaquetamiento los cuales deben ser calculados por el algoritmo BL. Esta es una consecuencia del concepto de que el problema de empaquetamiento es un problema permutacional. Además hay n! secuencias de rectángulos. Además cada rectángulo debe ser ubicado en dos direcciones, las cuales deben ser paralelas a los ejes x y y. En la práctica menos de 2 . !n n pueden ser creados por el algoritmo BL. [21].

La estrategia BL dicta que cada pieza a colocar se posiciona inicialmente en la esquina superior derecha de la estructura. A continuación, se desplaza hasta la posición más profunda posible. Una vez allí, la pieza es movida hacia la izquierda tanto como sea posible, repitiéndose esta rutina hasta que la pieza alcance una posición inamovible. El problema fundamental que presenta esta estrategia es que conduce a soluciones con gran número de desperdicios o residuos en el tablero a ocupar. En la figura 4.2 se presenta gráficamente cómo actúa dicha estrategia. Con el objetivo de minimizar el desperdicio de espacio, se propone el uso de la estrategia BLF, que tiene ciertas similitudes a la BL, aunque antes de colocar la pieza se comprueba que ésta no cabe en ninguno de los espacios generados hasta el momento a un nivel inferior. De nuevo, en la figura 4.2 se muestra la solución a la que daría lugar esta estrategia para una pieza determinada. [17]

La estrategia BLF consiste en encontrar un espacio para la pieza comenzando desde la esquina inferior izquierda de la banda (origen de coordenadas). Esta comprobación se hace nivel a nivel desde el fondo de la banda. En todos los casos se probó inicialmente con la orientación de la pieza que hacía corresponder como base del rectángulo a su lado mayor. En caso de no encontrar ubicación para la pieza dentro de un determinado nivel antes de pasar al nivel inmediatamente superior. Todo el proceso descrito anteriormente se repite hasta la colocación completa de todas las piezas, dando como resultado del procedimiento constructivo una solución del problema.

Page 59: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

53

BLF

BL

Trayectoria

Figura 4.2. Estrategias BL y BF

Estrategia BL y DP

Como se mencionó en el capitulo 2 la estrategia Difference Process (DP) intenta colocar cada pieza en la esquina posible del resto del diseño más cercana a la esquina inferior izquierda del tablero. Para medir cuál es la posición se emplea la distancia euclídea. Al igual que con el método anterior existen patrones que no puede alcanzarse con esta estrategia [41].

A continuación se ilustrará con un ejemplo, la estrategia BL Y DP.

Ejemplo 4.1

Se tiene la instancia de la figura 4.3 y se supone el orden inicial (1,2,3,4,5). En primer lugar se coloca 1 pieza en la posición (0,0) que está a una distancia 0 de la esquina inferior. Una vez colocada la primera pieza se tienen dos posibles esquinas para colocar la segunda pieza: (0,10) y (20,0) si se toma la distancia euclídea, la posición más cercana es la (0,10). Por tanto se coloca la pieza en la posición (0,10). Por tanto se ubica la pieza 2 en la posición (0,10). Para la pieza 3 se tienen las siguientes localizaciones (esquinas) posibles:(0,15),(10,10),(20,0). La posición de mínima distancia es (10,10), se ubica la pieza 3 en (10,10). Si se continúa este procedimiento, para la pieza 4 no existiría ninguna posición posible y se estudia la pieza 5 que se ubicaría en la posición (20,0)[9]. El diseño final para este procedimiento puede observarse en la figura 4.3b

Page 60: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

54

Tablero: L=30 W=20

Pieza il i iP iQ área ie

1 20 10 0 1 200 1

2 10 5 0 1 50 1

3 10 10 0 1 100 1

4 11 6 0 1 66 1

5 10 12 0 1 120 1

Tabla 4.1. Tabla de datos ejemplo 4.1

1

2

3

4

1

2

3

5

a) Constructivo BL b) Constructivo DP

Figura 4.3. Algoritmos Constructivos

Un método diferente para acomodar las cajas es propuesto por Wu [33]. Es un procedimiento determinista en el que se intenta colocar las cajas en primer lugar en las esquinas y posteriormente en el centro. El algoritmo original es para el problema especial, donde i iP Q i i iP Q i y se permite que las piezas sean

rotadas, pero puede transformarse para el problema general que se está considerando. El algoritmo va cortando las piezas de una en una, en una esquina del espacio vacío que queda en cada instante. Para elegir la pieza a cortar y la esquina en la cual cortarla desarrolla una función de evaluación que estima el beneficio que se obtendría al completar el corte a partir de dicha pieza.

4.3.2. Métodos Constructivos para corte guillotina

El problema que se pretende resolver en este trabajo es el de corte guillotina por tanto fue necesario hacer una implementación del BL para obtener patrones de empaquetamiento de este tipo, a continuación de expone la propuesta:

Page 61: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

55

Estrategia MSPE (Modelo de selección de piezas y escalonamiento)

Esta metodología aparece en [12], no se implementó completamente en el desarrollo de este trabajo, pero se documenta porque se tomaron algunas ideas que se proponen para hacer la adaptación del BL modificado.

Para explicar la estrategia MSPE se hará con base en los datos del trabajo de [12], en la tabla 4.2 están incluidos los datos.

Tipo de pieza Altura Ancho Área

1 18 22 396

2 29 8 232

3 19 19 361

4 13 16 208

5 29 8 232

6 16 4 64

7 13 16 208

8 18 22 396

9 19 19 361

10 29 8 232

Tabla 4.2. Datos del problema presentado por Oliveira y Ferreira[12]

En esta estrategia, la primera pieza a ser ubicada debe ser la de mayor área calculada. Las siguientes piezas a ubicar se determinan por el peso entre la última colocada y la próxima que proporcione el mejor encaje determinado por un peso que corresponde a la menor área de desperdicio entre las dos piezas. La pieza ubicada se evalúa con todas las otras que no han sido ubicadas escogiendo la de menor desperdicio. Las piezas son ubicadas una al lado de la otra respetando el límite lateral. Después de formar la secuencia se guardan las coordenadas de cada corte que pertenece al plano de corte. En la tabla 4.3 se muestran los pesos entre una pieza y otra, los valores de la matriz corresponden a los pesos entre piezas.

La matriz de pesos contiene los pesos entre una pieza (fila) y otra pieza (columna) que son evaluadas durante la construcción de una P- Mediana y un conjunto de piezas proyectadas.

Page 62: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

56

Piezas 1 2 3 4 5 6 7 8 9 10

1 - 126 57 78 126 24 78 0 57 126

2 126 - 190 169 0 52 145 126 190 0

3 57 180 - 39 180 12 96 57 0 180

4 78 169 39 - 169 0 18 78 39 169

5 126 0 190 169 - 52 145 126 190 0

6 24 52 12 0 52 - 0 24 12 52

7 78 145 96 18 145 0 - 78 96 145

8 0 126 57 78 126 24 78 - 57 126

9 57 190 0 39 190 12 96 57 - 190

10 126 0 190 169 0 52 145 126 190 -

Tabla 4.3. Matriz de pesos entre piezas

Entre las figuras 4.4 a 4.10 se muestra la ejecución paso de la construcción del conjunto de piezas proyectadas.

1

Figura 4.4. Ubicación de la primera pieza

En la figura 4.4 el primer elemento conjunto es ubicado y corresponde a la pieza de mayor área, se localiza en la esquina inferior izquierda.

piezas 1 2 6543

126-1

10987

24 126570781267857

Figura 4.5. Pieza contigua a 1 con menor desperdicio

Page 63: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

57

1 8

Figura 4.6. A partir de la primera pieza la próxima a ser escogida es la pieza 8

En la figura 4.5 se evalúan los pesos de la pieza 1 con todas las restantes, fue elegida la pieza 8 que tiene un área de desperdicio menor que todas las otras piezas, como dos de las piezas tienen la misma dimensión, el área de desperdicio es nula.

piezas 1 2 6543

12608

10987

24 12657-781267857

Figura 4.7. Pieza contigua a 8 con menor desperdicio

1 8 6

Figura 4.8. A partir de la pieza 8 la próxima elegida por la evaluación es la 6

Este algoritmo avanza con base en la última pieza ubicada, ahora se revisa la matriz y se elige la pieza que genere menor desperdicio al lado de la pieza 6.

En la figura 4.9 se pueden observar todas las piezas ubicadas, en la figura 4.10 se muestra una matriz donde las filas y las columnas indican todas las piezas y los valores dentro de la matriz indican las cantidades de desperdicio entre dos piezas ubicadas consecutivamente.

Page 64: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

58

1 8 6 4 7

3 92 5 10

Figura 4.9. Ubicación de las piezas

Piezas 1 2 9876543

4

3

2

1 -

9

8

7

6

5

10

10

78241267857126

520169190-126

126570

1218039-18057

0190126145

39

126

16978

18005796

180169-

-

5224

1691900

1693978

4578

5212240-520

0

12

19012614552

-190126145520169

57-579612

1900126

19039

12657-7824126

0

78

19057

571260

1459678-01451896

Figura 4.10. Matriz de desperdicios

Estrategia BL modificada para corte guillotina

La estrategia BL modificada se puede resumir en los siguientes pasos [55],[57]:

1. Se ordenan las piezas de acuerdo a sus alturas en orden descendente.

Page 65: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

59

2. Se ubica la pieza más alta en la parte inferior izquierda, en las coordenadas de origen (0,0), teniendo en cuenta que la altura de esta pieza debe ser menor ó igual que la altura del tablero. El ancho de la pieza insertada indica la primera coordenada guía en el eje X.

3. La siguiente pieza se elige como la más alta entre las que no hacen parte aún de la configuración actual; el ancho de esta pieza es evaluado y si sumado a la coordenada guía en el eje X el valor obtenido es menor que el ancho del tablero, se posiciona al lado derecho de la última pieza insertada en las coordenada guías en los ejes X e Y. Este procedimiento se repite hasta ubicar la mayor cantidad de piezas permitidas por el ancho del tablero, conformando así el nivel actual. La nueva coordenada guía en el eje X es la acumulación de los anchos de las piezas del presente nivel.

4. A continuación se evalúa la diferencia de alturas de piezas consecutivas, con el fin de identificar espacios donde se pueden encajar piezas respetando el límite superior impuesto por la pieza más alta del nivel actual.

5. Cuando ya no es posible ubicar más piezas en un nivel el proceso descrito anteriormente es iniciado de nuevo a partir del paso 3. La nueva coordenada guía en el eje Y es la acumulación de alturas de las piezas más altas de los niveles anteriores y la nueva coordenada guía en el eje X es 0.

6. El proceso para cuando no es posible ubicar más piezas sin sobrepasar la altura del tablero.

Con base en los datos del ejemplo 4.1 se implementó la estrategia propuesta obteniendo el resultado que se muestra en la figura 4.11:

5 1

4 2

Figura 4.11. BL modificado para corte guillotina

Comparación de resultados

Page 66: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

60

En la tabla 4.4 se muestran las distintas heurísticas aplicadas al ejemplo 4.1.

Método Piezas Área ocupada Desperdicio

BL 1,4,3,2 486 19%

DP 1,2,3,5 470 21.7%

BL modificado 5,1,4,2 436 27.4%

Tabla 4.4. Comparación de eficiencias de los métodos

Aunque el desperdicio es mayor con la estrategia BL modificado si se pretende resolver un problema de corte bidimensional tipo guillotina es la que se debe implementar porque es la que cumple con la restricción de tipo de corte.

4.4. Codificación para problemas de corte bidimensional

Los problemas resueltos con metaheurísticas requieren una codificación que represente las alternativas de solución, tradicionalmente para aplicar algoritmos genéticos se ha aplicado la codificación binaria, pero en la literatura especializada han aparecido propuestas de codificación ordinal que representan eficientemente alternativas de solución para algunos casos específicos [50]

La representación natural de un patrón de empaquetamiento es basada en la ubicación de coordenadas de localización de cada rectángulo en el tablero. Si la parte inferior izquierda y la esquina de la parte superior derecha de todos los rectángulos son conocidas, entonces el patrón de empaquetamiento puede ser reconstruido fácilmente, la figura 4.12 es una explicación de este concepto.

La ventaja de una representación natural está ligada con una fácil reconstrucción. Pero si hay pequeños cambios en las coordenadas es probable que el patrón de empaquetamiento se traslape [32].

y

x

4r 2r

5r3r

1r

Figura 4.12. Representación natural de un patrón de empaquetamiento

Page 67: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

61

4.4.1. Codificación por permutaciones para corte no guillotina propuesta por Jakobs

Para adaptar la representación natural al algoritmo genético Jakobs [32] propone lo siguiente:

Un patrón de empaquetamiento puede se representado por un permutación .

ji - Indica el rectángulo ( )( )i jr .

1( ,..., )ni i es una permutación.

La permutación representa la secuencia en la cual los rectángulos son empacados. La ventaja de este tipo de estructura es la fácil creación de nuevas permutaciones cambiando la secuencia. Una consecuencia de esta estructura es que en cada permutación es asignado un único patrón de empaquetamiento. Para decodificar el genotipo es necesario un algoritmo eficiente que lo convierta en la representación natural.

Por ejemplo en la figura 4.13 dos permutaciones representan el mismo patrón de empaquetamiento.

Esta dificultad debe ser subsanada por un algoritmo que represente gráficamente la solución propuesta, y de esta forma hacer un cálculo correcto del espacio sin utilizar.

x

y

1r

2r

3r

1

2

(1, 2, 3)

(1, 3, 2)

Figura 4.13. Dos permutaciones con el mismo patrón de empaquetamiento.

Por esta razón en el desarrollo de este trabajo se propusieron algunas alternativas de codificación que se presentan a continuación

Page 68: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

62

4.4.2. Propuesta 1: Codificación a través de dos vectores para corte guillotina

Una alternativa de solución está codificada por dos vectores. El primero, denominado “piezas”, contiene una secuencia de ubicación de piezas según el tipo. Dicho vector es de un tamaño igual al número total de piezas. El segundo vector se denomina “Secciones” y contiene los intervalos para los cuales el primer vector ubica las piezas en una misma sección. El número total de secciones de cada alternativa es determinado de forma aleatoria. Por lo anterior, una alternativa es un arreglo de dos vectores a los cuales se puede hacer referencia como piezas y

. Secciones. La altura de una sección está determinada por la placa de mayor altura.

Una configuración factible es aquella donde se ubiquen algunas piezas de las demandadas de forma que se minimice el área sin utilizar [54].

Ejemplo 4.3

Se tiene un tablero rectangular de 24x38, donde se desean ubicar m piezas rectangulares de menor tamaño y de diferentes tipos, en la tabla 4.5 se presentan los datos de largo y ancho de cada una de las piezas y la cantidad de piezas demandadas.

Largo Ancho Cantidad demandada

Tablero 24 38

Pieza tipo 1 14 19 2

Pieza tipo2 9 6 2

Pieza tipo 3 3 6 2

Pieza tipo 4 6 6 4

Pieza tipo 5 9 3 2

Pieza tipo 6 10 1 4

Tabla 4.5. Datos del ejemplo 4.3

Así, por ejemplo, la alternativa infactible mostrada en la figura 4.14 corresponde a la ubicación de placas mostrada en la figura 4.15

.Piezas= 2 0 1 5 1 0 6 6 4 0 7 3 4 7 2 7 0 6 4 5

.Secciones = 0 6 15 20

Figura 4.14. Alternativa de solución .

El vector Secciones indica que esta alternativa posee 3 secciones, la primera comprendida entre las posiciones 0 y 6 del vector de piezas, la segunda entre 7 y

Page 69: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

63

15 y la tercera entre 16 y 20. Esto implica que, por ejemplo, la segunda sección contiene las piezas 6, 6, 4, 7, 3, 4, 7 y 2. De esta forma, una alternativa de solución está completamente definida por los vectores Piezas y Secciones los cuales representan la forma de ubicación de las piezas en el tablero principal. La secuencia de llenado de las piezas siempre se realiza de izquierda a derecha en cada sección.

Nótese que en el vector Piezas existe la posibilidad de encontrar campos con un valor 0. Esta posibilidad permite que el algoritmo de optimización pueda, eventualmente, excluir placas de la alternativa de solución. Es decir, no es necesario que todas las placas tengan que ser ubicadas en la paleta para una alternativa de solución dada.

Sección 1

D1 D2

T2T1

T5T1

T6 T4T7 T3 T4

T7T2 Sección 2

D3D4

T4T7T5

T6

Sección 3

Figura 4.15. Representación de una alternativa de solución

En la figura 4.15 se muestra una alternativa de solución dónde el área disponible que corresponde al tablero está representada por líneas rojas, las áreas sombreadas corresponden a los desperdicios, dentro de cada uno de los rectángulos se indica el tipo de pieza que se está ubicando, y las líneas punteadas en negro indican las secciones de corte; en la sección 1 de el área desperdiciada es la suma la alternativa mostrada se puede apreciar que de los rectángulos nombrados como D1 y D2, D1 tiene dimensiones de 5 por 6, y D2 tiene dimensiones de 5 por 3, lo que da un total de área sin utilizar en esta sección de 45 unidades.

Page 70: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

64

Sin embargo, la segunda pieza tipo 1 está ubicada por fuera de la paleta por lo cual esta sección es penalizada en un valor igual al área de la placa que causa la violación y corresponde a 14x19= 266. El área total desperdiciada en la sección 1 es 45 +266=311.

4.4.3. Propuesta 2: Codificación en diagrama de árbol para corte guillotina.

La creación de la estructura de árbol de cortes se realiza aplicando técnicas numéricas de conglomerados (clusters) tiene por objeto agrupar elementos en grupos. Cada nodo interno del árbol representa la forma en que se realiza el corte y los elementos que pertenecen a cada grupo [55]

Tamaño de la configuración

Para definir el tamaño del vector, que representará una configuración, se hace la siguiente apreciación, sí el árbol consta de 1 ó 2 piezas la configuración del árbol será la siguiente:

21

33

1 2

Figura 4.16. Árbol de 2 piezas y codificación

Tamaño del vector = 2 piezas +2 piezas -2 = 4

Si se tienen 3 ó cuatro piezas la configuración se muestra en la figura 4.17:

Page 71: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

65

21 43

7

5 6

1 2 3 4 5 6

Clusters

Piezas

inicio de cluster

Cluster 5

Cluster 7

Cluster 6

Figura 4.17. Árbol de 4 piezas y codificación

La flecha indica que hasta esa posición van las piezas, las siguientes posiciones representan los elementos que forman clusters.

21

cluster5

Figura 4.18. Representación de un cluster

Para 7 ú 8 piezas

Tamaño del vector = ( 2 x número piezas del árbol ) - 2

Tamaño del vector = (2 x 8) -2 = 14

Page 72: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

66

21 43 65 87

9 10 11 12

13 14

15

11

9 10 11 12 13 14

1 2 3

15

4 5 6 7 8 9 10 12 13 14

Figura 4.19. Árbol de 8 piezas y codificación

Después de tener la configuración inicial se asocia un vector que va a indicar el tipo de corte, en la formulación de esta codificación se consideran dos tipos de corte vertical y horizontal y se codifican así:

0 si es un corte horizontal y 1 si es un corte vertical.

Si el tipo de corte es horizontal la pieza que está encima se codifica en la parte izquierda del cluster y la pieza que está debajo en la parte derecha.

Si el corte es vertical se respeta la posición tal como se plantea en la figura 4.20

0 Corte horizontal

Izquierda

Derecha

1 Corte vertical

Izq. Der

Figura 4.20. Explicación de los tipos de corte

Page 73: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

67

En el cluster que tiene corte vertical las dos piezas que lo forman deben estar en la base del mismo y sólo son posibles los tipos de ubicaciones planteados en la figura 4.21

Pieza 1

Pieza 2

Pieza 1

Pieza 2

Figura 4.21. Clusters formados por corte vertical

En el corte horizontal las dos piezas que lo forman deben ubicarse desde el tope izquierdo del corte, como se observa en la figura 4.22

Pieza 1

Pieza 1

Pieza 2

Pieza 2

Figura 4.22. Clusters formados por corte horizontal

Ejemplo 4.4

A continuación se mostrará un ejemplo con la codificación propuesta:

a) Vector de orientación, b) Vector de Clusters, c) Vector de piezas y clusters.

Tipo de pieza Largo Ancho Número de piezas

Tablero 70 42 1

Pieza 1 22 18 2

Pieza 2 8 29 3

Pieza 3 19 19 2

Pieza 4 16 13 2

Pieza 5 4 16 1

Tabla 4.6. Datos del ejemplo 4.4

Page 74: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

68

6

7 8 9 10 11

1 1 5

12

3 3 4 4 2 2 2 7 9 8

6 13 14

11 10 12 13

1 0 0 0 1 1 1 0 1 Orientacióndel corte

Cluster

Piezas

(35,29) (79,29) (16,0) (0,0) (35,0) Coordenadasde inicio delcluster

cluster cluster cluster cluster cluster cluster cluster cluster cluster

Figura 4.23. Codificación de una posible configuración

En la figura 4.24 se demarca con líneas rojas el área disponible de tablero a ser utilizada, los clusters 8 y 10 son factibles, debido a que no superan el área del tablero, los otros clusters 9, 6 y 7 sobrepasan el área o están por fuera del mismo y las áreas en gris representan las áreas que aún no han sido utilizadas. Las coordenadas indican donde inicia cada cluster.

Page 75: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

69

8

29

16

13

16

13

19

19

8

29

9

12 8

10

22

18

22

18

6

19

19

4

16

7

1 1

24

3

2

414

13

5

3

2

11

(0,0) (16,0) (35,0)

(35,29) (79,29)

Desperdicio

DesperdicioDesperdicio Desperdicio

Figura 4.24. Gráfico de la configuración propuesta en la figura .4.23

Page 76: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

70

42 43 22 11

9 8 10 6

12

53

7

11

13

14

Figura 4.25. Árbol asociado al ejemplo 4.23

Con base en la figura 4.25 se puede observar que los cluster se clasifican por niveles a saber:

Cluster básicos: Es aquel que contiene dos piezas. Para el ejemplo, los nodos básicos son 6, 7, 8, 9 y 10.

Cluster de segundo nivel:Está conformado por dos cluster básicos. Nodos 11 y 12.

Cluster de tercer nivel: Nodo 13.

Cluster raíz o nodo de inicio: Es el cluster que conforma todo el conjunto de piezas.

Descenso: Análisis de clusters de niveles inferiores. Descenso por la izquierda: analizar el elemento de lado izquierdo de un cluster de nivel inferior.

Descenso por la derecha: analizar el elemento de lado derecho de un cluster de nivel inferior.

Cálculo de la función objetivo:

Primero se calculan las anchuras y las alturas de los cluster básicos, teniendo en cuenta que el área efectiva del cluster no corresponde al producto de las anchuras y alturas halladas sino a la suma de las áreas de las piezas que conforman los cluster.

Para calcular el área de cada cluster se debe tener en cuenta el tipo de corte. Si es corte horizontal se evalúa el ancho de las dos piezas y se escoge el mayor.

Page 77: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

71

Con esto queda determinado el ancho del cluster. Para determinar el ancho se suman las alturas de las dos piezas.

1 1 1 2

6 1 1 6 1 2

3 5 3 5

7 3 5 7

3 4 3 4

8 3 4

arg

22, 22, 18, 186 1,1

44 18

19, 4 19, 167 5,3

19 19 16 35

19, 16 19,8 3,4

19

c c

c c

c

PiezasCluster Tipo l o alto

contenidas

l l a aVertical

l l l a a a

l l a aHorizontal

l l l a

l l a aHorizontal

l l l 8

4 2 4 2

9 4 2 9

2 2 2 2

10 10 2 2

13

19 13 32

16, 8 13, 299 4,2

16 29 13 42

8, 8 29, 2910 2,2

8 8 16 29

c

c c

c c

a

l l a aHorizontal

l l l a

l l a aVertical

l a a a

Tabla 4.7. Dimensiones de los cluster

La determinación de las coordenadas de los cluster, se empieza a evaluar de derecha a izquierda observando la información (tipo de corte y dimensiones de los cluster) del vector de codificación. El primer cluster es el cluster raíz, por tanto, la coordenada de éste siempre es la de origen. Con base en la figura 4.25 el nodo raíz es el nodo 14. En la figura 4.19, donde se presenta la codificación vectorial, leyendo de derecha a izquierda se encuentra inicialmente el nodo 14.

Explicación de la codificación figura 4.23

Se inicia por la parte derecha en el vector de clusters, el cluster raíz es el 14

a) ¿Cuál es el tipo de corte? Es vertical, y está conformado por dos nodos, el 12 y 13. b)¿12 y 13 son nodos básicos? no, son cluster de segundo nivel, por tanto se debe seguir descendiendo hasta llegar a un nodo básico y el descenso se hace por la izquierda por corresponder a un corte vertical, por tanto se evalúa el cluster 12.

c) Cuando se llega al cluster 12, nuevamente se evalúa el tipo de corte. ¿Cuál es el tipo de corte? Es vertical y está conformado por los nodos 9 y 8 .

d) ¿9 y 8 son nodos básicos? sí, por tanto se debe seguir descendiendo hasta llegar a evaluar que piezas lo conforman y el descenso se hace por la izquierda porque corresponde a un tipo de corte vertical,

Page 78: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

72

e) se evalúa ahora el nodo 9. ¿Cuál es el tipo de corte? es horizontal y conformado por las piezas 2 y 4, por tanto el descenso se hace por la derecha, la pieza que está a la derecha es la que está en la base del cluster por lo tanto el cluster empieza con la pieza 2 en las coordenadas (0,0) porque la pieza 2 está contenida en el cluster 12 y a su vez este hace parte del cluster 14. Las coordenadas de finalización de este cluster para el eje x será: = 16 y para el eje y será =42

Ubicado el primer cluster, continúa el procedimiento así:

Se regresa al cluster 12 paso c) que es el nodo que contiene clusters básicos y se repite el procedimiento pero ahora descendiendo por la derecha, es decir, por el nodo 8. Este nodo corresponde a un corte horizontal lo que indica que primero debe ubicarse la pieza 4, las coordenadas de inicio de este cluster, son: para el eje x las coordenadas de finalización del cluster anterior lo que indica que empieza en la coordenada 16 para el eje x, y para el eje y inicia en el punto de origen por que el cluster 12 que es el cluster que contiene a 9 y 8 es un cluster vertical que indica que los dos están a la misma altura.

Ahora se regresa a un nivel superior o sea al cluster 14 y se inicia el recorrido por la derecha, cluster 13.

Este procedimiento se repite hasta que todas los clusters han sido ubicados.

4.4.4. Propuesta 3: Codificación en diagrama de árbol para corte guillotina.

Se divide el tablero original en subespacios. Para asegurar que los subespacios creados presenten cortes de tipo guillotina se define una codificación de árbol binario complementario [56].

El número de capas, con base en este valor determina el número de cortes: El número de capas (c) es definido de forma aleatoria y determina el número de variables en la codificación así como el número de subespacios (S) creados. El número de cortes (p) está dado por la ecuación 4.|1

(4.1)

El número de subespacios (NS) está dado por

(4.2)

Page 79: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

73

Para representar la estructura que genera el subespacio son definidos dos vectores de tamaño igual al número de cortes: el primero ( ) es un vector de tipo binario que define el tipo de corte (vertical u horizontal), el segundo ( ) es un vector real con valores entre 0 y 1 que determina la distancia porcentual a la cual se produce el corte con respecto al tablero disponible.

Por ejemplo si se decide que el número de capas es 2 entonces los cortes a obtener serán:

22 1No de cortes 22 1No de cortes = 4-1 =3

Estos tres cortes generaran a su vez 4 subespacios. figura (4.26).

Un conjunto de posibles vectores generados aleatoriamente es el siguiente:

Ejemplo 4.5

A continuación se presentan los siguientes datos para explicar este tipo de codificación:

Tipo de pieza Largo Ancho Número de piezas

Tablero 70 42 1

Pieza 1 22 18 6

Pieza 2 8 29 5

Pieza 3 19 19 2

Pieza 4 16 13 2

Pieza 5 4 16 6

Tabla 4.8. Datos ejemplo 4.5

Una ventaja de este tipo de codificación es que cualquier conjunto es factible

siempre y cuando sea binario y este en el intervalo . Por ejemplo, si las dimensiones del tablero base son de 70x42, estas dimensiones representan el 100% de la primera capa; el primer corte con parámetros T1 = 0 y H1 = 0,65 indica

Page 80: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

74

que se hace un corte horizontal al 65% del tablero, esto genera dos espacios de dimensiones 70x14,7 y 70x27,3; el segundo corte T2 = 1 y H2 = 0,4 indica un corte vertical sobre el espacio de 70x27,3. El último corte es aplicado sobre el espacio de 70x14,7. Estos cortes sucesivos generan cuatro subespacios de dimensiones S= { 28x27,3 42x27,3 21x14,7 49x14,7}. El proceso se representa mediante el árbol mostrado en la figura 4.26. Finalmente la figura 4.27 muestra la división del tablero base.

ED

B

A

C

F G

Primer corte Horizontal

Segundo corte Tercer corte

Vertical Inferior Vertical superior

65%

40% 30%

Figura 4.26. Árbol de cortes

En la siguiente gráfica se mostrará la disposición de los cortes sobre el tablero.

D E

F G

B

C

A

30%

40%

65%

Figura 4.27. Cortes sobre el tablero según el árbol de corte propuesto en 4.26

Page 81: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

75

En cada uno de los corte propuestos se acomoda la mayor cantidad del mismo tipo de piezas disponibles de manera que se garantice el corte guillotina, cada uno de los espacios se llena de acuerdo a un constructivo que calcula el desperdicio, se elige entonces el conjunto de piezas que arrojen el menor desperdicio. En la figura 4.28 se presenta una configuración obtenida aplicando la técnica propuesta.

4 de tipo 5 65 %

40 %

1 de tipo 5

7 de tipo 6

3 de tipo 5

30 %

Figura 4.28. Solución obtenida

4.4.5. Codificación Rectilinear propuesta por Chen, Fu, y Rodrigues

En [18] se propone una matriz, un arreglo bidimensional, que representa una aproximación discreta de las formas de las piezas a ser ubicadas.

La idea de la codificación consiste en que se cuadricula todo el tablero disponible para ubicar las piezas, cada cuadro tiene dimensiones de 1x1 e inicialmente la matriz que representa el tablero esta llena de ceros lo que indica que no hay espacios ocupados, a medida que se van ubicando las piezas los valores de los cuadros que representan la pieza van cambiando a unos. En la figura 4.29 se muestra la representación rectilínea.

Page 82: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

76

0

0

0

0

0

0

0

0

00

0000000

000

00

00

00

0

000

000

0

000

0

00

1 1 11

11

11

1111

11

11

0

0

0

0

0

0

0

0

00

0000000

000

00

00

00

0

000

000

0

000

0

00

1 1 11

11

1

1111

11

11

0

Figura 4.29. Matriz de ubicación de las piezas y conteo de cuadros.

En la figura 4.30 se muestra la posición de las piezas sobre el tablero, que generan un patrón de empaquetamiento.

Figura 4.30. Representación rectilinear en el tablero

Las ventajas de usar esta representación son:

Se puede representar cualquier forma geométrica, incluyendo piezas cóncavas y convexas (figura 4.31).

La rotación y los traslapes de piezas se pueden chequear fácilmente.

Heurísticas tales como los algoritmos genéticos y Búsqueda Tabú pueden ser aplicadas.

Page 83: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

77

Pero también tiene dos desventajas:

La complejidad de la representación y el crecimiento computacional cuadrático con el tamaño de cada objeto.

Únicamente son posibles cuatro orientaciones (arriba, abajo, derecha, izquierda)

Para evaluar la función objetivo simplemente se contabilizan el número de espacios sin ocupar para así calcular el porcentaje de utilización del tablero y el valor del área sin ocupar.

Figura 4.31. Combinación de rectángulos que forman diferentes objetos

Page 84: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

78

5. MÉTODOS DE SOLUCIÓN

Figura 5. Tabla 5.

Gran parte de los problemas de optimización combinatorial son clasificados como problemas NP- completo o problemas NP- Difícil. Esos problemas no pueden ser resueltos por algoritmos simples en tiempo polinomial según Rodrigues [46]

Las técnicas de solución para problemas prácticos de optimización combinatorial se pueden clasificar en métodos exactos y aproximados. Dentro de los métodos exactos esta el algoritmo Branch-and-Bound, .Dentro de los métodos aproximados se encuentran varios tipos de heurísticas, metaheurísticas y técnicas especiales. Rodrigues resume los métodos de solución de los problemas clásicos de optimización combinatoria en un organigrama que se presenta en la figura 5.1

5.1. Algoritmo genético

Holland estudió el fenómeno de la evolución natural de las especies y creó un algoritmo que simula el mecanismo de evolución para encontrar soluciones de excelente calidad de problemas complejos que generalmente tienen un número muy elevado de soluciones óptimas locales.

El algoritmo genético genera una secuencia de poblaciones (conjunto de configuraciones) usando los mecanismos de selección, recombinación y mutación como mecanismos de búsqueda (operadores genéticos) a través del espacio de configuraciones.

En la naturaleza los individuos mejor dotados genéticamente tienen mayor capacidad de supervivencia cuando los recursos son escasos o cuando cambian las condiciones del medio ambiente. La unidad básica del contenido genético es el gene. El conjunto de genes forma un cromosoma (o conjunto de cromosomas) que determina la calidad genética del individuo.

Las alteraciones y la diversificación del material genético constituyen la esencia de la evolución. Se puede decir que la evolución es consecuencia de la acción conjunta de la selección natural y de todos los mecanismos que producen diversidad genética analizada anteriormente.

Page 85: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

79

Métodos de solución

MétodosExactos

Branchand Bound

Branchand Cut

Branchand Price

Métodosaproximados

Heurísticas EspecialesMetaheurísticas

Constructivo(Greedy)

Mejoría

Particionar

Descompos

FormulaciónMatemática

Algoritmosgenéticos

SimulatedAnnealing

BúsquedaTabú

GRASP

Coloniade hormigas

PartículaSwarm

ScatterSearch

AlgoritmosCulturales

VecindadVariable

LógicaFuzzy

Redesneuronales

Máquinasde soporteVectorial

Figura 5.1. Organigrama de Técnicas combinatoriales

En la naturaleza los individuos compiten por el alimento, espacio, enfermedades y también para aparearse produciendo un predominio de los individuos más fuertes. El proceso repetido de selección en medio de una gran diversidad genética es la

Page 86: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

80

clave de la evolución según Darwin y sus seguidores. En otras palabras sin la gran diversidad genética que existe entre los individuos sería difícil el proceso de evolución de las especies.

El algoritmo genético usa una población de individuos, que en los problemas combinatoriales representa un conjunto de configuraciones, para resolver un problema de optimización complejo. El algoritmo genético debe entonces hacer lo siguiente:

1. Representar adecuadamente una configuración del problema. La representación más popular es la representación en codificación binaria donde se pueden simular fácilmente los operadores genéticos de recombinación y mutación.

2. Debe encontrar una forma adecuada para evaluar la función objetivo o su equivalente (fitness). Así, se pueden identificar las configuraciones de mejor calidad como aquellas que tienen las funciones objetivo de mejor calidad.

3. Debe existir una estrategia de selección de las configuraciones con derecho a participar en la conformación (construcción) de las configuraciones de la nueva población (nueva generación)

4. Debe existir un mecanismo que permita implementar el operador genético de recombinación.

5. Debe existir un mecanismo que permita implementar el operador genético de mutación.

6. Debe especificar el tamaño de la población, o sea el número de configuraciones en cada generación

Una vez especificados todos los aspectos mencionados anteriormente, para resolver un tipo de problema conocido, se tiene un algoritmo genético básico.

5.1.1. Un algoritmo Genético simple.

Se presentan los lineamientos básicos de un algoritmo genético elemental usando un problema clásico: el problema de la mochila [19].

En este problema se tienen n objetos distintos y una mochila. Cada uno de los objetos tiene asociado un peso positivo i y un volumen positivo 1,2...iv n La

mochila puede llevar un peso que no sobrepase la cantidad W Teniendo en cuenta estos datos, el objetivo del problema es llenar la mochila de tal forma que se maximice el valor de los objetos transportados en ella. Hay que tener en cuenta que la suma de los pesos de los objetos seleccionados no debe superar la capacidad máxima W de la mochila. Por lo tanto, para obtener la solución deseada, se debe decidir para cada uno de los objetos, si se introduce o no en la mochila. Cada objeto tiene asociado una variable ix que toma el valor 1 si el objeto se mete

Page 87: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

81

en la mochila y 0 en caso contrario. Cualquier objeto se puede introducir en la mochila si hay espacio para él, pero lo que no se puede hacer es transportar en ella una fracción o parte de un objeto.

Sea el problema de la mochila con n=12:

1 2 3 4 5 6 7 8 9 10 11 12

1 2 3 4 5 6 7 8 9 10 11 12

max ( ) 3 2 8 4 6 4 12 2 6 10 15 9

. .

5 4 4 2 4 6 10 4 2 8 12 5 36

0,1 , 1,...,12j

z x x x x x x x x x x x x x

s a

x x x x x x x x x x x x

x j

Los vectores de trabajo se identifican así:

Costo: C = 3 2 8 4 6 4 12 2 6 10 15 9 Volumen: a = 5 4 4 2 4 6 10 4 2 8 12 5

Figura 5.2. Vectores de trabajo

Un algoritmo genético elemental realiza la siguiente secuencia de operaciones:

1. Genera una población inicial después de escoger el tipo de codificación para representar cada configuración.

2. Calcula la función objetivo de cada configuración de la población y almacena la incumbente (la mejor configuración encontrada en el proceso).

3. Realiza selección. 4. Realiza recombinación. 5. Realiza mutación y termina de generar la nueva población de la siguiente

generación.6. Si el criterio de parada (o criterios de parada) no se han cumplido el proceso

regresa al paso 2.

Los pasos (2),(3),(4) y (5), en conjunto, son conocidos como ciclo generacional. También es necesario mencionar que existe una equivalencia entre los términos usados en genética y en un problema de optimización matemática.

Problema de optimización Genética.

Solución (configuración) Cromosoma.

Variable Gene

Solución alelo

A continuación se desarrolla el algoritmo genético elemental y usamos el ejemplo de la mochila para ilustrar la aplicación.

Page 88: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

82

5.1.2. El problema de la codificación

Los primeros algoritmos genéticos usaron básicamente codificación binaria, o sea, las variables enteras y reales de un problema eran transformadas, de alguna manera, en variables binarias. En este contexto, se puede intentar realizar la representación binaria de varios tipos de variables a través de un ejemplo.

Ejemplo 5.1

Suponer que se tiene un problema con 3 variables que se desean codificar en forma binaria, entera o real: 1 2 3, ,x x x .

X =1x 2x 3x

Un caso particular asumiría la siguiente forma:

X= 1 0 1

Caso 2: Cuando las variables son enteras y limitadas: Caso 1: Cuando las

variables son binarias. En este caso se tiene 1 2 3, , 0,1x x x Este es el caso más

trivial y la configuración tiene la siguiente forma:

Se supone entonces que: 1 2 3, , 1, 2,3, 4,5,6,7x x x

En este caso, cada variable entera puede ser representada por un equivalente binario ocupando hasta 3 celdas binarias. Así una configuración típica asume la siguiente forma.

1 0 0 0 1 0 1 1 1X=

1x 2x 3x

Figura 5.3. Configuración típica

En este caso particular representa los números enteros 1 2 34, 2, 7.x x x

Caso 3: Cuando las variables son reales:

Para representar este caso se supone que las variables pueden asumir valores reales en un intervalo especificado. Por ejemplo: 1 2 3, , 0, 0.31x x x .

En este caso, se inventan nuevas variables 'jx haciendo la equivalencia:

' 100j jx x . Después se trabaja con las nuevas variables jx que pueden asumir

Page 89: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

83

valores reales en un intervalo [0,31], de tal forma que: ' ' '1 2 3, , 0, 31x x x . Así una

configuración típica asume la siguiente forma:

x= 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0

1x 2x 3x

Figura 5.4. Codificación binaria

En este caso particular representa los números enteros: ' ' '1 2 319, 28, 2x x x ó

también a las variables reales originales 1 2 30.19, 0.28, 0.02x x x . Estas

variables reales se representaron con 2 cifras significativas.

La mayoría de las veces, una codificación correcta es la clave de una buena solución del problema. Generalmente, la regla heurística que se utiliza es la llamada regla de los bloques de construcción, es decir, parámetros relacionados entre sí deben de estar cercanos en el cromosoma. Por ejemplo, si se quieren codificar los pesos de una red neuronal, una buena elección será poner juntos todos los pesos que salgan de la misma neurona de la capa oculta también llamada codificación “fregona”. (En esta, todos los pesos señalados con trazo doble se codifican mediante grupos de bits o bytes sucesivos en el cromosoma).

Normalmente, la codificación es estática, pero en casos de optimización numérica, el número de bits dedicados a codificar un parámetro puede variar, o incluso los que representen los bits dedicados a codificar cada parámetro.

5.1.3. Cálculo de la función objetivo o algún equivalente

Se debe tener una estrategia adecuada para encontrar el valor de la función objetivo (o un equivalente) que determine la calidad de una configuración. Es frecuente usar un equivalente de la función objetivo para que exista selectividad entre las configuraciones. Los valores de la función objetivo se utilizan durante la implementación del operador selección, para que sea posible la selección debe haber un subconjunto de funciones objetivo significativamente diferentes a las demás, pues en caso contrario se perdería la selectividad del operador selección, esto quiere decir que se perdería la capacidad de diferenciar funciones objetivo de excelente calidad de funciones objetivo de baja calidad. También es frecuente normalizar la función objetivo para que asuma valores en el intervalo [0,1]

Ejemplo 5.2

Retomando el problema de la mochila para n=12. Se calculan varias alternativas para cuantificar la calidad de las configuraciones (función objetivo y equivalentes).

Page 90: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

84

Se usa una población de 4 configuraciones en donde la población inicial es generada aleatoriamente teniendo en cuenta la siguiente nomenclatura:

R.U = Recurso usado.

F.O = Función objetivo

R.UF.O

1P 1 1 1 1 1 1 0 0 1 1 0 0 ' 35b 43

2P 0 1 0 1 1 0 0 1 0 1 1 0 ' 34b 39

3P 0 1 1 0 0 0 1 1 0 0 0 1 ' 29b 33

4P 0 0 1 0 0 0 1 0 0 1 1 0 ' 34b 45

Figura 5.5. Población inicial

En este caso se generaron, aleatoriamente, 4 configuraciones factibles que representan la población inicial. Aquí se observa un límite superior de la función objetivo encontrado sumando todos los elementos del vector c, así se tiene que el límite superior z(x)= 81. Se usa este valor para normalizar y encontrar un equivalente de la función objetivo. También se puede encontrar un equivalente de la función objetivo restando un valor constante K de la función objetivo. Estas dos alternativas y la función original se presentan en la tabla 5.1:

Configuración

I

Z(x)

II

1

( )( )

( )

z xz x

z x

III

2 ( ) ( ( ) )z x z x K

1P 43 0.53 13

2P 39 0.48 9

3P 33 0.41 3

4P 45 0.55 15

Tabla 5.1. Formas de calcular la función objetivo

En la tabla anterior se usó un K=30. En general, K es una constante elegida teniendo en cuenta la función objetivo de peor calidad.

5.1.4. Selección

Este operador genético permite seleccionar las configuraciones de la población actual que deben participar en la generación de las configuraciones de la nueva población (nueva generación). Por tanto la función del operador de selección termina después de decidir el número de descendientes que debe tener cada configuración de la población actual. En algunos casos las configuraciones puede

Page 91: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

85

generar varios descendientes mientras que en otras ninguno, desapareciendo la información de estas configuraciones que son consideradas de baja calidad.

Selección proporcional

La forma más simple de implementar la selección es usando el denominado esquema de selección proporcional. En esta estrategia cada configuración tiene derecho a generar un número de descendientes que es proporcional al valor de la función de adaptación. Así se tiene la siguiente relación.

( )

( )i

im

z xNd

z x(5.1)

iNd = Número de descendientes de la configuración i.

n = número de configuraciones de la población.

( )iz x = Función de adaptación. ( )mz x = Media de la función objetivo

1

1( ) ( )

n

m ii

z x z xn

(5.2)

1

( )

ii n

ii

zNd n

z x(5.3)

La propuesta inicial y aún usada para resolver el problema de número de descendientes no entero es el denominado esquema de selección de la ruleta.

En el esquema de selección de la ruleta a cada configuración se le asigna una parte de la ruleta que es proporcional al número de descendientes, calculada con la siguiente relación:

12 iNd

n(5.4)

Selección por torneo

El segundo algoritmo, denominado selección por torneo, es bastante simple y consiste en escoger la mejor alternativa de las k alternativas seleccionadas aleatoriamente. El éxito de aplicar esta metodología radica en escoger

Page 92: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

86

adecuadamente un valor de k que se ajuste a cada problema en particular teniendo en cuenta tamaño y complejidad del problema, así como el tamaño de la población inicial. Un valor de k muy alto y la generación de una población inicial pequeña puede, eventualmente, hacer elitista el proceso de selección y ocasionar convergencias locales. Un valor muy bajo de k puede ocasionar un mayor esfuerzo computacional [44].

5.1.5. Recombinación (Crossover)

Las configuraciones seleccionadas en el proceso de selección son sometidas a recombinación. Este operador consiste en intercambiar partes de dos vectores para formar dos nuevos vectores donde uno de los vectores nuevos tiene parte de los elementos de un vector y parte de los elementos de otro vector. Este operador se denomina también cruzamiento e intenta simular el fenómeno del crossing over en genética. Generalmente a las configuraciones seleccionadas (originales) se les denomina configuraciones padres y a las nuevas configuraciones se les denomina configuraciones hijos.

Recombinación de Punto Simple

Es la forma más simple de recombinación y consiste en escoger un único punto para realizar la recombinación. Para explicar el concepto, se supone que una configuración tiene k elementos o celdas binarias; una vez elegidas las dos configuraciones para realizar recombinación, se genera un número aleatorio entre 1 y (k-1), y ese número indica el punto de recombinación. La parte que se encuentra hacia la derecha de ambas configuraciones son intercambiadas para formar las dos nuevas configuraciones. Las configuraciones que deben ser sometidas a recombinación son escogidas aleatoriamente entre las configuraciones seleccionadas que todavía tienen derecho a recombinación. Aquí están nuevamente presentes dos nuevas decisiones de carácter aleatorio: (1) Se escoge de forma aleatoria, las configuraciones que deben ser sometidas a recombinación y (2) Se escoge aleatoriamente el punto de recombinación. Aunque algunas decisiones determinísticas son usadas en algunos casos.

Ejemplo 5.3

Las configuraciones seleccionadas en el ejemplo anterior que corresponden al problema de la mochila con n = 12, son sometidas a recombinación: En forma aleatoria se han seleccionado los siguientes pares: P1 con P4 y P2 con P4

1P 1 1 1 1 1 1 0 0 1 1 0 0 ' 35b 43

4P 0 0 1 0 0 0 1 0 0 1 1 0 ' 34b 45

Punto de recombinación

Figura 5.6. Punto de recombinación

Page 93: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

87

Elementos después de la reconfiguración

'1P 1 1 1 1 1 1 0 0 0 1 1 0 ' 45b 52

'4P 0 0 1 0 0 0 1 0 1 1 0 0 ' 24b 36

Figura 5.7. Elementos recombinados

1. 1P y 4P son sometidas a recombinación para generar dos configuraciones

candidatas. Generamos un número aleatorio 1,11p y resulta escogido p = 8.

Recombinación genera las siguientes configuraciones candidatas:

Se observa que después de la configuración candidata '1P resulta infactible porque

45>36 (la restricción es violada).

2. 2 4P y P son sometidas a recombinación para generar dos configuraciones

candidatas. Generamos un número aleatorio 1,11p y resulta escogido p = 3.

Recombinación genera las siguientes configuraciones candidatas:

Punto de recombinación.

2P 0 1 0 1 1 0 0 1 0 1 1 0 ' 34b 39

4P 0 0 1 0 0 0 1 0 0 1 1 0 ' 34b 45

'2P 0 1 0 0 0 0 1 0 0 1 1 0 ' 34b 39

'4P 0 0 1 1 1 0 0 1 0 1 1 0 ' 34b 45

Figura 5.8. Recombinación de un punto

En este caso las dos configuraciones candidatas son factibles.

Algunos problemas que se presentan con este operador son:

a. El mismo par de configuraciones pueden ser escogidas varias veces, especialmente cuando existen configuraciones que tienen derecho a generar muchos descendientes.

b. Una misma configuración puede ser escogida para implementar recombinación con ella misma. Un mecanismo simple elimina este problema escogiendo otra configuración cada vez sucede este problema.

Para eliminar estos dos problemas se puede escoger una estrategia más determinística. Por ejemplo, se puede iniciar la recombinación escogiendo primero

Page 94: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

88

aquella configuración que tiene derecho a generar un mayor número de descendientes hasta agotar todas las recombinaciones a que esta configuración tiene derecho, después se escoge la segunda en prioridad y así sucesivamente.

5.1.6. Mutación

En la codificación binaria la mutación significa simplemente cambiar el valor de una variable de 0 para 1 ó viceversa. En los trabajos teóricos iniciales de algoritmos genéticos la mutación siempre se consideró un operador secundario, hoy en día se está reevaluando este concepto.

La tasa de mutación m indica la probabilidad de que una posición (celda binaria)

puede tener su valor actual modificado. En el análisis teórico, y en las propuestas originales, se sugiere que la mutación debe ser intentada bit por bit (celda por celda) y así la decisión de mutación de una posición binaria es independiente de la mutación realizada de otras celdas binarias de una configuración.

En el caso del problema de la mochila, tanto la recombinación como la mutación pueden producir configuraciones candidatas infactibles. En este tipo de situaciones existen dos alternativas:

1. Formular alguna estrategia que permita transformar en factibles aquellas configuraciones candidatas infactibles.

2. Considerar todas esas configuraciones como “factibles” y penalizar las infactibles en la función objetivo para que ellas sean eliminadas por el operador selección.

5.1.7. Ciclo Generacional

Es el conjunto de procesos de selección, recombinación y mutación que permiten encontrar las configuraciones de la nueva generación (población) a partir de la población actual. El ciclo generacional es controlado por el programa de control del algoritmo genético.

5.1.8. Criterio de Parada

Existen varios criterios de parada.

Se ha realizado un número específico de generaciones. La incumbente alcanza un valor de una calidad mínima especificada. La población es demasiada homogénea, es decir, las configuraciones son

similares y no existe más evolución.

En implementaciones prácticas de problemas complejos se especifican criterios de parada más objetivos y generalmente se especifica más de un criterio de parada en un mismo algoritmo.

Page 95: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

89

5.1.9. Algoritmo Genético modificado – Chu-Beasley

Las principales características del Algoritmo Genético (AG) de Chu-Beasley consisten en mantener constante el tamaño de la población de alternativas de solución, de manera que en cada iteración se reemplaza una alternativa de la población usando un eficiente mecanismo de modificación de la misma pero teniendo en cuenta que no se admiten configuraciones repetidas dentro de la población. En cada iteración la población es reemplazada sistemáticamente por un único descendiente generado [24,44]. Esta estrategia tiene la ventaja de permitir encontrar múltiples soluciones y además conservar la diversidad del conjunto de alternativas. El algoritmo que describe el método es el siguiente:

Se genera, aleatoriamente, una población inicial de soluciones.

Se obtienen las funciones objetivo, penalizando las soluciones infactibles.

Se seleccionan dos padres usando el método de selección por torneo. En este método, dos configuraciones son elegidas aleatoriamente y se elige uno de los padres considerando el mejor valor en función objetivo, el otro es descartado. El proceso se ejecuta dos veces para obtener dos padres.

El proceso de recombinación y mutación se realiza de forma integrada ya que se deben tener en cuenta consideraciones especiales del problema. Estos operadores actúan sobre los padres escogidos en el paso anterior. En esta fase se realizan mejoras en la factibilidad y en la optimalidad, teniendo en cuenta la filosofía de bloques constructivos.

Se reemplaza un individuo de la población por la solución encontrada tomando como base lo siguiente:

Si la alternativa actual es infactible y a su vez es menos infactible que la peor infactible de la población, entonces reemplazar la peor infactible por la alternativa actual. Es decir, entre dos soluciones infactibles se prefiere la solución menos infactible.

Si la configuración es factible y existe por lo menos una infactible en la población actual, entonces reemplazar la peor infactible por la alternativa actual. Es decir, entre una solución factible y una infactible se prefiere la solución factible.

Si la configuración es factible y todas las alternativas de la población actual son factibles, entonces reemplazar la alternativa con peor función objetivo por la alternativa actual. Lo anterior se realiza sólo si la alternativa actual es de mejor calidad que la peor de la población. Es decir, entre dos soluciones factibles se prefiere la solución con mejor función objetivo.

Page 96: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

90

5.2. Implementación del algoritmo genético al problema de empaquetamiento bidimensional restricto tipo guillotina

En esta implementación se usó la codificación propuesta en la sección 4.4.2 donde se proponen dos vectores: uno de placas y otro de secciones para garantizar el corte tipo guillotina

Los operadores recombinación y mutación no pueden ser aplicados de la forma tradicional porque hay una alta probabilidad de obtener configuraciones en las que una pieza podría ocupar dos posiciones diferentes sobre el tablero.

Por tanto se propone incorporar la filosofía de la recombinación a través de la conservación de bloques constructivos. El proceso consiste en usar dos puntos de corte sobre los padres seleccionados por torneo los cuales son representados por el vector .piezas, como el mostrado en la figura 5.9. Posteriormente se aplica un operador de cruzamiento especial denominado cruce parcialmente combinado o PMX por su significado en inglés (Partially Matched Crossover). Este operador permite recombinar dos cromosomas sin perder los bloques del cromosoma que ya se había construido [59].

En el algoritmo tradicional PMX los puntos de corte son escogidos aleatoriamente. Para este problema los puntos de corte son determinados por el vector .piezas de una de las alternativas escogida aleatoriamente, en donde se selecciona una sección para que la recombinación se realice conservando la sección escogida. La escogencia de la sección se hace usando selección por ruleta y se da mayor probabilidad a la sección de mejor calidad, es decir, se trata de conservar las secciones con menor desperdicio o de buena calidad. Así por ejemplo, la recombinación entre dos alternativas i y j se lleva a cabo como se muestra en la figura 5.9

Page 97: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

91

Figura 5.9. Recombinación en el problema de empaquetamiento bidimensional

Resultan dos descendientes, donde el primero conserva la sección conformada por las piezas (7, 9, 10): El segundo descendiente conserva la sección conformada por las piezas (6, 2, 3):

En la figura 5.10 se muestran los individuos obtenidos.

Figura 5.10. Descendientes generados después de la recombinación

El proceso de mutación en el algoritmo genético tradicional es bastante simple. Consiste en intercambiar aleatoriamente dos genes de los cromosomas obtenidos anteriormente. En el problema que se maneja en este artículo, el proceso de mutación es un poco distinto, debido a que es posible afectar cualquiera de los dos cromosomas que conforman una alternativa de solución (ver figura 4.14).

La mutación consiste en escoger por ruleta una de las secciones del hijo seleccionado. Se da mayor probabilidad a las secciones de peor calidad y se modifica la sección escogida siguiendo las siguientes estrategias:

placasi .placasj .

Sección escogida por ruleta

1310740secciones.i

Puntos de recombinación

13410911232671185

38121124109761513

Page 98: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

92

Modificar el vector .piezas original haciendo permutaciones suaves usando el operador de mutación tradicional. Es decir, escogiendo de forma aleatoria dos elementos del vector .piezas, de la sección ganadora en la ruleta, eintercambiándolos entre sí.

Modificar el vector .piezas original quitando de la sección uno de sus elementos de forma aleatoria.

Modificar el vector .piezas original reemplazando uno de sus elementos por una de las placas que no pertenecen a la alternativa actual. Esto se hace de forma aleatoria y afectando la sección actual.

Modificar el vector .secciones original reduciendo o aumentando el tamaño de la sección actual. Este procedimiento es de gran importancia porque permite realizar búsquedas redimesionando las secciones. El impacto de realizar este paso sobre la alternativa de solución es el de pasar placas de una sección a otra.

De los descendientes anteriores, se escoge uno usando selección proporcional (ruleta) dando mayor probabilidad a las alternativas con mejor valor de función objetivo, incluyendo la alternativa original.

5.3. Búsqueda Tabú

5.3.1. Definición

Búsqueda tabú (BT) es un procedimiento metaheurístico, perteneciente a la familia de los métodos de optimización combinatorial, inventado por Fred Glover en la década de los 80 basado en conceptos que pertenecen al dominio de la inteligencia artificial y que incorpora los conceptos de memoria adaptativa y exploración sensible con el fin que durante el proceso de búsqueda se evite parar en óptimos locales y entrar en un ciclo repetitivo.

La filosofía del BT es obtener un conjunto de reglas o principios para resolver un problema de la manera más inteligente. El BT se caracteriza por ser una técnica determinística y su proceso de búsqueda se basa en un individuo, al contrario de otras técnicas que son de carácter aleatorio y trabajan con poblaciones. Además de lo anterior, en el BT se debe definir claramente el concepto de vecindad, ya que de ello depende el éxito de la búsqueda [19].

El método resuelve problemas de la forma:

Min f( x )s.a. x X

Donde f es una función, en general, no lineal y el conjunto de restricciones X también puede ser no lineal. Las variables x involucradas en el problema pueden ser continuas, enteras o mixtas, aunque tradicionalmente la técnica es utilizada

Page 99: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

93

para variables enteras en donde la explosión combinatorial y la imposibilidad de utilizar teoremas matemáticos basados en la continuidad de las funciones muestran la potencialidad del método.

La memoria adaptativa contrasta con otras técnicas como Algoritmos Genéticos y Simulated Annealing, las cuales son algoritmos de búsqueda sin memoria y con otras técnicas que utilizan memoria rígida como Branch and Bound. Además, a diferencia de otros algoritmos combinatoriales, el BT es una técnica determinística y no se fundamenta en procesos físicos ni biológicos.

BT inicia su proceso de búsqueda igual que un algoritmo heurístico de búsqueda local, definiendo como vecindad, todas las posibles configuraciones que se obtengan al utilizar un mecanismo de transición. En un algoritmo de búsqueda local, a partir de la configuración inicial, se pasa a la configuración que presente la mayor disminución en la función objetivo (en caso de un problema de minimización). La utilización repetitiva de este procedimiento, conlleva a que el algoritmo se detenga una vez no exista ninguna configuración vecina que produzca una disminución de la función objetivo, lo cual, significa que se ha encontrado un óptimo local.

BT explora el espacio de soluciones de manera eficiente a través de la estructura de vecindad. El BT selecciona de forma agresiva el mejor de los movimientos posibles en cada paso, a pesar de esto, al contrario de lo que ocurre en una búsqueda local, aunque el movimiento seleccionado no sea tan bueno como el actual, permite escapar de óptimos locales y continúa la búsqueda en otras regiones. Gran parte de la potencialidad del método está basada en la manera como se define el conjunto de vecinos N(X). El conjunto de vecinos, no se caracteriza por ser estático, por el contrario, el número de vecinos varía dinámicamente durante el proceso de optimización. La figura ilustra el concepto anterior.

N1(x) x x`

N(X)

Figura 5.11. Concepto de vecindad

Donde:

X: Configuración actual.

Page 100: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

94

X’: Configuración vecina.

N(X): Conjunto de vecinos posibles.

N1(X): Vecindario reducido.

En la mayoría de los casos el vecindario N(X) puede ser muy grande, lo cual, implica un elevado esfuerzo computacional en el proceso de búsqueda. Debido a esto, se debe reducir el número de vecinos redefiniendo las reglas de construcción del vecindario.

El algoritmo Tabú involucra los siguientes aspectos

5.3.2. Configuración Inicial

Una configuración es el conjunto de variables del problema dispuesto en un arreglo (vector o matriz). La configuración inicial puede ser generada de manera aleatoria o puede ser obtenida utilizando un algoritmo constructivo que utilice factores de sensibilidad o cierta lógica heurística.

Una configuración inicial aleatoria puede tener la ventaja de que evita, en parte, la posibilidad de que el método tenga una convergencia prematura o, en otras palabras, quede atrapado en un óptimo local. Por otro lado, una configuración inicial de mala calidad o infactible puede incrementar considerablemente el esfuerzo computacional, minimizando así, la posibilidad de explorar otras regiones que puedan contener soluciones de buena calidad.

Cuando se utilizan algoritmos constructivos basados en indicadores de sensibilidad, generalmente se obtienen configuraciones iniciales de buena calidad que le permiten al método realizar una búsqueda eficiente y así mejorar las soluciones iniciales. Adicionalmente, se puede intensificar la búsqueda hacia nuevas regiones construidas a partir de configuraciones élite que le permiten encontrar nuevas soluciones las cuales, posiblemente, pueden tener una calidad igual o superior a las soluciones ya encontradas. No obstante, el uso de índices de sensibilidad, puede sesgar el espacio de soluciones, haciendo que el método jamás pueda visualizar regiones promisorias que le permitan acercarse a la mejor solución posible.

5.3.3. Generación del vecindario

Un vecino de una configuración X es una configuración X0 obtenida a partir de X por medio de una transición simple. En la mayoría de los casos el vecindario N(X) puede ser muy grande lo que implica un elevado esfuerzo de cómputo en el proceso de búsqueda. Debido a esto, se requiere reducir el número de vecinos a N1(X), redefiniendo las reglas de construcción del vecindario. Esta etapa es fundamental en el proceso ya que de ella depende, en gran parte, el éxito de la búsqueda.

Page 101: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

95

Existen estrategias para la reducción del vecindario:

Analizar un número específico de configuraciones seleccionadas aleatoriamente del vecindario N(X).

Aspiración adicional. Para esta estrategia se utiliza algún criterio; por ejemplo, la reducción de la función objetivo hasta cierto valor. Una vez se encuentra la configuración que satisface ese valor se evalúan configuraciones adicionales (’plus’). Para controlar el proceso se deben fijar un número mínimo y máximo de configuraciones a ser analizadas.

Lista de reducción de candidatos de Elite. En esta estrategia se selecciona un conjunto de configuraciones vecinas con atributos particulares, las cuales son llamadas configuraciones de élite.

5.3.4. Implementación de listas tabú

Dependiendo del tipo y complejidad del problema, se utiliza una o varias listas tabú. El tamaño de la lista puede variar a lo largo del proceso, teniendo en cuenta que no todas las configuraciones vecinas deben ser almacenadas sino las más atractivas en cuanto al valor de su función objetivo. La razón es la de reducir el esfuerzo computacional y la eficiencia del proceso.

En estas listas se almacenan configuraciones tabú y configuraciones que no lo son, ordenadas de acuerdo a su función objetivo, teniendo en cuenta la característica del problema de optimización.

5.3.5. Selección del mejor vecino

Una vez que el vecindario es definido, cada vecino es evaluado para determinar el valor de su función objetivo y verificar si cumple o no con las restricciones planteadas, de esta manera se determina la factibilidad de la configuración vecina. Los vecinos son clasificados en una lista de acuerdo al valor de la función objetivo y el proceso selecciona el mejor candidato. El primer candidato de la lista (de mejor función objetivo) es seleccionado si él no es tabú (prohibido) y si es factible, este modo de selección se denomina selección agresiva la cual imita las características de un algoritmo goloso.

Si el mejor vecino de la lista de candidatos esta clasificado como tabú por el proceso de optimización, aún existe la posibilidad de que sea seleccionado siempre que mejore la mejor solución encontrada hasta el momento por el proceso (incumbente). Este modo de selección se denomina criterio de aspiración.

Si en el vecindario generado no existe ninguna configuración que mejora la función objetivo, entonces es seleccionada la mejor de las peores pero que no haya sido clasificada como tabú durante el proceso de optimización. Esta estrategia evita que el algoritmo sea atrapado por óptimos locales.

Page 102: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

96

5.3.6. Duración Tabú

Por el término tabú se entiende prohibición, por consiguiente, la duración tabú indica que un atributo no puede cambiar de estado durante un número de iteraciones determinado. La definición del valor de la duración tabú es importante para evitar que el proceso quede atrapado en óptimos locales de baja calidad. Duraciones tabú cortas pueden causar ciclaje, es decir, se analizan configuraciones que habían sido estudiadas anteriormente. Por el contrario, duraciones tabú muy largas pueden ocasionar infactibilidad durante el proceso o de algún modo se restringe la posibilidad de aceptar configuraciones vecinas de buena calidad.

Una forma simple de determinar la duración tabú consiste en especificar un valor constante para todos los atributos de la configuración. Sin embargo, existe la posibilidad de utilizar valores diferentes de duración tabú, lo que se conoce con el nombre de estado tabú adaptativo.

5.3.7. Criterio de Aspiración

Los criterios de aspiración se introducen en el BT para determinar cuando pueden ser reemplazadas las restricciones tabú, eliminando así un estado tabú aplicado a un atributo y su finalidad es la de proporcionarle mayor flexibilidad al proceso. Con lo anterior, se intenta relajar la rigidez de las listas tabú que almacenan atributos prohibidos. Una configuración candidata de excelente calidad puede tener un atributo prohibido por que comparte este atributo con una configuración ya visitada en el pasado reciente. De este modo, la lista tabú, al prohibir regresar de nuevo a configuraciones visitadas anteriormente, puede también prohibir visitar configuraciones nuevas de buena calidad. Esta característica es atenuada parcialmente con el criterio de aspiración que elimina la prohibición de una configuración candidata, si la misma produce una función objetivo de buena calidad.

El uso apropiado de estos criterios puede ser muy importante para permitirle al método mejores niveles de ejecución. Las primeras aplicaciones empleaban sólo un tipo simple de criterio de aspiración, que consiste en eliminar una clasificación tabú de un movimiento de ensayo cuando el movimiento conduce a una solución mejor que la incumbente obtenida hasta el momento. Aunque el criterio anterior todavía se aplica, existen otros criterios de aspiración efectivos para mejorar la búsqueda.

Una base para uno de estos cambios surge introduciendo el concepto de influencia, que mide el grado de cambio inducido en la estructura de la solución. La influencia a menudo se asocia a la idea de distancias de movimiento, es decir, donde se concibe que un movimiento de mayor distancia tiene mayor influencia. Tal movimiento puede no mejorar la solución actual, aunque es menos probable conducir a una mejora cuando la solución actual es relativamente buena. De cualquier manera, los movimientos de alta influencia son importantes, especialmente durante intervalos de separación de optimalidad local, porque con

Page 103: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

97

una serie de movimientos que se limita solamente a hacer pequeños cambios estructurales es poco probable obtener una oportunidad para la mejora significativa.

5.3.8. Actualización de la estructura tabú

El proceso de búsqueda tabú requiere de una estructura tabú que tiene la misma codificación de la configuración X y que almacena la información de los atributos del vector X que han cambiado o que han permanecido sin cambio alguno. Esta información se almacena en las memorias de corto y largo plazo, las cuales pueden tener un criterio de almacenamiento fijo o variable a lo largo del proceso dependiendo del comportamiento de la búsqueda. Esto es lo que constituye la memoria adaptativa.

5.3.9. Memoria de corto plazo

La memoria de corto plazo usa básicamente la información de atributos de configuraciones que han cambiado recientemente. Esta información es conocida como memoria basada en hechos recientes. La idea básica de este tipo de memoria es evitar volver a configuraciones ya visitadas.

En la memoria de corto plazo, los elementos del vector X que han cambiado recientemente son clasificados como prohibidos o tabú durante un número determinado de iteraciones. Este número es almacenado en la memoria de corto plazo y es conocido como Status Tabú. Varias posiciones de la configuración X pueden estar prohibidas y el Status Tabú puede no ser variable a lo largo del proceso y es una característica que previene el ciclaje haciendo que el proceso de búsqueda sea inteligente.

Un vecino que sea generado a partir de una posición prohibida no puede ser seleccionado de la lista de candidatos a no ser que su función objetivo sea mejor que la incumbente encontrada hasta el momento durante el proceso. El criterio de aspiración compensa, en parte, el hecho de que al establecer posiciones tabú se reduce el espacio de búsqueda y pueden ser ignoradas configuraciones de buena calidad.

Cuando el mejor vecino es seleccionado, la posición de la configuración X a partir de la cual fue generado se debe prohibir durante k iteraciones y los sitios que están restringidos deben disminuir su estado tabú en una iteración. Esto corresponde al proceso de actualización de la estructura tabú de corto plazo [19].

5.3.10. Memoria de largo plazo

La implementación de la memoria de largo plazo permite al BT un desempeño mejor en la mayoría de las aplicaciones. Esta memoria se relaciona con tres aspectos fundamentales:

La memoria basada en frecuencia.

Page 104: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

98

La estrategia de intensificación. La estrategia de diversificación.

La memoria basada en frecuencia consiste en almacenar la información del número de veces en que un atributo ha sido seleccionado, para participar en la formación de las configuraciones, durante el proceso. Por tal razón existen dos tipos de memoria basada en frecuencia. La primera almacena información histórica de los atributos de X que han cambiado cierto número de veces dentro del proceso (memoria de largo plazo por transición). La segunda almacena información de los atributos que han permanecido inalterados (memoria de largo plazo por permanencia). Esta estrategia permite, que en determinada etapa del proceso, el algoritmo explore nuevas regiones, proporcionando mayor diversidad a la búsqueda.

La estrategia de intensificación consiste en cambiar los criterios de selección de las nuevas configuraciones candidatas para incentivar la formación de nuevas configuraciones, aprovechando la información almacenada en el proceso. La intensificación se puede realizar de varias maneras:

Eliminando o incorporando nuevos vecinos, considerando las configuraciones élite.

Regresando a las regiones atractivas para realizar una búsqueda más intensa en su vecindad.

Realizando intensificación por descomposición, la cual consiste en imponer nuevas restricciones sobre los atributos buscando disminuir el espacio de configuraciones del problema.

Por último la estrategia de diversificación permite que el proceso de búsqueda se traslade a regiones nuevas y atractivas. Esta estrategia es implementada cambiando la definición de vecindad o de configuraciones candidatas, incorporando vecinos constituidos por atributos que han sido poco usados

En la figura 5.12 se muestra el esquema básico del algoritmo.

5.3.11. Oscilación estratégica

La oscilación estratégica es un excelente mecanismo para realizar una interacción entre intensificación y diversificación a mediano o largo plazo. Esta técnica opera cuando se ha logrado un nivel crítico, es decir, cuando la búsqueda se realiza en la región infactible, en el que normalmente la metodología se detendría. Así, antes de parar, después de lograr un nivel crítico, se pueden cambiar las reglas de selección de nuevas configuraciones candidatas para pasar a una región fuera de la región infactible. Una vez pasado el nivel crítico, se cambian nuevamente las reglas de selección de configuraciones candidatas tanto en el alejamiento como en el retorno al nivel crítico. Un proceso repetitivo de esta estrategia produce un movimiento oscilatorio en torno del nivel crítico.

Page 105: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

99

Configuración inicial (X)Configuración inicial (X)

Explotación (Generar un vecindario N(X))

Explotación (Generar un vecindario N(X))

Funcion objetivo actual no mejora en k iteraciones?

Fin

Funcion objetivo actual no mejora en k iteraciones?

Fin

¿Vecino Xj es mejor que Xi?

¿Vecino Xj es mejor que Xi?

Actualizar estructura tabú y hacer Xj=Xi=XActualizar estructura tabú y hacer Xj=Xi=X

Aleatoria

Basado en una regla empírica

Basado en índice de sensibilidad

AleatoriaAleatoria

Basado en una regla empíricaBasado en una regla empírica

Basado en índice de sensibilidadBasado en índice de sensibilidad

Memoria de corto plazo

Memoria de largo plazo

Memoria de corto plazoMemoria de corto plazoMemoria de corto plazo

Memoria de largo plazo

Selección agresiva

Criterio de aspiración

Selección con criterio Tabú

Selección agresivaSelección agresiva

Criterio de aspiraciónCriterio de aspiración

Selección con criterio Tabú

Figura 5.12. Esquema básico del algoritmo de Búsqueda Tabú

5.3.12. Encadenamiento de trayectorias

El encadenamiento de trayectorias o “Path Relinking” (PR) permite encontrar nuevas configuraciones usando las trayectorias que interconectan configuraciones élite. En esta estrategia se selecciona una configuración élite denominada configuración base y otra u otras configuraciones guía. Así, se pueden obtener nuevas configuraciones a partir de la configuración base incorporando atributos presentes en las configuraciones guía. Las configuraciones así obtenidas, pueden ser usadas para intensificación o diversificación dependiendo de la cantidad de atributos incorporados en la configuración base.

La idea del PR es obtener configuraciones constituidas por atributos de alta calidad, pertenecientes a configuraciones élite. Así, en la implementación del PR, para encontrar una configuración atractiva para continuar el proceso, en cada paso es seleccionado, de manera preferencial, el atributo más atractivo presente en las configuraciones guía, usando los criterios usuales de BT.

PR también puede aplicarse en la generación de nuevas configuraciones de una manera más rápida. Así, se puede incorporar en la configuración base, en una única operación, todos los atributos considerados atractivos y presentes en las configuraciones guía. Dependiendo de la cantidad de atributos incorporados, la

Page 106: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

100

configuración así obtenida puede ser usada para intensificación o diversificación. Otra estrategia es producir una configuración para realizar intensificación usando configuraciones élite que poseen muchos atributos similares y, entonces, producir una configuración para diversificación usando configuraciones élite que posean atributos significativamente diferentes.

5.4. Definición de criterios de vecindad aplicados a la solución del problema de empaque bidimensional restricto tipo guillotina

Para la implementación de esta técnica se utilizó la codificación propuesta en 4.4.3

Se deben definir antes dos conceptos desperdicio general y desperdicio individual.

El desperdicio general se presenta cuando se han dispuesto las piezas sobre el tablero y se generan espacios al exterior de las piezas. Los desperdicios individuales se generan cuando se ubican varias piezas y quedan espacios al interior de ellas [55].

DesperdicioIndividual

DesperdicioGeneral

Figura 5.13. Tipos de desperdicio

5.4.1. Primer criterio

Si la configuración es factible y hay desperdicio general pero ningún cluster presenta desperdicio individual, generar configuraciones vecinas insertando piezas en los clusters vacíos. Si el número de vecinos generado es menor al requerido, pasar al segundo criterio.

Page 107: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

101

Figura 5.14. Primer criterio de vecindad

5.4.2. Segundo criterio

Si la configuración es factible y presenta clusters con desperdicios individuales, buscar e insertar piezas con áreas menores o iguales a los desperdicios de los clusters que los presenten. Si no hay por lo menos una pieza que se ajuste a estas condiciones o el número de vecinos generado es menor al requerido.

Figura 5.15. Segundo criterio de vecino

5.4.3. Tercer criterio.

Si la configuración es factible y presenta clusters con desperdicios individuales, intercambiar piezas de la configuración actual con las aún disponibles, procurando disminuir el desperdicio de los clusters que los presenten (opcional: sin alterar las dimensiones de los mismos). Si no hay por lo menos una pieza que se ajuste a estas condiciones, o el número de vecinos generado es menor al requerido o la configuración es infactible, pasar al Cuarto criterio.

Page 108: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

102

Se retira pieza

Ingresa pieza quedisminuye el desperdicio

Figura 5.16. Tercer criterio de vecindad

5.4.4. Cuarto criterio:

Si la configuración es infactible o si en los anteriores tres criterios no se generó el número requerido de vecinos, generar configuraciones vecinas retirando las piezas que generan infactibilidad.

En la figura 5.17 las líneas rojas representan el área disponible del tablero.

Figura 5.17. Cuarto criterio de vecindad

5.4.5. Quinto criterio:

Si con los tres primeros criterios (configuración factible) o con el cuarto criterio (configuración infactible) no se generaron las configuraciones vecinas

Page 109: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

103

requeridas, crear las configuraciones restantes intercambiando piezas entre los clusteres básicos vecinos no nulos completos (con por lo menos una pieza).

Figura 5.18. Quinto criterio de vecindad

5.4.6. Sexto criterio:

Si con ninguno de los anteriores criterios (casos de configuración factible o infactible) se generó el número requerido de configuraciones vecinas, realizar cambios en los tipos de cortes de los clusters básicos dando prioridad a los que generen infactibilidad (caso infactible) y/o a los que presenten desperdicios (caso factible).

En la figura 5.19 se observa el cluster horizontal formado por las piezas 10 y 11, cambiando el tipo de corte a vertical se factibiliza la configuración y queda un espacio donde se puede ubicar la pieza 12.

Corte Horizontal

Corte vertical

1

2

3

45

6

12

3

45

6

789789

10

11

10

11

12

13

14

13

14

Figura 5.19. Sexto criterio de vecindad

Page 110: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

104

1

2

3

45

6

789

10

1113

14

12

Figura 5.20. Nueva disposición ubicando la pieza 12

5.4.7. Cálculo de la función objetivo

Este cálculo se hace con base en el área no utilizada del tablero y las infactibilidades generadas en la ubicación de cada cluster sobre el tablero Ec.(5.5)[55].

. desperdicios+ *(infactibilidades)F O (5.5)

El parámetro corresponde a un valor de penalización de las infactibilidades.

Según la ubicación de los clusters se pueden presentar los siguientes casos:

i) Que el cluster no genere infactibilidad Ancho cluster +coordenada de inicio en el eje X < ancho del tablero y además que

Altura cluster +coordenada de inicio en el eje Y < altura del tablero.

ii) Que el cluster sea infactible por ancho

Ancho cluster +coordenada de inicio en el eje X >ancho del tablero, y

Altura cluster +coordenada de inicio en el eje Y < altura del tablero.

iii) Que el cluster sea infactible por altura

Altura cluster +coordenada de inicio en el eje Y > altura del tablero, y

Ancho cluster +coordenada de inicio en el eje X < ancho del tablero

iv) Que el cluster sea infactible por ancho y por alto.

Page 111: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

105

Altura cluster +coordenada de inicio en el eje y > altura del tablero, pero la coordenada de inicio en el eje y < altura del tablero ó el ancho cluster +coordenada de inicio en el ejes > ancho del tablero, pero la coordenada de inicio en el eje X< ancho del tablero.

v) Que el cluster generado quede por fuera del tablero Coordenada de inicio en el eje X >ancho del tablero y la coordenada de inicio en el eje y > altura del tablero.

Este cluster se tiene en cuenta en el cálculo de las infactibilidades.

Para calcular la función objetivo basta con calcular las infactibilidades porque a partir de estas se pueden determinar los desperdicios.

De acuerdo a los casos anteriores la infactibilidad se calcula de la siguiente forma:

Si se está en el caso i) donde el cluster es factible, la infactibilidad aportada por este es cero.

Si el cluster es infactible y se está en los casos ii), iii) y iv) el cálculo de la infactibilidad aportada por este cluster se hará ubicando el área por fuera del tablero de la pieza que está traslapada.

Si se está en el caso v), la infactibilidad aportada por este cluster es igual al área efectiva del mismo.

Obtenida la infactibilidad total (Infac) mediante la suma de las infactibilidades individuales, se calcula el área efectiva del tablero (Efec_tablero) como se muestra a continuación:

Efec_tablero= Efec - Infac (5.6)

Donde Efec es la suma de todas las áreas de las piezas que constituyen la configuración actual.

Con Efec_tablero se procede a calcular el valor de las áreas sin utilizar (Desp) con la Ec (5.7)

Desp =Área_tablero- Efec_tablero (5.7)

Donde:

Área_tablero: Largo por ancho del tablero

Así, mediante la ecuación 5.8 se calcula la función objetivo.

Page 112: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

106

. Desp+ InfacF O (5.8)

El valor del parámetro se calcula experimentalmente.

5.5. Recocido simulado

El método de recocido simulado o simulated annealing (SA) por sus siglas en inglés, es una técnica de optimización combinatorial que se usa para afrontar problemas de gran complejidad matemática, de modo que se obtengan soluciones cercanas a la óptima.

La idea original que dio lugar al SA es llamada algoritmo de Metrópolis, el que a su vez está basado en el método de Montecarlo, con el cual se estudian las propiedades de equilibrio en el análisis del comportamiento microscópico de los cuerpos [19].

Se fundamenta en el proceso físico de calentamiento de un sólido, seguido por un enfriamiento hasta lograr un estado cristalino con una estructura perfecta. Durante este proceso, la energía libre del sólido es minimizada. A una temperatura T, en el estado con nivel de energía Eì, se genera el estado siguiente j a través de de una pequeña perturbación. Si la diferencia de energía Ej – Ei es menor o igual a cero, el estado j es aceptado. Si la diferencia de energía es mayor que cero, el estado j es aceptado con una probabilidad dada por (5.9), donde KB es la constante de Boltzmann. Si la disminución de la temperatura es hecha de manera paulatina, el sólido puede alcanzar el estado de equilibrio en cada nivel de temperatura.

Tk

EE

B

ji

e (5.9)

El SA aplica la simulación de la secuencia de estados en el proceso de enfriamiento para la solución de problemas de minimización. El costo de la configuración se asocia a la energía y T corresponde al parámetro de control.

A partir del estado i con costo f(i), se genera el estado j con costo f(j). El criterio de aceptación determina si el nuevo estado es aceptado; para esto se calcula la probabilidad:

f(i)si f(j)e

f(i)si f(j)job. Acep.

T

f(j)f(i)

1Pr (5.10)

Page 113: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

107

Con esta estrategia se evita el quedar atrapado en mínimos locales. Inicialmente cuando T es grande, se permiten nuevas configuraciones que deterioren la función objetivo. A medida que disminuye la temperatura, la probabilidad de aceptar soluciones peores que la que se tiene es cada vez menor. Es clave la determinación de la temperatura inicial To, así como la velocidad de enfriamiento y la longitud Nk de la cadena de tentativas para cada nivel de temperatura Tk. Estos parámetros se calibran para adaptarse al tipo y tamaño del problema.

Algoritmo simulated annealing.

A continuación se presenta el algoritmo en el que se implementa el Simulated Annealing. En la figura 5.21 se muestra el diagrama de flujo correspondiente.

para h desde 1 hasta Nk

generar Rj a partir de Ri

si f(j)<=f(i)

entonces Ri = Rj

de lo contrario

si exp{[(f(i)-f(j)]/T} > aleatorio [0,1]

entonces Ri = Rj

fin_si

fin_si

fin_para

incrementar k

cálculo de Nk

cálculo de Tk

fin_para

Page 114: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

108

Figura 5.21. Algoritmo Recocido simulado.

5.5.1. Temperatura.

La temperatura debe ser tal en el proceso que permita una adecuada exploración en las etapas del SA. Existen diferentes formas para calcular la temperatura inicial, siendo una de ellas simular el proceso para la primera cadena de Markov.

También es necesario definir la tasa B de disminución de la temperatura, para tener un enfriamiento controlado. Tomándose Tk+1= B Tk. Se acostumbra usar tasas de 0.8 a 0.99.

La temperatura final de enfriamiento es aquella en la que ya es muy poco probable que se acepten soluciones que empeoren la actual.

5.5.2. Longitud de la cadena.

La longitud de la cadena Nk define el número de tentativas para el nivel de temperatura Tk. Como regla general se maneja una longitud creciente a medida

iniciar To, N0

generar configuración inicial Ri

iniciar h

generar Rj a partir de Ri

f(j)<=f(i)

Ri=Rj

incrementar h

calcular probabilidad

Pk>

h<Nk

actualizar Tk, Nk

criterio de parada

Soluciónencontrada: Ri

NO

SI

SI

SI

NO

NO

SI

NO

Page 115: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

109

que la temperatura disminuye, con el fin de permitir una exploración más intensa a temperaturas bajas. Por lo cual se toma Nk+1= p Nk, con p 1.

Para definir la longitud inicial N0 de la cadena, este se escoge proporcional al tamaño del problema, por ejemplo k veces el número de variables, N0=k x

#variables.

5.5.3. Criterio de parada

Se pueden usar varios criterios de parada:

Se fija un número determinado de niveles de temperatura, usualmente entre 6 y 50.

Si la función objetivo no mejora para varios niveles consecutivos, entonces se termina el proceso.

Si no se cumple con un número mínimo de aceptaciones en el nivel de temperatura.

5.5.4. Generación de una nueva configuración.

Se debe definir una estructura de vecindad, de la cual se toma la nueva configuración a partir de la actual. La estructura de vecindad está conformada por aquellas configuraciones -no necesariamente todas- que se pueden generar mediante pequeñas modificaciones, como sacar un elemento activo, agregar uno, o intercambiar un elemento que está presente en la configuración por otro que no lo está.

La escogencia de la nueva configuración en la estructura de vecindad se hace aleatoriamente, pero se puede incrementar la probabilidad de selección para aquellas configuraciones que tienen un índice de sensibilidad que las identifica como atractivas para conseguir un mejoramiento en la función objetivo.

5.5.5. Adaptación al tipo de problema

En principio el algoritmo presentado está dirigido a solucionar problemas de minimización sin restricciones. Haciendo unas pequeñas modificaciones se puede adaptar a problemas de maximización o que tengan restricciones. La maximización es convertida en minimización multiplicando la función objetivo por un factor de -1.

Cuando se tienen restricciones, el modelo matemático puede ser solucionado de dos formas. La primera es resolver el modelo en su conjunto, función objetivo y restricciones. La segunda consiste en llevar las restricciones a la función objetivo a través de un factor de penalización.

Page 116: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

110

5.6. Búsqueda de entorno variable

La Búsqueda de Entorno Variable (Variable Neighbourhood Search, VNS) es una metaheurística para resolver problemas de optimización cuya idea básica es el cambio sistemático de entorno dentro de una búsqueda local.[26]

Los procesos de búsqueda heurística están generalmente basados en transformaciones de las alternativas que determinan una estructura de entornos en el espacio de soluciones. La Búsqueda de Entorno Variable (Variable Neighbourhood Search, VNS) es una metaheurística propuesta sólo hace unos años [27], [37] que está basada en un principio simple: cambiar sistemáticamente de estructura de entornos dentro de la búsqueda [28]. Su desarrollo ha sido rápido, con muchos artículos ya publicados o pendientes de aparecer. Se han realizado muchas extensiones, principalmente para permitir la solución de problemas de gran tamaño [29]. En la mayoría de ellas, se ha hecho un esfuerzo por mantener la simplicidad del esquema básico.

5.6.1. Esquemas fundamentales

Un problema de optimización consiste en encontrar, dentro de un conjunto X desoluciones factibles, la que optimiza una función f(x). Si el problema es de minimización se formula como

min ( ) /f x x X (5.11)

Donde x representa una solución alternativa, f es la función objetivo y X es el espacio de soluciones factibles del problema. Una solución optima xo (o mínimo global) del problema es una solución factible donde se alcanza el mínimo de Ec (5.11).

Una estructura de entornos en el espacio de soluciones X es una aplicación : 2xN X que asocia a cada solución x X un entorno de soluciones ( )N x X ,

que se dicen vecinas de x. Las metaheurísticas de búsqueda local aplican una transformación o movimiento a la solución de búsqueda y por tanto utilizan, explícita o implícitamente, una estructura de entornos. Denotando por

max, 1,...,kN k k a un conjunto finito de estructuras de entornos en el espacio X. Los

entornos kN pueden ser inducidos por una o más métricas introducidas en el

espacio de soluciones X. La mayoría de las heurísticas de búsqueda local usan sólo una estructura de entornos.

Una solución 'x es un mínimo global del problema (5.11) si no existe una solución x X tal que *( ) ( )f x f x . Se dice que 'x X es un mínimo local con respecto a Nk,

si no existe una solución ( ')kx N x X tal que ( ) ( ')f x f x

Page 117: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

111

Una búsqueda local descendente cambia la solución actual por otra solución mejor de su entorno, por tanto tienen el peligro de quedarse atascada en un mínimo local. Las metaheurísticas basadas en procedimientos de búsqueda local aplican distintas formas de continuar la búsqueda después de encontrar el primer óptimo local.

La VNS está basada en tres hechos simples:

Un mínimo local con una estructura de entornos no lo es necesariamente con otra.

Un mínimo global es mínimo local con todas las posibles estructuras de entornos.

Para muchos problemas, los mínimos locales con la misma o distinta estructura de entornos están relativamente cerca.

Esta última observación, que es empírica, implica que los óptimos locales proporcionan información acerca del óptimo global. Puede ser, por ejemplo, que ambas soluciones tengan características comunes. Sin embargo, generalmente no se conoce cuales son esas características. Es procedente, por tanto, realizar un estudio organizado en las proximidades de este óptimo local, hasta que se encuentre uno mejor Los hechos 1 a 3 sugieren el empleo de varias estructura de entornos en las búsquedas locales para abordar un problema de optimización. El cambio de estructura de entornos se puede realizar de forma determinística, estocástica, o determinística y estocástica a la vez.

5.6.2. VNS Descendente (VND)

Una búsqueda local determina una mejor solución del entorno de la solución actual. La clásica búsqueda greedy descendente consiste en reemplazar iterativamente la solución actual por el resultado de la búsqueda local, mientras se produzca mejora. Si se realiza un cambio de estructura de entornos de forma determinística cada vez que se llega a un mínimo local, se obtiene la búsqueda de entorno variable descendente (Variable Neighbourhood Descent, VND). Los pasos de la VND se muestran a continuación.

Inicialización: Seleccionar el conjunto de estructuras de entornos según la Ec. 5.12, que se usarán en el descenso; encontrar una solución inicial x

m a x, 1 , . . . ,kN k K(5.12)

Iteraciones: Repetir, hasta que no se obtenga mejora, la siguiente secuencia:

(1) Hacer 1k

(2) Repetir, hasta que maxk=k , los pasos:

Page 118: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

112

(a) Exploración del entorno. Encontrar la mejor solución x’ del k-ésimo entorno de x 1k k ( ' ( ))kx N x ;

(b) Moverse o no Si la solución obtenida x’ es mejor que x hacer x= x’ y 1k

En otro caso, hacer 1k k

La solución final proporcionada por el algoritmo es un mínimo local con respecto a todas las kmax estructuras de entornos, y por tanto la probabilidad de alcanzar un mínimo global es mayor que usando una sola estructura. Además del orden secuencial de las estructuras de entornos en la VND anterior, se puede desarrollar una estrategia anidada. Si se supone, por ejemplo, que kmax = 3. Entonces una posible estrategia anidada es: ejecutar la VND mostrada anteriormente para las dos primeras estructuras de entornos, sobre cada x0 que pertenezca al tercer entorno de 3( ' ( ))x x N x . Esta VNS ha sido aplicado en [5], [8].

5.6.3. VNS Reducida (RVNS)

La búsqueda de entorno variable reducida (Reduced Variable Neighbourhood Search, RVNS) se obtiene si se seleccionan soluciones aleatorias de Nk(x), sin aplicarles a continuación un descenso. Los pasos de la RVNS se presentan a continuación

Inicialización: Seleccionar el conjunto de estructuras de entornos Nk; k = 1..,;

kmax, que se usaran en la búsqueda; Encontrar una solución inicial x ;

Iteraciones: Repetir, hasta que se cumpla la condición de parada, la siguiente secuencia:

(1) Hacer 1k

(2) Repetir, hasta que maxk k x, los pasos:

(a) Agitación Generar al azar una solución ox del k-´esimo entorno de

; ( ' ( ));kx x N x

(b) Moverse o no. Si la solución obtenida 'x es mejor que x ,

Hacer 'x x y 1k

En otro caso, hacer 1k k .

La RVNS es útil para instancias muy grandes de problemas en las que la búsqueda local es muy costosa. Se observa que el mejor valor para el parámetro kmax es

Page 119: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

113

frecuentemente 2. Como condición de parada se usa generalmente el máximo número de iteraciones entre dos mejoras.

La RVNS se ha mostrado superior a un método de Monte-Carlo en un problema mínimas continuo [38] y a la heurística del intercambio rápido de [60] al aplicarla al problema de la p-mediana.

5.6.4. VNS Básica (BVNS)

La búsqueda de entorno variable básica (Basic Variable Neighbourhood Search,BVNS)

Combina cambios determinísticos y aleatorios de estructura de entornos. Los pasos de la VNS básica se presentan a continuación.

La condición de parada puede ser, por ejemplo, el máximo tiempo de CPU permitido, el máximo número de iteraciones, o el máximo número iteraciones entre dos mejoras. [60] Frecuentemente los entornos kN sucesivos están anidados.

Obsérvese que la solución 'x se genera al azar en el paso (2ª) para evitar el ciclado, que puede ocurrir si se usa cualquier regla determinística.

Inicialización: Seleccionar un conjunto de estructuras de entornos

max, 1,...,kN k k , que se usaran en la búsqueda;

Encontrar una solución inicial x ;

Iteraciones: Repetir, hasta que se cumpla la condición de parada, la siguiente secuencia:

(1) Hacer 1k

(2) Repetir, hasta que maxk k , los pasos:

(a) Agitación Generar al azar una solución 'x del k-´esimo entorno de ( ' ( ));kx x N x

(b) Búsqueda local Aplicar algún método de búsqueda local con x0 como solución inicial;

Denótese con ''x el mínimo local así obtenido.

(c) Moverse o no Si la solución obtenida ''x es mejor que xhacer ''x x y 1k ;

En otro caso, hacer 1k k .

Page 120: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

114

5.6.5. VNS General

La búsqueda local del paso (2b) de la BVNS puede ser sustituida por la VND. Los pasos de la búsqueda de entorno variable general (General Variable Neighbourhood Search,GVNS) se muestran a continuación:

Inicialización Seleccionar un conjunto de estructuras de entornos

max, 1,...,kN k k que se usarán en la agitación;

Seleccionar un conjunto de estructuras de entornos max,' , 1,...,jN para j j

que se usarán en el descenso;

Encontrar una solución inicial x ;

Iteraciones: Repetir, hasta que se cumpla la condición de parada, La siguiente secuencia:

(1) Hacer 1k

(2) Repetir, hasta que maxk k , los pasos

(a) Agitación: Generar al azar una solución 'x del entorno ( )kN x ;

(b) Búsqueda local Aplicar la VND con las estructuras de entornos para max,' , 1,...,jN para j j denótese con ''x la

solución así obtenida.

(c) Moverse o no Si la solución obtenida ''x es mejor que xhacer ''x x y 1k ;

En otro caso, hacer 1k k .

El uso de la búsqueda de entorno variable general (GVNS) ha dado lugar a las aplicaciones más exitosas aparecidas recientemente (ver, por ejemplo, [5], [8], [1], [43], [44],

5.7. Adaptación de las técnicas de Recocido simulado y Búsqueda en vecindario variable a la solución del problema de empaquetamiento bidimensional restricto tipo guillotina

La codificación propuesta en la sección 4.4.4 garantiza la factibilidad en cuanto al corte guillotina, esto permite que el problema de optimización con restricciones se transforme en un problema de minimización irrestricto entero mixto en donde las

Page 121: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

115

variables T y H son independientes entre sí, esto significa que para cada conjunto de valores de T existe una solución H óptima:

(5.13)

De esta forma se puede utilizar cualquier algoritmo combinatorial para encontrar valores óptimos de T siempre y cuando se utilice un segundo algoritmo que permita encontrar los valores óptimos de H a partir de los valores de T. La ubicación final de las piezas se realiza mediante un tercer algoritmo, esta vez un constructivo que garantiza una solución única para cada conjunto de valores (T,H), este algoritmo es basado en arreglos del mismo tipo como se mostró en la figura 3.8 (b). La figura 5.22 esquematiza el proceso

AlgoritmoI

AlgoritmoII

AlgoritmoIII

T H

Figura 5.22. Secuencia de los algoritmos

5.7.1. Algoritmo de búsqueda aleatoria binaria

El algoritmo I determina el valor de la variable binaria T la cual representa el tipo de corte a utilizar, para este algoritmo se utilizó un esquema de vecindario variable [26].

Algortimo I: Búsqueda aleatoria binaria

Datos de entrada IG

Tinc Aleatorio Binario

Incumbente 0

Vecindario 1

For k = 1 To IG

T Tinc

For i = 1 To Vecindario

j Aleatorio Entero

T[j] Not(T[j])

EndFor

Vecindario Vecindario + 1

Page 122: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

116

[F, H] AlgoritmoII(T)

If F > Incumbente

Incumbente F

Tinc T

Hinc H

Vecindario 1

EndIf

EndFor

EndFor

Result Hinc, Tinc

Inicialmente el vecindario de búsqueda consiste en modificar de forma aleatoria una posición en el vector T, posteriormente, si esta modificación no genera una mejora en la función objetivo se procede a modificar dos posiciones y así sucesivamente, en el momento en que la incumbente sea actualizada se regresa nuevamente al primer vecindario. Esta metodología de búsqueda local permite diversificar cuando la función objetivo no es mejorada y hacer una búsqueda local más detallada en el momento de actualizarse la incumbente, de esta forma se logra un algoritmo computacionalmente eficiente.

5.7.2. Algoritmo de búsqueda aleatoria real

El segundo algoritmo determina la variable H a partir un vector T, para ello utiliza un algoritmo de búsqueda aleatoria que modifica iterativamente una posición del vector H reduciendo paulatinamente el ancho de búsqueda, para ello se utiliza una función delta definida como

(5.14)

En donde R corresponde a un número aleatorio en el intervalo [-1,1], mientras que k es la iteración actual e IP es el número total de iteraciones del algoritmo. En las primeras iteraciones, el factor que multiplica a R es cercano a 1, por tanto los movimientos son altamente aleatorios, a medida que el algoritmo evoluciona se hace mas determinístico por lo cual este factor se acerca a cero. El valor de Hi

estará dado por

Page 123: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

117

(5.15)

Este algoritmo está inspirado en la filosofía del recocido simulado [19] en donde a medida que evoluciona el grado de aleatoriedad disminuye.

Algoritmo II: Búsqueda aleatoria real

Datos de entrada IP, T

Hinc Aleatorio

Incumbente 0

For k = 1 To IP

H Hinc

j Aleatorio Entero

delta aleatorio(-1,1)*((1-k/(IP+1))^0.5)

H[j] H[j] + delta

If H[j] > 1 Or H[j] < 0

H[j] Aleatorio

EndIf

F AlgoritmoIII(T,H)

If F > Incumbente

Incumbente F

Hinc H

EndIf

EndFor

Result Hinc

5.7.3. Algoritmo constructivo

El algoritmo constructivo ubica las piezas en los diferentes sub-espacios definidos por los vectores H y T. Como cada sub-espacio debe ubicar arreglos del mismo tipo solo vasta determinar cuál es el desperdicio para cada tipo de arreglo asegurando se cumpla la restricción de demanda como se muestra a continuación.

Page 124: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

118

Algoritmo III: Constructivo

Datos de entrada T,H

For k = 1 To Ns

(Xk,Yk) Tamaño del sub-espacio k

Max 0

For i = 1 To n

a Entera( Xk / xi )

b Entera ( Yk / yi )

z min(a*b, Di)

If z*Ai > Max

Max = z*Ai

Result(k) [z,i]

EndIf

EndFor

EndFor

Page 125: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

119

6. PRUEBAS Y RESULTADOS OBTENIDOS

Figura 6. Tabla 6.

6.1. Solución mediante el algoritmo genético modificado de Chu-Beasley

Se usó la codificación propuesta en 4.4.2. Se propusieron dos casos de prueba para evaluar la eficiencia de la codificación y hacer una revisión de las soluciones obtenidas validando que las respuestas obtenidas cumplieran con la restricción de tipo guillotina [54]

Caso 6.1

Tipo depieza

Alto Ancho Cantidad

Tablero 24 38 1

1 12 19 2

2 14 19 2

3 2 4 25

4 3 38 2

5 5 19 1

6 2 2 1

Tabla 6.1. Dimensiones y cantidad de placas para caso 1.

En la figura 6.1 se muestra el vector de piezas, el tamaño de este corresponde al número de piezas a ubicarse para este caso es de 33, en el gráfico sólo se ubicará hasta la posición 25 quiere decir que de la 26 a la 33 los valores en esas casillas son iguales a cero, además se presenta el vector de secciones que indica donde inicia cada nivel. En la figura 6.2 se grafica la disposición de las piezas sobre el tablero y en la tabla 6.2 se presenta la respuesta obtenida indicando el número de piezas ubicadas con el fin de calcular la función objetivo

Page 126: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

120

Solución caso 6.1

Vector de piezas

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

3 3 3 3 3 6 3 3 3 3 0 3 3 3 3 3 3 3 3 3 4 0 0 2 2 4

Vector de Secciones

0 11 20 24 25

Figura 6.1. Vector de piezas y secciones para el caso 1

0 5 10 15 20 25 30 35 400

5

10

15

20

25

Figura 6.2. Solución obtenida para el caso 6.1

Tipo pieza Alto Ancho ÁREA CANTIDAD

ÁREA

OCUPADA

2 14 19 266 2 532

3 2 4 8 18 144

4 3 38 114 2 228

6 2 2 4 1 4

Totales 23 908

Tabla 6.2. Resultado caso 6.1

Cálculo de la función objetivo Área disponible – Área utilizada=912-908=4

Lo que indica un porcentaje de utilización del 99.12%

Page 127: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

121

Caso 6.2

Vector de piezas

9 1 0 0 0 2 0 4 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Vector de secciones

0 4 11

Figura 6.3. Vector de piezas y secciones para el caso 6.2

0 1 2 3 4 5 6 7 8 9 100

1

2

3

4

5

6

7

8

9

10

Figura 6.4. Solución obtenida para el caso 2.

Tipo Alto Ancho Cantidad

Tablero 10 10 1

1 3 2 4

2 7 2 4

3 4 2 4

4 6 2 4

5 9 1 4

6 8 4 4

7 4 1 4

8 1 10 4

9 3 7 4

10 4 5 4

Tabla 6.3. Dimensiones y cantidad de piezas.Caso 6.2

En la tabla 6.3 se muestran los datos del caso 6.2, en la figura 6.3 se presenta el vector de solución, en la figura 6.4 se presenta de forma gráfica la disposición de las piezas sobre el tablero y finalmente en la tabla 6.4 las piezas ubicadas sobre el tablero

Page 128: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

122

Tipo pieza Alto Ancho Área Cantidad Áreaocupada

1 3 2 6 1 6

2 7 2 14 4 56

4 6 2 12 1 12

9 3 7 21 1 21

Total 7 95

Tabla 6.4. Solución caso 6.2

Caso Áreadisponible

Área Usada % utilización

6.1 912 908 99.12

6.2 100 95 95%

Tabla 6.5. Resultados con propuesta de solución 6.1

Tamaño Pob. Factor de penalización

Caso1 10 2

Caso 2 20 2

Tabla 6.6. Parámetros usados

6.2. Solución mediante el algoritmo Tabú

Para resolver el problema mediante esta técnica se usó la codificación propuesta en 4.4.3, esta metodología requiere una solución de inicio que se encontró usando el algoritmo constructivo BL modificado para corte guillotina propuesto en [57] que aparece en la sección 4.32 pagina 48 de este documento. Se usaron cuatro casos de prueba para validar la metodología: los casos 6.1 y 6.2 y los sistemas de prueba 1 y 3 presentados en [11]. En la tabla 6.7 se presentan las características de ellos.

Caso Número piezas Tipos de piezas Dimensiones

6.1 34 6 24*38

6.2 40 10 10*10

6.3 106 20 2002*1001

6.4 107 20 2275*1191

Tabla 6.7. Características de los casos de prueba.

6.2.1. Caso 6.1

Para este problema se tomó como solución de inicio la obtenida después de aplicar el constructivo BL para corte guillotina.

Page 129: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

123

Figura 6.5. Solución de inicio caso 6.1

Esta solución se debe representar de acuerdo a la codificación propuesta así:

Para este caso se tienen 34 piezas , lo que indica que se pueden formar 17 clusters básicos, en este caso se cuenta con 6 tipos de piezas, por tanto para iniciar el vector de codificación se enumera así:

6 tipos de pieza +código para pieza nula=7. Lo que indica que el vector inicia en el cluster 8.

La codificación se inicia con los clusters básicos, es decir los que están formados por las piezas demandadas en cada caso. La pieza nula se representa por el número 7 y se utiliza cuando no es posible formar parejas de piezas reales como en el caso del cluster 11 donde se ubica la pieza 1 con la pieza 7. .

Cuando se acaban de ubicar todas las piezas, es decir, cuando se han formado todos los clusters básicos, se ubica el número del cluster donde terminan los clusters básicos, para este caso es el número 15, según el cálculo que se hizo al inicio es posible realizar 17 clusters, por tanto de 8 a 15 se han creado 8 clusters, hacen falta 9 clusters; de allí se deduce que para formar el siguiente nivel se inicia en Cluster 15+9 clusters que faltan =24, el número para el nuevo cluster es 25.

Page 130: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

124

En el cluster 25 se inician los clusters de segundo nivel que representan combinaciones de clusters básicos

8 9 10 11 12 13 14 15 …………….. Clusters

3,6 3,3 3,3 1,7 4,7 3,3 3,3 3,7 Piezas

25 26 27 28 29 30 31

8,9 10,25 11,26 12,27 13,14 29,15 30,28

Figura 6.6. Solución de inicio obtenida para el caso 6.1

Page 131: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

125

63 33 3

8 9

25

3

10

71

11

74

12

3

13

26

27

28

3 33

14

73

15

29

30

31

Figura 6.7. Árbol asociado a la codificación de la figura 6.5

Page 132: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

126

Figura 6.8. Solución final para el caso 6.1

6.2.2. Caso 6.2

Para este caso se tomó una solución de inicio aleatoria infactible para observar como se comportaba el sistema partiendo de una solución de mala calidad y además infactible.

Figura 6.9. Solución de inicio para el caso 6.2

Page 133: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

127

Figura 6.10. Solución final caso 6.2

6.2.3. Caso 6.3

Este caso corresponde al caso 1 de los problemas de prueba que aparecen en [11], anexo1.

La solución de inicio se construyó con el constructivo BL.

Figura 6.11. Inicial caso 6.3

Page 134: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

128

Figura 6.12. Solución Final caso 6.3

6.2.4. Caso 6.4

Corresponde al caso 3 de la referencia [11], anexo 1. Solución de inicio obtenida con el constructivo BL para corte guillotina

Figura 6.13. Inicial caso 6.4

Page 135: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

129

Figura 6.14. Solución final caso 6.4

En la sección 5.4 se definieron los criterios de vecindad, a continuación se recordarán para explicar los resultados obtenidos.

Criterio 1 (C1): Si la configuración es factible y hay desperdicio general pero ningún cluster presenta desperdicio individual, generar configuraciones vecinas insertando piezas en los clusters vacíos, es decir en los clusters que aún no han sido utilizados en la configuración actual.

Criterio 2 (C2): Si la configuración es factible y presenta clusters con desperdicios individuales, buscar e insertar piezas con áreas menores o iguales a los desperdicios de los clusters que los presenten.

Criterio 3 (C3): Si la configuración es factible y presenta clusters con desperdicios individuales, intercambiar piezas de la configuración actual con las aún disponibles, procurando disminuir el desperdicio de los clusters que los presenten.

Criterio 4 (C4): Si la configuración es infactible o si en los anteriores tres criterios no se generó el número requerido de vecinos, generar configuraciones vecinas retirando las piezas que generan infactibilidad.

Criterio 5 (C5): Si con los tres primeros criterios (configuración factible) o con el cuarto criterio (configuración infactible) no se generaron las configuraciones vecinas requeridas, crear las configuraciones restantes intercambiando piezas entre los clusters básicos vecinos no nulos completos (con por lo menos una pieza).

Criterio 6 (C6): Si con ninguno de los anteriores criterios se generó el número requerido de configuraciones vecinas, realizar cambios en los tipos de cortes

Page 136: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

130

de los clusters básicos dando prioridad a los que generen infactibilidad (caso infactible) y/o a los que presenten desperdicios (caso factible).

En la tabla 6.8 se observan las iteraciones usadas con cada criterio de vecindad y el factor de penalización utilizado en la función objetivo usado para las configuraciones infactibles y denotado por .

C1 C2 C3 C4 C5 C6

Caso 1 10 10 10 15 0 0 25

Caso 2 10 10 40 0 0 0 5

Caso 3 20 20 10 0 0 10 7

Caso 4 10 10 30 10 10 10 20

Tabla 6.8. Número de vecinos y penalización

Una parte importante de BT requiere la definición del número de iteraciones durante las cuales un atributo (en este caso una pieza) permanecerá tabú, es decir, sin poderse mover de su posición, ya sea dentro o fuera de la configuración actual o cualquier otra con relación inclusive con otros atributos, como por ejemplo, de intercambio. En el presente trabajo se definieron cuatro tipos de iteraciones tabú:

K1 = Iteraciones tabú para piezas que entran a la configuración actual.

K2 = Iteraciones tabú para que piezas salen de la configuración actual.

K3 = Iteraciones tabú para piezas que se intercambian (dentro y fuera de la configuración actual).

K4= Iteraciones tabú para piezas que intercambian (dentro de la configuración actual).

En la tabla 6.9 se muestran los valores usados como iteraciones tabú para los cuatro casos de prueba.

Tradicionalmente la configuración inicial puede ser generada aleatoriamente, pero hay muchas otras alternativas basadas en métodos constructivos como la estrategia BL modificado para corte guillotina que entregan respuestas satisfactorias [57]. En el desarrollo del trabajo surgió la inquietud acerca de la incidencia de la calidad de la solución de inicio sobre la respuesta final con base en esto se realizaron pruebas para los distintos casos usando diferentes soluciones de inicio, para observar el efecto sobre la respuesta encontrada después de varias iteraciones. En las tablas 6.10 se presentan las respuestas encontradas.

Page 137: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

131

Caso K1 K2 K3 K4

Caso 6.1 7 7 7 7

Caso 6.2 7 7 7 7

Caso 6.3 5 5 5 5

Caso 6.4 7 7 7 7

Tabla 6.9. Iteraciones tabú

Caso Estrategia

de inicio

Calidad Solución

Inicio (%)

Calidad

Solución Fin (%)

Número

Iteraciones

6.1 aleatoria 62.00 100 500

6.1 aleatoria 69.19 100 500

6.1 BL mod 95.39 100 500

6.2 aleatoria 22 92 500

6.2 aleatoria 31 96 500

6.2 aleatoria 78 88 500

6.2 BL mod 92 96 500

6.3 aleatoria 48.94 79.78 5000

6.3 aleatoria 75.66 88.44 5000

6.3 BL mod 96.87 98.93 5000

6.4 aleatoria 52.06 78.59 5000

6.4 aleatoria 74.16 79.49 5000

6.4 BL mod 93.57 98.34 5000

Tabla 6.10. Respuestas obtenidas desde diferentes soluciones de inicio

Page 138: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

132

6.3. Solución usando un algoritmo híbrido constructivo de búsqueda en vecindad variable y recocido simulado

En la implementación de este algoritmo se utilizó la codificación propuesta en 4.4.4 Se tomaron 50 casos de prueba de la literatura especializada que pueden ser obtenidos de [11]. Cada caso presenta 20 tipos de piezas rectangulares a ser ubicadas sin permitir rotación.

Después de calibrar los parámetros a través de 1000 corridas del algoritmo para distintos casos, los mejores resultados se obtuvieron con los siguientes valores

Número de capas 3

Iteraciones globales (IG) 5000

Iteraciones parciales (IT) 1000

Tabla 6.11. Valor de los parámetros

Las iteraciones globales se refieren al número de iteraciones del algoritmo I mientras que las iteraciones parciales se refieren al número de iteraciones del algoritmo II. Este algoritmo está descrito en la sección 5.7

En las tablas 6.12 y 6.13 se muestran los 50 casos donde se comparan las respuestas obtenidas en función del área utilizada y el porcentaje de utilización. Para 42 de ellos se obtuvieron mejores respuestas que las mejores conocidas. Cada caso se corrió 10 veces con los parámetros de la tabla 6.11.

Page 139: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

133

Caso de Prueba Respuesta de la Literatura Respuesta algoritmo propuesto

Caso Área Disponible Área utilizada Porcentaje

de uso

Área utilizada Porcentaje

de uso

Diferencia

1 2004002 1964584 0.9803 1990174.386 0.9931 25590.3862

2 2941249 2867218 0.9748 2887424.143 0.9817 20206.1433

3 2709525 2656454 0.9804 2679178.32 0.9888 22724.3200

4 2479752 2370496 0.9559 2443299.646 0.9853 72803.6456

5 2319604 2281600 0.9836 2275995.445 0.9812 -5604.5552

6 2976190 2918503 0.9806 2931249.531 0.9849 12746.5310

7 2265650 2227422 0.9831 2240954.415 0.9891 13532.4150

8 2272792 2238658 0.9849 2247791.288 0.989 9133.2880

9 2764384 2690038 0.9731 2717389.472 0.983 27351.4720

10 2624232 2574750 0.9414 2579620.056 0.983 4870.0560

11 3235950 3115873 0.9628 3162817.53 0.9774 46944.5300

12 2921333 2837743 0.9713 2856771.541 0.9779 19028.5407

13 2553588 2501400 0.9795 2525753.891 0.9891 24353.8908

14 2436480 2343169 0.9617 2350959.552 0.9649 7790.5520

15 3072540 3017184 0.9819 3031675.218 0.9867 14491.2180

16 2174340 2102756 0.9670 2136723.918 0.9827 33967.9180

17 2401595 2276323 0.9478 2317299.016 0.9649 40976.0155

18 2827455 2736919 0.9679 2751961.952 0.9733 15042.9515

19 2181600 2145051 0.9832 2149966.8 0.9855 4915.8000

20 3157786 2994717 0.9483 3050737.055 0.9661 56020.0546

21 2953340 2900376 0.9820 2892501.196 0.9794 -7874.8040

22 3204790 3066344 0.9568 3086853.728 0.9632 20509.7280

23 2763800 2676037 0.9682 2686966.36 0.9722 10929.3600

24 2408892 2287330 0.9495 2292060.738 0.9515 4730.7380

25 3163699 3037774 0.9601 3108967.007 0.9827 71193.0073

Tabla 6.12. Resultados para los casos del 1 al 25

Page 140: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

134

Caso de Prueba Respuesta de la Literatura Respuesta algoritmo propuesto

Caso Área

Disponible

Área

utilizada

Porcentaje

de uso

Área

utilizada

Porcentaje

de uso Diferencia

26 2805712 2695345 0.9606 2748756.046 0.9797 53411.0464

27 2526230 2383242 0.9433 2479747.368 0.9816 96505.3680

28 2532060 2446799 0.9663 2490027.804 0.9834 43228.8040

29 2230605 2158548 0.9676 2186885.142 0.9804 28337.1420

30 2514609 2471150 0.9827 2462305.133 0.9792 -8844.8672

31 2727200 2583155 0.9471 2666656.16 0.9778 83501.1600

32 2699860 2618956 0.9700 2628853.682 0.9737 9897.6820

33 2262910 2216886 0.9796 2224666.821 0.9831 7780.8210

34 2330028 2279436 0.9782 2284359.451 0.9804 4923.4512

35 2882646 2787529 0.9670 2798761.001 0.9709 11232.0014

36 2658656 2508545 0.9435 2588999.213 0.9738 80454.2128

37 2817192 2667081 0.9467 2738592.343 0.9721 71511.3432

38 2618181 2566844 0.9803 2567650.107 0.9807 806.1067

39 2097396 2029177 0.9674 2068032.456 0.986 38855.4560

40 2597700 2540141 0.9778 2531198.88 0.9744 -8942.1200

41 2718228 2686780 0.9884 2677182.757 0.9849 -9597.2428

42 2379541 2306316 0.9692 2339088.803 0.983 32772.8030

43 2519286 2419778 0.9605 2454036.493 0.9741 34258.4926

44 2575800 2493761 0.9681 2507026.14 0.9733 13265.1400

45 2497225 2418204 0.9683 2414067.408 0.9667 -4136.5925

46 2817360 2693446 0.9560 2750588.568 0.9763 57142.5680

47 2484896 2388374 0.9611 2414821.933 0.9718 26447.9328

48 3007466 2943027 0.9785 2933482.336 0.9754 -9544.6636

49 2868953 2819262 0.9826 2815016.684 0.9812 -4245.3164

50 2234752 2161976 0.9674 2194973.414 0.9822 32997.4144

Tabla 6.13. Resultados para los casos del 26 al 50

Page 141: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

135

En las gráficas 6.14 y 6.15, se comparan las mejores respuestas obtenidas para todos los casos con la mejor respuesta conocida en la literatura.

0.9400

0.9500

0.9600

0.9700

0.9800

0.9900

1.0000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Casos de prueba

Po

rcen

taje

de

uso

Literatura especializada

Algoritmo propuesto

Figura 6.15. Comparación resultados del 1 al 25

0.9400

0.9500

0.9600

0.9700

0.9800

0.9900

1.0000

26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Casos de prueba

Po

rcen

taje

de

uso

Literatura especializada

Algoritmo propuesto

1

Figura 6.16. Comparación de resultados del 26 al 50

Page 142: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

136

En la tabla 6.14 y la figura 6.16, se presenta un resumen de los resultados obtenidos con base en el porcentaje de mejora. Se observan respuestas de mejor calidad para la gran mayoría de los casos reportados en [11] y los no superados quedaron muy próximos a la mejor respuesta conocida.

Resumen de Respuestas Número de casos

Soluciones no superadas 8

Soluciones superadas entre 0 y 1 % 21

Soluciones superadas entre 1 y 2 % 14

Soluciones superadas entre 2 y 3 % 3

Soluciones superadas entre el 3 y 4 % 3

Soluciones superadas en mas de 4 % 1

Tabla 6.14. Resumen de respuestas

-8

21

14

3 31

-10

-5

0

5

10

15

20

25

1 2 3 4 5 6

Figura 6.17. Resumen de respuestas

Con el fin de conocer la eficiencia del algoritmo propuesto se realizaron 90 corridas para el caso 25 cuyos resultados fueron agrupados según la distribución de frecuencias mostrada en la tabla 6.17. En las figura 6.17 se presenta la salida del algoritmo, en la figura 6.18 se grafico el árbol correspondiente a la salida teniendo en cuenta que V representa un corte horizontal y H representa un corte vertical y en la figura 6.19 se presenta la disposición final sobre el tablero obtenida para el caso de prueba 10 de la referencia [11]

Page 143: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

137

Figura 6.18. Salida del algoritmo para el caso 10

1

2 3

8 14131211109 15

4 5 6 7

H(68.98%)

H(52.50%)H(0.0003%)

V(88.28%) V(43.99%) V(0.011%) V(90.53%)

Capa 1

Capa 2

Capa 3

Figura 6.19. Diagrama de árbol de la figura 6.17

Entre las figuras 6.20 y 6.22 se muestra paso a paso como se divide el tablero por capas para obtener los subespacios

Page 144: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

138

2

3

H(68.98%)

Figura 6.20. Capa 1

4

5

7

6

Figura 6.21. Capa 2

12 y 13

8 9

10 11

14 15

Figura 6.22. Capa 3

Page 145: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

139

0 500 1000 1500 2000 25000

200

400

600

800

1000

1200

1400Funcion objetivo:98.835 %

2028

1294

2:de tipo:16:de tipo:15

5:de tipo:74:de tipo:9

6:de tipo:118:de tipo:13

Figura 6.23. Solución obtenida para el caso 10.

1

95 1409 95 9543 95 5476 6 6 67

95 9543 95 7678 95 8611 4 4 44

95 7678 96 0813 95 9245 8 8 89

96 0813 96 3949 96 2381 5 5 56

96 3949 96 7084 96 5516 13 14 44

96 7084 9

i i i il ,l x n Probabilidad de ocurrencia

. , . . . %

. , . . . %

. , . . . %

. , . . . %

. , . . . %

. , 7 0219 96 8652 5 5 56

97 0219 97 3354 97 1787 25 27 78

97 3354 97 6489 97 4922 7 7 78

97 6489 97 9625 97 8057 13 14 44

97 9625 98 2760 98 1192 4 4 44

. . . %

. , . . . %

. , . . . %

. , . . . %

. , . . . %

Tabla 6.15. Distribución de frecuencias caso 25

Para realizar el ajuste a una distribución de probabilidad fue usado el programa crystall ball 2000.2.2 obteniéndose el resultado mostrado en la figura 6.24.

Page 146: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

140

Figura 6.24. Distribución de probabilidad caso 25

Esta distribución pertenece a una normal con parámetros:

96 8567 0 7585. .

Con base en estos parámetros se calcula la probabilidad de encontrar un valor igual o mejor a la mejor solución reportada en la literatura que para este caso es de 96.019

96 0197 96 856796 0197 1 10 1 1 10

0 7585

. .P X . P Z P Z . P Z .

.

1 10 0 8643P Z . .

De acuerdo con lo anterior hay una probabilidad de 86.43% de obtener una respuesta mejor o igual a la reportada en la literatura.

Page 147: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

141

7. Conclusiones y recomendaciones

Se propusieron tres tipos de codificación que garantizan respuestas tipo guillotina: Codificación a través de dos vectores uno de piezas y otro de secciones, codificación en diagrama de árbol mediante clusters y codificación en diagrama de árbol por secciones.

El tipo de codificación para representar el problema bidimensional restricto basado en árboles binarios facilita la generación de soluciones vecinas y el cálculo del valor de la función objetivo.

Los tipos de codificación propuestos basados en árboles binarios permiten implementar otras técnicas metaheurísticas tales como los Algoritmos Genéticos y Colonia de Hormigas sólo con una adaptación a los operadores específicos de cada método.

Fueron implementados tres algoritmos para la solución del problema de corte bidimensional tipo guillotina: algoritmo genético modificado de Chu-Beasley, algoritmo de búsqueda tabú y un algoritmo híbrido que combina técnicas inspiradas en búsqueda en vecindario variable, recocido simulado y técnicas constructivas

El desempeño del algoritmo genético modificado de Chu-Beasley muestra que los bloques constructivos son beneficiados con este tipo de codificación ya que se preservan, a través de selección proporcional, al manejar división por secciones. La optimalidad total se mejora cuando el área desperdiciada en una sección es reducida. Por esta razón, el algoritmo presenta un mejor desempeño cuando el factor de penalización por secciones es escogido adecuadamente.

En el algoritmo genético modificado de Chu-Beasley la optimalidad se mejora haciendo mutaciones suaves a los bloques de mala calidad hasta que mejore o hasta un número de intentos determinado. Este paso es similar a una búsqueda intensiva. Cuando una sección no tiene área desperdiciada se debe procurar mantener sus elementos unidos como un bloque. Esto se logra dándole a esta sección una baja probabilidad de ser modificada.

Se ha determinado el conjunto de parámetros que hacen que tanto el algoritmo de búsqueda Tabú como el algoritmo híbrido tengan un mejor desempeño

Page 148: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

142

computacional para cada uno de los casos de prueba calibrándolos por ensayo y error.

Fueron estudiados algoritmos de inicialización para el problema de corte bidimensional tipo guillotina con el fin de observar su impacto sobre el resultado final.

Para las técnicas metaheurísticas, en la literatura especializada se establece que el óptimo global es obtenido independientemente de la solución inicial. En la práctica se ha observado que esta afirmación podrá ser válida en problemas de baja y mediana complejidad matemática. Por el contrario, para problemas de gran tamaño y alta complejidad matemática la solución inicial influye en la calidad de la solución final.

La metodología de BL modificado propuesta es una adecuada técnica de inicialización, para el problema de corte bidimensional tipo guillotina, fácil de implementar y de bajo consumo computacional.

Los patrones de corte obtenidos son de fácil implementación práctica, especialmente cuando no se cuenta con máquinas de corte de control numérico ya que se entregan disposiciones homogéneas para cortar las piezas de acuerdo a la demanda.

Se observó en el desarrollo de este trabajo que para obtener una buena alternativa para la solución de este tipo de problema se debe aplicar conjuntamente una codificación eficiente con técnicas metaheurísticas.

En la implementación del algoritmo de búsqueda Tabú Se superaron las mejores respuestas reportadas para los casos 6.1,6.2 obtenidas con la propuesta del algoritmo genético modificado de Chu- Beasley adicionalmente se superó el caso 6.3, de la literatura especializada

La escala de los problemas de prueba 6.3, 6.4 y todos los de la referencia [11] son comparables con muchos problemas prácticos de corte.

Los resultados computacionales obtenidos con el algoritmo híbrido fueron superados para la mayoría de los casos y los no superados presentan respuestas cercanas a las reportadas en la literatura especializada.

Se ha realizado un análisis estadístico para demostrar la eficiencia de la metodología propuesta para el caso del algoritmo híbrido con el fin de tener conocimiento sobre el porcentaje de mejora al momento de realizar un ensayo en particular. Para ello se tomaron 90 muestras de un mismo caso, cuyos parámetros se ajustan a una distribución normal. Los resultados obtenidos muestran que el algoritmo propuesto presenta una alta eficiencia en la gran mayoría de los casos estudiados.

Page 149: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

143

Para trabajos futuros se recomienda analizar el comportamiento de otros algoritmos combinatoriales con diferentes tipos de inicializadores.

Dentro de los trabajos futuros podrían resolverse casos de prueba en donde las condiciones del problema permitan rotación de las piezas; además, se podría hacer la extensión para el problema de corte bidimensional cuando las figuras demandadas son polígonos, planteando que puede realizarse una reducción del problema a uno de empaquetamiento de rectángulos con algunas consideraciones.

Otros tipos de problemas de empaquetamiento pueden ser abordados a partir de los resultados presentados en este trabajo, entre ellos el empaquetamiento tridimensional rectangular, cilíndrico y empaquetamiento en rollos de material.

Page 150: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

144

8. Bibliografía

[1]ANDREATTA,A. RIBEIRO,C. Heuristics for the phylogeny problem.Journal of Heuristics,8:429-447,2002.

[2]ARENALES,M.MORABITO,R. An graph approach to the solution of two dimensional non-guillotine cutting problems. European Journal of Operational Research, 84:599-617,1995

[3]BEASLEY,J.E A population heuristic for constrained two-dimensional nonguillotine cutting, European Journal of Operational Research 156 601-627,2004.

[4] BEASLEY,J An exact two-dimensional non-guillotine cutting tree search procedure, Operational Research 33: 49-64.1985.

[5] BELACEL,N ,HANSEN,P AND MLADENOVIC,N Fuzzy J-means: a new heuristic for fuzzy clustering. Pattern Recognition, 35(10):2193–2200, 2002.

[6]BELTRAN E,. CALDERÓN Procedimientos Constructivos Adaptativos (Grasp) Para El Problema Del Empaquetado Bidimensional. IX Conferencia De La Asociación Española Para La Inteligencia Artificial. VI Jornadas De Transferencia Tecnológica De Inteligencia Artificial (Volumen II)), pp. 755-764. Gijón, España. Del 14 Al 16 De Nov. De 2001.

[7] BIRGIN, E. Empaquetamiento usando herramientas de programación no lineal X ELAVIO Escuela Latinoamericana de Verano de Investigación Operativa Montevideo, Uruguay 16 - 20 de febrero, 2004.

[8] BRIMBERG,J HANSEN,P MLADENOVíC,N,Taillard E. Improvements and comparison of heuristics for solving the multisource weber problem. Operations Research, 48(3):444–460, 2000.

[9]CAPRARA,A. Y MONACI,M.On the two dimensional knapsack problem. Operations Research Letters, 32 (1):5-14.2004

[10]CHEN, C. S., LEE, S. M., SHEN, Q. S.. “An Analytical Model for the Container Loading Problem”, European Journal of Operational Research, v. 80, pp. 68-76, 1993

Page 151: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

145

[11]CUI Y... An exact algorithm for generating homogenous T-shape cutting patterns. Computers & Operations Research. 2007, 34(4): 1107-1120. Disponible en Internet en : http://www.gxnu.edu.cn/Personal/ydcui/English/Paper.htm

[12]DA SILVA ARAUJO,R Uma Abordagem para o Problema de Corte Guilhotinado Bi-dimensional para Peças Regulares com a Utilização de P-Medianas e Pesquisa Tabu. Universidade Do Vale Do Rio Dos Sinos Centro De Ciências Exatas E Tecnológicas Curso De Informática São Leopoldo, novembro de 2004

[13] DOWSLAND, K DOWSLAND. W Packing Problems. European Journal of

Operational Research, 56(1):2-14, 1992.

[14]DYCKHOFF,H Classification of real world trim loss problems. En:G.Fandel et al.(Eds), Essays on Production Theory and Planning, Springer-Verlag, Berlin, páginas 191-208.1990

[15]ESPEJO, L. ACOSTA ,G., GALVÃO, “Uma Aproximação da Fronteira Eficiente para um Problema de Localização Hierárquico de Máxima Cobertura”, Pesquisa Operacional, v. 24, n. 2, pp. 303-321, 2004.

[16]FEKETE, S.P.;SCHEPERS J.On more-dimensional packing III: Exact algoritms. Submitted to: Discrete Applied Mathematics.1997

[17] FERNÁNDEZ,A DUARTE,A. Método Multi-Arranque aplicado al problema del Strip Packing Problem bidimensional dispopnible en Internet V Congreso de Metaheurísticas, Algoritmos Evolutivos y Bioinspirados. Puerto de la Cruz (Tenerife), 14-16/02/2007

[18] FU, CHEN ,LIM A, RODRIGUES B. Two-Dimesional Packing for irregular shaped objects. 36th Hawaii International Conference on System sciencies. Computer Society. IEEE. 2002

[19] GALLEGO R. ESCOBAR A. ROMERO R. Técnicas de optimización combinatorial. Textos universitarios. Universidad Tecnológica de Pereira. Abril 2006.

[20] GEORGE, J.A., GEORGE J.M., LAMAR.,B.W. Packing different-sized circles into a rectangular container. European Journal of Operational Research 84, 693-712

[21]GILMORE, P. GOMORY R, A linear programming approach to the cutting stock problem, Operations Research 9 :849-859.1961

[22]GILMORE, P. GOMORY R, Gomory, A linear programming approach to the cutting stock problem-partII, Operations Research 1194-119.1963

[23]GILMORE;P. GOMORY.R The Theory and Computation of Knapsack Functions. Operations Research, 14:1045-1074, March 1966.

Page 152: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

146

[24]GILMORE, P. GOMORY R, Multistage cutting problems of two and more dimensions, Operations Research 13 : 94-119 .1965

[25] HADJICONSYANTINOU , N CHRISTOFIDES, An exact algorithm for general, orthogonal,two dimensional knapsack problems. European Journal of Operacional Research 83:39-56.

[26]HANSEN,P., NENAD M. MORENO J. Búsqueda de entorno variable. Inteligencia Artificial, Revista Iberoamericana de Inteligencia Artificial. No.19 (2003),pp. 77-92]

[27]HANSEN,P., NENAD,M. MLADENOVIC. Variable neighborhood search for the p-median. Location Science, 5:207–226, 1997.

[28]HANSEN,P., NENAD,M. MLADENOVIC An introduction to variable neighborhood search. In S. Voss et al., editor, Metaheuristics Advances and Trends in Local Search Paradigms for Optimization, pages 433– 458. Kluwer, 1999.

[29]HANSEN,P.,MLADENOVIC. Developments of variable neighborhood search. Les Cahiers du GERAD, G-2001-24, 2001.

[30]HINXMAN, A.I.(1977). A two dimensional trim-loss problem with sequencing constraints. Advanced Paper of IJCAI-77 MTI, páginas 859-854.

[31]HOPPER, E.TURTON, B. An empirical investigation of meta-heuristic and heuristic algorithms for a 2D packing problem. European Journal of Operational Research, 128 (2001) 34. Disponible en internet en: http://www.diku.dk/pisinger/bouknap.c.

[32] JAKOBS,S Theory And Methodology On Genetic Algorithms For The Packing Of Polygons. European Journal Of Operational Research. Vol.88, p87-100. 1996.

[33] LAI,K.K., CHAN,J.W.M. A evolutionary algorithm for the rectangular cutting stock problem. International Journal of Industrial Engineering, 4:130-139.1997

[34]LEUNG,T.W.,YUNG,C.H.,TROUTT,M.D.. Applications of genetic search and simulated annealing to the two-dimensional non-guillotine cutting stock problem. Computers and Industrial Engineering, 40:201-214.2001

[35]LITVINENKO, Vladimir I., BURGHER, J. A., et al. ”The Application of the Distributed Genetic Algorithm to the Decision of the Packing in Containers Problem”, In: Proceeding of the 2002 IEEE International Conference on Artificial Intelligence Systems (ICAIS’02), v.1, Divnomorskoe, September, 2002.

[36]LODI,A.,MARTELLO S,,VIGO D, Models and bounds for two dimensional level packing problems, Journal of Combinatorial Optimization, to appear

Page 153: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

147

[37]MLADENOVÍC. A variable neighborhood algorithm - a new metaheuristic for combinatorial optimization. In Abstracts of Papers Presented at Optimization Days,, page 112, 1995.

[38]MLADENOVÍC,N PETROVÍC,J KOVACEVÍC- VUJCÍC. Solving spread spectrum radar polyphase code design problem by tabu search and variable neighborhood search. European Journal of Operational Research, 2004 (to appear).

[39]MORABITO; R. y MORALES, A. A simple and effective recursive procedure for manufacturer’s ballet loading problem. Journal of the Operational Research Society, 49: 819-828.1998

[40]MORABITO; R. y MORALES, A. Errata ´A simple and effective recursive procedure for manufacturer’s ballet loading problem’. Journal of the Operational Research Society, 50:876.1999

[41] PARREÑO F Algoritmos Heurísticos Y Exactos Para Problemas De Corte No Guillotina En Dos Dimensiones. Tesis Doctoral. Universidad De Valencia, Servei De Publicacions. España 2004

[42]RAIDL, GÜNTHER R.. “A Weight-Coded Genetic Algorithm for the Multiple Container Packing Problem”. In: Proceeding of the 14th ACM Symposium on Applied Computing, v. 1, pp. 596-603, San Antonio, July, 1999.

[43]RESENDE M,CANUTO,S,RIBEIRO,C Local search with perturbations for the prize-collecting Steiner tree problem in graphs. Networks, 38:50–58, 2001

[44]C.C. Ribeiro and M.C. Souza. Variable neighborhood descent for the degree constrained minimum spanning tree problem. Discrete Applied Mathematics, 118:43–54, 2002.

[45]RODRIGUES, Rosiane de Freitas. Complexida de Computacional – NP-Completude. ICE – Departamento da Ciência da Computação, 2000.

[46] RODRIGUES, L. . Un Algoritmo Genético para o Problema de Carregamento de Container. Disertación de (Meaestría en Ingeniería Eléctrica) | Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2005.

[47] SALKIN,H KLUYVER,C The snapsack Problem: A survey*. Naval Research Logistics Quartely, (22):127-144, 1975.

[48]SCHEITHAUER, G., TERNO,J. Modeling of packing problems. Optimization, 28:63-84.1993

[49]SWEENEY,P PATERNOSTER,R. Cutting and Packing Problems: A categorized, application-orientated research bibliography. Journal of the

Operational Research Society, 43(7):691-706, 1992.

Page 154: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

148

[50] TORO E GRANADA M.,.ROMERO R, Algoritmo memético aplicado al problema de asignación generalizada, Revista Tecnura No 16, Universidad Distrital F.J.C., I-2005, Colombia.

[51]TORO E, GRANADA M, FRANCO J. Programación óptima de horarios de clase usando un algoritmo memético. Revista Scientia et Technica, 2006

[52] TORO E.,GRANADA M. Solución al Problema de la Asignación Generalizada Usando el Método de Búsqueda Tabú. Revista Scientia et Technica (24), 61-67, U.T.P., Colombia.2004

[53] TORO E. M . GRANADA M, Método Híbrido Entre El Algoritmo Genético De Chu-Beasley Y Simulated Annealing Para La Solución Del Problema De Asignación Generalizada, Revista Scientia et Technica (27), 61-67, U.T.P., Colombia

[54] TORO, E. GRANADA M. Problema de empaquetamiento rectangular bidimensional tipo guillotina resuelto por algoritmos genéticos. Revista Scientia et Techica. Universidad Tecnológica de Pereira año XIII. número 35. Agosto 2007.

[55] TORO E. RUEDA A., GRANADA M. Algoritmo de Búsqueda Tabú aplicado a la solución del problema de corte bidimensional guillotinado. Revista Scientia et Techica. Universidad Tecnológica de Pereira. Artículo en revisión.

[56] TORO E., GARCESA.,RUIZ H.. Solución al problema de empaquetamiento bidimensional usando un algoritmo híbrido constructivo de búsqueda en vecindad variable y recocido simulado. Artículo en revisión Revista Ingeniería y Competitividad Universidad del Valle

[57]TORO E. RUEDA A RUIZ H. Efecto de la configuración inicial en la solución del problema de corte bidimensional usando el algoritmo búsqueda tabú. Revista Scientia et Techica. Universidad Tecnológica de Pereira. Artículo en revisión.

[58]TSAI, R.D. MALSTROM, E.M. y MEEKS, H.D. (1988). A two dimensional palletizing procedure for warehouse loading operations. IIE Transactions, 20:418-425.

[59]VENDRAMINI E. “Optimización del problema de cargamento de contenedores usando una metaheurística eficiente”.Tesis Doctoral. UNESP.Brasil.2007

[60]WHITTAKER,R.. A fast algorithm for the greedy interchange for large-scale clustering and median location problems. INFOR, 21:95–108, 1983.

Page 155: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

149

9. ANEXOS

9.1. CUI Yadoing . An exact algorithm for generating homogenous T-shape cutting patterns. Computers & Operations Research. 2007, 34(4): 1107-1120

Page 156: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

1

Heuristic and exact algorithms for generating homogenous constrained three-staged cutting patterns

Yaodong Cui , a,

aDepartment of Computer Science, Guangxi Normal University, Guilin 541004, China

Available online 3 April 2006.

Abstract

An approach is proposed for generating homogenous three-staged cutting patterns for the constrained

two-dimensional guillotine-cutting problems of rectangles. It is based on branch-and-bound procedure

combined with dynamic programming techniques. The stock plate is divided into segments. Each segment

consists of strips with the same direction. Only homogenous strips are allowed, each of which contains

rectangles of the same size. The approach uses a tree-search procedure. It starts from an initial lower

bound, implicitly generates all possible segments through the builds of strips, and constructs all possible

patterns through the builds of segments. Tighter bounds are established to discard non-promising

segments and patterns. Both heuristic and exact algorithms are proposed. The computational results

indicate that the algorithms are capable of dealing with problems of larger scale. Finally, the solution to a

cutting problem taken from a factory that makes passenger cars is given.

Keywords: Cutting; Packing; Cutting stock; Constrained two-dimensional cutting

Article Outline

1. Introduction

2. Some basic concepts

3. The approach

3.1. Generating strips

3.2. Generating segments through vertical build of strips

3.3. Generating three-staged patterns through horizontal build of segments

3.3.1. Builds of segments

3.3.2. The upper bound of the patterns related to a segment

3.3.3. The lower bound of the patterns related to a segment

3.3.4. The upper and lower bounds of the full patterns related to a partial pattern

3.3.5. The initial lower bound

3.3.6. Inferior blocks

3.4. The exact algorithm

3.5. The heuristic algorithms

4. The computational results

4.1. Test on benchmark problems

4.2. Test on random problems of larger scale

4.3. Solution to a real cutting problem

5. Conclusions

Acknowledgements

References

1. Introduction. The constrained two-dimensional cutting (CTDC) problem discussed is as follows: mtypes of rectangles are to be cut from a rectangular plate with size L×W, where any cuts that are made are

restricted to be guillotine cuts. The ith type has size li×wi, value ci and demand di, i=1,…,m. Assume that

pattern A includes zi pieces of type i. Assume that N is the set of natural numbers. The mathematical

model for the CTDC problem is

The related unconstrained two-dimensional cutting problem (UTDC) is

Page 157: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

2

Both problems are denoted as the two-dimensional, rectangular SLOPP type, where SLOPP means single

large object placement problem [1]. They appear in several industrial areas, such as the cutting of metal

plate, wood plate, or plate glass into smaller rectangles. Good algorithms for these problems are important

for the improvement of material usage.

This paper proposes the homogenous three-staged patterns shown in Figs. 1 and 2, where the numbers

indicate the piece types. A three-staged pattern can be divided into pieces in three stages. For the pattern

in Fig. 1, vertical cuts divide the plate into four segments at the first stage (Fig. 1a), horizontal cuts divide

the segments into strips at the second stage (Fig. 1b), and vertical cuts divide the strips into pieces at the

third stage (Fig. 1c). A pattern is referred to as a homogenous one if only pieces of the same type can

appear in a strip; otherwise it is a general one. The pattern in Fig. 1a is an X-pattern, where the segments

are arranged horizontally from left to right. Whereas the pattern in Fig. 2 is a Y-pattern, where the

segments are arranged vertically from bottom to top.

Fig. 1. Three-staged X-pattern. (a) First stage. (b) Second stage. (c) Third stage.

Fig. 2. Three-staged Y-pattern.

Sometimes the shearing and punching process is used to divide the plate into pieces [2] and [3]. It

includes two stages. At the first stage, a guillotine shear cuts the plate into strips. At the second stage, a

stamping press punches out the pieces from the strips. Typically, a strip is fed into a stamping press that

cuts a piece from the strip with each stroke, moves the strip forward, and cuts the next piece. The feeding

distance between two adjacent pieces is referred to as a step. Fig. 3 shows two strips that may be

processed at the second stage. The approach of this paper can directly deal with the cutting of a plate into

strips with equal steps (Fig. 3a). In generating cutting patterns, the strip in Fig. 3b can be treated as a strip

consisting of rectangles. The first rectangle has a length longer than that of the others. The approach of

Page 158: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

3

this paper can be easily adapted for the case where the strips with unequal steps (Fig. 3b) are required.

The approach for the basic constrained staged cutting problem [4] cannot efficiently deal with the

problem discussed in this paper, because it is not specialized.

Fig. 3. Strips for punching. (a) A strip with equal steps. (b) A strip with unequal steps.

The homogenous three-staged patterns are applicable even if a guillotine shear is used to cut the strips

into pieces at the second stage. To cut a homogenous strip into pieces, the feeding distance for each cut

can be gauged at the start and will not change during the cutting process of the strip. Fig. 4 shows a

uniform strip and a general strip. A uniform strip contains pieces of the same width. Changing the feeding

distance becomes necessary during the cutting of a uniform strip. This makes the cutting process more

complex than that of a homogenous strip. A general strip consists of pieces of different sizes. Changing

the feeding distance is also necessary during the cutting process. Furthermore, the pieces must be trimmed

horizontally to produce the exact widths. Trimming is not necessary for homogenous or uniform strips.

For these three types of strips, the cutting process of the general strip is the most complex one, and that of

the homogenous strip is the simplest one.

Fig. 4. Uniform and general strips. (a) A uniform strip. (b) A general strip.

To simplify the cutting process of homogenous three-staged patterns, a constraint on the minimum strip

length can be used. For the pattern in Fig. 1a, the plate length is 1800. Fig. 5a shows the pattern obtained

when the minimum strip length allowed is 350, and Fig. 5b shows that when the minimum strip length

allowed is 500. Although using constraint on the minimum strip length can simplify the cutting process, it

may increase the amount of waste. Balance should be made between the simplicity of the cutting process

and the level of waste.

Fig. 5. Patterns for different minimum strip lengths. (a) A pattern of three segments. (b) A pattern of two

segments.

Many authors have investigated the CTDC problem. There exist two exact approaches: the top-down

approach [4] and [5] and the bottom-up one [6], [7], [8], [9], [10] and [11]. The top-down approach was

Page 159: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

4

first presented in [4]. It uses a tree-search procedure. All possible cuts that can be made on the stock plate

are enumerated by means of a tree in which branching corresponds to guillotine cuts and nodes represent

sub-rectangles obtained through the guillotine cut. The approach was improved in [5], in which the search

space is limited by using a bound derived from a state space relaxation of a dynamic programming

formulation of the problem. The bottom-up approach is based on the observation that any pattern

satisfying the guillotine constraint can be obtained through horizontal and vertical builds of rectangles.

All possible combinations of smaller rectangles are generated to obtain larger rectangles until no more

guillotine patterns can be obtained. Both approaches can use upper and lower bounds to discard some

non-promising branches. The patterns generated are usually difficult to cut. The approach proposed in this

paper is a bottom-up one. It can generate relatively simple cutting patterns.

Hifi and Roucairol [12] presented an approach for generating two-staged constrained cutting patterns.

Morabito and Arenales [13] proposed an AND/OR-graph approach for staged and constrained two-

dimensional guillotine cutting problems. The former is a bottom-up approach and the later a top-down

approach. Lodi and Monaci [14] presented integer and linear programming models for two-staged

constrained cutting patterns, and their algorithms are comparable to Hifi and Roucairol's exact algorithm

in computation time. These approaches can simplify the cutting process in some degree for that strips are

used. It cannot efficiently deal with the case where the strip in Fig. 3a is required. Furthermore, for

problems of relatively larger scale, the computation time of these algorithms is too long to afford because

of the tremendous solution space.

Vanderbeck [15] discussed a three-staged two-dimensional cutting-stock problem where various

constraints coming from practice are considered. He also used homogenous three-staged cutting patterns

and generated them heuristically. Only a small portion of the solution space is considered because of the

practical considerations.

This paper presents heuristic and exact algorithms for homogenous three-staged patterns. The

computational results indicate that the algorithms are efficient in computation time. The algorithms are

described only for X-patterns, which can be easily adapted for Y-patterns.

2. Some basic concepts

Assume that the sizes of the pieces and the stock plate are integers. To facilitate presentation, the

algorithms will be described only for the case where the pieces have fixed direction.

Definition 1

Strips, segments, patterns, and partial patterns: Only horizontal strips are used in X-patterns. A strip

contains one or more pieces of the same type, a segment consists of one or more strips, and a pattern

includes one or more segments. The value of a strip is the sum of the values of the pieces included, the

value of a segment is the sum of the values of the strips included, and the value of a pattern is the sum of

the segments included.

The pattern in Fig. 5a includes three segments, the third segment (counted from left to right) consists of

six strips, and the bottom strip in this segment contains five pieces of type 6.

Sometimes it is necessary to differentiate between full patterns and partial patterns. A partial pattern is

realized on a partial plate x×W, where x L. A full pattern is realized on the original stock plate L×W.

Definition 2

Normal lengths: A normal length is the multiple of a piece length. Assume that Lp is the minimum strip

length allowed, which is used to simplify the cutting pattern. Normal lengths related to the ith piece type

are

Page 160: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

5

Assume that P is the set of normal lengths. To facilitate the design of the algorithms, add 0 and L to the

above set, and arrange the elements in ascending order, namely P={p1,…,pM}, p1=0, pM=L, and pi<pi+1 for

i=1,…,M-1.

Normal lengths have the following property [8] and [16]: the optimal value of segment x×y is the same as

that of segment p(x)×y, where p(x) is the maximum normal length not larger than x.

Definition 3

Normal segments and normal patterns: The strips in a normal segment are arranged from bottom to top in

non-increasing order of their lengths. The segments in a normal pattern are arranged from left to right in

non-increasing order of their lengths. In searching for the optimal pattern, it is sufficient to consider only

normal patterns and normal segments. The reason is that any non-normal pattern can be transformed to a

normal one through position interchanging of the segments, without changing the value of the pattern, and

any non-normal segment can be transformed to a normal one through position interchanging of the strips,

without changing the value of the segment. The pattern in Fig. 5a can be transformed to the normal

pattern shown in Fig. 6.

Fig. 6. A normal pattern.

3. The approach

The approach for generating the optimal homogenous three-staged patterns consists of the following

stages: (1) Generate all possible strips; (2) Obtain all possible segments through vertical build of strips;

(3) Generate all possible three-staged patterns through horizontal build of segments, and select the best

one as the optimal solution. These three stages will be described, respectively, in Sections 3.1–3.3.

Section 3.4 presents the exact algorithm, and Section 3.5 describes the heuristic algorithms.

3.1. Generating strips

Definition 4

Possible strips for building up segments: In order to obtain all possible segments through vertical build of

strips, all possible strips must be considered. For the ith piece type, the width of the strip is wi, the number

of different strips is gi=min[di,int(L/li)]. The kth strip contains k pieces, and its value is kci, 1 k gi.

When Lp>0, the range of k should be modified to Lp/li k gi.

3.2. Generating segments through vertical build of strips

Definition 5

Vertical build of strips: Two strips A=lA×wA and B=lB×wB can form a segment C=lC×wC through vertical

build, where lC=max(lA,lB), wC=wA+wB, lC L and wC W. Moreover, the numbers of pieces in C must not

exceed the demands. The segment in Fig. 7a is obtained from the vertical build of two strips in Fig. 7b.

Page 161: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

6

Fig. 7. Vertical build of strips. (a) A segment. (b) Two strips.

Vertical build can also be performed between a segment and a strip. It should not be performed between

two segments; otherwise duplicate segments will be produced. For example, a segment with four strips

can be obtained through the vertical build of two segments, each of which contains two strips. It can also

be generated through the vertical build of a strip and a segment with three strips. Furthermore, from

Definition 3 it is sufficient only to generate normal segments.

3.3. Generating three-staged patterns through horizontal build of segments

3.3.1. Builds of segments

Definition 6

Horizontal build of segments: Segments A=lA×wA and B=lB×wB can form a partial pattern C=lC×W through

horizontal build, where lC=lA+lB, wC=max(wA,wB) W, lC L. Moreover, the numbers of pieces in C must

not exceed the demands. The pattern in Fig. 8a is obtained from the horizontal build of the two segments

in Fig. 8b.

Fig. 8. A partial pattern obtained from the horizontal build of two segments. (a) A partial pattern. (b) Two

segments.

Horizontal build can also be performed between a segment and a partial pattern. Similar to the vertical

build of strips, horizontal build of segments should not be performed between two partial patterns, and it

is sufficient only to generate normal partial patterns.

3.3.2. The upper bound of the patterns related to a segment

All possible segments can be generated through the vertical build of strips according to Definition 5.

Some of them may not appear in the optimal solution. To cut down the number of segments explicitly

considered, it is helpful to use tighter upper bound.

Assume that val(R), the value of segment R=lR×wR, is already known. Let ubound(R) be the upper bound

of a full pattern that contains R. The strips that will be combined with R later through vertical build have

lengths not longer than lR, because only normal segments will be considered. Divide the plate into the

three regions shown in Fig. 9, where a=W-wR, b=L-lR, and the arrows indicate the strip directions of the

related regions. When the full pattern is generated, region A contains only horizontal strips, and region B

Page 162: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

7

contains a partial pattern. Let UA be the upper bound of the total value of the pieces included in segment

lR×a, and UB be that in region b×W. Then

ubound(R)=val(R)+UA+UB. (1)

UA and UB must be determined before ubound(R) can be estimated.

Fig. 9. Upper bound for a pattern containing segment R.

First consider how to estimate UA. A constrained solution will be used. In a constrained solution, the

numbers of pieces must not exceed the demands. Assume that E(x,y) is the value of the optimal

constrained solution for segment x×y, where x is a normal length. To determine E(x,y), it is necessary to

consider some of the strips obtained from Definition 4. Index all possible strips of lengths not longer than

x from 1 to n. Let S={s1,…,sn} be the set of the widths and T={t1,…,tn} be the set of the values of these

strips. Let zi be the number of the ith strip included in the segment, and e(k,x,y) be the number of the kth

piece type in this segment. The number of the kth piece type in the ith strip is ik, k=1,…,m. Recall that

each strip contains only one piece type. For a specific i, there exists only one integer j so that ik>0 for

k=j, and ik=0 for k j. Assume that N is the set of natural numbers. The following knapsack model

determines the constrained solution of the segment:

(2)

The algorithms for solving Model (2) can be easily found in the literature [17]. After solving the model, it

is reasonable to let UA=E(lR,a).

Now consider how to estimate UB. The pattern in region b×W may be a three-staged pattern. Assume that

F(x) is the value of the optimal three-staged pattern on partial plate x×W. To determine F(x), it is

necessary to consider all possible segments of lengths between 0 and x. Assume that zi is the number of

the ith segment included in the partial plate. The following model determines the partial-constrained

solution for partial plate x×W:

Page 163: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

8

(3)

From the property of the normal lengths, zi can be set to equal zero if i P. Model (3) is an unbounded

knapsack problem, algorithms for it can also be found in the literature. The solution obtained from Model

(3) is referred to as partial-constrained, for that the numbers of pieces in each segment are constrained,

and that the numbers of pieces in the pattern are unconstrained. After solving the model, it is reasonable

to let UB=F(b). Eq. (1) can be rewritten as

ubound(R)=val(R)+E(lR,W-wR)+F(L-lR). (4)

3.3.3. The lower bound of the patterns related to a segment

For the optimal pattern on partial plate x×W, let G(x) be the value of the approximate solution, zi be the

number of segment pi×W included in the partial plate, ik be the number of piece type k yielded by

segment pi×W, and g(k,x) be the number of piece type k included in the approximate solution. Then

(5)

Let lbound(R) be the lower bound of the full patterns containing segment R=lR×wR. Consider the three

regions in Fig. 9. Let n(k,R) be the number of the kth piece type included in R. Determine e(k,lR,W-wR),

the number of piece type kin region A, from Model (2). Determine g(k,L-lR), the number of piece type k in

region B, from Model (5). Let lbound(R)=val(R)+E(lR,W-wR)+G(L-lR) if the following equations hold:

Otherwise let lbound(R)=val(R).

3.3.4. The upper and lower bounds of the full patterns related to a partial pattern

All possible patterns can be generated through the horizontal build of segments according to Definition 6.

Some of them may not appear in the optimal solution. In order to reduce the number of patterns explicitly

considered, it is helpful to use tighter upper and lower bounds.

Assume that val(R), the value of partial pattern R=lR×W is already known. Let ubound(R) be the upper

bound of a full pattern that contains R. As shown in Fig. 10, divide plate L×W into two regions R and

A=(L-lR)×W. Region A contains a partial pattern. The upper bound of its value is F(L-lR). Therefore,

ubound(R)=val(R)+F(L-lR). (6)

Page 164: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

9

Fig. 10. Upper bound for a full pattern containing partial pattern R.

Let lbound(R) be the lower bound of a full pattern containing partial pattern R=lR×W. If n(k,R)+g(k,L-

lR) dk holds for k=1,…,m, let lbound(R)=val(R)+G(L-lR); otherwise let lbound(R)=val(R).

3.3.5. The initial lower bound

During the searching process, when the upper bound for a pattern containing segment or partial pattern R

is less than or equal to the value of the best pattern obtained so far, R can be discarded. Initially the value

of the best pattern is set to the value of a feasible pattern, which is referred to as the initial lower bound.

Starting from a good initial lower bound can shorten the searching space greatly. In the algorithms of this

paper, the initial lower bound is set equal to G(L), which is determined from Model (5).

3.3.6. Inferior blocks

Assume that block A=lA×wA and block B=lB×wB are two blocks of the same type (either segments or

partial patterns). Assume that DA(i) is the number of piece type i in segment A, and DB(i) is that in

segment B. Refer A as an inferior segment if lA lB, wA wB, and DA(i) DB(i) holds for any i between 1

and m. It is obvious that inferior blocks can be discarded in searching for the optimal solution. In the

searching process, inferior blocks should be discarded immediately after detecting them.

3.4. The exact algorithm

Assume that pmax=maxi{ci/(liwi)} is the maximum value of the unit area of the pieces. Use blocks to

denote strips, segments, and partial patterns. A partial pattern here contains at least two segments. Let V*

be the value of the best three-staged pattern obtained so far, ubound(R) be the upper bound, and

lbound(R) the lower bound of the pattern containing block R. Let Open, Closed, ClosedA and ClosedB be

four sets to keep blocks. ClosedA contains segments. ClosedB contains partial patterns. The exact

algorithm (the EA for short) consists of the following steps:

Step 1. Obtain P={p1,…,pM}, the set of normal lengths, from Definition 2.

Step 2. Solve Model (2) to obtain E(x,y), value of the constrained solution for segment x×y, x P and 0

y W. Solve Model (3) to obtain F(x), value of the partial-constrained solution for partial plate x×W, 0

x L. Get G(x) from Model (5), which is the lower bound for the pattern on partial plate x×W, 0 x L.

Step 3. Let V*=F(L). Generate all possible strips from Definition 4, and add them to Open. Let the upper

bound of each initial strip in Open be pmaxLW.

Step 4. Go to Step 9 if Open is empty. Otherwise take one block RA from Open having the highest upper

bound ubound(RA). Go to Step 9 if ubound(RA) V*.

Step 5. If RA is a segment, put all blocks in ClosedA and ClosedB together to form a big set Closed,

transfer RA from Open to ClosedA, and go to Step 6. Otherwise transfer RA from Open to ClosedB, let

Closed=ClosedA and go to Step 7.

Step 6. Vertical build of strips: Consider the blocks in ClosedA one by one, until ubound(RA) V* or all

blocks have been considered. When finished, go to Step 7. For each block RB taken from ClosedA, skip it

Page 165: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

10

if ubound(RB) V*. Otherwise perform vertical build between RA and RB according to Definition 5.

Determine the upper bound of the resulting block RC according to Eq. (4). Discard RC if ubound(RC) V*

or it is an inferior block. Otherwise determine lbound(RC) according to Section 3.3.3, and let

V*=max[V*,lbound(RC)].

Step 7. Horizontal build of segments: Consider the blocks in Closed one by one, until ubound(RA) V* or

all blocks have been considered. Go to Step 8 when finished. For each block RB taken from Closed, skip it

if ubound(RB) V*. Otherwise from Definition 6, obtain partial pattern RC through the horizontal build of

RA and RB. Determine ubound(RC) according to Section 3.3.4. Discard RC if ubound(RC) V* or it is an

inferior block; otherwise, determine lbound(RC) according to Section 3.3.4, and let

V*=max[V*,lbound(RC)].

Step 8. Go to Step 4.

Step 9. Output V* and stop.

The exact algorithm is basically a branch-and-bound procedure, in which dynamic programming

techniques are used to solve the knapsack problems for the lower and upper bounds. The search for the

optimal solution starts from an initial feasible lower bound (Step 3). Steps 4–8 are performed repeatedly.

Each time a block is selected from Open. If it is a partial pattern, perform horizontal build with each

segment in ClosedA to form new partial patterns (steps 5 and 7). If it is a segment, perform vertical build

with each segment in ClosedA to form new segments, and perform horizontal build with the blocks in

ClosedA and ClosedB to form new partial patterns (steps 5–7). The blocks generated in steps 6 and 7

should be add to Open for further consideration, if they are not inferior blocks and have upper bounds

larger than the value of the best pattern obtained so far. The searching process ends when Open is empty

or the maximum value of the upper bounds of the blocks in Open is not larger than the value of the best

pattern obtained so far (Step 4).

The construction process is similar to that presented in [12] except that: (1) The former considers the

builds of both strips and segments, the later considers only the build of strips; and (2) The former

estimates the bounds from the property of the homogenous three-staged patterns, the later does this from

the property of two-staged patterns.

3.5. The heuristic algorithms

Two heuristic algorithms (HA1 and HA2 for short) are straightforward. One (HA1) is to solve Model (5)

to obtain the approximate solution, which is used as the initial lower bound in the EA. The other (HA2) is

the same as the EA, except that the upper bounds of the blocks generated are underestimated. Let

uBound(R) be the upper bound used in HA2, it is set equal to r×ubound(R), where 0<r 1. HA2 is an

exact algorithm if r=1; otherwise it is a heuristic one.

It should be noted that the idea of underestimating the upper bound is also used by other authors [7] and

[13].

4. The computational results

This section presents the computational results of the test problems, and give the solution to a real cutting

problem taken from a factory that makes passenger cars. The computer used has clock rate

and main memory . Both X and Y patterns are generated for each problem, the better one of

which is taken as the solution.

4.1. Test on benchmark problems

There are no algorithms for homogenous three-staged patterns in the literature. The purpose of the test on

benchmark problems here is to demonstrate that the exact algorithm can solve the benchmark problems in

a few seconds.

Page 166: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

11

Two-staged patterns of general strips (referred to as general two-staged patterns) are the special case of

the homogenous three-staged patterns. If it is constrained that each strip contains only one piece, the EA

will actually generate general two-staged patterns.

Hifi and Roucairol [12] presented an exact algorithm (the HRA for short) for generating general two-

staged patterns for CTDC problems. In Ref. [12, Table 5], they gave the computational results of some

test problems. The EA solved these problems in . Table 1 lists the computational results.

Where VHRA is the value of the general two-staged pattern obtained from HRA, VEA is the value and tEA is

the time for homogenous three-staged patterns generated by the EA. VEA>VHRA for 23 problems, and

VEA=VHRA for the others.

Table 1.

The computational results for benchmark problems

Problem VHRA VEA tEA Problem VHRA VEA tEA

HH 10 689 11 211 0 STS4s 9481 9700 0

2 2535 2672 0.125 OF1 2713 2713 0

3 1740 1860 0 OF2 2522 2690 0

A1 1820 1840 0 W 2623 2700 0

A2 2315 2390 0.015 CHL1s 13 036 13 036 0.094

STS2 4620 4620 0.016 CHL2s 3198 3244 0

STS4 9468 9700 0 A3 5403 5403 0

CHL1 8360 8395 0.156 A4 5905 6043 0.016

CHL2 2235 2292 0.016 A5 12 553 12 778 0.015

CW1 6402 6402 0 CHL5 363 376 0

CW2 5354 5354 0.031 CHL6 16 572 16 623 0

CW3 5689 5689 0.031 CHL7 16 728 16 728 0.110

Hch12 9630 9630 10.844 CU1 12 312 12 330 0

Hch19 5100 5100 3.985 CU2 26 100 26 100 0.015

2s 2450 2583 0.125 Hch13s 11 961 12 209 0

3s 2623 2623 0 Hch14s 11 408 11 964 0.016

A1s 2950 2950 0 Hch16s 60 170 60 828 0.031

A2s 3451 3451 0 Hch17s 62 845 62 845 0.125

Page 167: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

12

Problem VHRA VEA tEA Problem VHRA VEA tEA

STS2s 4625 4637 0.015 Hch18s 791 876 0.172

It should be noted that the quality and runtimes of the solutions are not strictly comparable to other results

of the literature, since they relate to a particular problem class.

4.2. Test on random problems of larger scale

Two groups of problems are used. Once the paper is published, these problems will be made available on

the Internet at http://www.gxnu.edu.cn/Personal/ydcui/index.htm.

The first group includes 20 weighted problems. The variables are uniformly distributed in the following

ranges: plate length L and width W both in [1000,5000], number of piece types m in [50,100], piece

length li in [0.05L,0.3L], piece width wi in [0.05W,0.3W], piece demand di in [3,10], and piece value ci in

[0.15liwi,0.65liwi].

The computational results are summarized in Table 2, where ID is the problem index; VEA, VHA1 and VHA2

are the pattern values obtained from algorithms EA, HA1 and HA2, respectively; tEA, tHA1 and tHA2 are the

average computation times; 1=VHA1/VEA and 2=VHA2/VEA. The mark “ ” means that the value is equal

to VEA.

Table 2.

The computational results for the weighted problems

ID VEA VHA1 VHA2 tEA tHA1 tHA2 1 (%) 2 (%)

1 631 863 6 24 068 6 31 852 6.140 1.484 1.422 98.77 100.00

2 4 544 395 4 536 642 4 539 683 68.531 6.469 7.000 99.83 99.90

3 1 833 000 1 831 637 1450.282 7.921 9.875 99.93 100

4 4 339 083 9.265 9.391 9.203 100 100

5 2 676 651 3600.000 4.250 4.703 100 100

6 4 245 663 225.656 4.078 4.609 100 100

7 4 305 010 4 288 035 3600.000 12.985 15.047 99.61 100

8 3 610 441 3 604 959 3 608 015 15.860 6.969 7.891 99.85 99.93

9 7 446 330 11.031 9.203 10.047 100 100

10 6 038 211 6 005 147 6 011 779 3600.000 11.657 12.937 99.45 99.56

11 1 168 284 1 158 550 1 162 898 3.968 2.266 2.688 99.17 99.54

12 2 567 171 2 493 280 3600.000 3.875 4.312 97.12 100

13 2 795 973 5.609 4.047 4.422 100 100

14 3 152 403 3 106 495 3600.000 2.625 2.891 98.54 100

15 5 018 587 29.563 11.843 13.484 100 100

Page 168: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

13

ID VEA VHA1 VHA2 tEA tHA1 tHA2 1 (%) 2 (%)

16 2 157 408 237.688 8.891 10.718 100 100

17 6 881 547 6 827 062 6 854 864 17.625 7.032 7.407 99.21 99.61

18 7 548 827 7 350 498 7 495 558 113.532 7.282 7.796 97.37 99.29

19 5 704 261 14.922 10.922 11.938 100 100

20 5 726 840 5 643 652 5 676 748 1293.094 12.844 14.640 98.55 99.13

For Algorithm EA, the maximum computation time allowed for a problem was set equal to , and

the initial lower bound was obtained from considering both X and Y patterns. The problem is referred to

as non-optimized if its computation time exceeds . There are five non-optimized problems

(problems 5, 7, 10, 12 and 14). If the non-optimized problems are counted and their average computation

time is taken as , then the average computation time is .

As mentioned in Section 3.5, the initial lower bound for EA is obtained from HA1 that is a heuristic

algorithm. From Table 2 it is seen that the initial lower bounds are very tight, where 1 is in the range of

[97.12%,100%] and its average value is 99.37%. The average computation time of HA1 is .

Algorithm HA2 solved these problems with r=0.90. The average computation time is . 2 is in

the range of [99.13%,100%] and its average value is 99.85%.

From the above computational results, it is clear that both the HA1 and the HA2 can give solutions very

close to those of the exact algorithm, and the average computation times of them are much more shorter

than that of the EA.

The second group includes 20 unweighted problems, which are the same as those in the first group,

except that the value of each piece is equal to its area. Use material usage u to evaluate the quality of the

solution. It is determined as

u=(Total area of pieces in the pattern)/(Area of the plate)×100%.

The computational results are summarized in Table 3. The average material usage is 99.7528% for EA,

99.7479% for HA1, and 99.7518% for HA2. The average computation time is for EA,

for HA1, and for HA2. HA1 solved 17 problems to optimality, and HA2 solved 19

problems to optimality.

Table 3.

The computational results for the unweighted problems

ID VEA VHA1 VHA2 tEA tHA1 tHA2

1 1 019 835 2.297 1.469 1.734

2 7 358 781 8.140 7.157 7.360

3 2 927 244 13.547 8.859 1.109

4 6 941 162 10.922 10.297 11.140

5 4 397 252 4 396 075 9.171 4.673 5.297

Page 169: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

14

ID VEA VHA1 VHA2 tEA tHA1 tHA2

6 6 877 807 6.000 4.578 4.984

7 6 873 621 22.672 14.437 16.891

8 5 816 240 10.766 7.750 8.906

9 11 961 700 49.406 10.187 11.297

10 10 072 864 13.516 12.953 13.531

11 1 879 621 1 878 993 1 879 245 4.578 2.515 2.985

12 4 485 532 4.296 4.297 4.406

13 4 501 274 5.188 4.422 4.891

14 5 140 614 5 138 684 4.890 2.891 3.203

15 7 964 178 14.625 13.187 14.485

16 3 443 493 11.109 9.922 11.203

17 11 120 468 145.953 7.625 8.468

18 12 314 542 15.735 8.078 8.969

19 9 177 535 15.328 12.218 12.750

20 9 124 739 17.406 14.281 16.344

The scale of the problems is comparable to that of most practical problems. The computational results in

Table 3 indicate that the computation times of the algorithms are reasonable for problems of such scale.

4.3. Solution to a real cutting problem

The example below is taken from a factory that makes passenger cars. Pieces of 49 types are to be cut

from a stock plate of 2600×1300. Table 4 shows the piece data. The value of each piece is equal to its

area. Fig. 11 shows the cutting patterns and the computational results. In interpreting the computation

times, it should be noted that for this example, the original main memory is exhausted and

virtual memory is created in the hard disk, a portion of the computation time is consumed in

interchanging data between the main memory and the virtual memory.

Table 4.

The piece data of the example (li×wi×di)

990×235×6, 220×113×6, 288×250×6, 1160×868×3, 1000×868×3, 868×598×6, 1160×258×3,

1000×96×15, 1000×152×15, 185×160×3, 1183×521×3, 815×521×3, 1012×571×3, 455×180×3,

540×192×3, 555×210×3, 253×143×3, 442×420×3, 240×90×3, 330×182×3, 800×133×3, 800×403×6,

803×333×3, 778×116×3, 778×78×3, 1200×241×3, 1020×262×3, 1300×121×3, 1300×83×3, 800×120×3,

700×133×3,1200×85×3, 480×480×6, 965×705×3, 800×390×3, 680×185×3, 840×410×3, 800×73×3,

800×40×3, 930×78×3, 930×50×3, 600×88×3, 1200×146×6, 822×465×3, 876×318×3, 755×147×3,

Page 170: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

15

990×235×6, 220×113×6, 288×250×6, 1160×868×3, 1000×868×3, 868×598×6, 1160×258×3,

460×180×3, 270×117×3, 215×145×3

Fig. 11. Cutting patterns for the example. (a) Fixed direction, computation time , value

3 375 050, material usage 99.85%. (b) Rotation allowed, computation time , value 3 376 597,

material usage 99.90%.

5. Conclusions

Because of the simplicity of the cutting process, cutting patterns of homogenous strips have gotten wider

use in practice. They are especially appropriate for the case where non-numerical controlled guillotine

shears are used, or the shearing and punching process is applied.

Page 171: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

16

Other exact algorithms exist for the CTDC problems. Usually the patterns generated do not consist of

strips, and are not adequate for the shearing and punching process. The staged patterns of general or

uniform strips are not adequate either. If cutting patterns consisting of homogenous strips are required, the

algorithms of this paper may be helpful.

The scale of the random test problems is comparable to that of most practical cutting problems. The

computational results indicate that the computation time of the algorithms is reasonable for unweighted

problems. The heuristic algorithms are extremely efficient in solving weighted problems. They can give

solutions close to those of the exact algorithm in a short time period.

Acknowledgment

This paper is part of the project supported by Guangxi Science Foundation. The author wish to express

his appreciation to the supporter.

References

[1] Wascher G, Haussner H, Schumann H. An improved typology of cutting and packing problems.

European Journal of Operational Research, forthcoming.

[2] Cui Y, Huang L. Dynamic programming algorithms for generating optimal strip layouts.

Computational Optimization and Applications, 2006;33, forthcoming, http://dx.doi.org/10.1007/s10589-

005-3067-y .

[3] Z. Zhao and Y. Peng, Development of a practical blank layout optimization system for stamping die

design, International Journal of Advanced Manufacturing Technology 20 (2002), pp. 357–362.

[4] N. Christofides and C. Whitlock, An algorithm for two-dimensional cutting problems, Operations

Research 25 (1977), pp. 31–44.

[5] N. Christofides and E. Hadjiconstantinou, An exact algorithm for orthogonal 2-D cutting problems

using guillotine cuts, European Journal of Operational Research 83 (1995), pp. 21–38. Abstract

[6] K.V. Viswanathan and A. Bagehi, Best-first search methods for constrained two-dimensional cutting

stock problems, Operations Research 41 (1993), pp. 768–776. View Record in Scopus | Cited By in

Scopus

[7] P.Y. Wang, Two algorithms for constrained two-dimensional cutting stock problems, Operations

Research 32 (1983), pp. 573–586. View Record in Scopus | Cited By in Scopus

[8] V.-D. Cung, M. Hifi and B.L. Cun, Constrained two-dimensional cutting stock problems a best-first

branch-and-bound algorithm, International Transactions in Operations Research 7 (2000), pp. 185–210.

Abstract | Full Text via CrossRef

[9] M. Hifi, An improvement of Viswanathan and Bagchi's exact algorithm for constrained two-

dimensional cutting stock, Computers & Operations Research 24 (1997), pp. 727–736. Abstract | View

Record in Scopus | Cited By in Scopus

[10] A.R.S. Amaral and M. Wright, Efficient algorithm for the constrained two-dimensional cutting stock

problem, International Transactions in Operations Research 8 (2001), pp. 3–13.

[11] V.P. Daza, A.G. Alvarenga and J. Diego, Exact solutions for constrained two-dimensional cutting

problems, European Journal of Operational Research 84 (1995), pp. 633–644.

[12] M. Hifi and C. Roucairol, Approximate and exact algorithms for constrained (un)weighted two-

dimensional two-staged cutting stock problems, Journal of Combinatorial Optimization 5 (2001), pp.

465–494. Full Text via CrossRef | View Record in Scopus | Cited By in Scopus

Page 172: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

17

[13] R. Morabito and M.N. Arenales, Staged and constrained two-dimensional guillotine cutting

problems—An AND/OR-graph approach, European Journal of Operational Research 94 (1996), pp.

548–560. Abstract | View Record in Scopus | Cited By in Scopus

[14] A. Lodi and M. Monaci, Integer linear programming models for 2-staged two-dimensional Knapsack

problems, Mathematical Programming B94 (2003), pp. 257–278. Full Text via CrossRef

[15] F. Vanderbeck, A nested decomposition approach to a three-stage, two-dimensional cutting-stock

problem, Management Science 47 (2001), pp. 864–879. Full Text via CrossRef | View Record in Scopus |

Cited By in Scopus

[16] M. Hifi, Exact algorithms for large-scale unconstrained two and three staged cutting problems,

Computational Optimization and Applications 18 (2001), pp. 63–88. Full Text via CrossRef | View

Record in Scopus | Cited By in Scopus

[17] H. Kellerer, U. Pferschy and D. Pisinger, Knapsack problems, Springer, Berlin (2004).

Tel.: +86 773 5851286.

Computers & Operations ResearchVolume 35, Issue 1, January 2008, Pages 212-225

Part Special Issue: Applications of OR in Finance

Page 173: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

150

9.2. Algunos Casos de prueba de la referencia [11]

Se presentan 50 casos de prueba los cuales incluyen 20 piezas rectangulares:

La base de datos para cada problema consta de los siguientes campos globales:

Identificador

Ancho del tablero

Alto del tablero

Numero de tipos de piezas

Cada sub-campo presenta los datos de cada pieza:

Espacio nulo

Ancho de la pieza

Alto de la pieza

Demanda

0 que indica sin rotación

Área

Caso 6.3

1,2002,1001, 20

53,67,1,0,3551

135,194,1,0,26190

119,407,7,0,48433

160,382,5,0,61120

194,410,8,0,79540

205,86,6,0,17630

297,319,3,0,94743

449,414,8,0,185886

81,223,2,0,18063

Page 174: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

151

195,78,9,0,15210

400,172,4,0,68800

429,216,1,0,92664

170,217,4,0,36890

386,275,8,0,106150

51,324,4,0,16524

424,77,9,0,32648

92,416,4,0,38272

240,111,5,0,26640

383,160,8,0,61280

269,203,9,0,54607

Caso 6.4

3,2275,1191, 20

132,209,4,0,27588

382,313,10,0,119566

129,97,6,0,12513

448,123,6,0,55104

247,299,6,0,73853

80,51,3,0,4080

195,239,7,0,46605

91,287,9,0,26117

251,77,5,0,19327

317,196,1,0,62132

397,115,7,0,45655

169,293,1,0,49517

70,260,10,0,18200

360,141,6,0,50760

389,305,5,0,118645

Page 175: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

152

381,322,9,0,122682

51,336,6,0,17136

235,335,1,0,78725

287,128,1,0,36736

365,234,4,0,85410

Los siguientes 48 casos pueden ser descargados de la dirección de Internet

http://www.gxnu.edu.cn/Personal/ydcui/English/Problems/RecPubC_G3.DTXT

Page 176: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

153

9.3. Implementación y desarrollo de los programas de computador.

9.3.1. Usando Búsqueda Tabú clc

clear all

% En un archivo de texto se definen los datos correpondientes a la configuración inicial

% (piezas_arbol y orien_clus) además de los parámetros v1, v2, v3, v4, v5, v6, k1, k2, k3,

% k4 y alpha; los seis primeros son el número de vecinos por cada criterio, los cuatro

% siguientes son las iteraciones tabú para cada una de las listas menejadas y el último

% parámetro es la penalización.

% Carga datos desde archivo de texto:

fid = fopen('caso_1.txt', 'r');

eval(fread(fid, '*char'));

fclose(fid);

% Dimensiones de la placa:

altura_placa=dim_placa(1);

anchura_placa=dim_placa(2);

% Organización de datos:

num_tipos_piezas=size(stock,2);

num_clusters_basicos=size(find(piezas_arbol<=num_tipos_piezas),2)/2;

% Disponibilidad de piezas original:

disponib=stock(3,:);

Page 177: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

154

grafica=0; % 1 si se requiere graficar resultados de cada iteración.

hay_factible=0; % Toma el valor de 1 cuando encuentra la primera configuración

% factible.

% Creación con valores nulos de vectores necesarios en la implementación:

criterios=[]; % Almacena los valores correspondientes a los criterios generados.

vecinos=[]; % Almacena los valores correspondientes a los vecinos generados por

% cada criterio.

criterio_opt=[]; % Almacena el valor correspondientes al criterio óptimo.

vecino_opt=[]; % Almacena el valor correspondientes al vecino óptimo.

% Inicialización de las listas tabú:

tabu_entradas=zeros(1,num_tipos_piezas-1);

tabu_salidas=zeros(1,num_tipos_piezas-1);

tabu_intercambios=zeros(num_tipos_piezas,num_tipos_piezas);

tabu_cambios_cortes=zeros(1,num_clusters_basicos);

% Inicialización de valores necesarios en la implemantación:

iteracion=1; % Lleva el conteo de las iteraciones.

iter_fo_cte=1; % Lleva el conteo de las iteraciones durante las cuales la función

% objetivo permanece constante.

max_iteraciones=5000; % Máximo número de iteraciones permitido.

max_iter_fo_cte=500; % Máximo número de iteraciones permitido con la función objetivo

% constante.

optimo=0; % Toma el valor de 1 si se ha hallado la configuración óptima.

% Vectores que almacenan la disposición de las piezas y los tipos de cortes de la configuración incumbente:

incumbente_arbol=piezas_arbol;

incumbente_orien=orien_clus;

% Esta función entrega los valores de desperdicio e infactibilidad presente en la

Page 178: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

155

% configuración actual, además de las dimensiones de los clusters:

[desp, infact, infactibilidades, alturas_clusters, anchuras_clusters] = ...

eval_fo_arbol(stock, dim_placa, piezas_arbol, rot, orien_clus);

% Inicialización de valores relacionados con la función objetivo:

val_fo_actual=desp+alpha*infact; % Valor de la función objetivo actual.

incumbente_fo=val_fo_actual; % Valor de la función objetivo incumbente.

fo_mejor_factible=val_fo_actual; % Valor de la mejor función objetivo factible.

% Esta función actualiza el vector de disponibilidad de piezas:

[disponib] = actualiz_disponib_piezas(stock, disponib, piezas_arbol);

% Grafica la configuración inicial (si grafica tiene es igual a 1):

if grafica==1

clf

graficar(stock, dim_placa, piezas_arbol, rot, orien_clus)

title([num2str(val_fo_actual) ' --> ' num2str((altura_placa*anchura_placa-desp)*100/...

(altura_placa*anchura_placa)) ', ' num2str(infact)])

pause

end

% Comienzo del algoritmo:

while iteracion<=max_iteraciones && iter_fo_cte<=max_iter_fo_cte && ...

optimo==0

% El proceso de solución culminará si se cumple cualquiera de los tres criterios de % parada:

% 1. Se alcanza el máximo número de iteraciones.

% 2. Se alcanza el máximo número de iteraciones con la función objetivo constante. % 3. Se encuentra la configuración óptima (desperdicio e infactibilidad iguales a

% cero).

% La siguiente función compacta la configuración actual agrupando los clusters que

Page 179: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

156

% contienen piezas reales:

[piezas_arbol, orien_clus] = comprimir(piezas_arbol, orien_clus, stock);

% la siguiente función entrega los valores de desperdicio e infactibilidad presente en

% la configuración actual, además de las dimensiones de los clusters:

[desp, infact, infactibilidades, alturas_clusters, anchuras_clusters] = ...

eval_fo_arbol(stock, dim_placa, piezas_arbol, rot, orien_clus);

% valores relacionados con la función objetivo:

val_fo_actual=desp+alpha*infact; % Valor de la función objetivo actual.

desp_actual=desp; % Valor de la función objetivo incumbente.

infact_actual=infact; % Valor de la mejor función objetivo factible.

% Generación de las configuraciones vecinas:

[piezas_vecin_1, piezas_vecin_2, piezas_vecin_3, piezas_vecin_4, ...

piezas_vecin_5, piezas_vecin_6, orien_vecin_1, orien_vecin_2, ...

orien_vecin_3, orien_vecin_4, orien_vecin_5, orien_vecin_6, ...

piezas_entradas_1, piezas_entradas_2, piezas_entradas_3, ...

piezas_salidas_3, piezas_salidas_4, piezas_intercambios_5, ...

clusters_cambios_6] = ...

generar_vecinos(stock, piezas_arbol, orien_clus, infactibilidades, ...

desp, infact, disponib, alturas_clusters, anchuras_clusters, v1, ...

v2, v3, v4, v5, v6, altura_placa, anchura_placa);

% Inicialización de los vectores que almacenan los valores de la función objetivo de

% cada vecino generado:

valores_fo=[];

criterios=[];

vecinos=[];

% Evaluación de la función objetivo para cada uno de los vecinos

Page 180: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

157

% generados:

m=1;

for i=1:6 %<-- Seis criterios de vecindad.

if i~=5

n=1;

ind_repetidos=[];

for j=1:size(eval(['piezas_vecin_' num2str(i)]),1)

[desp, infact, infactibilidades, alturas_clusters, ...

anchuras_clusters] = eval_fo_arbol(stock, dim_placa, ...

eval(['piezas_vecin_' num2str(i) '(' num2str(j) ',:)']) , rot, ...

eval(['orien_vecin_' num2str(i) '(' num2str(j) ',:)']));

if (desp+alpha*infact)==val_fo_actual

ind_repetidos(n)=j;

n=n+1;

end

end

if size(ind_repetidos,2)==size(eval(['piezas_vecin_' num2str(i)]),1)

eval(['piezas_vecin_' num2str(i) '=[];']);

eval(['orien_vecin_' num2str(i) '=[];']);

else

if size(ind_repetidos,2)>0

eval(['piezas_vecin_' num2str(i) '('...

mat2str(ind_repetidos) ',:)='''';']);

eval(['orien_vecin_' num2str(i) '('...

mat2str(ind_repetidos) ',:)='''';']);

end

end

end

end

for i=1:6 %<-- Seis criterios de vecindad.

for j=1:size(eval(['piezas_vecin_' num2str(i)]),1)

Page 181: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

158

[desp, infact, infactibilidades, alturas_clusters, ...

anchuras_clusters] = eval_fo_arbol(stock, dim_placa, ...

eval(['piezas_vecin_' num2str(i) '(' num2str(j) ',:)']) , rot, ...

eval(['orien_vecin_' num2str(i) '(' num2str(j) ',:)']));

valores_fo(m)=desp+alpha*infact;

criterios(m)=i;

vecinos(m)=j;

m=m+1;

end

end

% Determinación de las configuraciones vecinas tabú:

num_vecinos=size(valores_fo,2);

vecinos_tabu=zeros(1,num_vecinos);

m=1;

for i=1:size(piezas_vecin_1,1) % Primer criterio.

if tabu_entradas(piezas_entradas_1(i,1))~=0

vecinos_tabu(m)=1;

end

m=m+1;

end

m=size(piezas_vecin_1,1)+1;

for i=1:size(piezas_vecin_2,1) % Segundo criterio.

if tabu_entradas(piezas_entradas_2(i,1))~=0

vecinos_tabu(m)=1;

end

m=m+1;

end

m=size(piezas_vecin_1,1)+size(piezas_vecin_2,1)+1;

for i=1:size(piezas_vecin_3,1) % Tercer criterio.

if tabu_entradas(piezas_entradas_3(i,1))~=0 || ...

Page 182: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

159

tabu_salidas(piezas_salidas_3(i,1))~=0

vecinos_tabu(m)=1;

end

m=m+1;

end

m=size(piezas_vecin_1,1)+size(piezas_vecin_2,1)+size(piezas_vecin_3,1)+1;

for i=1:size(piezas_vecin_4,1) % Cuarto criterio.

if tabu_salidas(piezas_salidas_4(i,1))~=0

vecinos_tabu(m)=1;

end

m=m+1;

end

m=size(piezas_vecin_1,1)+size(piezas_vecin_2,1)+...

size(piezas_vecin_3,1)+size(piezas_vecin_4,1)+1;

for i=1:size(piezas_vecin_5,1) % Quinto criterio.

if tabu_intercambios(piezas_intercambios_5(i,1), ...

piezas_intercambios_5(i,2))~=0

vecinos_tabu(m)=1;

end

m=m+1;

end

m=size(piezas_vecin_1,1)+size(piezas_vecin_2,1)+...

size(piezas_vecin_3,1)+size(piezas_vecin_4,1)+...

size(piezas_vecin_5,1)+1;

for i=1:size(piezas_vecin_6,1) % Sexto criterio.

if tabu_cambios_cortes(clusters_cambios_6(i,1))~=0

vecinos_tabu(m)=1;

end

m=m+1;

end

Page 183: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

160

% Organización de los valores de las funciones objetivo de los vecinos generados

% en orden ascendente:

[valores_fo, indices_asc]=sort(valores_fo, 'ascend');

criterios_temp=[];

vecinos_temp=[];

vecinos_tabu_temp=[];

for i=1:num_vecinos

criterios_temp(i)=criterios(indices_asc(i));

vecinos_temp(i)=vecinos(indices_asc(i));

vecinos_tabu_temp(i)=vecinos_tabu(indices_asc(i));

end

criterios=criterios_temp;

vecinos=vecinos_temp;

vecinos_tabu=vecinos_tabu_temp;

% Constancia de la incumbente:

incumbente_anterior=incumbente_fo;

% Grafica la configuración actual (si grafica es igual a 1):

if grafica==1

clf

graficar(stock, dim_placa, piezas_arbol, rot, orien_clus)

title([num2str(val_fo_actual) ' --> ' num2str((altura_placa*...

anchura_placa-desp_actual)*100/...

(altura_placa*anchura_placa)) ', ' num2str(infact_actual)])

scrsz = get(0,'ScreenSize');

figure('Position',[1 scrsz(4) scrsz(3) scrsz(4)])

axis off

% Valores que son mostrados si se habilita la opción de graficar (grafica=1):

text(-0.15,1.05,'Iteración actual: ') % Iteración actual.

text(0,1.05,num2str(iteracion))

Page 184: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

161

text(-0.15,1.025,'Valor FO actual: ') % Valor de la función objetivo actual.

text(0,1.025,num2str(val_fo_actual))

text(-0.15,1,'Conf. actual: ') % Configuración actual.

text(0,1,mat2str(piezas_arbol))

text(-0.15,0.975,'Iter. FO constante: ') % Iteraciones con función objetivo

% constante.

text(0,0.975,num2str(iter_fo_cte))

text(-0.15,0.9,'Incumbente: ') % Valor de la incumbente.

text(0,0.9,mat2str(incumbente_fo))

text(-0.15,0.87,'Valores fo vecinos: ', 'FontSize', 6.5) % Valores de la función

% objetivo de los vecinos

% generados a partir de la

% configuración actual.

text(0,0.87,mat2str(valores_fo), 'FontSize', 6.5)

text(-0.15,0.825,'Vecinos tabú: ') % Vector que indica cuáles son los vecinos tabú.

text(-0.15,0.8,'Criterios: ')

text(-0.15,0.775,'Vecinos: ')

m=0;

for i=1:size(vecinos_tabu,2)

text(m,0.825,num2str(vecinos_tabu(i)))

text(m,0.8,num2str(criterios(i)))

text(m,0.775,num2str(vecinos(i)))

m=m+0.025;

end

text(-0.15,0.725,'Lista tabú de entradas:') % Lista tabú de piezas ingresadas.

text(0.05,0.725,mat2str(tabu_entradas))

text(-0.15,0.7,'Lista tabú de salidas:') % Lista tabú de piezas retiradas.

text(0.05,0.7,mat2str(tabu_salidas))

text(-0.15,0.675,'Lista tabú de intercambios:') % Lista tabú de piezas

% intercambiadas.

for i=1:size(tabu_intercambios,1)

Page 185: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

162

text(0.05,0.7-i*0.025,mat2str(tabu_intercambios(i,:)))

end

text(0.4,0.7,'Entradas criterio 1: ') % Piezas ingresadas de acuerdo al primer

% criterio.

text(0.6,0.7,mat2str(piezas_entradas_1))

text(0.4,0.65,'Entradas criterio 2: ') % Piezas ingresadas de acuerdo al segundo

% criterio.

text(0.6,0.65,mat2str(piezas_entradas_2))

text(0.4,0.6,'Entradas criterio 3: ') % Piezas ingresadas de acuerdo al tercer

% criterio.

text(0.6,0.6,mat2str(piezas_entradas_3))

text(0.4,0.55,'Salidas criterio 3: ') % Piezas retiradas de acuerdo al tercer

% criterio.

text(0.6,0.55,mat2str(piezas_salidas_3))

text(0.4,0.5,'Salidas criterio 4: ') % Piezas retiradas de acuerdo al cuarto

% criterio.

text(0.6,0.5,mat2str(piezas_salidas_4))

text(0.4,0.45,'Intercambios criterio 5: ') % Piezas intercambiadas de acuerdo al

% quinto criterio.

text(0.6,0.45,mat2str(piezas_intercambios_5))

pause

closereq

end

% Selección de la nueva configuración actual tomada de los vecinos generados:

i=1;

while i<=num_vecinos && optimo==0

if valores_fo(i)==0

disp('')

disp(['***************************************************' ...

Page 186: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

163

'*****************************************************'])

disp(['¡Configuración óptima encontrada en la iteración ' ...

num2str(iteracion) '!'])

disp(['***************************************************' ...

'*****************************************************'])

piezas_arbol_optimo=eval(['piezas_vecin_' ...

num2str(criterios(i)) '(' num2str(vecinos(i)) ',:)']);

orien_clus_optimo=eval(['orien_vecin_' num2str(criterios(i)) '(' ...

num2str(vecinos(i)) ',:)']);

optimo=1;

end

if valores_fo(i)<incumbente_fo && valores_fo(i)>0 && optimo==0

incumbente_fo=valores_fo(i); % Nuevo valor de la fo incumbente.

% Compresión de la nueva configuración incumbente:

[incumbente_arbol, incumbente_orien] = comprimir(eval(['piezas_vecin_' ...

num2str(criterios(i)) '(' num2str(vecinos(i)) ',:)']), ...

eval(['orien_vecin_' num2str(criterios(i)) '(' ...

num2str(vecinos(i)) ',:)']), stock);

if vecinos_tabu(i)==1

% Criterio de aspiración:

j=1;

if criterios(i)==1 || criterios(i)==2

while j<=num_clusters_basicos*2

if piezas_arbol(j)~=incumbente_arbol(j)

tabu_entradas(incumbente_arbol(j))=0;

j=num_clusters_basicos*2;

end

j=j+1;

end

end

Page 187: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

164

if criterios(i)==3

j=1;

while j<=num_clusters_basicos*2

if piezas_arbol(j)~=incumbente_arbol(j)

tabu_entradas(incumbente_arbol(j))=0;

tabu_salidas(piezas_arbol(j))=0;

j=num_clusters_basicos*2;

end

j=j+1;

end

end

if criterios(i)==4

j=1;

while j<=num_clusters_basicos*2

if piezas_arbol(j)~=incumbente_arbol(j)

tabu_salidas(piezas_arbol(j))=0;

j=num_clusters_basicos*2;

end

j=j+1;

end

end

if criterios(i)==5

j=1;

while j<=num_clusters_basicos*2

if piezas_arbol(j)~=incumbente_arbol(j)

tabu_intercambios(piezas_arbol(j),...

incumbente_arbol(j))=0;

tabu_intercambios(incumbente_arbol(j),...

piezas_arbol(j))=0;

j=num_clusters_basicos*2;

end

Page 188: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

165

j=j+1;

end

end

if criterios(i)==6

j=1;

while j<=num_clusters_basicos

if orien_clus(j)~=incumbente_orien(j)

tabu_cambios_cortes(j)=0;

j=num_clusters_basicos;

end

j=j+1;

end

end

else % Actualización de las listas tabú:

[tabu_entradas, tabu_salidas, tabu_intercambios] = ...

listas_tabu(stock, incumbente_arbol, k1, ...

k2, k3, k4, tabu_entradas, tabu_salidas, ...

tabu_intercambios, tabu_cambios_cortes, criterios(i), ...

vecinos(i), piezas_entradas_1, piezas_entradas_2, ...

piezas_entradas_3, piezas_salidas_3, piezas_salidas_4, ...

piezas_intercambios_5, clusters_cambios_6);

end

% Actualización de los valores relacionados con la función objetivo:

val_fo_actual=incumbente_fo;

piezas_arbol=incumbente_arbol;

orien_clus=incumbente_orien;

% Actualización de la disponibilidad de piezas:

[disponib] = actualiz_disponib_piezas(stock, disponib,...

Page 189: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

166

incumbente_arbol);

salida=1;

end

if valores_fo(i)>incumbente_fo && optimo==0 ...

&& valores_fo(i)~=val_fo_actual % Nuevo valor de la función objetivo

% actual.

if vecinos_tabu(i)==0

val_fo_actual=valores_fo(i);

% Actualización de la disponibilidad de piezas:

[disponib] = actualiz_disponib_piezas(stock, disponib,...

eval(['piezas_vecin_' num2str(criterios(i)) '(' ...

num2str(vecinos(i)) ',:)']));

% Actualización de las listas tabú:

[tabu_entradas, tabu_salidas, tabu_intercambios] = ...

listas_tabu(stock, eval(['piezas_vecin_' ...

num2str(criterios(i)) '(' num2str(vecinos(i)) ',:)']), ...

k1, k2, k3, k4, tabu_entradas, tabu_salidas, ...

tabu_intercambios, tabu_cambios_cortes, criterios(i), ...

vecinos(i), piezas_entradas_1, piezas_entradas_2, ...

piezas_entradas_3, piezas_salidas_3, piezas_salidas_4, ...

piezas_intercambios_5, clusters_cambios_6);

% Compresión de la configuración actual:

[piezas_arbol, orien_clus] = comprimir(eval(['piezas_vecin_' ...

num2str(criterios(i)) '(' num2str(vecinos(i)) ',:)']), ...

eval(['orien_vecin_' num2str(criterios(i)) '(' ...

num2str(vecinos(i)) ',:)']), stock);

salida=1;

end

end

i=i+1;

Page 190: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

167

end

% Muestra resultados de cada iteración:

if optimo==0 % En caso de haberse encontrado la configuración óptima.

[desp, infact, infactibilidades, alturas_clusters, anchuras_clusters] = ...

eval_fo_arbol(stock, dim_placa, piezas_arbol, rot, orien_clus);

disp ([num2str(iteracion) ' ' num2str(infact) ' ' ...

num2str((altura_placa*anchura_placa-desp)...

*100/(altura_placa*anchura_placa)) ])

if infact==0

if val_fo_actual<fo_mejor_factible

fo_mejor_factible=val_fo_actual;

arbol_mejor_factible=piezas_arbol;

orien_clus_mejor_factible=orien_clus;

porc_mejor_factible=(altura_placa*anchura_placa-desp)*100/...

(altura_placa*anchura_placa);

hay_factible=1;

end

end

else % En caso de no haberse encontrado la configuración óptima.

clf

subplot(2,1,1);

graficar(stock, dim_placa, piezas_arbol_optimo, rot, orien_clus_optimo)

title('0')

subplot(2,1,2);

axis off

text(-0.15,1.2,'Incumbente: ')

text(0.1,1.2,mat2str(incumbente_fo))

text(-0.15,1.1,'Valores fo vecinos: ')

text(0.1,1.1,mat2str(valores_fo))

text(-0.15,1,'Vecinos tabú: ')

Page 191: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

168

text(0.1,1,mat2str(vecinos_tabu))

text(-0.15,0.9,'Criterios: ')

text(0.1,0.9,mat2str(criterios))

text(-0.15,0.8,'Vecinos: ')

text(0.1,0.8,mat2str(vecinos))

end

% Constancia de la incumbente:

if incumbente_fo==incumbente_anterior

iter_fo_cte=iter_fo_cte+1;

end

if incumbente_fo<incumbente_anterior

iter_fo_cte=1;

end

% Muestra los resultados obtenidos en caso de que la incumbente no haya cambiado

% durante un número de iteraciones previamente definido:

if iter_fo_cte==max_iter_fo_cte

[desp, infact, infactibilidades, alturas_clusters, anchuras_clusters] = ...

eval_fo_arbol(stock, dim_placa, incumbente_arbol, rot, incumbente_orien);

if infact==0

mejor_solucion=(altura_placa*anchura_placa-desp)*100/(altura_placa...

*anchura_placa);

end

disp(['***************************************************' ...

'*****************************************************'])

disp(['¡No ha cambiado la incumbente desde hace ' ...

num2str(max_iter_fo_cte) ' iteraciones' '!'])

disp(['El porcentaje de uso de la incumbente es ' ...

Page 192: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

169

num2str((altura_placa*anchura_placa-desp)*100/(altura_placa...

*anchura_placa)) ' con infactibilidad de ' num2str(infact) '.'])

disp(['***************************************************' ...

'*****************************************************'])

end

iteracion=iteracion+1;

end

A continuación se muestra cada una de las funciones utilizadas en el código anterior.

Evaluación de la función objetivo

[desp, infact, infactibilidades, alturas_clusters, anchuras_clusters] = ...

eval_fo_arbol(stock, dim_placa, piezas_arbol, orien_clus)

Los resultados entregados por esta función permiten la evaluación de la función objetivo.

El argumento de esta función es:

a. La matriz stock que contiene las dimensiones y cantidad de las piezas. b. El vector dim_placa que contiene las dimensiones de la placa en la cual se ubicarán las

piezas.c. El vector piezas_arbol donde se encuentran las piezas presentes en la configuración

acutal.d. El vector orien_clus donde se encuentran los tipos de cortes de cada cluster de la

configuración actual.

Los resultados proporcionados por esta función son:

a. El valor desp: desperdicio total en la configuración actual. b. El valor infact: infactibilidad total en la configuración actual. c. El vector infactibilidades: infactibilidades presentes en cada cluster de la

configuración actual. d. Los vectores alturas_clusters y anchuras_clustes: dimensiones de cada uno de

los clusters de la configuración actual.

Page 193: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

170

Disponibilidad de piezas

[disponib] = actualiz_disponib_piezas(stock, disponib, piezas_arbol)

Esta función actualiza el vector que contiene la disponibilidad de piezas.

El argumento de esta función es:

a. La matriz stock que contiene las dimensiones y cantidad de las piezas. b. El vector disponib sin actualizar con la disponibilidad de las piezas. c. El vector piezas_arbol donde se encuentran las piezas presentes en la configuración

acutal.

Esta función entrega un único resultado: el vector disponib actualizado con la nueva disponibilidad de piezas.

Gráfica de la configuración

graficar(stock, dim_placa, piezas_arbol, orien_clus)

Mediante esta función se realiza la gráfica de la configuración actual.

El argumento de esta función es:

a. La matriz stock que contiene las dimensiones y cantidad de las piezas. b. El vector dim_placa que contiene las dimensiones de la placa en la cual se ubicarán las

piezas.c. El vector piezas_arbol donde se encuentran las piezas presentes en la configuración

acutal.d. El vector orien_clus donde se encuentran los tipos de cortes de cada cluster de la

configuración actual.

Compresión de la configuración

[piezas_arbol, orien_clus] = comprimir(piezas_arbol, orien_clus, stock)

Esta función agrupa todos los clusters que contengan piezas reales. Por ejemplo, en la configuración siguiente:

piezas_arbol=[5 4 2 1 7 7 3 6 7 7 7 7 . . .]

los primeros cuatro clusters están formados por las piezas 5 – 4, 2 – 1, 7 – 7, 3 – 6, 7 – 7, 7 – 7, etc. Suponiendo que la pieza nula o ficticia es la tipo 7, se puede apreciar que tercer cluster de izquierda a derecha, el cual es un cluster formado por piezas nulas, está entre dos clusters formados por piezas reales. La configuración entregada por la función comprimir, es decir, la función comprimida es:

Page 194: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

171

piezas_arbol=[5 4 2 1 3 6 7 7 7 7 7 7 . . .]

Lo buscado con la compresión de la configuración es impedir cualquier desorden en la misma que aumente su tamaño innecesariamente.

El argumento de esta función es:

a. El vector piezas_arbol donde se encuentran las piezas presentes en la configuración acutal.

b. El vector orien_clus donde se encuentran los tipos de cortes de cada cluster de la configuración actual.

c. La matriz stock que contiene las dimensiones y cantidad de las piezas.

Generación de las configuraciones vecinas

[piezas_vecin_1, piezas_vecin_2, piezas_vecin_3, piezas_vecin_4, ...

piezas_vecin_5, piezas_vecin_6, orien_vecin_1, orien_vecin_2, ...

orien_vecin_3, orien_vecin_4, orien_vecin_5, orien_vecin_6, ...

piezas_entradas_1, piezas_entradas_2, piezas_entradas_3, ...

piezas_salidas_3, piezas_salidas_4, piezas_intercambios_5, ...

clusters_cambios_6] = ...

generar_vecinos(stock, piezas_arbol, orien_clus, infactibilidades, ...

desp, infact, disponib, alturas_clusters, anchuras_clusters, v1, ...

v2, v3, v4, v5, v6, altura_placa, anchura_placa)

Esta función genera las configuraciones vecinas a la configuración actual según los criterios de vecindad.

El argumento de esta función es:

a. La matriz stock que contiene las dimensiones y cantidad de las piezas. b. El vector piezas_arbol donde se encuentran las piezas presentes en la configuración

acutal.c. El vector orien_clus donde se encuentran los tipos de cortes de cada cluster de la

configuración actual. d. El vector infactibilidades: infactibilidades presentes en cada cluster de la

configuración actual. e. El valor desp: desperdicio total en la configuración actual. f. El valor infact: infactibilidad total en la configuración actual. g. El vector disponib sin actualizar con la disponibilidad de las piezas.

Page 195: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

172

h. Los vectores alturas_clusters y anchuras_clustes: dimensiones de cada uno de los clusters de la configuración actual.

i. Los valores v1, v2, v3, v4, v5 y v6: número de vecinos a generar según cada uno de los criterios.

j. Los valores altura_placa y anchura_placa: dimensiones de la placa donde se ubican las piezas.

Los resultados entregados por esta función son:

a. Las matrices piezas_vecin_1, piezas_vecin_2, piezas_vecin_3,piezas_vecin_4, piezas_vecin_5 y piezas_vecin_6 con las piezas de las configuraciones vecinas generadas según los criterios primero, segundo, tercero, cuarto, quinto y sexto respectivamente.

b. Las matrices orien_vecin_1, orien_vecin_2, orien_vecin_3, orien_vecin_4,orien_vecin_5 y orien_vecin_6 con los tipos cortes en los clusters de cada configuración vecina.

c. El vector piezas_entradas_1: piezas que ingresadas en las configuraciones vecinas generadas según el primer criterio.

d. El vector piezas_entradas_2: piezas que ingresadas en las configuraciones vecinas generadas según el segundo criterio.

e. El vector piezas_entradas_3: piezas que ingresadas en las configuraciones vecinas generadas según el tercer criterio.

f. El vector piezas_salidas_3: piezas que retiradas en las configuraciones vecinas generadas según el tercer criterio.

g. El vector piezas_salidas_4: piezas que retiradas en las configuraciones vecinas generadas según el cuarto criterio.

h. El vector piezas_intercambiadas_5: piezas que se intercambian en las configuraciones vecinas generadas según el quinto criterio.

i. El vector clusters_cambios_6: cortes que se cambian en las configuraciones vecinas generadas según el cuarto criterio.

Actualización de las listas tabú

[tabu_entradas, tabu_salidas, tabu_intercambios, tabu_cambios_cortes] = ...

listas_tabu(stock, incumbente_arbol, k1, k2, k3, k4, tabu_entradas, tabu_salidas, ...

tabu_intercambios, tabu_cambios_cortes, criterios(i), vecinos(i), ...

piezas_entradas_1, piezas_entradas_2, piezas_entradas_3, piezas_salidas_3, ...

piezas_salidas_4, piezas_intercambios_5, clusters_cambios_6)

Mediante esta función se actualizan las listas tabú en cada iteración.

El argumento de esta función es:

a. La matriz stock que contiene las dimensiones y cantidad de las piezas. b. El vector incumbente_arbol donde se encuentran las piezas presentes en la

configuración incumbente. c. Los valores k1, k2, k3 y k4: número de iteraciones durante las cuales permanecerá tabú

una pieza ingresada, extraída, intercambiada con una pieza externa o intercambiada con una pieza de la misma configuración.

Page 196: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

173

d. El vector sin actualizar tabu_entradas con las piezas tabú por ingreso. e. El vector sin actualizar tabu_salidas con las piezas tabú por extracción. f. El vector sin actualizar tabu_intercambios con las piezas tabú por intercambio. g. El vector sin actualizar tabu_cambios_cortes con los cortes tabú por cambio de los

mismos.h. El valor criterios(i) donde está el índice del criterio analizado, por lo tanto este valor

puede ser 1, 2, 3, 4,5 ó 6. i. El valor vecinos(i) donde está el índice de la configuración vecina generada según el

criterio criterios(i).j. El vector piezas_entradas_1: piezas que ingresadas en las configuraciones vecinas

generadas según el primer criterio. k. El vector piezas_entradas_2: piezas que ingresadas en las configuraciones vecinas

generadas según el segundo criterio. l. El vector piezas_entradas_3: piezas que ingresadas en las configuraciones vecinas

generadas según el tercer criterio. m. El vector piezas_salidas_3: piezas que retiradas en las configuraciones vecinas

generadas según el tercer criterio. n. El vector piezas_salidas_4: piezas que retiradas en las configuraciones vecinas

generadas según el cuarto criterio. o. El vector piezas_intercambiadas_5: piezas que se intercambian en las

configuraciones vecinas generadas según el quinto criterio. j. El vector clusters_cambios_6: cortes que se cambian en las configuraciones vecinas

generadas según el cuarto criterio.

Los resultados de esta función son:

a. El vector actualizado tabu_entradas con las piezas tabú por ingreso. b. El vector actualizado tabu_salidas con las piezas tabú por extracción. c. El vector actualizado tabu_intercambios con las piezas tabú por intercambio. d. El vector actualizado tabu_cambios_cortes con los cortes tabú por cambio de los

mismos.

Page 197: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

174

9.3.2. Usando el algoritmo híbrido

Ejemplo de prueba 1

Xm = 2002; % ancho de la hojaYm = 1001; % largo de la hojaNm = 20; % numero máximo de configuraciones distintas% DimensionesE = [53, 67, 1, 0, 3551 135, 194, 1, 0, 26190 119, 407, 7, 0, 48433 160, 382, 5, 0, 61120 194, 410, 8, 0, 79540 205, 86, 6, 0, 17630 297, 319, 3, 0, 94743 449, 414, 8, 0, 185886 81, 223, 2, 0, 18063 195, 78, 9, 0, 15210 400, 172, 4, 0, 68800 429, 216, 1, 0, 92664 170, 217, 4, 0, 36890 386, 275, 8, 0, 106150 51, 324, 4, 0, 16524 424, 77, 9, 0, 32648 92, 416, 4, 0, 38272 240, 111, 5, 0, 26640 383, 160, 8, 0, 61280 269, 203, 9, 0, 54607];

Algoritmo 1: Búsqueda en entorno variable.

clcclear allE1 % Sistema de pruebaP = E(:,1:2); % DimensionesD = E(:,3); % Demanda de cada tipoA = P(:,1).*P(:,2); % Area de cada configuracionNP = length(D); % Numero de piezasNC = 3 ; % Numero de capasNn = 2^(NC); % numero de nodos finales: los que

finalmente contienen elementosNc = Nn-1;X.TC = round(rand(Nc,1)); X.Ds = rand(Nc,1); [fo nf] = funcionobjetivo(X,Nn,Xm,Ym,NC,Nc,P,A,Nm,D);

maxiter = 1000; sm = 0; for iter = 1:100 sm = sm + 1; if sm > Nc

sm = 1;end

Xt = X; s(iter) = round(rand*(sm-1))+1; for u = 1:s(iter)

Page 198: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

175

yt = round(rand*(Nc-1))+1; Xt.TC(yt) = not(Xt.TC(yt)); end;

Incumbente = Aleatorio(Xt,Nn,Xm,Ym,NC,Nc,P,A,Nm,D,maxiter); ft = Incumbente.fo; Xt = Incumbente.X;

if ft > fo fo = ft; X = Xt; disp(strcat(num2str(fo*100),': ',num2str(sm),':',num2str(iter))); sm = 1;

endend

Algoritmo 2: Simulated Annealing para el cálculo de las longitudes de los cortes

function [Incumbente] = Aleatorio(Xu,Nn,Xm,Ym,NC,Nc,P,A,Nm,D,maxiter); %% Inicializar la poblaciónIncumbente.X = Xu; Incumbente.fo = funcionobjetivo(Xu,Nn,Xm,Ym,NC,Nc,P,A,Nm,D);

%% Calcular la funcion objetivo for iter = 1:maxiter XA = Incumbente.X;

for ss = 1:round(rand*5) yt = round(rand*(Nc-1))+1; XA.Ds(yt) = (XA.Ds(yt) + fdelta(iter,maxiter));

if (XA.Ds(yt) > 1) XA.Ds(yt) = rand;

endif (XA.Ds(yt) < 0)

XA.Ds(yt) = rand*rand; end

end; [fa nf] = funcionobjetivo(XA,Nn,Xm,Ym,NC,Nc,P,A,Nm,D);

if fa > Incumbente.fo Incumbente.fo = fa; Incumbente.nf = nf; Incumbente.X = XA;

end

end

function y = fdelta(x,maxiter); y = (rand-0.5)*((1-x/maxiter)^0.5+0.001);

Algoritmo 3. Constructivo para el cálculo de la función objetivo.

function [fo nf] = funcionobjetivo(X,Nn,Xm,Ym,NC,Nc,P,A,Nm,D); % nf : 1 : elemento 2: cantidadp = 1; u = 1; v = 1; nodo(u,:) = [0 0 Xm Ym];

Page 199: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

176

for k = 1:Nc if X(p).TC(k) == 0 % vertical

v = v + 1; nodo(v,:) = nodo(u,:).*[1 1 X(p).Ds(k) 1]; v = v + 1; nodo(v,:) = nodo(u,:); nodo(v,1) = nodo(u,1) + nodo(v-1,3); nodo(v,3) = nodo(u,3)*(1-X(p).Ds(k));

else % horizontal v = v + 1; nodo(v,:) = nodo(u,:).*[1 1 1 X(p).Ds(k)]; v = v + 1; nodo(v,:) = nodo(u,:); nodo(v,2) = nodo(u,2) + nodo(v-1,4); nodo(v,4) = nodo(u,4)*(1-X(p).Ds(k));

end u = u + 1;endu = length(nodo(:,1)); nf = zeros(Nn,2); AREA = 0; for k = 1:Nn na = nodo(u,:);

% revisar cual elemento cabe Au = 0;

for j = 1:Nm fx = floor(na(3)/P(j,1)); fy = floor(na(4)/P(j,2));

if (fx >= 1)&(fy >= 1) % cabe al menos una unidad ne = min(fx*fy, D(j)); % numero maximo de elementos Aut = ne*A(j); % area usada

if Aut > Au Au = Aut; nf(k,1) = j; nf(k,2) = ne; D(j) = D(j) - ne;

endend

end u = u - 1; AREA = AREA + Au; endfo = AREA/(Xm*Ym);

Toda la codificación relacionada aparece en la página 45 y 46 en la descripción del modelo matemático

Page 200: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

177

9.4. Problema de empaquetamiento rectangular bidimensional tipo guillotina resuelto por algoritmos genéticos

Artículo publicado en revista tipo C.

Revista Scientia et Techica. Universidad Tecnológica de Pereira año XIII. número 35. Agosto 2007.

Page 201: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año X, No x, Mes 200x. UTP. ISSN 0122-1701 1

Fecha de Recepción: (Letra Times New Roman de 8 puntos)

Fecha de Aceptación: Dejar en blanco

PROBLEMA DE EMPAQUETAMIENTO RECTANGULAR BIDIMENSIONAL TIPO GUILLOTINA RESUELTO POR ALGORITMOS GENÉTICOS

RESUMEN

En este artículo, se considera el problema de encontrar un patrón de

empaquetamiento de rectángulos de diferentes tamaños, en un rectángulo de

mayor tamaño tal que el área desperdiciada sea mínima. Las aplicaciones se

encuentran en industrias de perfiles metálicos, corte de maderas, papel, plástico o

vidrio en donde las piezas deben ser cortadas desde grandes hojas de material.

El problema es de tipo NP-completo, dado que los patrones de empaquetamiento

incrementan exponencialmente con el número de rectángulos que deben ser

empacados. Se utiliza el algoritmo genético modificado y se sugiere una

estrategia de codificación basada en cortes por secciones.

PALABRAS CLAVES: Problema de empaquetamiento, corte guillotina,

optimización combinatorial, metaheurísticas.

ABSTRACT

We consider problem to find a pattern to allocate a set of rectangular items of

different sizes, within a rectangle of greater size so that the wasted area is

minimum. The applications can be observed in metallic profiles industries, wood

cut, paper, plastic or glass in where the rectangular components must be cut from

great leaves of material.

It is a problem NP-hard, since the packing patterns increase exponentially with

the number of rectangles that must be allocated. A Genetic algorithm is used

and codification strategy of the problem based on cuts by sections is suggested

KEYWORDS: Packing problem, guillotine cutting, combinatorial optimization,

metaheuristics.

ELIANA MIRLEDY TORO O Ingeniera Industrial, Ms.C

Profesora catedrática.

Facultad de Ingeniería Industrial

Universidad Tecnológica de Pereira

[email protected]

MAURICIOGRANADA ECHEVERRI Ingeniero Electricista, Ms.C

Profesor

Facultad de Ingeniería Eléctrica

Universidad Tecnológica de Pereira

[email protected]

1. INTRODUCCIÓN

El problema de corte de piezas rectangulares pertenece a

la familia de problemas de corte y empaque y sus

aplicaciones se pueden observar en industrias de perfiles

metálicos, corte de maderas, papel, plástico o vidrio en

donde los componentes rectangulares tienen que ser

cortados desde grandes hojas de material.

En este artículo, se considera el problema de encontrar un

patrón de empaquetamiento de rectángulos de diferentes

tamaños, dentro de un rectángulo de mayor tamaño cuyo

objetivo consiste en que el área desperdiciada sea

mínima. Este problema de empaquetamiento en dos

dimensiones es de interés científico y académico ya que

sirve como plataforma para problemas de mayor

complejidad, como el de tres dimensiones. Es un

problema de tipo NP-completo, dado que los patrones de

empaquetamiento incrementan exponencialmente con el

número de rectángulos que deben ser empacados. La

magnitud del espacio de búsqueda es mayor que el del

problema del agente viajero. Por ejemplo, si el número de

placas a ser ubicadas es de 25, el tamaño del espacio de

soluciones está dado por !25225 . Mientras que el espacio

de soluciones del agente viajero es del orden de 3110 para

un caso con igual número de ciudades considerando que

todas las ciudades estén conectadas entre si. 3125 10!252 . Esta es una de las razones para usar las

técnicas metaheurísticas como herramienta de

solución[1].

El problema descrito considera un alto grado de

diversidad en los tipos de placas o piezas rectangulares y

una única paleta en las que deben ser empacadas.

Además, sin pérdida de generalización, se asume que

todas las entradas son enteros positivos. La posibilidad de

rotar las placas un ángulo de 90º no es considerada en

este trabajo. Sin embargo, para una placa en particular es

posible resolver este problema generando un nuevo tipo

de placa con dimensiones equivalentes a ésta rotada 90º.

Este documento se presenta de la siguiente manera. El

problema de empaquetamiento bidimensional es

presentado en la sección 2. lLa Sección 3 explica el

modelo matemático , en la sección 4 se presentan el

algoritmo de solución adaptado al problema específico,

en la sección 5 se muestran las pruebas y resultados y en

Page 202: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año X, No x, Mes 200x. UTP 2

la sección 6 se presentan las conclusiones con base a los

resultados obtenidos.

2. PLANTEAMIENTO DEL PROBLEMA En un problema de empaquetado de rectángulos se

dispone de un conjunto de piezas rectangulares o placas

con longitudes conocidas y se desean distribuir estas en

un objeto rectangular de mayor tamaño, denominado

paleta, de forma que se minimice el área desperdiciada

en la paleta. Una forma alternativa de interpretar el

problema supone que se dispone de un objeto rectangular

desde el que hay que obtener un conjunto de piezas

realizando cortes perpendiculares a los ejes.

Este problema se conoce comúnmente como el problema

restringido bi-dimensional de corte guillotina. Un corte es

de tipo guillotina si cuando se aplica sobre un rectángulo

produce dos nuevos rectángulos, es decir, si el corte va de

un extremo a otro del rectángulo original. En la figura 1

se muestran los diferentes tipos de problema, el área

sombreada representa las áreas sin utilizar [2].

La consideración de diferentes tipos de restricciones

puede originar problemas de empaquetamiento

totalmente distintos.

1(a) Corte Guillotina 1(b) Corte no guillotina

Figura 1. Tipos de Cortes

Pueden considerarse las siguientes tres situaciones

referidas al conocimiento que se tiene del objeto en que

hay que distribuir las piezas[3]:

1. El largo y el ancho de la paleta son conocidos. Se

pretende, por tanto, distribuir en el objeto aquellas piezas

que optimicen la función objetiva considerada. Esta

situación es la que se aborda en este artículo.

2. Sólo es conocido el ancho de la paleta mientras que el

largo se considera flexible. En este tipo de problema se

desea encontrar la distribución de piezas que minimice el

largo de la paleta. En [4] y [5] se plantean algunos

ejemplos de este problema.

3. No son conocidos ni el largo ni el ancho de la paleta.

El propósito es distribuir las piezas de tal forma que el

rectángulo que esta distribución determina sea el de

menor área. En [6] se plantean algunos ejemplos de este

problema.

3. MODELO MATEMÁTICO El problema ha sido formulado como un problema lineal

entero en [7], en este trabajo se aborda un nuevo

planteamiento. Para una adecuada formulación

matemática del problema, se implementa la siguiente

notación:

L: altura de la paleta rectangular de almacenamiento.

W: ancho de la paleta.

M: número total de piezas rectangulares o placas a ser

ubicadas.

i {1,2,…,m}: conjunto de índices de los tipos de placas.

li: altura de la placa rectangular de tipo i.

wi: ancho de la placa de tipo i.

k: alternativa de solución k conformada por dos vectores

como se muestra en la figura 3.

Sk: número máximo de secciones de la alternativa de

solución k.

La expresión matemática de la función objetivo para una

alternativa de solución k es:

.secciones( 1)

.placas( ) .placas( )

1 .secciones( ) 1

- k k

k k

k

S s

k m m

s m s

Fobj L W l w (1)

La minimización de la función objetivo mostrada en (1)

está sujeta al cumplimiento de las siguientes

restricciones, a fin de obtener una solución factible:

1. Todas las piezas tienen una orientación fija, es decir,

no se permiten rotaciones de 90ª. Esto significa que

una placa de ancho w y altura l es distinta a una pieza

de ancho l y altura w.

2. La placas deben ser ubicadas dentro de la paleta de

forma ortogonal. Esto quiere decir que los lados de

las placas son paralelos a los lados de la paleta.

3. El ancho y la altura de cada placa no debe exceder

las dimensiones de la paleta.

4. Las dimensiones de las placas y las de la paleta son

números enteros positivos.

5. Todos los cortes realizados sobre la paleta se

consideran perfectos, sin grosor.

6. Pueden haber varias placas del mismo tipo.

El objetivo del problema consiste en ubicar las placas

sobre la paleta de forma que la diferencia entre el área de

la paleta y el área total ocupada por las placas sea mínima

(minimizar el desperdicio)[8]. Una alternativa factible de

solución será aquella en la que todas las placas quedan

contenidas dentro de la paleta, ubicadas ortogonalmente y

sin traslaparse unas con otras. Por lo tanto, se pretende

encontrar una solución factible que minimice el área

desperdiciada.

4 ALGORITMO GENÉTICO DE CHU-BEASLEY

Page 203: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año X, No x, Mes 200x. U.T.P

____________________________

1. Las notas de pie de página deberán estar en la página donde se citan. Letra Times New Roman de 8 puntos

3

Las principales características del Algoritmo Genético

(AG) de Chu-Beasley consisten en mantener constante el

tamaño de la población de alternativas de solución, de

manera que en cada iteración se reemplaza una

alternativa de la población usando un eficiente

mecanismo de modificación de la misma pero teniendo

en cuenta que no se admiten configuraciones repetidas

dentro de la población. En cada iteración la población es

reemplazada sistemáticamente por un único descendiente

generado[9,10]. Esta estrategia tiene la ventaja de

permitir encontrar múltiples soluciones y además

conservar la diversidad del conjunto de alternativas. El

algoritmo que describe el método es el siguiente:

1. Se genera, aleatoriamente, una población inicial de

soluciones.

2. Se obtienen las funciones objetivo, penalizando las

soluciones infactibles.

3. Se seleccionan dos padres usando el método de

selección por torneo. En este método, dos

configuraciones son elegidas aleatoriamente y se

elige uno de los padres considerando el mejor valor

en función objetivo, el otro es descartado. El

proceso se ejecuta dos veces para obtener dos

padres.

4. El proceso de recombinación y mutación se realiza

de forma integrada ya que se deben tener en cuenta

consideraciones especiales del problema. Estos

operadores actúan sobre los padres escogidos en el

paso anterior. La idea se amplia en la sección 4.2.

En esta fase se realizan mejoras en la factibilidad y

en la optimalidad, teniendo en cuenta la filosofía de

bloques constructivos.

5. Se reemplaza un individuo de la población por la

solución encontrada tomando como base lo

siguiente:

a. Si la alternativa actual es infactible y a su vez

es menos infactible que la peor infactible de la

población, entonces reemplazar la peor infactible

por la alternativa actual. Es decir, entre dos

soluciones infactibles se prefiere la solución

menos infactible.

b. Si la configuración es factible y existe por lo

menos una infactible en la población actual,

entonces reemplazar la peor infactible por la

alternativa actual. Es decir, entre una solución

factible y una infactible se prefiere la solución

factible.

c. Si la configuración es factible y todas las

alternativas de la población actual son factibles,

entonces reemplazar la alternativa con peor

función objetivo por la alternativa actual. Lo

anterior se realiza sólo si la alternativa actual es

de mejor calidad que la peor de la población. Es

decir, entre dos soluciones factibles se prefiere la

solución con mejor función objetivo.

4.1 Representación del Cromosoma

Se tiene una paleta rectangular de 24x38, donde se desean

ubicar m placas rectangulares de menor tamaño y de

diferentes tipos, en la tabla 1 se presentan los datos de

largo y ancho de cada una de las piezas y la cantidad de

piezas demandadas, una configuración factible es aquella

donde se ubiquen algunas piezas de las demandadas de

forma que se minimice el área sin utilizar.

Una alternativa de solución está codificada por dos

vectores. El primero, denominado “Placas”, contiene una

secuencia de ubicación de placas según el tipo. Dicho

vector es de un tamaño igual al número total de placas. El

segundo vector se denomina “Secciones” y contiene los

intervalos para los cuales el primer vector ubica las

placas en una misma sección. El número total de

secciones de cada alternativa es determinado de forma

aleatoria. Por lo anterior, una alternativa es un arreglo

de dos vectores a los cuales se puede hacer referencia

como .Placas y .Secciones. La altura de una sección

está determinada por la placa de mayor altura.

Largo Ancho Cantidad demandada

Paleta 24 38

Pieza tipo 1 14 19 2

Pieza tipo2 9 6 2

Pieza tipo 3 3 6 2

Pieza tipo 4 6 6 4

Pieza tipo 5 9 3 2

Pieza tipo 6 10 1 4 Tabla 1.Datos del ejemplo

Así, por ejemplo, la alternativa infactible mostrada en la

figura 2 corresponde a la ubicación de placas mostrada en

la figura 3.

.Placas= 2 0 1 5 1 0 6 6 4 0 7 3 4 7 2 7 0 6 4 5

.Secciones = 0 6 15 20

Figura 2. Alternativa de solución .

El vector Secciones indica que esta alternativa posee 3

secciones, la primera comprendida entre las posiciones 0

y 6 del vector Placas, la segunda entre 7 y 15 y la tercera

entre 16 y 20. Esto implica que, por ejemplo, la segunda

sección contiene las placas 6, 6, 4, 7, 3, 4, 7 y 2. De esta

forma, una alternativa de solución está completamente

definida por los vectores Placas y Secciones los cuales

representan la forma de ubicación de las placas en la

paleta principal. La secuencia de llenado de las placas

siempre se realiza de izquierda a derecha en cada sección.

Nótese que en el vector Placas existe la posibilidad de

encontrar campos con un valor 0. Esta posibilidad

permite que el algoritmo de optimización pueda,

eventualmente, excluir placas de la alternativa de

solución. Es decir, no es necesario que todas las placas

tengan que ser ubicadas en la paleta para una alternativa

de solución dada.

Page 204: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año X, No x, Mes 200x. UTP 4

Sección 1

D1 D2

T2

T1T5

T1

T6 T4T7 T3

T4T7

T2 Sección 2D3

D4

T4T7

T5

T6

Sección 3

Figura 3. Representación de una alternativa de solución

A cada sección se asigna un área utilizada por las placas

contenidas en la misma. Además, si existen placas que se

salen de la paleta, la sección es penalizada incrementando

el área desperdiciada en un área igual a la suma de las

áreas de las placas que están por fuera de la paleta. Esto

sirve como factor de sensibilidad para orientar la

búsqueda de mejores soluciones. En otras palabras, es

necesario calcular el área desperdiciada en cada sección

con el fin de tener un indicador de las peores secciones y

por lo tanto preferir cambios, de forma probabilística, en

estas secciones.

En la figura 3 se muestra una alternativa de solución

dónde el área disponible que corresponde a la paleta está

representada por líneas rojas, y las áreas sombreadas

corresponden a los desperdicios, dentro de cada uno de

los rectángulos se indica el tipo de pieza que se está

ubicando, y las líneas punteadas en negro indican las

secciones de corte; en la sección 1 de la alternativa

mostrada se puede apreciar que el área desperdiciada es

la suma de los rectángulos nombrados como D1 y D2 ,

D1 tiene dimensiones de 5 por 6, y D2 tiene dimensiones

de 5 por 3, lo que da un total de área sin utilizar en esta

sección de 45 unidades.

Sin embargo, la segunda pieza tipo 1 está ubicada por

fuera de la paleta por lo cual esta sección es penalizada

en un valor igual al área de la placa que causa la

violación y corresponde a 14x19= 266. El área total

desperdiciada en la sección 1 es 45 +266=311.

4.2 Proceso de recombinación y mutación

El proceso de recombinación, en este problema en

particular, debe ser realizado cuidadosamente ya que es

posible obtener soluciones infactibles al implementar este

operador de la forma tradicional. Si se aplicara este tipo

de recombinación se corre el riesgo de obtener una

configuración en la cual una placa podría ocupar dos

posiciones diferentes sobre la paleta.

En este artículo se propone incorporar la filosofía de la

recombinación a través de la conservación de bloques

constructivos. El proceso consiste en usar dos puntos de

corte sobre los padres seleccionados por torneo los cuales

son representados por el vector .placas, como el

mostrado en la figura 2. Posteriormente se aplica un

operador de cruzamiento especial denominado cruce

parcialmente combinado o PMX por su significado en

inglés (Partially Matched Crossover). Este operador

permite recombinar dos cromosomas sin perder los

bloques del cromosoma que ya se había construido. En el

algoritmo tradicional PMX los puntos de corte son

escogidos aleatoriamente. Para este problema los puntos

de corte son determinados por el vector .placas de una

de las alternativas escogida aleatoriamente, en donde se

selecciona una sección para que la recombinación se

realice conservando la sección escogida. La escogencia

de la sección se hace usando selección por ruleta y se da

mayor probabilidad a la sección de mejor calidad, es

decir, se trata de conservar las secciones con menor

desperdicio o de buena calidad. Así por ejemplo, la

recombinación entre dos alternativas i y j se lleva a cabo

como se muestra a continuación:

Resultan dos descendientes, donde el primero conserva la

sección conformada por las placas (7, 9, 10):

El segundo descendiente conserva la sección conformada

por las placas (6, 2, 3):

El proceso de mutación en el algoritmo genético

tradicional es bastante simple. Consiste en intercambiar

aleatoriamente dos genes de los cromosomas obtenidos

anteriormente. En el problema que se maneja en este

artículo, el proceso de mutación es un poco distinto,

debido a que es posible afectar cualquiera de los dos

cromosomas que conforman una alternativa de solución

(ver figura 2).

La mutación consiste en escoger por ruleta una de las

secciones del hijo seleccionado. Se da mayor

probabilidad a las secciones de peor calidad y se

modifica la sección escogida siguiendo las siguientes

estrategias:

13410911232671185

38121124109761513

placasi .

placasj .

Sección escogida

por ruleta

1310740secciones.i

Puntos de recombinación

Page 205: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año X, No x, Mes 200x. U.T.P

____________________________

1. Las notas de pie de página deberán estar en la página donde se citan. Letra Times New Roman de 8 puntos

5

1. Modificar el vector .placas original haciendo

permutaciones suaves usando el operador de

mutación tradicional. Es decir, escogiendo de

forma aleatoria dos elementos del vector

.placas, de la sección ganadora en la ruleta, e

intercambiándolos entre si.

2. Modificar el vector .placas original quitando de

la sección uno de sus elementos de forma

aleatoria.

3. Modificar el vector .placas original

reemplazando uno de sus elementos por una de

las placas que no pertenecen a la alternativa

actual. Esto se hace de forma aleatoria y

afectando la sección actual.

4. Modificar el vector .secciones original

reduciendo o aumentando el tamaño de la

sección actual. Este procedimiento es de gran

importancia porque permite realizar búsquedas

redimesionando las secciones. El impacto de

realizar este paso sobre la alternativa de solución

es el de pasar placas de una sección a otra.

De los descendientes anteriores, se escoge uno usando

selección proporcional (ruleta) dando mayor probabilidad

a las alternativas con mejor valor de función objetivo,

incluyendo la alternativa original.

5. PRUEBAS Y RESULTADOS

Para demostrar la eficiencia del algoritmo, se probó con

diferentes casos de prueba y se obtuvieron los siguientes

resultados.

Caso 1. Paleta de altura=24 y ancho=38.

Tipo Alto Ancho Cantidad 1 12 19 2

2 14 19 2

3 2 4 25

4 3 38 1

5 5 19 2

6 2 2 1 Tabla 2. Dimensiones y cantidad de placas para caso 1.

Para este caso se utilizó una población de 10 individuos

generando aleatoriamente tanto el vector de ubicación de

placas como el vector de secciones El algoritmo

propuesto penaliza la infactibilidad de modo que la

respuesta final contiene todas las placas dentro de la

paleta

0 5 10 15 20 25 30 35 400

5

10

15

20

25

Figura 4. Solución obtenida para el caso 1.

El factor de penalización usado es igual a 2.

Caso 2. Paleta de altura=10 y ancho=10.

Tipo Alto Ancho Cantidad 1 3 2 4

2 7 2 4

3 4 2 4

4 6 2 4

5 9 1 4

6 8 4 4

7 4 1 4

8 1 10 4

9 3 7 4

10 4 5 4 Tabla 3. Dimensiones y cantidad de placas para caso 2.

0 1 2 3 4 5 6 7 8 9 100

1

2

3

4

5

6

7

8

9

10

Figura 5. Solución obtenida para el caso 2.

Esta respuesta se obtuvo con parámetros idénticos a los

del caso 1. Cada caso se corrió 20 veces y en el 99% de

ellas se llegó a las soluciones mostradas. Para ambos

casos se obtuvo un porcentaje de utilización del material

disponible de 99.5% que comparados con la literatura

especializada son muy satisfactorios debido a que las

respuestas observadas presentan un factor de utilización

en promedio de 98%.

Page 206: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año X, No x, Mes 200x. UTP 6

El caso 1 tiene un tamaño del espacio de soluciones del

orden de 332 33! y el caso 2 de 402 40!. Lo cual los

hace problemas de difícil solución con un grado mayor

de complejidad que el problema del agente viajero.

Los tiempos computacionales involucrados en la solución

de estos casos, para un equipo con procesador Intel

Pentium de 1.6 GHz, fueron de 20 y 28 segundos,

respectivamente.

6. CONCLUSIONES

La codificación presentada es de fácil implementación y

muestra un buen comportamiento cuando el problema es

resuelto por algoritmos genéticos.

Los bloques constructivos son beneficiados con este tipo

de codificación ya que se preserva, a través de selección

proporcional, al manejar división por secciones. La

optimalidad total se mejora cuando el área desperdiciada

en una sección es reducida. Por esta razón, el algoritmo

presenta un mejor desempeño cuando el factor de

penalización por secciones es escogido adecuadamente.

La optimalidad se mejora haciendo mutaciones suaves a

los bloques de mala calidad hasta que mejore o hasta un

número de intentos determinado. Este paso es similar a

una búsqueda intensiva. Cuando una sección no tiene

área desperdiciada se debe procurar mantener sus

elementos unidos como un bloque. Esto se logra dandole

a esta sección una baja probabilidad de ser modificada.

En el proceso de mutación se considera agregar, quitar y

modificar tanto el vector de ubicación de placas como el

de secciones.

Es posible mejorar el resultado de los datos obtenidos

empleando otros tipos de codificación para una

alternativa de solución. Una propuesta para trabajos

futuros consiste en implementar una codificación basada

en grafos[11] o en ubicación estratégica, como lo

propone el algoritmo de BL[8,12,13]. La codificación de

este problema usando grafos permite abordar su solución

usando optimización por colonia de hormigas.

7. AGRADECIMIENTOS

Los autores expresan su agradecimiento a la Universidad

Tecnológica de Pereira por el apoyo prestado al grupo de

desarrollo en investigación operativa (DINOP).

8. BIBLIOGRAFÍA

[1] S. Jakobs, Theory And Methodology On Genetic

Algorithms For The Packing Of Polygons. European

Journal Of Operational Research. Vol.88, p87-100.

1996.

[2]F. Parreño. Algoritmos Heurísticos Y Exactos Para

Problemas De Corte No Guillotina En Dos Dimensiones.

Tesis Docotoral. Universidad De Valencia, Servei De

Publicacions. España 2004

[3] C. Beltrán E. Calderón Procedimientos Constructivos

Adaptativos (Grasp) Para El Problema Del Empaquetado

Bidimensional. IX Conferencia De La Asociación

Española Para La Inteligencia Artificial. VI Jornadas De

Transferencia Tecnológica De Inteligencia Artificial

(Volumen II)), pp. 755-764. Gijón, España. Del 14 Al 16

De Nov. De 2001

[4] S. Benati. An Algorithm For A Cutting Stock

Problem On A Strip. Journal Of Operational Research

Society Vol. 48 Pp. 288- 294 (1997)

[5] E. Hopper, B. Turton. An Empirical Investigation

Of Meta-Heuristic And Heuristic Algorithms For A 2d

Packing Problem. European Journal Of Operational

Research Vol. 128 Pp. 34-57 (2001)

[6] I. Hwang. An Efficient Processor Allocation

Algorithm Using Two Dimensional Packing.Journal Of

Parallel And Distributed Computing Vol. 42 Pp. 75-81

(1997)

[7] Beasley, J.E., An exact two-dimensional non-

guillotine cutting tree search procedure. Operations

Research 33, 49–64. 1985.

[8] T.W. Leung , Chi Kin Chan, M. Troutt Application

Of A Mixed Simulated Annealing-Genetic Algorithm

Heuristic For The Two-Dimensional Orthogonal Packing

Problem. European Journal Of Operational Research 145

(2003) 530–542

[9] Vendramini E. “Optimización del problema de

cargamento de contenedores usando una metaheur+istica

eficiente”.Tesis Doctoral. UNESP.Brasil.2007

[10] Toro E., Granada M., Romero R. Algoritmo

Memético Aplicado A La Solución Del Problema

Deasignación Generalizada.Revista Tecnura. Año 8

No 16 Semestre I -2005.

[11] Diego-Mas.J.E. “Optiomización de la distribución

en planta de instalaciones industriales mediante

algoritmos genéticos. Aportación al control de la

geometría de actividades”. Tesis doctoral. Universidad

Politécnica de Valencia.España. 2006

[12] J.E. Beasley, A population heuristic for constrained

two-dimensional nonguillotine cutting, European Journal

of Operational Research 156 (2004) 601-627.

[13] Andrea Lodi , Silvano Martello, Michele Monaci.

Two-dimensional packing problems: A survey. European

Journal of Operational Research 141 (2002) 241–252

Page 207: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

178

9.5. Algoritmo de búsqueda tabú aplicado a la solución del problema de corte bidimensional guillotinado

Artículo en revisión en revista tipo C.

Revista Scientia et Techica. Universidad Tecnológica de Pereira

Page 208: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año XIII, No x, Mes de 200x. Universidad Tecnológica de Pereira. ISSN 0122-1701 1

Fecha de Recepción: (Letra Times New Roman de 8 puntos) Fecha de Aceptación: Dejar en blanco

ALGORITMO DE BÚSQUEDA TABÚ APLICADO A LA SOLUCIÓN SOLUCIÓN DEL PROBLEMA DE CORTE BIDIMENSIONAL GUILLOTINADO

Tabu Search algorithm for solution of two dimensional guillotined problem

RESUMEN El problema de corte de piezas guillotinadas bidimensional restringido es un problema clásico de optimización caracterizado por su alta complejidad computacional y sus aplicaciones prácticas en el área de la ingeniería. En este documento se presenta la eficiencia de la técnica de Búsqueda Tabú, utilizando una propuesta de codificación basada en árboles binarios adaptada a la estructura del problema. Con el fin de evaluar el desempeño del algoritmo utilizado, se presentan casos de prueba de la literatura especializada evaluando el porcentaje de uso del material disponible, este valor mide la calidad de la respuesta obtenida.

PALABRAS CLAVES: Búsqueda tabú, corte guillotina, empaquetamiento bidimensional, codificación de árbol binario.

ABSTRACT The problem of cut of guillotined pieces bidimensional restricted, is a classic problem of optimization characterized by its high computacional complexity, and its practical applications in the engineering area. In this document the efficiency of the technique appears Tabú search, using a proposal of codification based on binary trees adapted to the structure of the problem. With the purpose of evaluating the performance of the used algorithm, cases of test of specialized Literature appear evaluating the percentage of use of the available material, this value measures the quality of the obtained answerKEYWORDS: Tabú search, two dimensional packing, bidimensional packing, codification of binary tree.

ELIANA M. TORO O Ingeniera Industrial, M. Sc. Profesor Asistente Universidad Tecnológica de Pereira [email protected]

AUGUSTO C. RUEDA M. Ingeniero Electricista, M. Sc.(C) Profesor catedrático Universidad Tecnológica de Pereira [email protected]

MAURICIO GRANADA Ingeniero Electricista, Ms.C Profesor Facultad de Ingeniería Eléctrica Universidad Tecnológica de Pereira [email protected]

1. INTRODUCCIÓN

El problema de corte de piezas se ha estudiado ampliamente en el campo de la Investigación de operaciones. A partir de unos modelos básicos, existen gran cantidad de variantes, derivadas de la amplia gama de aplicaciones prácticas existentes y dependiendo de quién lo esté tratando.

Existen diferentes criterios para clasificar los problemas de corte y empaquetado, como son: el tamaño, la cantidad de las piezas, las dimensiones del problema, etc. Dyckhoff [1] desarrolló un esquema que generaliza la clasificación presentada por Hinxman [2] a finales de los años 80; el principal objetivo del artículo consiste en unificar las distintas notaciones existentes en la literatura relacionada con este tipo de problemas. En el documento, además, se pretende describir una clasificación de las diversas tipologías y clases de problemas relacionados.

Aunque este tipo de problemas se ha resuelto mediante técnicas heurísticas, el mayor número de procedimientos desarrollados para encontrar soluciones adecuadas a los

diferentes problemas de corte y empaquetamiento se basan en metaheurísticas muy variadas.

El objetivo de este documento es presentar las soluciones obtenidas al aplicar el algoritmo de Búsqueda Tabú (BT) al problema de corte bidimensional tipo guillotina, usando codificación con árboles binarios en sistemas de prueba disponibles en la literatura especializada, donde el objetivo es obtener patrones de corte que generen el menor desperdicio posible de material.

Este trabajo se presenta de la siguiente forma: en la siguiente sección se explica el tipo de problema que se está resolviendo y su modelo matemático, en la sección 3 se muestra una heurística empleada como herramienta para obtener una solución de inicio, en la sección 4 se describe la codificación en árboles binarios, en la sección 5 se expone la adaptación al problema de la técnica BT, en la sección 6 se presentan las pruebas y resultados obtenidos comparándolos con casos de prueba de la literatura especializada, finalmente, se presenta una sección con conclusiones y recomendaciones para trabajos futuros.

Page 209: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año XIII, No x, Mes de 200x. Universidad Tecnológica de Pereira. 2

2. PROBLEMA BIDIMENSIONAL DE CORTE TIPO GUILLOTINA

El problema de corte de piezas bidimensional restricto pertenece a la clase de problemas NP-completo, por lo tanto no existe ningún algoritmo polinomial para determinar la solución óptima del mismo.

Definiendo el problema formalmente se tiene (W, L) y (wi, li) pares ordenados que denotan las dimensiones del tablero y de la pieza i a cortar respectivamente. Sea xi la cantidad máxima demandada de cada una de las piezas y se denota con n el número total de piezas demandadas. La formulación del problema se describe con las siguientes ecuaciones [3]:

.

1

,

i i i

i

M in W L w l x

s a

i n

x e n te r o i

C o r te s fa c t ib le s

(1)

( 2 )

(3 )

( 4 )

La figura 1 muestra dos patrones de corte, uno factible (1a) y uno infactible (1b).

Figura 1. 1(a) Corte guillotina, 1(b) Corte no guillotina

3. TÉCNICA DE INICIALIZACIÓN

Para resolver los problemas de corte bidimensional se encuentran algunas técnicas heurísticas que proporcionan configuraciones iniciales tales como el Bottom-Left (BL), Bottom Left Fill (BLF), Difference Process (DP), las heurísticas de nivel (First Fit Decrease Height y Next Fit Decrease Height) y hill-climbing, entre otras[4].

La estrategia BL dicta que cada pieza a colocar se posiciona inicialmente en la esquina superior derecha de la estructura. A continuación, se desplaza hasta la posición más profunda posible. Una vez allí, la pieza es movida hacia la izquierda tanto como sea posible, repitiéndose esta rutina hasta que la pieza alcance una posición inamovible [4]. Este procedimiento debe realizarse pieza por pieza garantizando que la configuración que se obtenga conserve el corte tipo guillotina.

Debido a que con la implementación de estas técnicas se pueden obtener cortes factibles o infactibles, se hizo una adaptación del BL para encontrar patrones de tipo guillotina empleándola como un método constructivo inicializador de la técnica BT.

4. CODIFICACIÓN DE ÁRBOL

La creación de la estructura de árbol de cortes se realiza aplicando técnicas numéricas de conglomerados (clusters) y tiene por objeto ordenar elementos (piezas) en grupos. Cada nodo interno del árbol representa la forma en que se realiza el corte y los elementos que pertenecen a cada grupo [5]. En la figura 2 se muestra la representación del cluster 5 con las piezas 1 y 2.

21

cluster5

Figura 2. Representación de un cluster

En la figura 3 se observa la configuración con cuatro piezas. En el vector de configuración, la flecha vertical orientada hacia arriba indica la posición límite de ubicación de piezas; los valores en las siguientes posiciones representan los clusters formados. El tamaño del vector de configuración se define como:

Tamaño del vector = número piezas del árbol*2-2 Tamaño del vector = (4*2) -2=6

21 43

7

5 6

1 2 3 4 5 6

Clusters

Vector deconfiguración

Inicio de cluster

Cluster 5

Cluster 7

Cluster 6

Figura 3. Árbol de 4 piezas y codificación

Obtenida la codificación de piezas y cluster se asocia a esta un vector (vector de cortes) que indica el tipo de corte de cada cluster. En la formulación de esta codificación de consideran dos tipos de corte: vertical, asociado al número cero en el vector de cortes, y horizontal, asociado al número uno en el mismo vector (figura 4).

0 para corte horizontal

Izquierda

Derecha

1 para corte vertical

Izq. Der

Figura 4. Tipos de corte

Page 210: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año XIII, No x, Mes de 200x. Universidad Tecnológica de Pereira.

____________________________ 1. Las notas de pie de página deberán estar en la página donde se citan. Letra Times New Roman de 8 puntos

3

Si el tipo de corte de un cluster es horizontal, la pieza que está encima irá en la parte izquierda del par de posiciones del vector de codificación asociado a este cluster y la pieza que está debajo irá en la parte derecha del mismo. Si el corte es vertical, la ubicación real de cada pieza (lado izquierdo o lado derecho) indicará su ubicación en el par de posiciones del vector de codificación asociado al cluster que forman. En la figura 5 se muestran dos ejemplos de codificación de piezas según el tipo de corte.

Pieza 3 Pieza

4Pieza 1

Pieza 2

2 1 3 4 5 6

Clusters

Vector deconfiguración

Inicio de cluster

Cluster 5

Cluster 7

Cluster 6

0 1 1 Vector decortes

Figura 5. Clusters formados por corte vertical

Ejemplo 1

En este ejemplo se ilustra la codificación descrita.

En la tabla 1 se muestran las dimensiones del tablero y las piezas del ejemplo.

Tipo de pieza

Largo Ancho Número de piezas

Tablero 70 42 1 Pieza 1 22 18 2 Pieza 2 8 29 3 Pieza 3 19 19 2 Pieza 4 16 13 2 Pieza 5 4 16 1

Tabla 1. Datos del ejemplo 1

6

7 8 9 10 11

1 1 5

12

3 3 4 4 2 2 2 7 9 8

6 13 14

11 10 12 13

1 0 0 0 1 1 1 0 1 Orientacióndel corte

Cluster

Piezas

(35,29) (79,29) (16,0) (0,0) (35,0)Coordenadasde inicio delcluster

cluster cluster cluster cluster cluster cluster cluster cluster cluster

Figura 6. Codificación de una posible configuración

Con base en la figura 6 se puede observar que los cluster se clasifican por niveles a saber:

Cluster básico: Es aquel que contiene dos piezas. Para el ejemplo, los nodos básicos son 6, 7, 8, 9 y 10.

Cluster de segundo nivel: Está conformado por dos cluster básicos. Nodos 11 y 12. Cluster de tercer nivel: Nodo 13. Cluster raíz o nodo de inicio: Es el cluster que conforma todo el conjunto de piezas.

En la figura 7 se demarca el tablero con líneas rojas. Los clusters 8 y 10 son factibles, debido a que no superan el área del tablero, los demás clusters (9, 6 y 7) sobrepasan el área o están por fuera del mismo por lo que se consideran infactibles. Las áreas achuradas representan las áreas que aún no han sido utilizadas. Las coordenadas indican la ubicación de cada cluster.

8

29

16

13

16

13

19

19

8

29

9

12 8

10

22

18

22

18

6

19

19

4

16

7

1 1

24

3

2

414

13

5

3

2

11

(0,0) (16,0) (35,0)

(35,29) (79,29)

Desperdicio

Desperdicio Desperdicio Desperdicio

Figura 7. Gráfico de la configuración de la figura 7

Cálculo de la función objetivo

Para el cálculo de la función objetivo se debe conocer primero:

Las dimensiones de cada cluster. Alto y ancho de un cluster. Para calcular las dimensiones de cada cluster se debe tener en cuenta su tipo de corte. Por ejemplo, si su corte es horizontal el ancho mayor de las dos piezas se escoge el como el ancho del cluster y la altura es la suma de las alturas de las dos piezas. En la tabla 2 se muestran los cálculos realizados para todos los clusters básicos del ejemplo 1.

Cluster Tipo de corte

Tipos de piezas que lo

forman

Largo Alto

6 Vertical 1 y 1 7 Horizontal 5 y 3 8 Horizontal 3 y 4 9 Horizontal 4 y 2

10 Vertical 2 y 2 Tabla 2. Largos y anchos de los cluster

Page 211: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año XIII, No x, Mes de 200x. Universidad Tecnológica de Pereira. 4

Las coordenadas de cada cluster. Coordenada cartesiana de cada cluster considerando como origen el extremo inferior izquierdo del tablero. Para la determinación de las coordenadas de cada cluster se empieza el análisis de derecha a izquierda en el vector de codificación, observando el tipo de corte y dimensiones de cada cluster. El primer cluster es el cluster raíz, por tanto, la coordenada de éste siempre es la del origen. Así, por ejemplo, en la figura 9 el nodo de inicio o cluster raíz es el 14 que corresponde al primer valor (en el extremo derecho) del vector de codificación mostrado en la figura 6.

24 43 1

9 8

12

13

14

1

6

35

7

11

22

10

Figura 8. Árbol asociado al ejemplo 1

Este cálculo de la función objetivo se hace con base en el área no utilizada del tablero y las infactibilidades generadas en la ubicación de cada cluster (ecuación 5).

. . desperdicios+ (infactibilidades)F O (5)

El parámetro corresponde al valor de penalización de las infactibilidades.

Según la ubicación de los clusters se pueden presentar los siguientes casos:

i) Que el cluster no genere infactibilidad. El ancho del cluster más la coordenada de inicio del mismo en el eje X es menor que el ancho del tablero. Además, la altura del cluster más la coordenada de inicio del mismo en el eje Y es menor que la altura del tablero. ii) Que el cluster sea infactible por ancho. El ancho del cluster más su coordenada de inicio en el eje X es mayor que el ancho del tablero. Además, la altura del cluster más su coordenada de inicio en el eje Y es menor que la altura del tablero. iii) Que el cluster sea infactible por altura. La altura del cluster más la coordenada de inicio del mismo en el eje Y es mayor que la altura del tablero. Además, el ancho del cluster más la coordenada de inicio del mismo en el eje X es menor que el ancho del tablero. iv) Que el cluster sea infactible por ancho y por alto. La altura del cluster más la coordenada de inicio del mismo en el eje Y es mayor que la altura del tablero, pero la coordenada de inicio del cluster en el eje Y es menor que la altura del tablero.

Además, el ancho del cluster más la coordenada de inicio de este en el eje X es menor que el ancho del tablero, pero la coordenada de inicio del cluster en el eje X es menor que el ancho del tablero. v) Que el cluster generado quede por fuera del tablero. En este caso la coordenada de inicio del cluster en el eje X es mayor que el ancho del tablero y la coordenada de inicio del cluster en el eje Y es mayor que la altura del tablero.

Para calcular la función objetivo basta con calcular las infactibilidades porque a partir de estas, tal como se explica a continuación, se pueden determinar los desperdicios. De acuerdo a las posibles ubicaciones de los cluster, las infactibilidades individuales (infactibilidades de cada cluster) se calculan de la siguiente forma:

Si se está en el caso i), donde el cluster es factible, la infactibilidad aportada por este es cero. Si el cluster es infactible y se está en los casos ii), iii) ó iv), la infactibilidad aportada por este cluster se encontrará calculando el área por fuera del tablero de la pieza que está traslapada. Si se está en el caso v), la infactibilidad aportada por este cluster es igual al área efectiva del mismo, es decir, la suma de las áreas de las piezas que lo forman.

Obtenida la infactibilidad total (Infac) mediante la suma de las infactibilidades individuales, se calcula el área efectiva del tablero (Efec_tablero) como se muestra a continuación:

_ - Efec tablero Efec Infac (6)

donde Efec es la suma las áreas de todas las piezas que constituyen la configuración actual.

Con Efec_tablero se procede a calcular el valor de las áreas sin utilizar (Desp) a través de la ecuación 7.

_ - _Desp Área tablero Efec tablero (7)

Donde: Área_tablero es igual al largo por el ancho del tablero.

Así, mediante la ecuación 8 se encuentra el valor de la función objetivo.

.F O Desp Infac (8)

El valor del parámetro se determina experimentalmente.

Page 212: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año XIII, No x, Mes de 200x. Universidad Tecnológica de Pereira.

____________________________ 1. Las notas de pie de página deberán estar en la página donde se citan. Letra Times New Roman de 8 puntos

5

5. Búsqueda Tabú

Búsqueda Tabú utiliza una estrategia de búsqueda local que le permite explorar el espacio de soluciones de manera eficiente a través de la estructura de vecindad. Gran parte de la potencialidad del método está basada en la manera como se define el conjunto de vecinos [6].

La idea básica es ir cambiando en forma sistemática la vecindad al momento de realizar la búsqueda mediante la imposición de reglas.

Criterios de vecindad

Para abordar los criterios de vecindad generados se deben definir dos conceptos: desperdicio general y desperdicio individual. El desperdicio individual es el presente en cada cluster calculado como el área del cluster (producto del alto por el ancho del cluster) menos la suma de las áreas de las piezas que lo forman. El desperdicio general es el área del tablero menos el área efectiva del mismo.

Los criterios de vecindad que se definieron son los siguientes:

Criterio 1 (C1): Si la configuración es factible y hay desperdicio general pero ningún cluster presenta desperdicio individual, generar configuraciones vecinas insertando piezas en los clusters vacíos, es decir en los clusters que aún no han sido utilizados en la configuración actual. Criterio 2 (C2): Si la configuración es factible y presenta clusters con desperdicios individuales, buscar e insertar piezas con áreas menores o iguales a los desperdicios de los clusters que los presenten. Criterio 3 (C3): Si la configuración es factible y presenta clusters con desperdicios individuales, intercambiar piezas de la configuración actual con las aún disponibles, procurando disminuir el desperdicio de los clusters que los presenten. Criterio 4 (C4): Si la configuración es infactible o si en los anteriores tres criterios no se generó el número requerido de vecinos, generar configuraciones vecinas retirando las piezas que generan infactibilidad. Criterio 5 (C5): Si con los tres primeros criterios (configuración factible) o con el cuarto criterio (configuración infactible) no se generaron las configuraciones vecinas requeridas, crear las configuraciones restantes intercambiando piezas entre los clusters básicos vecinos no nulos completos (con por lo menos una pieza). Criterio 6 (C6): Si con ninguno de los anteriores criterios se generó el número requerido de configuraciones vecinas, realizar cambios en los tipos de cortes de los clusters básicos dando prioridad a los que generen infactibilidad (caso

infactible) y/o a los que presenten desperdicios (caso factible).

6. Pruebas y Resultados

Se hicieron pruebas con cuatro casos. Los Casos 1 y 2 aparecen en [7]. Los casos 3 y 4 corresponden a los casos 1 y 3 de la referencia [8].

Una parte importante de BT requiere la definición del número de iteraciones durante las cuales un atributo (en este caso una pieza) permanecerá tabú, es decir, sin poderse mover de su posición, ya sea dentro o fuera de la configuración actual o cualquier otra con relación inclusive con otros atributos, como por ejemplo, de intercambio. En el presente trabajo se definieron cuatro tipos de iteraciones tabú:

K1 = Iteraciones tabú para piezas que entran a la configuración actual. K2 = Iteraciones tabú para que piezas salen de la configuración actual. K3 = Iteraciones tabú para piezas que se intercambian (dentro y fuera de la configuración actual). K4= Iteraciones tabú para piezas que intercambian (dentro de la configuración actual).

En la tabla 3 se muestran los valores usados como iteraciones tabú para los cuatro casos de prueba.

K1 K2 K3 K4

Caso 1 7 7 7 7 Caso 2 7 7 7 7 Caso 3 5 5 5 5 Caso 4 7 7 7 7

Tabla 3. Iteraciones tabú

La cantidad de vecinos según cada criterio y el valor de utilizados se especifican en la tabla 4.

C1 C2 C3 C4 C5 C6

Caso 1 10 10 10 15 0 0 25 Caso 2 10 10 40 0 0 0 5 Caso 3 20 20 10 0 0 10 7 Caso 4 10 10 30 10 10 10 20

Tabla 4. Número de vecinos y penalización

En la figura 9 aparece la configuración inicial obtenida para el caso 3 con el constructivo BL modificado y en la figura 10 se ilustra la configuración final obtenida para el mismo caso después de aplicar el algoritmo BT.

Page 213: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Scientia et Technica Año XIII, No x, Mes de 200x. Universidad Tecnológica de Pereira. 6

Figura 9. Configuración inicial del constructivo caso 3.

Para los casos que se corrieron se obtuvieron mejoras comparadas con las mejores soluciones reportadas, como se observa en la tabla 5.

Figura 10. Configuración final con BS caso 3.

Mejor

Solución

Inicial Final reportada

F. O. % uso

F. O. % uso

F. O. % uso

Caso1

869.95 95.39 0 100 2 99.78

Caso2

419 36.71 0 100 5 99.12

Caso3

62618 96.87 21354 98.93 39418 98.03

Caso4

173958 93.57 44847 98.34 53071 98.04

Tabla 5. Comparación de resultados

7. Conclusiones y recomendaciones

El tipo de codificación para representar el problema bidimensional restricto basado en árboles binarios garantiza que los patrones que se obtengan sean de tipo guillotina; por la estructura de la misma, se facilita la generación de soluciones vecinas y el cálculo del valor de la función objetivo.

Se ha determinado el conjunto de parámetros que hacen que el método tenga un mejor desempeño computacional

para cada uno de los casos de prueba calibrándolos por ensayo y error.

Se superaron las mejores respuestas reportadas para los casos 1, 2 y 3, siendo el más representativo el caso 3 que corresponde a un caso de la literatura especializada.

El tipo de codificación propuesta permite implementar otras técnicas metaheurísticas tales como los Algoritmos Genéticos y Colonia de Hormigas que requieren de una adaptación a los operadores específicos de cada método.

Dentro de los trabajos futuros podrían resolverse casos de prueba en donde las condiciones del problema permitan rotación de las piezas; además, se podría hacer la extensión para el problema de corte bidimensional cuando las figuras demandadas son polígonos, planteando que puede realizarse una reducción del problema a uno de empaquetamiento de rectángulos con algunas consideraciones.

Bibliografía [1] DYCKHOFF, H. Classification of real world trim loss problems. En:G.Fandel et al.(Eds), Essays on Production Theory and Planning, Springer-Verlag, Berlin, páginas 191-208.1990 [2] HINXMAN, A.I. A two dimensional trim-loss problem with sequencing constraints. Advanced Paper of IJCAI-77 MTI, páginas 859-854.1977 [3] PARADA V., SEPÚLVEDA M.,GÓMEZ A. Solution for the Constrained Guillotine Cutting Problem by Simulated Annealing. Journal on computers and operations research, 25 37-47. 1998. [4]FERNÁNDEZ T, DUARTE A. Método Multi- arranque aplicado al problema del Strip Packing Problem bidimensional V Congreso de Metaheurísticas, Algoritmos Evolutivos y Bioinspirados. Puerto de la Cruz (Tenerife), 14-16/02/2007 [5] DIEGO-MAS, J.A., “Optimización de la distribución de planta en instalaciones industriales mediante algoritmos genéticos. Aportación al control de la geometría de actividades”. Tesis doctoral, Universidad Politécnica de Valencia, 2006. [6] GALLEGO R. ESCOBAR A. ROMERO R. Técnicas de optimización combinatorial. Textos universitarios. Universidad Tecnológica de Pereira. Abril 2006. [7] TORO, E. GRANADA M. Problema de empaquetamiento rectangular bidimensional tipo guillotina resuelto por algoritmos genéticos. Revista Scientia et Technica. Universidad Tecnológica de Pereira año XIII. número 35. Agosto 2007. [8]CUI Y. An exact algorithm for generating

homogenous T-shape cutting patterns. Computers & Operations Research. 2007, 34(4): 1107-1120. Disponible en Internet: www.gxnu.edu.cn/Personal/ydcui/English/index.htm

Page 214: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

179

9.6. Efecto de la configuración inicial en la solución del problema de corte bidimensional usando el algoritmo búsqueda tabú

Artículo en revisión en revista tipo C

Revista Tecnologías de avanzada. Universidad de Pamplona

Page 215: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

EFECTO DE LA CONFIGURACIÓN INICIAL EN LA SOLUCIÓN DEL PROBLEMA DE CORTE BIDIMENSIONAL USANDO EL ALGORITMO BÚSQUEDA TABÚ

MSc. Eliana M. Toro O.*, Ing. Augusto C. Rueda M.** Ing. Hugo Andrés Ruiz F.***

Universidad Tecnológica de Pereira

*Docente Asistente Facultad de Ingeniería Industrial

** Docente Catedrático Programa de Ingeniería Eléctrica

*** Docente Catedrático Programa de Ingeniería de Sistemas

Vereda La Julita, Pereira, Risaralda, Colombia Tel.: 57-6-3137122, Fax: 57-6-3137122

mail: {eliana, aucer, hugor} @ohm.utp.edu.co

Abstract: Tabu Search algorithm is a metaheuristic used for problems of global

optimization, but there are few investigations that are concentrated in the initial

solution. This document try to show the roll that plays the initial solution in the

performance of the algorithm, based on the problem of two-dimensional guillotined

cutting, using different initial solutions to observe the effect on the best solution

found after several iterations. Traditionally the initial configuration can be generated

randomly, but there are many other alternatives, this paper considers an initialization

strategy using a constructive algorithm.

KEYWORDS: Initial solutions, metaheuristics, Tabu Search, Two dimensional cut

problem.

Resumen: El algoritmo de Búsqueda Tabú es una metaheurística usada para

problemas de optimización global, pero hay pocas investigaciones que se concentren

en la solución de inicio. En este documento se pretende mostrar el papel que juega la

solución de inicio en el desempeño del algoritmo, tomando como base el problema

de corte bidimensional tipo guillotina, usando diferentes soluciones de inicio para

observar el efecto sobre la incumbente encontrada después de varias iteraciones.

Tradicionalmente la configuración inicial puede ser generada aleatoriamente, pero

hay muchas otras alternativas, aquí se plantea una estrategia de inicialización

utilizando un algoritmo constructivo.

PALABRAS CLAVES: Búsqueda Tabú, metaheurísticas, soluciones de inicio,

problema de corte bidimensional.

1. INTRODUCCIÓN

El proceso de solución de problemas típicamente

implica las fases de modelar, simular y optimizar.

El modelamiento matemático de un problema de la

vida real es a menudo complejo, y la función

objetivo planteada puede ser no convexa y tener

varios mínimos locales. Los métodos globales de

optimización son necesarios para prevenir el

estancamiento a un mínimo local [6]. En los años

recientes se ha manifestado un creciente interés en

métodos que permitan solucionar este tipo de

problemas [3] y [4].

Los algoritmos de optimización combinatorial son

considerados como eficientes métodos de

optimización global [3]. Un factor importante en la

implementación de un algoritmo de solución lo

constituye un adecuado punto de inicio.

Las configuraciones iniciales se pueden obtener de

diversas formas entre ellas: generación aleatoria, o

a través de algoritmos constructivos que utilicen

factores de sensibilidad o cierta lógica heurística.

Los problemas matemáticos pueden ser clasificados

según el grado de complejidad. El primer grupo

está conformado por casos de baja complejidad

matemática, en estos el espacio de solución puede

ser enumerado explícitamente y ser resueltos

usando métodos exactos en tiempos de computo

aceptables; por lo tanto la configuración inicial no

presenta efecto en la calidad de la solución final,

Page 216: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

sólo incide en el número de iteraciones que se

requieren para llegar al óptimo global.

El segundo grupo lo constituyen casos de mediana

complejidad matemática, para estos el número de

posibles alternativas crece obstenciblemente, sin

embargo, pueden ser solucionados en tiempos

computacionales aceptables usando un buen

algoritmo exacto de programación matemática. En

este la solución inicial incide en el número de

iteraciones para la convergencia del algoritmo.

El tercer grupo está conformado por casos de alta

complejidad matemática, en este grupo están

incluidos muchos de los problemas reales de

ingeniería. Entre estos se encuentran algunos

casos del problema de corte bidimensional, en los

que el espacio de solución crece de forma

exponencial, siendo catalogados como problemas

NP-completo, donde la solución final depende de la

calidad de la solución inicial.

El interés de este trabajo es observar el efecto de la

solución de inicio sobre la respuesta final. Para

desarrollar esta idea se trabajará el problema

específico de corte bidimensional tipo guillotina

resuelto mediante la metaheurística de Búsqueda

Tabú (BT) utilizando diferentes soluciones de

inicio para casos de prueba extraídos de [1] y [8].

La estructura de este documento es: en la siguiente

sección se muestra un resumen sobre las técnicas de

solución, en la sección 3 se expone la esencia del

algoritmo de búsqueda Tabú, en la sección 4 se

presenta el problema bajo el que se realizó el

estudio, en la sección 5 se explica la

implementación de la técnica Búsqueda Tabú a la

solución del problema, en la sección 6 se describen

algunas heurísticas utilizadas en la solución del

problema de corte bidimensional, en la sección 7 se

comentan los resultados obtenidos usando casos de

prueba de la literatura especializada y finalmente se

presenta una sección con conclusiones y

recomendaciones.

2. TÉCNICAS DE SOLUCIÓN

Las técnicas de solución para problemas prácticos

de optimización combinatorial se pueden clasificar

en métodos exactos y aproximados. Vendramini

[10] resume los métodos de solución de los

problemas clásicos de optimización combinatorial

en un organigrama que se presenta en la figura 1.

Los métodos de solución pueden ser dependientes

del problema o independientes del mismo. Las

primeras, conocidas como heurísticas, son válidas

únicamente para el problema particular para el que

han sido diseñadas, mientras que las segundas, las

llamadas metaheurísticas, pueden aplicarse a

cualquier problema.

El desarrollo de metaheurísticas, junto al avance de

las tecnologías de información que proveen de

computadores cada vez más rápidos, han permitido

a investigadores y profesionales de la industria

resolver problemas combinatorios complejos y de

gran escala. En general, estas metaheurísticas

toman inicialmente una solución, la cual es luego

mejorada usando heurísticas de mejoramiento

embebidas en una estructura más general, por

ejemplo: Simulated Annealing (SA), Algoritmos

Genéticos (AG), Búsqueda Tabú (BT). La

característica común de estos enfoques es el uso de

mecanismos para evadir óptimos locales [7].

Métodos de solución

Métodos

Exactos

Branch

and Bound

Branch

and Cut

Branch

and Price

Métodos

aproximados

Heurísticas EspecialesMetaheurísticas

Constructivo

(Greedy)

Mejoría

Particionar

Descompos

Formulación

Matemática

Algoritmos

genéticos

Simulated

Annealing

Búsqueda

Tabú

GRASP

Colonia

de hormigas

Partícula

Swarm

Scatter

Search

Algoritmos

Culturales

Vecindad

Variable

Lógica

Fuzzy

Redes

neuronales

Máquinas

de soporte

Vectorial

Figura 1. Clasificación de los métodos de solución.

La teoría matemática de los algoritmos

combinatoriales afirma que independientemente de

la solución inicial, generalmente hallada

aleatoriamente, siempre se obtiene la solución

óptima global, premisa que ha sido adoptada por la

mayoría de los investigadores en sus desarrollos.

En la aplicación de algoritmos de búsqueda

combinatorial, es primordial que exista la suficiente

diversidad para asegurar que se parte de distintas

regiones en las que se puede encontrar el óptimo.

Cuando se usa un inicializador se deja actuar en el

problema a través del mismo método colocando la

solución inicial en una región atractiva

garantizándole que en ella va a encontrar

Page 217: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

subóptimos de buena calidad y eventualmente uno

de ellos puede ser el óptimo global.

Se comprueba que un inicializador es bueno si al

usar la metodología de búsqueda se encuentran

finalmente soluciones de muy buena calidad, en

virtud de la región donde se localice la solución

inicial aunque aparentemente no sea tan buena. Por

esto son importantes los inicializadores para la

metodología de optimización, usados en conjunto

con las técnicas metaheurísticas.

3. BÚSQUEDA TABÚ

Búsqueda Tabú (BT) es un procedimiento

metaheurístico, perteneciente a la familia de los

métodos de optimización combinatorial, inventado

por Fred Glover en la década de los 80 basado en

conceptos que pertenecen al dominio de la

inteligencia artificial y que incorpora los conceptos

de memoria adaptativa y exploración sensible con

el fin que durante el proceso de búsqueda se evite

parar en óptimos locales y entrar en un ciclo

repetitivo. El método resuelve problemas de la

forma:

(1)Min f( x ) s.a. x X

Donde f es una función, en general, no lineal y el

conjunto de restricciones X también puede ser no

lineal. Las variables x involucradas en el problema

pueden ser continuas, enteras o mixtas, aunque

tradicionalmente la técnica es utilizada para

variables enteras en donde la explosión

combinatorial y la imposibilidad de utilizar

teoremas matemáticos basados en la continuidad de

las funciones muestran la potencialidad del método.

3.1 Descripción del algoritmo

El algoritmo de BT básico involucra los siguientes

elementos:

Configuración Inicial. Una configuración es el

conjunto de variables del problema dispuesto en un

arreglo (vector o matriz). La configuración inicial

puede ser generada de manera aleatoria o puede ser

obtenida utilizando un algoritmo constructivo que

utilice factores de sensibilidad o cierta lógica

heurística.

Generación del vecindario. Un vecino de una

configuración X es una configuración X0 obtenida

a partir de X por medio de una transición simple.

En la mayoría de los casos el vecindario N(X)

puede ser muy grande lo que implica un elevado

esfuerzo de cómputo en el proceso de búsqueda.

Debido a esto, se requiere reducir el número de

vecinos a N1(X), redefiniendo las reglas de

construcción del vecindario. Esta etapa es

fundamental en el proceso ya que de ella depende,

en gran parte, el éxito de la búsqueda.

Implementación de listas tabú. Dependiendo del

tipo y complejidad del problema, se utiliza una o

varias listas tabú. El tamaño de la lista puede variar

a lo largo del proceso, teniendo en cuenta que no

todas las configuraciones vecinas deben ser

almacenadas sino las más atractivas en cuanto al

valor de su función objetivo. La razón es la de

reducir el esfuerzo computacional y la eficiencia

del proceso.

Selección del mejor vecino. Una vez que el

vecindario es definido, cada vecino es evaluado

para determinar el valor de su función objetivo y

verificar si cumple o no con las restricciones

planteadas, de esta manera se determina la

factibilidad de la configuración vecina.

Duración Tabú. Por el término tabú se entiende

prohibición, por consiguiente, la duración tabú

indica que un atributo no puede cambiar de estado

durante un número de iteraciones determinado. La

definición del valor de la duración tabú es

importante para evitar que el proceso quede

atrapado en óptimos locales de baja calidad.

Criterio de Aspiración. Al igual que las costumbres

sociales pueden cambiar con el tiempo, las

soluciones tabú pueden dejar de serlo sobre la base

de una memoria cambiante, debe existir una forma

de “olvido estratégico” es decir, que una solución o

atributo pueda salir de la lista antes de que se

cumpla la duración tabú. Esto se implementa a

través del criterio de aspiración, el cual, permite

que un movimiento sea admisible aunque esté

clasificado como tabú.

Actualización de la estructura tabú. El proceso de

búsqueda tabú requiere de una estructura tabú que

tiene la misma codificación de la configuración X y

que almacena la información de los atributos del

vector X que han cambiado o que han permanecido

sin cambio alguno. Esta información se almacena

en las memorias de corto y largo plazo, las cuales

pueden tener un criterio de almacenamiento fijo o

variable a lo largo del proceso dependiendo del

comportamiento de la búsqueda. Esto es lo que

constituye la memoria adaptativa.

Memoria de corto plazo. La memoria de corto

plazo usa básicamente la información de atributos

de configuraciones que han cambiado

recientemente. Esta información es conocida como

memoria basada en hechos recientes. La idea básica

de este tipo de memoria es evitar volver a

configuraciones ya visitadas, penalizando la

búsqueda para evitar el ciclaje.

En la figura 2 se presenta un esquema de

funcionamiento del algoritmo.

Page 218: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Configuración inicial (X)Configuración inicial (X)

Explotación (Generar un

vecindario N(X))

Explotación (Generar un

vecindario N(X))

Funcion objetivo actual no

mejora en k iteraciones?

Fin

Funcion objetivo actual no

mejora en k iteraciones?

Fin

¿Vecino Xj es mejor que

Xi?

¿Vecino Xj es mejor que

Xi?

Actualizar estructura

tabú y hacer Xj=Xi=X

Actualizar estructura

tabú y hacer Xj=Xi=X

Aleatoria

Basado en una regla empírica

Basado en índice de sensibilidad

AleatoriaAleatoria

Basado en una regla empíricaBasado en una regla empírica

Basado en índice de sensibilidadBasado en índice de sensibilidad

Memoria de corto plazo

Memoria de largo plazo

Memoria de corto plazoMemoria de corto plazoMemoria de corto plazo

Memoria de largo plazo

Selección agresiva

Criterio de aspiración

Selección con criterio Tabú

Selección agresivaSelección agresiva

Criterio de aspiraciónCriterio de aspiración

Selección con criterio Tabú

Figura 2. Algoritmo de búsqueda Tabú.

4. PROBLEMA DE CORTE BIDIMENSIONAL TIPO GUILLOTINA

Se tiene un tablero de dimensiones (W,L) y (wi, li)

pares ordenados que identifican la pieza i a cortar

respectivamente. Sean además xi la cantidad

máxima demandada de cada una de las piezas y se

denota con n el número total de piezas demandadas.

La formulación del problema se describe con las

siguientes ecuaciones:

.

1

,

i i i

i

M in W L w l x

s a

i n

x e n te r o i

C o r te s fa c t ib le s

( 2 )

(3 )

( 4 )

(5 )

Se entiende como cortes factibles aquellos que

entregan una configuración tipo guillotina. El

objetivo al resolver el problema es encontrar una

configuración que minimice los desperdicios de

material o área sin utilizar garantizando que las

piezas elegidas estén contenidas en el tablero. En la

figura 3 se muestra un tablero al que se le ha

dispuesto un patrón tipo guillotina, donde el área

subrayada corresponde al material sin utilizar.

Figura 3. Corte tipo guillotina.

5. IMPLEMENTACIÓN DE BT AL PROBLEMA DE EMPAQUETAMIENTO BIDIMENSIONAL

En [9] se explica la codificación de árbol propuesta

para garantizar que las soluciones obtenidas sean de

tipo guillotina, adicionalmente en ese trabajo se

presentan los seis criterios de vecindad definidos.

Entre los criterios mencionados están:

Vecino 2: Si la configuración es factible y presenta

clusters con desperdicios individuales, buscar e

insertar piezas con áreas menores o iguales a los

desperdicios de los clusters que los presenten. En

la figura 4 las áreas sombreadas representan

desperdicios individuales.

Vecino 3: Si la configuración es factible y presenta

clusters con desperdicios individuales, intercambiar

piezas de la configuración actual con las aún

disponibles, procurando disminuir el desperdicio de

los clusters que los presenten (opcional: sin alterar

las dimensiones de los mismos). En la figura 5 se

ilustra este criterio.

Figura 4. Segundo criterio de vecindad

Pieza que sale

Ingresa disminuyendoel desperdicio

Figura 5. Tercer criterio de vecindad

6. TÉCNICAS DE INICIALIZACIÓN

Se pueden distinguir los siguientes métodos que

han sido empleados en la solución del problema:

El procedimiento más empleado para colocar

las piezas es el algoritmo Bottom-left (BL). A

partir de un orden de las piezas a cortar, el

algoritmo consiste en colocar cada pieza en el

tablero lo más abajo posible y una vez hecho

esto mover la pieza todo lo que pueda hacia la

izquierda. Al aplicar este método pueden

quedar áreas no aprovechables (desperdicios).

Figura 6

Una modificación de la estrategia anterior que

Page 219: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

intenta aprovechar las áreas no aprovechables

es la estrategia Bottom-left-fill(BLF). Este

procedimiento antes de colocar una pieza

según la estrategia BL comprueba si se puede

colocar en alguna de las áreas no

aprovechables que se han generado hasta el

momento. Figura 6

Otro método utilizado en la literatura para

construir una solución a partir de un orden de

las piezas, es el mecanismo Difference Process(DP) de Lai y Chan [5]. La estrategia

Difference Process(DP) intenta colocar cada

pieza en la esquina posible del resto del diseño

más cercana a la esquina inferior izquierda del

tablero. Para medir cuál es la posición se

emplea la distancia euclídea. Al igual que con

el método anterior existen patrones que no

puede alcanzarse con esta estrategia.

BLF

BL

Trayectoria

Figura 6. Estrategia BL Y BLF

Todos ellos son constructivos que entregan

soluciones del tipo no guillotina, razón por la cual

es necesario implementar alguna estrategia que

permita adaptar la herurística el tipo de corte.

6.1 BL modificado para corte guillotina

1. Se ordenan las piezas de acuerdo a sus

alturas en orden descendente.

2. Se ubica la pieza más alta en la parte inferior

izquierda, en las coordenadas de origen

(0,0), teniendo en cuenta que la altura de

esta pieza debe ser menor ó igual que la

altura del tablero. El ancho de la pieza

insertada indica la primera coordenada guía

en el eje X.

3. La siguiente pieza se elige como la más alta

entre las que no hacen parte aún de la

configuración actual; el ancho de esta pieza

es evaluado y si sumado a la coordenada

guía en el eje X el valor obtenido es menor

que el ancho del tablero, se posiciona al lado

derecho de la última pieza insertada en las

coordenada guías en los ejes X e Y. Este

procedimiento se repite hasta ubicar la

mayor cantidad de piezas permitidas por el

ancho del tablero, conformando así el nivel

actual. La nueva coordenada guía en el eje X

es la acumulación de los anchos de las

piezas del presente nivel.

4. A continuación se evalúa la diferencia de

alturas de piezas consecutivas, con el fin de

identificar espacios donde se pueden encajar

piezas respetando el límite superior

impuesto por la pieza más alta del nivel

actual.

5. Cuando ya no es posible ubicar más piezas

en un nivel el proceso descrito

anteriormente es iniciado de nuevo a partir

del paso 3. La nueva coordenada guía en el

eje Y es la acumulación de alturas de las

piezas más altas de los niveles anteriores y

la nueva coordenada guía en el eje X es 0.

6. El proceso para cuando no es posible ubicar

más piezas sin sobrepasar la altura del

tablero.

Una implementación del BL modificado para dos

niveles es mostrada en la figura 7.

Trayectoria

Pieza 1

Pieza 2

Pieza 4 Pieza 5

Pieza 3

Figura 7. Botton Left para corte guillotina

Algunas otras ideas que se plantean en la literatura

es ordenar las piezas de mayor a menor de acuerdo

al área que ocupan e irlas ubicando en el tablero

con base en una matriz de distancias que se forma

para determinar cuál es la pieza que se puede ubicar

contigua de forma que esa dupla obtenga el menor

desperdicio como se plantea en [10] hasta ubicar

todas las piezas posibles, y siempre garantizando la

factibilidad de la configuración.

7. ANÁLISIS DE RESULTADOS

La función objetivo se calcula con base en el total

de área utilizada, la calidad de las soluciones

corresponde al porcentaje utilizado del material

disponible. Los Casos 1 y 2 aparecen en [8]. Los

casos 3 y 4 corresponden a los casos 1 y 3 de la

referencia [1]. En la tabla 1 aparecen las

generalidades de los casos y en la tabla 2 se

muestran los resultados obtenidos desde diferentes

configuraciones de inicio.

Page 220: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

Tabla 1. Datos de los casos de prueba

Caso Número piezas

Tipos de piezas

DimensionesTablero(L*A)

1 36 6 24*38

2 40 10 10*10

3 106 20 2002*1001

4 107 20 2275*1191

Tabla 2. Resultados de los casos

Caso Estrategia de inicio

Calidad SoluciónInicio (%)

Calidad SoluciónFin (%)

Número Iteraciones

1 aleatoria 62.00 100 500

1 aleatoria 69.19 100 500

1 BL mod 95.39 100 500

2 aleatoria 22 92 500

2 aleatoria 31 96 500

2 aleatoria 78 88 500

2 BL mod 92 96 500

3 aleatoria 48.94 79.78 5000

3 aleatoria 75.66 88.44 5000

3 BL mod 96.87 98.93 5000

4 aleatoria 52.06 78.59 5000

4 aleatoria 74.16 79.49 5000

4 BL mod 93.57 98.34 5000

Los casos 1 y 2 pueden ser considerados de baja

complejidad matemática y los casos 3 y 4 de alta

complejidad matemática

En las figuras 8 y 9 se muestran las soluciones de

inicio y final del caso 4 utilizando como estrategia

de inicio el BL modificado.

Figura 8. Configuración inicial caso 4.

Aplicando un algoritmo constructivo como el BL

modificado para el problema de corte

bidimensional tipo guillotina, se obtienen en

promedio soluciones iniciales con porcentaje de

utilización de un 94%. Para los casos 3 y 4 las

mejores soluciones se encuentran cuando es

utilizado el algoritmo BL modificado como

inicializador. La solución de inicio definitivamente

no incide en la calidad de la respuesta final para

casos de baja complejidad matemática.

8. CONCLUSIONES Y RECOMENDACIONES

Fueron estudiados algoritmos de inicialización para

el problema de corte bidimensional tipo guillotina y

se usó el algoritmo de Búsqueda Tabú para

solucionarlo.

Figura 9. Configuración final caso 4.

Para las técnicas metaheurísticas, en la literatura

especializada se establece que el óptimo global es

obtenido independientemente de la solución inicial.

En la práctica se ha observado que esta afirmación

podrá ser valida en problemas de baja y mediana

complejidad matemática. Por el contrario, para

problemas de gran tamaño y alta complejidad

matemática la solución inicial influye en la calidad

de la solución final.

Por la observación hecha durante el desarrollo del

algoritmo se constató la complejidad matemática

del problema de corte bidimensional. En la

implementación se verificó que soluciones iniciales

aleatorias presentaban soluciones finales pobres

La metodología de BL modificado es una adecuada

técnica de inicialización, para el problema de corte

bidimensional tipo guillotina, fácil de implementar

y de bajo consumo computacional.

Para trabajos futuros se recomienda analizar el

comportamiento de otros algoritmos

combinatoriales con diferentes tipos de

inicializadores.

BIBLIOGRAFÍA

1] CUI Y. An exact algorithm for generating

homogenous T-shape cutting patterns. Computers

& Operations Research. 2007, 34(4): 1107-1120.

Disponible en Internet en :

http://www.gxnu.edu.cn/Personal/ydcui/English/Pa

per.htm

Page 221: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

[2] DA SILVA R. Uma Abordagem para o

Problema de Corte Guilhotinado Bi-dimensional

para Peças Regulares com a Utilização de P-

Medianas e Pesquisa Tabu. Monografia, Universida

de Do Vale Do Rio Dos Sinos Centro De Ciências

Exatas E Tecnológicas. 2004.

[3] FLOUDAS, C. A., PARDALOS, P. M. (eds.):

Recent Advances in Global Optimization. Princeton

University Press, Princeton, NJ (1992)

[4] HORST, R., PARDALOS, P. M. (eds.):

Handbook of Global Optimization. Kluwer

Academic Publishers, Dordrecht (1995)

[5] LAI, K. K. Y CHAN, J. W. M (1997). A

evolutionary algorithm for the rectangular cutting

stock problem. International Journal of Industrial

Engineering, 4:130-139.

[6] MAAREN, H: MIETTINEN K, PENTINEN, A.

On initial populations of a genetic algorithm for

continuous optimization problems. J Glob Optim

(2007) 37:405–436

[7] MORAGA, R. WHITEHOUSE G, Depay G.

Metaraps: Un enfoque de solución eficaz para

problemas combinatorios. Revista Ingeniería

Industrial. Universidad del Bio-Bio. Concepción,

Chile. Año 2 No1. 2003.

[8] TORO, E. GRANADA M. Problema de

empaquetamiento rectangular bidimensional tipo

guillotina resuelto por algoritmos genéticos.

Revista Scientia et Techica. Universidad

Tecnológica de Pereira año XIII, número 35.

Agosto 2007.

[9] TORO E. RUEDA A., GRANADA M.

Algoritmo de Búsqueda Tabú aplicado a la

solución del problema de corte bidimensional

guillotinado. Revista Scientia et Techica.

Universidad Tecnológica de Pereira. Universidad

Tecnológica de Pereira año XIII, número 37.

Diciembre 2007.

[10] VENDRAMINI E. Optimización del problema

de cargamento de contenedores usando una

metaheurística eficiente. Tesis de maestría en

Ingeniería Eléctrica. UNESP, Ilha Solteira. Brasil.

Febrero 2007.

Page 222: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

180

9.7. Solución al problema de empaquetamiento bidimensional usando un algoritmo híbrido constructivo de búsqueda en vecindad variable y recocido simulado

Artículo en revisión revista tipo B.

Revista Ingeniería y Competitividad Universidad del Valle

Page 223: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

1

Solución al problema de empaquetamiento

bidimensional usando un algoritmo híbrido constructivo

de búsqueda en vecindad variable y recocido simulado.Eliana M. Toro -Ocampo.* Alejandro Garcés-Ruiz.** §

Hugo A. Ruiz –Flórez*** *Facultad de Ingeniería Industrial, Universidad Tecnológica de Pereira, Risaralda, Colombia

**Programa de Ingeniería Eléctrica, Universidad Tecnológica de Pereira, Risaralda, Colombia

§ e-mail: [email protected]

Resumen Por empaquetamiento de rectángulos se entiende una clase de problemas de corte y empaquetado con variadas

aplicaciones en la Industria. Uno de los problemas más conocidos de esta clase es el de empaquetado rectangular bi-

dimensional tipo guillotina. En este se pretende ubicar, sin solapamientos, un conjunto dado de rectángulos en un

objeto rectangular de anchura y altura conocidas. El propósito es obtener una configuración que maximice el área

utilizada. Dada su dificultad y su gran aplicabilidad, existe un creciente interés en disponer de procedimientos

eficaces y eficientes para resolver este problema. En este trabajo, se modela el problema con base a divisiones del

área disponible, se utiliza una codificación de árbol binario para disponer las piezas de forma que se garantice el

corte de tipo guillotina y se propone un algoritmo dividido en tres etapas que trabajan con estrategias individuales

inspiradas en algoritmos de vecindad variable, recocido simulado y técnicas constructivas para lograr la solución del

problema. Se comparan las respuestas obtenidas con base a la función objetivo que cuantifica el área utilizada y el

porcentaje de utilización del material disponible para cincuenta casos de prueba de la literatura especializada frente a

sus respectivas respuestas reportadas obteniéndose excelentes resultados

Palabras claves: empaquetamiento bidimensional, vecindad variable ,recocido simulado,metaheurísticas, heurísticas, optimización ABSTRACT Packing of rectangles is a class of problems about packing and cutting with varied industrial application. One of the

most known problems of this class is the rectangular two dimensional guillotine cutting packing problem. In this

case, it is tried to locate a given set of rectangles in a rectangular object in which width and height are known and

without overlapping. The objective is to obtain a configuration which maximizes the used area. Due to its difficulty

and its great applicability, there is an increasing interest in develop effective and efficient procedures which solve

this problem. In this work, the problem is modeled based on divisions of the available area, a binary tree codification

is used to arrange the pieces so that the guillotines type cutting is guaranteed. A three stages algorithm with

individual strategies inspired by algorithms of variable neighborhood search, simulated annealing and constructive

techniques are used to obtain the solution of the problem. The answers obtained are compared base on the objective

function and percentage used of available area with fifty test cases of the specialized literature and their respective

well-known answer with excellent results.

Keywords: Guillotine; Optimization; Two-dimensional cutting; Variable neighborhood search;

1. Introducción

Los problemas de corte y empaquetamiento pertenecen a la categoría de problemas de optimización

combinatoria denominados Np- completos debido a que el espacio de soluciones crece de forma

exponencial de acuerdo al número de piezas a ser ubicadas. Si por ejemplo se tienen n piezas a ser

ubicadas, entonces el espacio de soluciones estará dado por 2 . !n n [1] Este tipo de problemas es fácil de

definir intuitivamente aunque no son fáciles de modelar formalmente y presentan grados de dificultad que

hacen difícil el manejo computacional. En ellos se tiene un conjunto de piezas de diferentes tamaños y

formas que deben ser localizadas sobre un tablero de material de mayor tamaño sin superponerse unas

sobre otras. El objetivo de tal disposición es maximizar el área utilizada de forma que se generen la

Page 224: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

2

menor cantidad de área desperdiciada. Existen diferentes criterios para clasificar los problemas de

empaquetado, como son el tamaño y la cantidad de las piezas, las dimensiones del problema, etc.

Un caso particular de esta familia de problemas, lo constituye el problema de corte de piezas

rectangulares desde tableros también rectangulares con el fin de satisfacer una demanda predefinida y

determinada con base en las solicitudes de los clientes. Además, todos los cortes deben ser de tipo

guillotina, es decir, cortando el tablero o parte de él ortogonalmente de lado a lado se obtiene una pieza o

un conjunto de piezas. Se exige además, que el número de veces que una determinada pieza sea cortada

desde la placa no supere un valor preestablecido. Los problemas de empaquetado tienen una amplia

aplicación en distintas facetas industriales: textil, cristal, piel, madera, entre otras. Sin embargo, diferentes

inconvenientes particulares a cada problema determinan la disposición de las piezas sobre el patrón. Entre

estos inconvenientes se pueden destacar las propiedades del material del patrón (falta de uniformidad en

el color, calidad, textura), la tecnología de corte (que obliga a que exista una determinada distancia entre

las piezas).

Para resolver el problema la mayor parte de procedimientos reportados en la literatura se basan en técnicas

metaheurísticas. En 1977 Christofides y Withlock [2] , propusieron un algoritmo exacto de búsqueda en

árbol para resolverlo, utilizando para ello el algoritmo previamente propuesto en 1966 por Gilmore y

Gomory [3] quienes resuelven un problema de características similares. Por otro lado en 1983 Wang [4],

propone un algoritmo de desarrollo incremental del patrón solución. Tal algoritmo es posteriormente

mejorado en los trabajos de Vasko en 1989 [5] y en 1990 Oliveira y Ferreira [6]. En 1997, Lai y Chan [7]

presentan un procedimiento basado en simulated annealing.

En 1998 Parada [8] presenta la solución del problema mediante el simulated annealing usando una

codificación de árbol binario. En 2001 Leung [9] utilizan un algoritmo evolutivo, en el que usan la

representación de las soluciones de Lai y Chan . En 2003 Beasley [10] presenta un algoritmo genético

para el caso general. El algoritmo está basado en una nueva formulación no lineal para el problema. La

formulación también admite extensiones para el problema con más de un tablero, el problema con algunas

zonas del tablero que no se pueden utilizar y el problema donde las piezas se pueden rotar.

En 2007 Yaodong Cui [11] presenta un algoritmo exacto que genera cortes homogéneos en dos segmentos

de los que publica las características de los casos de prueba y las respuestas obtenidas.

En este trabajo se presenta una propuesta que emplea la codificación de árbol binario y un algoritmo

dividido en tres etapas que trabajan con estrategias individuales inspiradas en algoritmos de vecindad

variable, recocido simulado y técnicas constructivas para lograr la solución del problema, para evaluar la

eficiencia de la técnica de solución propuesta se utilizan los casos de prueba usados de la referencia [11].

Este artículo está organizado de la siguiente forma. El problema de empaquetamiento bidimensional tipo

guillotina y la codificación propuesta son presentados en la sección 2. La sección 3 explica el la

metodología de solución, en la sección 4 se presentan los resultados encontrados y en la sección 5 se

comentan las conclusiones y recomendaciones de acuerdo a los resultados obtenidos.

2. Problema De Corte Bidimensional Tipo Guillotina

El problema de corte de piezas bidimensional restricto para cortes guillotinados consiste en la obtención

de un patrón de cortes del tipo guillotina, para una lámina o tablero rectangular, desde donde se desea

obtener un conjunto determinado de piezas rectangulares más pequeñas bajo una demanda establecida,

con el propósito de minimizar la pérdida de material cortado ó maximizar el área utilizada.

2.1 Definición del problema

Page 225: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

3

Dado un número finito n de piezas rectangulares de área Ai x i Ay i que deben ser ubicadas en un

tablero igualmente rectangular de área AT xT AyT . El problema se define como restringido cuando se

limita el número máximo de piezas (D) a ubicar de cada tipo. No es necesario que todas las piezas sean

ubicadas en el tablero. La función objetivo consiste en maximizar el área efectiva utilizada en el tablero

principal. Una variante al problema considera la rotación de piezas, aspecto que no será tenido en cuenta

en este trabajo.

El modelo propuesto divide el tablero principal en sub-espacios (S) asegurando que en cada sub-espacio se

ubiquen piezas de un mismo tipo formando una matriz rectangular de piezas como se muestra en la figura

1(a).

Sub

espacio

A

Sub

Espacio

B

(a) (b)

Figura 1 Generación de subespacios Adicional a esto, los sub-espacios deben ser seleccionados de tal forma que el corte sea tipo guillotina. Un

corte es factible de tipo guillotina si cuando al ser aplicado sobre un rectángulo produce dos nuevos

rectángulos, es decir, si el corte va de un extremo a otro del rectángulo original; en otro caso se denomina

de tipo no guillotina [3].

En cada sub-espacio generado por los cortes tipo guillotina debe ser ubicada la mayor cantidad de piezas

del mismo tipo de tal forma que el desperdicio total sea minimizado, un forma de lograrlo consiste en

ubicar piezas del mismo tipo en un arreglo matricial como se muestra en la figura 1(b). Un arreglo de estas

características puede ser generado por una secuencia de cortes guillotina aún en los casos en donde la

demanda restrinja posiciones nulas (espacio sin utilizar).

Cuando se entra a resolver un problema de tipo no guillotina el valor de la función objetivo considerada

como el máximo de área utilizada será mayor que si se resuelve el problema donde se consideren los

cortes de tipo guillotina, esta restricción hace más complejo el modelo matemático y la solución del

mismo. El problema del corte de piezas ha sido ampliamente estudiado, debido a la variedad de

aplicaciones prácticas que este presenta en el ámbito de la Ingeniería y muchas de ellas requieren que los

cortes sean de tipo guillotina.

2.1 Modelo matemático El problema propuesto puede ser modelado matemáticamente de la siguiente forma:

(1)

Page 226: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

4

Sujeto a: (2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

En donde

f: función objetivo : desperdicio total

Ai : área de cada una de las posibles piezas.

Uki : numero de piezas del tipo i colocadas en el sub espacio k horizontalmente

Vki: numero de piezas del tipo i colocadas en el sub espacio k verticalmente

Ns: número de subespacios.

N: números naturales (enteros positivos).

n: número de tipos de piezas.

Di :demanda por cada tipo de pieza.

Xk : ancho del subespacio.

Yk: : altura del subespacio.

El producto corresponde al número de piezas totales del tipo i localizadas en el sub-espacio k,mientras que el número de piezas ubicadas debe ser un número natural tal como se muestra en la Ec.(2).

El total el número de elemento de cada tipo debe ser inferior a la demanda del mismo Ec.(3) y en cada

sub-espacio los elementos ubicados en forma de arreglo matricial deben ser factibles lo cual significa que

el número de elementos horizontales multiplicados por la longitud de cada elemento debe ser menor a la

longitud del sub-espacio ( ) como se muestra en la Ec.(4) y análogamente en la Ec.(5) para el caso

vertical.

Para asegurar que las piezas ubicadas en cada subespacio sean del mismo tipo se plantean las Ecs. (6) y

(7). Esa restricción además de permitir el desarrollo de un constructivo eficiente, garantiza que los cortes

en los subespacios sigan siendo de tipo guillotina. Así mismo, la Ec.(8) indica que el corte debe ser tipo

guillotina. La Ec.(8) es la restricción de mayor dificultad a ser modelada matemáticamente por tanto se

propone un tipo de codificación que garantice su cumplimiento como se muestra a continuación.

2.2 Codificación

Page 227: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

5

Para asegurar que los subespacios creados presenten cortes de tipo guillotina se define una codificación de

árbol binario complementario el cual además permite un manejo eficiente de la información al utilizar un

reducido número de variables para representar una solución.

El número de capas (c) es definido de forma aleatoria y determina el número de variables en la

codificación así como el número de subespacios (S) creados. El número de cortes (p) está dado por la

ecuación

(10)

El número de subespacios (NS) está dado por

(11)

Para representar la estructura que genera el subespacio son definidos dos vectores de tamaño igual al

número de cortes: el primero ( ) es un vector de tipo binario que define el tipo de corte (vertical u

horizontal), el segundo ( ) es un vector real con valores entre 0 y 1 que determina la distancia porcentual

a la cual se produce el corte con respecto al patrón superior.

Por ejemplo si se decide que el número de capas es 2 entonces se generarán tres cortes que a su vez darán

lugar a 4 sub-espacios figura (3). Un conjunto de posibles vectores generados aleatoriamente es el

siguiente:

(12)

(13)

Una ventaja de este tipo de codificación es que cualquier conjunto es factible siempre y cuando

sea binario y este en el intervalo . Por ejemplo, si las dimensiones del tablero base son de 70x42,

estas dimensiones representan el 100 % de la primera capa; el primer corte con parámetros T1 = 0 y H1 = 0,65 indica que se hace un corte horizontal al 65% del tablero, esto genera dos espacios de dimensiones

70x14,7 y 70x27,3; el segundo corte T2 = 1 y H2 = 0,4 indica un corte vertical sobre el espacio de

70x27,3. El último corte es aplicado sobre el espacio de 70x14,7. Estos cortes sucesivos generan cuatro

subespacios de dimensiones S = { 28x27,3 42x27,3 21x14,7 49x14,7}. El proceso se representa mediante

el árbol mostrado en la figura 2. Finalmente la figura 3 muestra la división del tablero base.

Page 228: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

6

70x42

70x27,3 70x14,7

28x27,3 42x27,3 21x14,7 49x14,7

T = 0H = 0,65

T = 1H = 0,40

T = 1H = 0,30

Figura 2. Árbol binario que representa el proceso

D E

F G

B

C

A

30%

40%

65%

Figura 3. Cortes sobre el tablero según el árbol de corte propuesto en la figura 2.

3. Metodología de solución.

La codificación propuesta garantiza la factibilidad en cuanto al corte guillotina, esto permite que el

problema de optimización con restricciones se transforme en un problema de minimización irrestricto

entero mixto en donde las variables T y H son independientes entre sí, esto significa que para cada

conjunto de valores de T existe una solución H la cual es óptima:

(14)

De esta forma se puede utilizar cualquier algoritmo combinatorial para encontrar valores óptimos de T

siempre y cuando se utilice un segundo algoritmo que permita encontrar los valores óptimos de H a partir

de los valores de T. La ubicación final de las piezas se realiza mediante un tercer algoritmo, esta vez un

constructivo que garantiza una solución única para cada conjunto de valores (T,H), este algoritmo es

basado en arreglos del mismo tipo como se mostró en la figura 1(b). La figura 4 esquematiza el proceso

AlgoritmoI

AlgoritmoII

AlgoritmoIII

T H

Page 229: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

7

Figura 4. Secuencia de los algoritmos

3.1 Algoritmo de búsqueda aleatoria binaria

El algoritmo I determina el valor de la variable binaria T la cual representa el tipo de corte a utilizar, para

este algoritmo se utilizó un esquema de vecindario variable [12].

Algortimo I: Búsqueda aleatoria binaria

Datos de entrada IG

Tinc Aleatorio Binario

Incumbente 0

Vecindario 1

For k = 1 To IG

T Tinc

For i = 1 To Vecindario

j Aleatorio Entero

T[j] Not(T[j])

EndForVecindario Vecindario + 1

[F, H] AlgoritmoII(T)

If F > Incumbente

Incumbente F

Tinc T

Hinc H

Vecindario 1

EndIfEndForEndForResult Hinc, Tinc

Inicialmente el vecindario de búsqueda consiste en modificar de forma aleatoria una posición en el vector

T, posteriormente, si esta modificación no genera una mejora en la función objetivo se procede a

modificar dos posiciones y así sucesivamente, en el momento en que la incumbente sea actualizada se

regresa nuevamente al primer vecindario. Esta metodología de búsqueda local permite diversificar cuando

la función objetivo no es mejorada y hacer una búsqueda local más detallada en el momento de

actualizarse la incumbente, de esta forma se logra un algoritmo computacionalmente eficiente.

3.2 Algoritmo de búsqueda aleatoria real

El segundo algoritmo determina la variable H a partir un vector T, para ello utiliza un algoritmo de

búsqueda aleatoria que modifica iterativamente una posición del vector H reduciendo paulatinamente el

ancho de búsqueda, para ello se utiliza una función delta definida como

(15)

En donde R corresponde a un número aleatorio en el intervalo [-1,1], mientras que k es la iteración actual

e IP es el número total de iteraciones del algoritmo. En las primeras iteraciones, el factor que multiplica a

R es cercano a 1, por tanto los movimientos son altamente aleatorios, a medida que el algoritmo

Page 230: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

8

evoluciona se hace mas determinístico por lo cual este factor se acerca a cero. El valor de Hi estará dado

por

(16)

Este algoritmo está inspirado en la filosofía del recocido simulado [13] en donde a medida que evoluciona

el grado de aleatoriedad disminuye.

Algoritmo II: Búsqueda aleatoria real

Datos de entrada IP, T

Hinc Aleatorio

Incumbente 0

For k = 1 To IP

H Hinc

j Aleatorio Entero

delta aleatorio(-1,1)*((1-k/(IP+1))^0.5)

H[j] H[j] + delta

If H[j] > 1 Or H[j] < 0

H[j] Aleatorio

EndIf F AlgoritmoIII(T,H)

If F > Incumbente

Incumbente F

Hinc H

EndIf EndForResult Hinc

3.3 Algoritmo constructivo

El algoritmo constructivo ubica las piezas en los diferentes sub-espacios definidos por los vectores H y T.

Como cada sub-espacio debe ubicar arreglos del mismo tipo solo vasta determinar cuál es el desperdicio

para cada tipo de arreglo asegurando se cumpla la restricción de demanda como se muestra a

continuación.

Algoritmo III: Constructivo

Datos de entrada T,H

For k = 1 To Ns (Xk,Yk) Tamaño del sub-espacio k

Max 0

For i = 1 To n a Entera( Xk / xi )

b Entera ( Yk / yi )

z min(a*b, Di)

If z*Ai > Max

Max = z*Ai

Page 231: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

9

Result(k) [z,i]

EndIfEndFor

EndFor

La solución encontrada por este algoritmo es única ya que no incluye ninguna sentencia con aleatoriedad;

por ejemplo para el tablero de 70x42 anteriormente descrito con los valores de T y H dados por las

ecuaciones 12 y 13 y los parámetros mostrados en la tabla I, el algoritmo constructivo obtiene el corte

mostrado en la figura:

Tipo de pieza Largo Ancho Número de piezasPieza 1 22 18 6

Pieza 2 8 29 5

Pieza 3 19 19 2

Pieza 4 16 13 2

Pieza 5 4 16 1

Tabla 1. Datos del problema

3 de tipo 5 1 de tipo 5

4 de tipo 5

7 de tipo 6 65 %

40 %

30 %

Figura 5. Solución obtenida

Page 232: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

10

4. Resultados obtenidos.

Se tomaron 50 casos de prueba de la literatura especializada que pueden ser obtenidos de [11]. Cada caso

presenta 20 tipos de piezas rectangulares a ser ubicadas sin permitir rotación.

Después de calibrar los parámetros a través de 1000 corridas del algoritmo para distintos casos, los

mejores resultados se obtuvieron con los siguientes valores

Número de capas 3

Iteraciones globales (IG) 5000

Iteraciones parciales (IT) 1000

Tabla 2. Valor de los parámetros

Las iteraciones globales se refieren al número de iteraciones del algoritmo I mientras que las iteraciones

parciales se refieren al número de iteraciones del algoritmo II.

En las tablas 3 y 4 se muestran los 50 casos donde se comparan las respuestas obtenidas en función del

área utilizada y el porcentaje de utilización. Para 42 de ellos se obtuvieron mejores respuestas que las

mejores conocidas. Cada caso se corrió 10 veces con los parámetros de la tabla 2.

Caso de Prueba Respuesta de la Literatura Respuesta del algoritmo propuesto

Caso Area Disponible Area utilizada Porcentaje de uso Area utilizada Porcentaje de uso Diferencia 1 2004002 1964584 0.9803 1990174.386 0.9931 25590.3862

2 2941249 2867218 0.9748 2887424.143 0.9817 20206.1433

3 2709525 2656454 0.9804 2679178.32 0.9888 22724.3200

4 2479752 2370496 0.9559 2443299.646 0.9853 72803.6456

5 2319604 2281600 0.9836 2275995.445 0.9812 -5604.5552

6 2976190 2918503 0.9806 2931249.531 0.9849 12746.5310

7 2265650 2227422 0.9831 2240954.415 0.9891 13532.4150

8 2272792 2238658 0.9849 2247791.288 0.989 9133.2880

9 2764384 2690038 0.9731 2717389.472 0.983 27351.4720

10 2624232 2574750 0.9414 2579620.056 0.983 4870.0560

11 3235950 3115873 0.9628 3162817.53 0.9774 46944.5300

12 2921333 2837743 0.9713 2856771.541 0.9779 19028.5407

13 2553588 2501400 0.9795 2525753.891 0.9891 24353.8908

14 2436480 2343169 0.9617 2350959.552 0.9649 7790.5520

15 3072540 3017184 0.9819 3031675.218 0.9867 14491.2180

16 2174340 2102756 0.9670 2136723.918 0.9827 33967.9180

17 2401595 2276323 0.9478 2317299.016 0.9649 40976.0155

18 2827455 2736919 0.9679 2751961.952 0.9733 15042.9515

19 2181600 2145051 0.9832 2149966.8 0.9855 4915.8000

20 3157786 2994717 0.9483 3050737.055 0.9661 56020.0546

21 2953340 2900376 0.9820 2892501.196 0.9794 -7874.8040

Page 233: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

11

22 3204790 3066344 0.9568 3086853.728 0.9632 20509.7280

23 2763800 2676037 0.9682 2686966.36 0.9722 10929.3600

24 2408892 2287330 0.9495 2292060.738 0.9515 4730.7380

25 3163699 3037774 0.9601 3108967.007 0.9827 71193.0073

Tabla 3. Resultados para los casos del 1 al 25

En las gráficas 6 y 7, se comparan las mejores respuestas obtenidas para todos los casos con la mejor

respuesta conocida en la literatura.

0.9400

0.9500

0.9600

0.9700

0.9800

0.9900

1.0000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Casos de prueba

Po

rcen

taje

de u

so

Literatura especializada

Algoritmo propuesto

Figura 6. Comparación resultados del 1 al 25

Caso de Prueba Respuesta de la Literatura Respuesta del algoritmo propuesto Diferencia

Page 234: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

12

Caso Area Disponible Area utilizadaPorcentaje de uso Area utilizada Porcentaje de uso

26 2805712 2695345 0.9606 2748756.046 0.9797 53411.0464

27 2526230 2383242 0.9433 2479747.368 0.9816 96505.3680

28 2532060 2446799 0.9663 2490027.804 0.9834 43228.8040

29 2230605 2158548 0.9676 2186885.142 0.9804 28337.1420

30 2514609 2471150 0.9827 2462305.133 0.9792 -8844.8672

31 2727200 2583155 0.9471 2666656.16 0.9778 83501.1600

32 2699860 2618956 0.9700 2628853.682 0.9737 9897.6820

33 2262910 2216886 0.9796 2224666.821 0.9831 7780.8210

34 2330028 2279436 0.9782 2284359.451 0.9804 4923.4512

35 2882646 2787529 0.9670 2798761.001 0.9709 11232.0014

36 2658656 2508545 0.9435 2588999.213 0.9738 80454.2128

37 2817192 2667081 0.9467 2738592.343 0.9721 71511.3432

38 2618181 2566844 0.9803 2567650.107 0.9807 806.1067

39 2097396 2029177 0.9674 2068032.456 0.986 38855.4560

40 2597700 2540141 0.9778 2531198.88 0.9744 -8942.1200

41 2718228 2686780 0.9884 2677182.757 0.9849 -9597.2428

42 2379541 2306316 0.9692 2339088.803 0.983 32772.8030

43 2519286 2419778 0.9605 2454036.493 0.9741 34258.4926

44 2575800 2493761 0.9681 2507026.14 0.9733 13265.1400

45 2497225 2418204 0.9683 2414067.408 0.9667 -4136.5925

46 2817360 2693446 0.9560 2750588.568 0.9763 57142.5680

47 2484896 2388374 0.9611 2414821.933 0.9718 26447.9328

48 3007466 2943027 0.9785 2933482.336 0.9754 -9544.6636

49 2868953 2819262 0.9826 2815016.684 0.9812 -4245.3164

50 2234752 2161976 0.9674 2194973.414 0.9822 32997.4144

Tabla 4. Resultados para los casos del 26 al 50

Page 235: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

13

0.9400

0.9500

0.9600

0.9700

0.9800

0.9900

1.0000

26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Casos de prueba

Po

rcen

taje

de u

so

Literatura especializada

Algoritmo propuesto

Figura 7. Comparación de resultados del 26 al 50

En la tabla 5 y la figura 8, se presenta un resumen de los resultados obtenidos con base en el porcentaje de

mejora. Se observan respuestas de mejor calidad para la gran mayoría de los casos reportados en [11] y los

no superados quedaron muy próximos a la mejor respuesta conocida.

Resumen de Respuestas Número de casos

Soluciones no superadas 8

Soluciones superadas entre 0 y 1 % 21

Soluciones superadas entre 1 y 2 % 14

Soluciones superadas entre 2 y 3 % 3

Soluciones superadas entre el 3 y 4 % 3

Soluciones superadas en mas de 4 % 1

Tabla 5 Resumen de respuestas

Page 236: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

14

-8

21

14

3 31

-10

-5

0

5

10

15

20

25

1 2 3 4 5 6

Figura 8. Resumen de respuestas

Con el fin de conocer la eficiencia del algoritmo propuesto se realizaron 90 corridas para el caso 25 cuyos

resultados fueron agrupados según la siguiente distribución de frecuencias:

1

95 1409 95 9543 95 5476 6 6 67

95 9543 95 7678 95 8611 4 4 44

95 7678 96 0813 95 9245 8 8 89

96 0813 96 3949 96 2381 5 5 56

96 3949 96 7084 96 5516 13 14 44

96 7084 9

i i i il ,l x n Probabilidad de ocurrencia

. , . . . %

. , . . . %

. , . . . %

. , . . . %

. , . . . %

. , 7 0219 96 8652 5 5 56

97 0219 97 3354 97 1787 25 27 78

97 3354 97 6489 97 4922 7 7 78

97 6489 97 9625 97 8057 13 14 44

97 9625 98 2760 98 1192 4 4 44

. . . %

. , . . . %

. , . . . %

. , . . . %

. , . . . %

Tabla 6. Distribución de frecuencias caso 25

Para realizar el ajuste a una distribución de probabilidad fue usado el programa crystall ball 2000.2.2

obteniéndose el resultado mostrado en la figura 9.

Page 237: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

15

Figura 9. Distribución de probabilidad caso 25

Esta distribución pertenece a una normal con parámetros:

96 8567 0 7585. .

Con base en estos parámetros se calcula la probabilidad de encontrar un valor igual o mejor a la mejor

solución reportada en la literatura que para este caso es de 96.019

96 0197 96 856796 0197 1 10 1 1 10

0 7585

. .P X . P Z P Z . P Z .

.

1 10 0 8643P Z . .

De acuerdo con lo anterior hay una probabilidad de 86.43% de obtener una respuesta mejor o igual a la

reportada en la literatura.

5. Agradecimientos

Los autores desean expresar su agradecimiento a la Maestría en Investigación de Operaciones y

Estadística de la Facultad de Ingeniería Industrial y al grupo DINOP adscrito al programa de Ingeniería

Eléctrica de la Universidad Tecnológica de Pereira por su apoyo en la realización de esta investigación.

6. Conclusiones y recomendaciones

Fue implementado un algoritmo para la solución del problema de corte bidimensional tipo guillotina y

solucionado usando un algoritmo híbrido que combina técnicas inspiradas en búsqueda en vecindario

variable, recocido simulado y técnicas constructivas.

Page 238: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

16

Los patrones de corte obtenidos son de fácil implementación práctica, especialmente cuando no se cuenta

con máquinas de corte de control numérico ya que se entregan disposiciones homogéneas para cortar las

piezas de acuerdo a la demanda.

La escala de los problemas de prueba es comparable con muchos problemas prácticos de corte. Los

resultados computacionales fueron satisfactorios comparados con las mejores respuestas conocidas de la

literatura especializada.

Se ha realizado un análisis estadístico para demostrar la eficiencia de la metodología propuesta y tener

conocimiento sobre el porcentaje de mejora al momento de realizar un ensayo en particular. Para ello se

tomaron 90 muestras de un mismo caso, cuyos parámetros se ajustan a una distribución normal. Los

resultados obtenidos muestran que el algoritmo propuesto presenta una alta eficiencia en la gran mayoría

de los casos estudiados.

El tipo de codificación para representar el problema bidimensional restricto basado en árboles binarios

garantiza que los patrones que se obtengan sean de tipo guillotina; por la estructura de la misma, se

facilita la generación de soluciones vecinas y el cálculo del valor de la función objetivo.

Dentro de los trabajos futuros podrían resolverse casos de prueba en donde las condiciones del problema

permitan rotación de las piezas; además, se podría hacer la extensión para el problema de corte

bidimensional cuando las figuras demandadas son polígonos, planteando que puede realizarse una

reducción del problema a uno de empaquetamiento de rectángulos con algunas consideraciones.

se constituye en un método de solución eficiente para resolver este tipo de problemas.

Se observó en el desarrollo de este trabajo que para obtener una buena alternativa para la solución de este

tipo de problema se debe aplicar conjuntamente una codificación eficiente con técnicas metaheurísticas.

7. Referencias bibliográfícas

[1] Jakobs S, Theory And Methodology On Genetic Algorithms For The Packing Of Polygons. European

Journal Of Operational Research. Vol.88, p87-100. 1996.

[2] Christofides, N., Whitlock, A. An algorithm for twodimensional cutting problems, Operational

Research 25, pp 30 -44, (1977).

[3]. P.C. Gilmore y R.E. Gomory, The theory and computation of knapsack functions", Operations

Research, 1045-1074 (1966).

[4] Wang, P. Two algorithms for constrained twodimensional cutting stock problems, Operations

Research 31, 573-586 (1983).

[5] Vasko, F.A computational improvement to Wang's two-dimensional cutting stock algorithm,

Computers and Industrial Engineering 16, 109-115 (1989).

[6] Oliveira, J. F, Ferreira , J. S. An improved version of Wang's algorithm for two - dimensional Cutting

Problems, EJOR 44, 256-266 (1990).

[7]Lai. K., Chan, J.. A evolutionary algorithm for the rectangular cutting stock problem. International

Journal of Industrial Engineering, 4:130-139. 1997

[8] Parada V., Sepúlveda M.,Gómez A. Solution for the Constrained Guillotine Cutting Problem by

Simulated Annealing. Journal on computers and operations research, 25 37-47. 1998.

[9] Leung,T.W.,Yung,C.H, Troutt,M.D.(2001). Applications of genetic search and simulated annealing to

the two-dimensional non-guillotine cutting stock problem. Computers and Industrial Engineering, 40:201-

214.

[10] Beasley J.E, A population heuristic for constrained two-dimensional nonguillotine cutting, European

Journal of Operational Research 156 (2004) 601-627.

Page 239: SOLUCIÓN DEL PROBLEMA DE EMPAQUETAMIENTO …

17

[11] Yaodong Cui. An exact algorithm for generating homogenous T-shape cutting patterns. Computers &

Operations Research. 2007, 34(4): 1107-1120

Disponible en Internet en : http://www.gxnu.edu.cn/Personal/ydcui/English/Paper.htm

[12] Hansen,P., Nenad M. Moreno J. Búsqueda de entorno variable. Inteligencia Artificial, Revista

Iberoamericana de Inteligencia Artificial. No.19 (2003),pp. 77-92

[13] Gallego, R. Escobar, A. Romero, R. Técnicas de optimización combinatorial. Textos universitarios.

Universidad Tecnológica de Pereira. Abril 2006.