La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Rectangle Packing Problem

Presentaciones similares


Presentación del tema: "Rectangle Packing Problem"— Transcripción de la presentación:

1 Rectangle Packing Problem
Moisés Domínguez García Antonio José Medina Rivero Beatriz A. Izquierdo Marrero Johannes Matiasch

2 Índice Introducción Rectangle Packing Problem

3 Bibliografía: http://en.wikipedia.org/wiki/Packing_problem
Transparencias sobre Corte y Empaquetado -Vienna University of Technology Rectangle Packing Problem

4 Heurística Una heurística es una técnica que encuentra
soluciones buenas (casi óptimas) con un coste computacional razonable, pero que no es capaz, en muchos casos, de garantizar ni la factibilidad, ni la optimalidad, ni establecer lo cerca de la optimalidad que está una solución factible particular. Colin R. Reeves Rectangle Packing Problem

5 Rectangle Packing Problem
Descripción del problema: Dado un conjunto de n items bidimensionales (rectángulos),{i1 , i2 , , in }, de dimensiones respectivas (h(i1), w(i1)), (h(i2), w(i2)), , (h(in), w(in)), encontrar el rectángulo de menor área que los contiene. No se permiten rotaciones ni solapamientos de los items. Rectangle Packing Problem

6 Ejemplo para la colocación de 50 rectángulos:
Rectangle Packing Problem

7 Criterios de evaluación
-) Duración del ejecución (en ms) -) Porcentaje de Basura : basura (%) = ((areaut - areamin) * 100) / areaut ) Perímetro : p = 2a* 2b Si el porcentaje de basura es igual en 2 soluciones distintas, la solución más optima es la que se obtiene del menor perímetro. Rectangle Packing Problem

8 Resolviendo el problema
Paso 1: Crear la entrada -) Leer los rectángulos de una lista en el código. -) Crear rectángulos con tamanos diferentes totalmente de hazard. -) Cortar un rectángulo de tamano selecionado en piezas  sabemos la solución óptima! Rectangle Packing Problem

9 Paso 2: Preparar la entrada
(Ordenación de los rectángulos) Criterios de ordenación: -) Primero la altura de forma descendiente y luego la anchura de forma descendiente. -) Primero la anchura de forma descendiente y luego la altura de forma descendiente. -) Primero la altura de forma ascendente y luego la anchura de forma ascendente. -) Primero la anchura de forma ascendente y luego la altura de forma ascendente. -) Seleccionamos aleatoriamente según el orden de creación. Rectangle Packing Problem

10 -) Heurística de Mediana: #mediana =  n / Z2  Z ... valor heurístico
Paso 3: Fijar el ancho -) Heurística de Mediana: #mediana =  n / Z2  Z ... valor heurístico n ... #rectángulos -) Heurística de Máximos: #máximos =  log5(nZ)  El ancho fijado (anchof) es la suma de las #mediana / los #máximos. -) Dependiendo de la mínima área posible: anchof =  (areamin * (1 + 1/n)  Rectangle Packing Problem

11 Paso 4: Seleccionar la representación de soluciones -) BottomLeft en combinación del orden de la entrada -) BottomLeftImproved en combinación del orden de la entrada -) Idea y prueba (pero ya no funciona): Up/Right-Coding (valdría tambien como GRASP) Rectangle Packing Problem

12 Paso 5: Conseguir la solución inicial mediante GRASP
Tipos de GRASP: - BottomLeft - BottomLeftImproved - BestFit - MultiGRASP (!) Rectangle Packing Problem

13 Implementación BottomLeft freeSpace: contiene todo el espacio libre
1) ) 1) {<(7,0),1>, <(5,1),3>, <(0,2),3>, <(0,4),8>} 2) {<(7,0),1>, <(5,1),3>, <(4,4),4>, <(0,6),8>} Rectangle Packing Problem

14 BottomLeft vs. BottomLeftImproved
freeSpace: contiene todo el espacio libre BL: BLI: BL: {<(7,0),1>, <(5,1),3>, <(4,4),4>, <(0,6),8>} BLI: {<(7,0),1,>, <(5,1),3,>, <(0,2),3,2>, <(4,4),4,>, <(0,6),8,>} Rectangle Packing Problem

15 SortedDoubleLinkedList Estructura de datos para realizar el freeSpace
Clave: punto (X,Y) Criterias de orden “Y” : Y -> X (para BottomLeft y BottomLeftImproved) “X” : X -> Y (para BestFit) Rectangle Packing Problem

16 % basura: 14.382109% Ejemplo BestFit (n = 100)
Rectangle Packing Problem

17 % basura: 11.593794% Ejemplo BottomLeft (n = 100)
Rectangle Packing Problem

18 Ejemplo BottomLeftImproved (n = 100) % basura: 4.8690095%
Rectangle Packing Problem

19 Ejemplo MultiGRASP / BLImproved (n = 100) Idea: ejecutar un “normal” GRASP con anchos fijados diferentes -> utilisa BestFit, BottomLeft o BottomLeftImproved as “nested” GRASP % basura: Rectangle Packing Problem

20 Paso 6: Mejorar la solución inicial
Búsquedas locales (todos sin/con entorno dínamico) AleatoricNeighborhood HybridNeighborhood_All HybridNeighborhood_End DeterministicNeighborhood VariableWidth Búsqueda multiarranque (sólo después de MultiGRASP) Variable Neighborhood Search Recocido Simulado Lista de tabu para no probar el mismo intento otra vez Rectangle Packing Problem

21 Búsqueda local: AleatoricNeighborhood
Idea: intercambiar 2 (o más) rectángulos distintos en el orden; selecionarlos sólo aleatoriamente Ejemplo: [1, 2, 3, 4, 5, 6] [1, 2, 5, 4, 3, 6] [4, 2, 5, 1, 3, 6] [5, 2, 4, 1, 3, 6] ... Funciona bien con muy pocos rectángulos (se puede encontrar casi todos los permutaciones diferentes) o con muchos rectángulos. Funciona bien con BottomLeft y BottomLeftImproved. Rectangle Packing Problem

22 Búsqueda local: HybridNeighborhood_All
Idea: intercambiar 2 rectángulos distintos en el orden; en la 1a iteración cogalo a la última posición (2a iteración: penúltima, ...) y intercambiarlo con otro rectángulo en cualquiera posición aleatoriamente Ejemplo: [R3, R2, R0, R1] [R1, R2, R0, R3] [R0, R2, R1, R3] [R0, R3, R1, R2] [R3, R0, R1, R2] [R3, R2, R1, R0] ... Funciona bien con muy pocos rectángulos (se puede encontrar casi todos los permutaciones diferentes) o con muchos rectángulos. Funciona bien con BottomLeft y BottomLeftImproved. Rectangle Packing Problem

23 Búsqueda local: HybridNeighborhood_End
Idea: Intercambiar 2 rectángulos distintos en el orden; empieza al fin del orden con (kStart+1)-rectángulos, para la próxima iteración intercambia increment- rectángulos más. Siempre intercambia estes rectángulos con otro rectángulo en cualquiera posición aleatoriamente. Ejemplo (kStart=1, increment=1): [R3, R1, R2, R0] [R0, R2, R1, R3] [R3, R0, R2, R1] [R1, R2, R0, R3] [R2, R0, R3, R1] [R1, R3, R0, R2] [R2, R0, R1, R3] [R1, R3, R2, R0] [R2, R0, R3, R1] [R1, R2, R3, R0] [R2, R3, R0, R1] [R0, R2, R3, R1] [R2, R1, R0, R3] [R0, R1, R3, R2] [R0, R1, R2, R3] Funciona bien con muchos rectángulos. Funciona bien con BestFit. Rectangle Packing Problem

24 Búsqueda local: DeterministicNeighborhood
Idea: intercambiar 2 rectángulos distintos en el orden; siempre utilisar el mismo esquema; la posición más a la izquierda se calcula con la formula seguiente: pos =  1/2 + (1/4 + 2*#iterations)  + 2 Ejemplo (#iterations = 8): [R4, R3, R2, R1, R0, R5] [R4, R3, R2, R1, R5, R0] [R4, R3, R2, R0, R5, R1] [R4, R3, R1, R0, R5, R2] [R4, R2, R1, R0, R5, R3] [R4, R2, R1, R5, R0, R3] [R4, R2, R0, R5, R1, R3] [R4, R1, R0, R5, R2, R3] Funciona bien con muchos rectángulos. Funciona bien con BestFit. Rectangle Packing Problem

25 Búsqueda local: VariableWidth
Idea: probar diferentes anchos fijados alrededor del original simétricamente; por eso utilisa la función para calcular el ancho fijado para la iteración i: anchof (i) = anchof (i-1) + i * -1i Ejemplo (anchof (0) = 10): anchof (1) = 9 anchof (2) = 11 anchof (3) = 8 anchof (4) = 12 ... Funciona MUY bien con muchos rectángulos. Funciona bien con todos los GRASPs! Rectangle Packing Problem

26 Búsqueda multiarranque
Idea: después de ejecutar MultiGRASP ya tenemos un conjunto de soluciones donde podemos buscar mínimos (y máximos) con poco gasto  buscamos mínimos y probamos de mejorarlos con una búsqueda local Funciona MUY bien con muchos rectángulos. Funciona MUY bien con búsqueda local VariableWidth. Rectangle Packing Problem

27 Variable Neighborhood Search
Idea: Generar aleatoriamente un vecino x’ del k- ésimo entorno de x (x’  Nk(x)). Aplicar una búsqueda local desde x’; sea x’’ el óptimo local obtenido. Si x’’ es mejor que x, mover (x := x’’) y continuar la búsqueda con N1 (k := 1). En otro caso, hacer k := k + 1. Implementación: Intercambio de k rectángulos aleatoriamente (como AleatoricNeighborhood). Para la “nested” búsqueda local (al menos teóricamente) valen todas las búsquedas locales de antes. Funciona bien con muchos rectángulos. Funciona mejor con la búsqueda local VariableWidth. Rectangle Packing Problem

28 Recocido Simulado Idea: Crear una solución x’  Nk(x) aleatoriamente. Si x’ es mejor que x  x := x’, la temperatura T no está modificado. Si x’ es peor que x, tambien puede ser acceptado con probabilidad paccept y T está reducido. Repetir hasta criterio de terminación está conseguido (p.ex.: T < Tmin). Implementación: Variar el ancho fijado en un entorno definido aleatoriamente. Utilisar geometric cooling con alpha eligible para reducir T. T0 = areaut – areamin paccept = e -|areaut(x’) - areaut(x)|/T Funciona bien con muchos rectángulos con poco gasto al mismo tiempo. Rectangle Packing Problem

29 En total BottomLeft x 5 BottomLeftImproved x 5 BestFit x 1
11 MultiGRASP x 2 22 GRASPs Representaciones x 2 Búsquedas locales x 6 (teóricamente tambien sin/con entorno dinámino!) Búsqueda multiarranque x 6 (nested búsqueda local) Variable Neighborhood Search x 6 (nested búsqueda local) Recocido Simulado x 1 21 heurísticas de mejora representacion de soluciónes x 2 = 22 x 21 x 2 = 924 heurísticas combinadas!!! Rectangle Packing Problem

30 Evaluación Cada heurística evaluada con cada número de rectángulos siempre al menos 3 veces  valor medio Cada heurística evaluada con 3 diferentes números de rectángulos, es decir con 10, 100 y 2000 rectángulos. Siempre con los mismos ajustes. Equipo para la evaluación: Intel Pentium Cual Core 1.73 GHz 2 GB RAM Windows Vista 32-Bit Rectangle Packing Problem

31 Evaluación GRASPs Rectangle Packing Problem

32 BottomLeft vs. BottomLeftDecreasingHeight
Rectangle Packing Problem

33 Representación BottomLeft vs. BottomLeftImproved
Rectangle Packing Problem

34 Evaluación GRASPs Rectangle Packing Problem

35 Rectangle Packing Problem


Descargar ppt "Rectangle Packing Problem"

Presentaciones similares


Anuncios Google