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

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

Embed Size (px)

Citation preview

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

Rectangle Packing Problem

Moisés Domínguez GarcíaAntonio José Medina RiveroBeatriz A. Izquierdo Marrero

Johannes Matiasch

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

Índice◦Introducción

2Rectangle Packing Problem

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

Rectangle Packing Problem 3

Bibliografía:

http://en.wikipedia.org/wiki/Packing_problem

http://www.csc.liv.ac.uk/~epa/index.html

Transparencias sobre Corte y Empaquetado-Vienna University of Technology

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

Rectangle Packing Problem 4

Heurística

Una heurística es una técnica que encuentrasoluciones buenas (casi óptimas) con un costecomputacional razonable, pero que no es capaz, enmuchos casos, de garantizar ni la factibilidad, ni laoptimalidad, ni establecer lo cerca de laoptimalidad que está una solución factibleparticular.

Colin R. Reeves

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

Rectangle Packing Problem 5

Rectangle Packing Problem

o 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. Nose permiten rotaciones ni solapamientos de lositems.

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

Rectangle Packing Problem 6

Ejemplo para la colocación de 50 rectángulos:

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

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.

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

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!

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

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.

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

Rectangle Packing Problem 10

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)

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

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)

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

Rectangle Packing Problem 12

Paso 5: Conseguir la solución inicial mediante GRASP

Tipos de GRASP:

- BottomLeft

- BottomLeftImproved

- BestFit

- MultiGRASP (!)

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

Rectangle Packing Problem 13

Implementación BottomLeft

freeSpace: contiene todo el espacio libre

1) 2)

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>}

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

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,>}

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

Rectangle Packing Problem 15

SortedDoubleLinkedList

Estructura de datos para realizar el freeSpace

DoubleLinkedList:

Clave: punto (X,Y)

Criterias de orden“Y” : Y -> X (para BottomLeft y BottomLeftImproved)“X” : X -> Y (para BestFit)

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

Rectangle Packing Problem 16

Ejemplo BestFit (n = 100)

% basura: 14.382109%

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

Rectangle Packing Problem 17

Ejemplo BottomLeft (n = 100)

% basura: 11.593794%

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

Rectangle Packing Problem 18

Ejemplo BottomLeftImproved (n = 100)

% basura: 4.8690095%

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

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: 4.3545365

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

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

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

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.

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

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.

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

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.

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

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.

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

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!

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

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.

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

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.

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

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.

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

Rectangle Packing Problem 29

En total

BottomLeft x 5BottomLeftImproved x 5BestFit x 1

11MultiGRASP x 2

22 GRASPs

Representaciones x 2Bú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!!!

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

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

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

Rectangle Packing Problem 31

Evaluación GRASPs

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

Rectangle Packing Problem 32

BottomLeft vs. BottomLeftDecreasingHeight

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

Rectangle Packing Problem 33

Representación BottomLeft vs. BottomLeftImproved

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

Rectangle Packing Problem 34

Evaluación GRASPs

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

Rectangle Packing Problem 35