You are on page 1of 13

See

discussions, stats, and author profiles for this publication at: http://www.researchgate.net/publication/201212123

Un Algoritmo GRASP de corte guillotina 2D con


Agrupamiento y Rotacin
CONFERENCE PAPER JANUARY 2007

DOWNLOADS

VIEWS

246

1,078

3 AUTHORS, INCLUDING:
Glen Dario Rodriguez
Universidad Nacional de Ingeniera (Peru)
19 PUBLICATIONS 29 CITATIONS
SEE PROFILE

Available from: Glen Dario Rodriguez


Retrieved on: 05 September 2015

Un Algoritmo GRASP de corte guillotina 2D con


Agrupamiento y Rotacin
Jos E. Cevallos
David S. Mauricio
Glen D. Rodrguez
Universidad Inca Garcilaso de la Vega,
Facultad de Ingeniera de Sistemas, Cmputo y Telecomunicaciones
Av. Bolvar 1848, Lima, Per, Lima 21
jcevallos@maestro.com.pe
{davidmauricio,glenrodriguez}@uigv.edu.pe

Abstract
A common problem in many industries is to minimize the wasted material in the cutting of rectangular
elements of variable size and amount from a stock of fixed size sheet or plate. The case discussed here is
the guillotine cut, and where the rectangular element has no preferred orientation, which creates more
possible combinations because the addition of more options with 90 degrees rotations. Before this paper,
many researchers have approached this problem with many methods: linear programming, exact methods,
various heuristics and metaheuristics. In this paper we present a GRASP algorithm with a grouping
heuristic that solves this problem: Its results compare favourably against previous works results, in
minimizing the wasted material.
Keywords: GRASP, stock cutting and packing 2D, grouping, rotation, orthogonal packing

Resumen
Un problema comn a muchas industrias es minimizar los desperdicios en el corte de elementos
rectangulares de cantidad y tamao variables desde lminas de tamao fijo. El caso que tratamos es el corte
de tipo guillotina, y donde el elemento rectangular no tiene un requerimiento de orientacin, por lo que las
combinaciones posibles aumentan al aadirse la posibilidad de rotacin en 90 grados. Anteriormente, otros
investigadores han abortado este problema con muchos mtodos: programacin lineal, mtodos exactos,
heursticas y metaheursticas variadas. En este artculo presentamos un algoritmo GRASP con una
heurstica de agrupamiento que resuelve este problema. Sus resultados se comparan favorablemente con
respecto a los resultados de otras investigaciones, en minimizacin del desperdicio.
Palabras clave: GRASP, corte y empaquetado 2D, agrupamiento, rotacin, empaquetado ortogonal

Introduccin

En diversas industrias hay la necesidad de cortar los materiales en piezas de distintos tamaos para
satisfacer la demanda de sus clientes. El problema consiste entonces en hallar una forma eficiente para
efectuar dichos cortes, es decir, cubrir todos los requerimientos de cortes mientras se minimiza los recursos
y se satisfacen ciertas restricciones.
La estructura de un problema de corte de dos dimensiones contiene los datos de un conjunto L, cuyos
elementos definen cuerpos geomtricos en dos dimensiones y que se asocian con la materia prima.
Asimismo, hay otro conjunto D de parejas ordenadas, las cuales se refieren a la lista de pedidos o demanda
donde para toda pareja (b, l), b indica la cantidad de elementos o piezas requeridas y l sus dimensiones.

Finalmente, es necesario identificar la forma en que se harn los cortes sobre la materia prima. En resumen,
se dispone de un conjunto finito de objetos rectangulares de dos dimensiones que se requiere encajar en
tableros de ancho y largo conocidos. El clculo considerado se realizar considerando la posibilidad de
rotar 90 grados la posicin del objeto en el tablero, si ello ayuda a la minimizacin del desperdicio.
En este artculo se presenta una solucin al problema mediante un novedoso algoritmo que usa metaheurstica GRASP (Greedy Randomize Adaptative Search Procedure) junto a una novedosa mejora
despus de la mejora que intenta evitar el uso del tablero con ms desperdicio (el ms vaco) y una poco
estudiada heurstica complementaria de agrupamiento de elementos o piezas similares. Por razones de
simplicidad el algoritmo propuesto no considera el orden de los cortes, pero mantiene la restriccin de
corte guillotina. Hay muchas aplicaciones en la industria: en carpintera industrial para el corte de piezas
para la fabricacin de muebles, en el corte de vidrio, papel, cartones, etc., as como en actividades menos
obvias como el optimizar la ubicacin de avisos publicitarios en un peridico.

El problema de cortes

El trmino Cortar y embalar se ha vuelto sinnimo de un amplio rango de problemas parecidos, que son
descritos en el ao 2004 por Glenn Whitwell [15] e incluyen el de empaquetado o bin packing, el problema
de la mochila, el de asignacin de espacio / asignacin de capacidad, el de empaquetado ortogonal /
empaquetado de tiras, problema de prdida en los cortes, de nesting, problema de cargamento y el de
Marker Layout. El problema a discutir en este artculo es una variante del empaquetado ortogonal. El
problema de cortes es un problema de optimizacin, cuya solucin no ha podido ser obtenida por ningn
algoritmo de complejidad polinomial. Este tipo de problemas es considerado dentro del grupo de problemas
NP difcil.
2.1 Mtodos exactos aplicados en el problema de corte
Los mtodos exactos fueron investigados por Gilmore y Gomory [4], originalmente en la dcada del 60 y
constituyen la primera etapa de investigacin en el rea de cortar y llenar. Usaron tcnicas de programacin
lineal para solucionar problemas de optimizacin unidimensionales. Se han realizado mejoras y
modificaciones a lo largo del tiempo [2]. Sin embargo, en general los mtodos exactos son buenos slo
para problemas pequeos y medianos, debido a los altos requerimientos computacionales.
2.2 Mtodos Heursticos aplicados al problema de corte
En 1998, Faggioli y Bentivoglio [3], investigaron los mtodos tanto heursticos como exactos en un
enfoque de tres fases. Esto supona producir una buena solucin de arranque en primer lugar con un
algoritmo goloso, mejorar con bsqueda tab y luego usar procedimientos de enumeracin implcitos
exactos. El mtodo es bueno pero involucra un esfuerzo computacional muy grande para 40 o ms piezas.
Los enfoques heursticos ms documentados son el (LB) inferior - izquierdo y los mtodos de (LBF) mejor
- inferior - izquierdo [15]. En 1980, Brown [1] revis el lmite inferior de la estrategia de colocacin
inferior - izquierda y demostr que hay grupos de rectngulos para los que es imposible producir la
solucin ptima. sta es la desventaja principal de la heurstica de colocacin LB. El segundo mtodo,
LBF, es una versin modificada de la heurstica de colocacin inferior - izquierda. El mtodo LBF, puede
llenar espacios libres usando rectngulos en el empaquetamiento, mientras que en LB este espacio nunca
ser llenado (incluso si un rectngulo posterior quedara bien) y por lo tanto el espacio puede ser
considerado desperdicio. El algoritmo LBF es perjudicado por su peor complejidad de tiempo de O (N3),
por consiguiente, el tiempo de ejecucin puede ser muy grande en problemas de mayor tamao.
2.3 Mtodos Metaheursticos aplicados al problema de corte
Existen una gran variedad de mtodos metaheursticos aplicados a la resolucin del problema de cortes, que
como su nombre lo indica son heursticas superiores, es decir algoritmos aproximados a una resolucin
ptima. A continuacin describimos algunos de ellos, que nos permitirn analizarlos y evaluarlos:
2.3.1. Algoritmos Genticos

En el ao 1999 Ramesh Babu y Ramesh Babu, [12] utilizan el mtodo gentico para resolver del problema
de cortes. En 2003, Onwubolu y Mutingi [10], propusieron un enfoque gentico para el problema de
embalaje de rectngulos de tipo guillotina. El enfoque pone un rectngulo inicial en primer lugar y luego
busca un rectngulo que puede ser adjuntado al primero mientras mantiene restringida el corte de
guillotina. Los cromosomas dentro del algoritmo gentico representan las piezas que pueden ser adjuntados
por pares y la orientacin en la que deben ser puestas. Los autores informaron sobre una mejora de ms de
60 % de los problemas usados en trabajos anteriores.
2.3.2. Algoritmos GRASP
El algoritmo GRASP, fue desarrollado por Feo y Resende [13]. Es un procedimiento iterativo que combina
una fase constructiva y una fase de mejora. En la fase constructiva, una solucin es construida paso a paso,
aadiendo elementos a una solucin parcial. Para escoger el elemento para ser aadido, una funcin golosa,
que dinmicamente es adaptada como la solucin parcial es construida. Sin embargo, la seleccin del
elemento no es determinista, pero sujeta a una randomizacin del proceso. De este modo, cuando repetimos
el proceso podemos obtener soluciones diferentes. Despus de cada fase constructiva, la fase de mejora, por
lo general consiste en una bsqueda simple local, que trata de substituir algunos elementos de la solucin,
que estn all como el resultado de la ordenacin aleatoria, con otros, produciendo as una mejor solucin
total.
Una propuesta de este mtodo es la desarrollada por Mauricio y Rivera [9] en el ao 2002 y 2003. Los
algoritmos propuestos de construccin Grasp son basados en los algoritmos golosos FFD y BFD de
Mauricio [7], pero se diferencian en el criterio de seleccin, y no se utiliza el criterio decreciente, por
cuanto no existe un ordenamiento para atender los requerimientos, sino que se efecta por una seleccin
aleatoria desde RCL.
Es posible introducir variantes mediante el uso de parmetros de relajacin. La segunda componente de un
algoritmo GRASP es un algoritmo de bsqueda local, el cual tiene por objetivo, mejorar la construccin
encontrada por el algoritmo de construccin GRASP. Si se utilizan adecuadamente los parmetros de
relajacin, permite diversificar las soluciones, lo que significa que puede obtenerse mejores soluciones que
los algoritmos FFD y BFD [9].
2.4 Rotaciones
Con el propsito de mejorar el empaquetamiento y reducir el desperdicio, se propuso la rotacin de las
piezas que van a ser encajadas en las lminas. Una muestra de esta estrategia se da en el ao 2000, cuando
Nagao, Sawa, Shigehiro y Shirakawa, citados por Whitwell [15],
abordan el problema de
empaquetamiento de rectngulos desde la perspectiva de diseo de chips VLSI. Este tipo de problema tiene
la propiedad que el tamao de la lmina no es pre-especificada, pero su rea rectangular debe estar
minimizada (un factor importante en la Microelectrnica). Sin rotacin se obtiene una solucin 2.91%
superior al ptimo, con rotacin la solucin mejora al 1.65% superior al ptimo.
2.5 Agrupamiento
Otra de las tcnicas que aun no ha sido muy difundida, es el agrupamiento. Un acercamiento de esta
estrategia fue presentada en 1995 por Kroger [6], quien en 1995 us algoritmos genticos para el embalaje
de recipiente de guillotina y lanz la idea de "Meta-rectngulos", que son agrupaciones de rectngulos que
pueden empaquetar bien juntos y pueden ser tratado como un nico objeto solo en futuras repeticiones de
bsqueda. En el 2003, Lins y Morabito, citados por Whitwell [15], recurren a su experiencia con el
problema de carga de paletas para aplicar un acercamiento recursivo para embalaje de rectngulo noguillotina congruente (copias mltiples de slo un rectngulo). El algoritmo agrupa rectngulos en
rectngulos ms grandes o artculos de Formas-L. En el ao 2003, D. Mauricio [8], propone la idea de
agrupamiento para su algoritmo FFD que supone la opcin de juntar rectngulos de dimensiones parecidas
que permitan tratarlos como piezas mayores a ser incluidas en una lmina.
2.6 Comparacin de mtodos
Las tcnicas exactas son sumamente eficientes para problemas pequeos, pero no puede utilizarse para
problemas medianos o de mayor complejidad por su alto costo computacional en procesamiento. En cuanto

a los mtodos heursticos, estos han mostrado un mejor desempeo sobre todo en tiempo computacional,
las soluciones encontradas son ptimas y permiten utilizarlos en problemas de mayor tamao, con un
tiempo computacional bastante eficiente. Las metaheuristicas son heursticas superiores que mejoran las
soluciones anteriores pero tienen mayor complejidad y probablemente algunas de ellas muestren un
comportamiento lento sobre todo si trabajan con poblaciones de soluciones como en el caso de los
algoritmos genticos.
Podemos concluir que las opciones ms eficientes podran obtenerse utilizando combinacin de
metaheursticas como los mtodos constructivos como GRASP, (por su rapidez y por dar soluciones
confiables), con algoritmos de bsqueda local, tales como una derivacin del mismo Grasp, tab search,
algoritmos genticos o simulated annealing, Asimismo la tcnica de agrupamiento de piezas y la rotacin
son opciones que pueden mejorar la solucin del problema propuesto.

El algoritmo propuesto

En la presente seccin se hace una descripcin de los procesos involucrados en el algoritmo propuesto, que
incluyen el proceso de corte, la definicin de variables utilizadas, las estrategias utilizadas para desarrollar
el algoritmo, que involucra la construccin de una solucin inicial, que luego intentar ser mejorada
mediante una variante del algoritmo Grasp. Asimismo, las estrategias de rotacin y agrupamiento que estn
incluidas en los procesos de Construccin y mejora. En el proceso de mejora se ha incluido dos etapas o
fases, la primera que es de propiamente de mejora y la segunda de reubicacin que ser descrita mas
adelante.
3.1 Definicin formal del problema
El problema de corte de dos dimensiones consta de datos de un conjunto T, cuyos elementos definen
tableros rectangulares y que se asocian con la materia prima. Asimismo, hay otro conjunto E de parejas
ordenadas, las cuales se refieren a la lista de pedidos o demanda de dimensiones l,a. O sea, se dispone de
un conjunto finito de objetos rectangulares de dos dimensiones, que se requiere encajar en tableros de largo
y ancho conocido. Se desea minimizar el nmero de tableros usados para satisfacer la demanda.
Datos de entrada:
Lmina = Rectngulo de largo L y ancho A (L, A)
Pieza = Rectngulo de dimensiones inferiores a la lmina (l, a)
= Nmero de requerimientos (Piezas) con iguales dimensiones
dg
Variables utilizadas durante el proceso:
E
Hi
Vi
Fi
Bi
k
j
i
m+1
P
p1,..., v1
nl, na
nl na
nl S na S
nl R na R
g

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

Conjunto de requerimientos por atender


Conjunto de piezas horizontales de la lmina i
Conjunto de piezas verticales de la lmina i
Conjunto de piezas fijas de la lmina i
Conjunto de requerimientos atendidos por la lmina i
Requerimiento a ser atendido
Lmina usada
Lmina seleccionada
Lmina seleccionada nueva
Pieza seleccionada
Coordenadas de la Pieza
Nmero de requerimientos (piezas) que pueden ser colocados a lo largo y ancho de P
Nmero total del mismo requerimiento (piezas) que pueden ser atendidos desde P
Nmero de piezas sin rotacin (para estrategia de agrupamiento)
Nmero de piezas con rotacin (para estrategia de agrupamiento)
Grupo formado

3.2 Estrategias de corte


Los procesos de corte sobre lminas nuevas, lminas usadas y la generacin de lminas horizontales,
verticales y fijas, as como la rotacin, se basan en el trabajo presentado en 2002 y 2003, por Mauricio, D y

Rivera, L [7], y se describen a continuacin: Dado un requerimiento, el algoritmo seleccionar la primera


lmina usada que pueda atender a dicho requerimiento, y atender a este a travs del proceso de corte sobre
lmina usada. Caso no exista tal lmina usada, el proceso de corte se realizar sobre una lmina nueva. Este
proceso se repetir para cada requerimiento, hasta atender a todos ellos.
3.2.1. Lamina horizontal, vertical y fija

VERTICAL

Sea B un requerimiento que puede ser atendido desde una lmina i, se asocia una pieza horizontal y una
vertical, como se muestra en la figura 1. Se asume que el requerimiento siempre ser encajado en la parte
inferior izquierda de la lmina i.

HORIZONTAL

Figura 1. Pieza sobrante horizontal y vertical asociado a un requerimiento


Cuando el requerimiento es atendido desde la pieza horizontal, la pieza vertical asume nuevas dimensiones
y se llamar pieza fija. La figura 2 (derecha) nos muestra una pieza fija .

P. FIJA
Figura 2. Lmina sin pieza sobrante fija (izquierda) y lmina con pieza fija (derecha)
3.2.2.

Estrategia de rotacin

Consiste en rotar el requerimiento siempre que sea posible encajar el mayor nmero entero piso (aqu lo
representaremos como [r]=max{e Z | e r} ) de ste en la pieza o lmina a cortar. Sea el requerimiento B
= ( l, a ), a ser atendido desde una pieza B = ( L, A ). La estrategia de rotacin se define como sigue:

L A L A L A
Si Max
, = entonces rotar 90 , esto es B : = ( l, a ) : = ( a, l )
l a a l a l
3.2.3. Cortes sobre una lmina nueva
Sea un requerimiento B := ( l a ); que puede ser atendido desde una lmina i. El procedimiento de corte
B

sobre una lmina nueva i, consiste en dos pasos: Primero se aplica la estrategia de rotacin si fuera el
caso sobre el requerimiento, con el fin de determinar la mejor posicin de este, luego se encaja el
requerimiento B en el extremo inferior izquierdo de la lmina i. Este proceso puede generar piezas
horizontales y/o verticales, los cuales debern ser adicionados respectivamente en los conjuntos H i, y V i.
Procedimiento Corte_Lmina_Nueva (B , i)
B

L A L A L A
, = entonces ( lK , aK ) : = (aK, , lK );
l k a k a k l k a k l k

1.

Si Max

2.

B := ((0, 0) , ( l , a )) ;
B

B i := { B };
K

3.

S (a < A )

entonces H ik : = ((0, a ), (L, A)),

4.

S (l < L )

entonces V ik : = (( l , 0), (L, A)),

5.

Fi :=

H i : = { H ik };

V i : = { V ik };

Observe que se ha denotado por Hik y Vik respectivamente, las piezas horizontales y verticales asociadas al
requerimiento. Observe tambin que en el corte sobre una lmina nueva no se origina pieza fija.
3.2.4. Cortes sobre una lmina usada
Sea un requerimiento B := ( l a ) que puede ser atendido desde una lmina i. El procedimiento de corte
B

sobre una lmina usada consiste en tres pasos: Primero, se selecciona una pieza desde los conjuntos de las
piezas horizontales H i, verticales V i o fijas F i. La pieza seleccionada debe ser tal que pueda atender al
mayor nmero de requerimientos Bk, esto significar un menor desperdicio. Segundo, se aplica la estrategia
de rotacin para determinar la mejor posicin del requerimiento Bk, respecto a la pieza seleccionada. Y
tercero, se realiza el corte sobre la pieza seleccionada para obtener el requerimiento; este paso es similar al
proceso de corte sobre una lmina nueva y podra generar nuevas piezas verticales, horizontales y fijas H i,
V i , F i, B i
B

Procedimiento Corte_Lmina_Usada (BK ,i)


1. Seleccione una pieza P = (
) de H i V i F i, tal que P contenga B el mayor nmero de veces
B

2.

(Pieza P que permite en teora mayor nmero de Bk iguales; usamos la que genera menor desperdicio).
Aplique la estrategia de rotacin sobre el requerimiento B en la pieza P.

3.

Realice el corte sobre la pieza P para atender el requerimiento B . determine las piezas Hki Vki Fki

asociadas a B , y actualice los conjuntos H ,V ,F y B .

K.

El proceso de corte de la pieza seleccionada P para atender el requerimiento Bk, (paso 3) es similar cuando
P es una pieza horizontal o vertical. A continuacin se describe el proceso de corte cuando P es una pieza
horizontal, esto es P pertenece a Hi
B

Procedimiento Corte_sobre_pieza_horizontal
1. Sea P = H ij : = ((p1, p2 ), ( p3 , p4 )) para algn j {1,..., k - 1}
2. H i : = H i - {H ij};
3. Si V ij = ((v1, v2 ), ( v3 , v4 )) V i
entonces F ik : = ((v1, v2 ), ( p3 , p2 )), F i = F ij {F ij}, V i : = V i - {V ij};
4. Si ( p2 + a < p4 ) entonces H ik : = ((p1, p2 + a ), ( p3 , p4 )), H i = H i {H ik};
K

5.

Si

( p1 + l < p3 ) entonces V ik : = ((p1 + l , p2 ), ( p3 , p4 )), V i = V i {V ik};


K

Identificado la pieza horizontal seleccionada (paso 1), pasamos a eliminar este del conjunto de piezas
horizontales (paso 2), en forma similar se elimina la pieza vertical asociada caso exista (paso 3). El proceso
de corte podr generar una nueva pieza fija, horizontal o vertical, los cuales son definidos en los pasos 3, 4
y 5 respectivamente. Observe que asociado a una pieza horizontal puede existir una pieza vertical y
viceversa. Entretanto esto no ocurre con una pieza fija, siendo as el procedimiento de corte sobre una pieza
fija es como se detalla a continuacin:
Procedimiento Corte_sobre_pieza_fija
1. Sea P = F ij : = ((p1, p2 ), ( p3 , p4 )) para algn j {1,..., k - 1}
2. F i : = F i - {F ij};
3. Si ( p2 + a < p4 ) entonces H ik : = ((p1, p2 + a ), ( p3 , p4 )), H i : = H i {H ik};
K

4. Si ( p1 + l < p3 ) entonces V ik : = ((p1 + l , p2 ), ( p3 , p4 )), V i : = V i {V ik};


K

Las coordenadas del requerimiento atendido Bk, y la actualizacin de Bi , es dado por:


Bk : = ((p1, p2 ), ( p1 + l , p2 + a )) ;
B

B i : = B i {Bk};
B

3.3 Estrategia de agrupamiento


En muchos casos, se tienen muchos elementos del mismo tamao. Si se procesan como elementos
individuales pueden crearse esquemas de corte indeseables, como se ve en la figura 3. Los dos elementos
menores son iguales, y si se tratan en forma independiente pueden dar origen a la distribucin de la
izquierda, con un desperdicio poco deseable (muchos retazos delgados). Si se fuerza a que las dos
permanezcan juntas, esta distribucin no es posible, pero si la de la derecha, con una pieza sobrante nica.

Figura 3. Distribucin menos deseable (izquierda) y ms deseable (derecha).


Sea P la pieza seleccionada, y d el nmero de piezas requeridas con iguales dimensiones. Sean tambin nl y
na, los nmeros de piezas requeridas que pueden ser colocadas a lo largo y ancho de P respectivamente; por
otro lado, nl na , es el nmero total del mismo requerimiento que pueden ser atendidos desde P. Se usar
agrupamiento simple, que consiste en agrupar elementos iguales que no excedan una lmina.
El proceso consiste primero, en obtener el mximo numero de piezas que pueden caber en una lmina de
largo L y ancho A, para lo que se utiliza la estrategia de rotacin, de manera que podamos obtener el mejor
resultado posible de agrupamiento, y luego en base a estos datos, se aplicarn 3 casos de agrupamiento. Las
posibilidades son: que el nmero de requerimientos con iguales dimensiones exceda el tamao de una
lmina (Caso 1, d >= nl na); o que el nmero de requerimientos con iguales dimensiones sea menor al
tamao de una lmina (d < nl na). En este ltimo caso puede ocurrir a su vez: que el nmero de
requerimientos con iguales dimensiones exceda el nmero mximo de requerimientos permitidos (Caso2, d
>= max{nl, na}), o que el nmero de requerimientos con iguales dimensiones sea menor al nmero mximo
de requerimientos permitidos (Caso3, d < max{nl, na}).
Procedimiento Agrupar_Elementos_iguales
Mximo nmero de piezas sin rotacin

L

lk

nl S =

ak

na S =

Mximo nmero de piezas con rotacin

L A L A L A
, = entonces ( lK , aK ) : = (aK, , lK );
l k a k a k l k a k l k

Si Max

lk

nl R =

ak

na R =

Mximo nmero de piezas por lmina


na nl = Max { nl S na S, nl R na R }
3.3.1. Caso 1
El nmero de piezas iguales excede el nmero total de requerimientos permitidos por lmina na nl , en este
caso agruparemos nicamente el numero total de requerimientos na nl que puedan caber en una lmina; y
el resto de piezas, se consideran como piezas individuales.

El largo del grupo formado, est definido por el largo de uno de los requerimientos iguales multiplicado por
el nmero de largos que caben en una lmina. El ancho del grupo, de igual forma, est definido por el
ancho de uno de los requerimientos iguales, multiplicado por el nmero de anchos mximo que puede
contener una lmina.
d g nl na para este caso se considera nl na requerimientos
Si d g nl na entonces l = ( l nl ), a = ( a na );
k

3.3.2. Caso 2
El nmero total de piezas permitidas por lmina nl na , es mayor que el nmero de requerimientos iguales
d, y este a su vez, es mayor que el mximo numero de requerimientos nl , na que pueden caber en una
lmina. En este caso agruparemos nicamente el mximo nmero de requerimientos posibles nl , na.
El largo del grupo formado est definido por el largo de uno de los requerimientos iguales multiplicado por
el mximo largo o ancho requerido. El ancho del grupo, de igual forma, est definido por el ancho de uno
de los requerimientos iguales, multiplicado por el mximo largo o ancho requerido.
nl na d g max { nl , na } atender mximo numero de requerimientos
Si nl na d g max { nl , na }

d g
}
na

d g
}
A1

A1 = min { na,
A2 = min { na,

L1 = min { nl,

[ d ]}

d g
}
A2

L2 = min { nl,

d g
}
nl

d g
}
A3

A3 = min { na,

L3 = min { nl,

req1 = A1 L1
req2 = A2 L2
req3 = A3 L3
Req = max {req1, req2, req3}
l = ( l L ), a = ( a A );
k

req

req

3.3.3. Caso 3
El nmero de requerimientos iguales, es menor que el mximo nmero de requerimientos que puede
contener una lmina, en este caso agruparemos nicamente todos los requerimientos iguales.
Si el nmero de largos es mayor que el nmero de anchos, el largo del grupo formado est definido por el
largo de uno de los requerimientos iguales multiplicado por el nmero de requerimientos iguales, y el
ancho del grupo ser igual al ancho de uno de los requerimientos iguales.
En caso contrario, el ancho del grupo formado; est definido por el ancho de uno de los requerimientos
iguales multiplicado por el nmero de requerimientos iguales, y el largo del grupo ser igual al largo de uno
de los requerimientos iguales.
d g < max { nl , na } atender d g requerimientos
Si d < max { nl , na } entonces
Si nl > na entonces l = ( l d g ), a = a
Sino

l= l , a=(a dg );
k

3.4 Algoritmo GRASP


Se considera E como el conjunto de requerimientos (piezas) por atender, por lo que al inicio este
contendr todos los elementos: E := {1, 2, ..., n}. El algoritmo GRASP construye una solucin usando un
criterio de seleccin golosa aleatoria. Primero se construye un conjunto de elementos candidatos a ser

parte de la solucin llamado RCL. Luego se selecciona el elemento desde RCL en forma aleatoria. RCL
contiene los requerimientos que presentan rea prxima a la mayor rea de los requerimientos por atender.
Alfa es el parmetro de relajacin, importante en la formacin de la RCL. En lneas generales, el GRASP
construccin inicializa las variables y el conjunto E, luego realiza el agrupamiento asignado el grupo
formado a un tablero, y va construyendo una solucin tentativa una pieza a la vez hasta que E quede vaco.
Luego deshace el grupo para que las piezas vuelvan a ser individuales antes de la fase de GRASP Mejora.
3.4.1. GRASP Construccin
1.

Leer (n,l ,a ,...,l ,a ,L,A, )

2.
3.
4.
5.
5.1

E := {1, 2, ..., n};


G :=
H1 := V1 :=
F1 := {((0,0) , (L,A))};
Agrupar_elementos_iguales
Mientras E :
S := Max{ l a : h E };

m := 0;

5.2

S := Min{ l a : h E };

5.3

RCL := { h E : S ( S S ) l a S };

5.4
5.5

k := RANDOM ( RCL );
B := ( l a );

5.6

i = Min{ j {1, 2, ..., m + 1}: H j V j F j B };

5.7

S
i=m+1
Entonces Corte_Lmina_Nueva (B , m + 1), m:=m+1, F m+ 1 := {((0,0) , (L,A))}

Si no Corte_Lmina_Usada (B , i);
B

5.8
E := E - { k };
6. Desagrupar_elementos_iguales
7. Escribir (m, B i V i )

3.4.2. GRASP Mejoria


En este procedimiento, se parte del resultado Grasp_construccion, donde el nuevo conjunto E, contendr
los elementos ya ubicados en las lminas correspondientes. Se ordenan las lminas en forma ascendente (de
mayor rea usada a menor), y las piezas de mayor a menor rea. Este procedimiento consta de dos fases:
FASE 1 Reubicacin de piezas en tableros superiores: El procedimiento de mejora se ejecuta lmina por
lmina, partiendo de la segunda lmina y se trata de ubicar una o ms piezas de la lmina seleccionada, en
el menor de alguno de los conjuntos H,V,F (sobrante horizontal, vertical, fijo) disponibles de la(s)
lmina(s) anterior(es). Si logramos que alguna de las piezas encuentre una ubicacin en un conjunto H,V,F,
anterior, se procede a ejecutar el procedimiento Corte_Lamina_usada_Mejoria, (basado en el corte lamina
usada tradicional), que ubicar la pieza movida, y generar nuevas piezas H,V,F. Este procedimiento
concluye cuando no es posible mover ninguna pieza hacia una lmina anterior o se completa la revisin de
las piezas de la lmina.
FASE 2 Reubicacin de piezas en tablero mejorado: Las piezas reubicadas en lminas anteriores, dejan
espacios vacos que pueden ser mejor aprovechados si se reubican y juntan formando nuevos conjuntos
HVF. Para lograr esto, se utiliza el conjunto de las piezas del tablero mejorado y se hace un nuevo proceso
de corte en un tablero nuevo, ubicando las piezas y con nuevos conjuntos HVF, utilizando los procesos de
rotacin y agrupamiento, una vez efectuado el corte, se reemplaza el tablero del conjunto solucin por el
nuevo tablero generado.
Procedimiento Reubicar: Este procedimiento, permite obtener una mejora real y significativa y consiste en
que, al haber movido una pieza del tablero hacia una posicin anterior, no basta con activar ese espacio,
sino que se logra una mejor optimizacin, si reubicamos todas las piezas del tablero liberado, utilizando el
procedimiento Corte_lamina_usada_Reubicar que a su vez crear nuevas piezas H,V,F, con mejores
dimensiones, para tratar de reubicar las piezas de los siguientes tableros.

Pseudo cdigo del GRASP Mejora


1. Leer (m, B i,H i, V i, F i, V i)
2. E := {1, 2, ..., n};
3. Ordenar { B1 < B2 <.... <Bm};
4. Fin=0;
5. Para todo j = 2, m
5.1
Proceso Mejora;
5.2
Si mejora = 1 Entonces Proceso Reubicar;
6. Fin proceso
B

Mejora
1. Leer (m k, B i,H i, V i, F i, V i)
2. E1 := {1, 2, ..., n};
3. Fin=0;
4. Mientras E1 :
4.1
B := ( l a );
B

4.2

i = Min{ j {1, 2, ..., m-1 }: H j V j F j B };

4.3

i < m Entonces Corte_Lmina_Usada_Mejoria (B , i)


B

Si no Fin=1;
4.4
E1 := E1 - { k };
5. Escribir (m, B i V i )
Reubicar
1. Leer (m k, B i,H i, V i, F i, V i)
2. E2 := {1, 2, ..., n};
3. Agrupar_elementos_iguales_reubicar
4. Mientras E2 :
S := Max{ l a : h E2 };
4.1
h

4.2

S := Min{ l a : h E2 };

4.3

RCL := { h E2 : S ( S S ) l a S };

4.4
4.5

k := RANDOM ( RCL );
B := ( l a );

4.6

i = Min{ j {1, 2, ..., m + 1}: H j V j F j B };

4.7

5.
6.
7.

i = m Entonces Corte_Lmina_Usada_reubicar (B , i);

E2 := E2 - { k };
Desagrupar_elementos_iguales_reubicar
Escribir (m, B i V i )

4 Resultados computacionales

En esta seccin se muestran algunas pruebas computacionales comparativas con algunos resultados de otros
autores, as como las propias pruebas con nmeros grandes de tableros.
4.1.1. Problema propuesto en 1990, por Olivera J.F., citado en el 2002, por Mauricio y Rivera [9]
Se tienen tableros de tamao 74 x 40. Los requerimientos (piezas) son: una de 55x9, tres de 23x21, una de
31x15, cuatro de 29x14, seis de 9x36, tres de 19x16, dos de 11x16, una de 29x5 y dos de 22x4. Olivera
obtuvo una solucin con 4 tableros, como se muestra en la figura 4. Nuestro algoritmo, con un alfa de
0.40, obtuvo una solucin con 3 tableros, como se muestra en la figura 5.
4.1.2. Problema propuesto por Parreo en 2003 [11]
Se tienen tableros de 20x30. Hay cinco requerimientos (piezas): 20x10, 10x5, 10x10, 11x6 y 10x12.
Parreo aplica algoritmos constructivos y obtiene soluciones de 2 tableros. Nuestro algoritmo obtiene una
solucin de un tablero con un alfa de 0.80, como se ve en la figura 6.

Figura 4. Solucin por el algoritmo FFD del problema de Olivera [9]

Figura 5. Resultados con el algoritmo propuesto en este artculo para el problema de Olivera

Figura 6. Resultados para el problema de Parreo. Izq. y centro: Parreo, derecha: algoritmo propuesto
4.1.3. Pruebas propias
Se realizaron pruebas con 4500 piezas, con tableros de dimensiones 80x40 y requerimientos de 9 conjuntos
de 500 piezas, cada conjunto con los siguientes tamaos: 50x30, 30x20, 20x10, 20x20, 40x10, 50x12,
36x18, 44x22 y 38x14. Los mejores resultados se obtuvieron con un alfa de 0.40, obteniendo 1099 tableros
(desperdicio del 16.86% del rea total de los tableros) y con tiempo de ejecucin de 205 segundos en una
Pentium 4 de 1.8 MHz con 512 Mb RAM. Cabe resaltar que hasta el momento no hemos hallado ningn
problema de esta magnitud abordado en la literatura cientfica; el ms cercano es un problema de Hopper y
Turton mencionado en [15] de 3152 piezas.
En las tres pruebas se experiment con varios valores de alfa y los resultados son comparados en funcin
de tableros utilizados y espacio sobrante. En los casos con nmero mediano o grande de piezas el mejor
alfa es 0.4, y en el caso de pocas piezas el mejor alfa es 0.8. El alfa debe seleccionarse cercano a 0.4 para
problemas medianos o grandes por que se debe limitar las combinaciones a explorar con el GRASP,
mientras que en problemas chicos una mayor exploracin (o sea alfa mayor) es viable.

5 Conclusiones
El presente algoritmo aporta dos innovaciones: la heurstica previa a la construccin que crea agrupaciones
de piezas (meta-rectngulos) con el propsito de obtener una mejor solucin inicial en la etapa del GRASP

construccin, y una mejora iterativa que trata de mover piezas de los tableros menos llenos hacia los ms
llenos con la esperanza de dejar vaci al tablero menos lleno (bajando el nmero de tableros usados), y
reacomoda las piezas de esos tableros conforme se van vaciando para mejorar la calidad de los espacios
sobrantes.
El algoritmo se compara favorablemente contra trabajos previos y puede manejar fcilmente miles de
piezas requeridas en minutos, pudiendo solucionar el tipo de problemas ms demandantes en la industria
real en minutos. La razn de esta mejora al parecer es principalmente la agrupacin de piezas en metarectngulos, pues esto disminuye el nmero de piezas desde el inicio (reduce el tamao del problema), y en
segundo lugar por que a diferencia de las heursticas LB o LBF no privilegia una direccin (horizontal vs.
vertical) para tratar de acomodar piezas adicionales, por lo que se examinan ms posibilidades. En el futuro
se piensa agregar un algoritmo complementario que indique el orden de los cortes tipo guillotina.

Referencias
[1] Brown, D.J., An improved BL bound, Information Processing Letters, 11, 1, 37-39 262 (1980)
[2] Christofides, N. and Whitlock, C., An Algorithm for Two-Dimensional Cutting Problems, Operations
Research, 25, 1, 3 0-45 (1977)
[3] Faggioli, E., Bentivoglio, C.A., Heuristic and exact methods for the cutting sequencing probl em,
European Journal of Operations Research, 110, 564-575 (1998)
[4] Gilmore, P. and Gomory, R. Multistage cutting stock problems of two and more dimensions. European
Journal of Operation research v.14, 94-120, (1965)
[5] Karelahti, J., Solving the cutting stock problem in the steel industry, Helsinki University of
Technology, Masters thesis (2002) en http://www.sal.hut.fi/Publications/pdf-files/tkar02.pdf
[6] Kroger, B., Guillotineable bin packing: A genetic approach, European Journal of Operations Research,
84, 645-66 1 (1995)
[7] Mauricio, D., Rivera, L. Una Versin Eficiente del Algoritmo FFD para resolver el Problema de
Cortes. Actas del I Congreso Internacional de Cientficos Peruanos, p.40. Lima (2003).
[8] Mauricio, D., Algoritmos GRASP para el problema de Cortes de Guillotina. Relatorio Tcnico UPGFISI 2003-02 UNMSM (2003) Lima Per
[9] Mauricio, D., Rivera, L., Vicente, E., Zamudio, J. FFD and BFD Algorithms to Solve the Guillotinable
Cutting Stock Problem. Actas del I Congreso Internacional de Cientficos Peruanos, p.80. Lima (2003)
[10] Onwubolu, G.C. and Mutingi, M. A genetic algorithm approach for the cutting stock problem. Journal
of Intelligent Manufacturing, 14, 209-218 (2003)
[11] Parreo, Francisco. Algoritmos Heursticos y exactos para problemas de corte no guillotina en dos
dimensiones. Tesis de doctorado. Universitat de Valencia (2003), en http://www.tesisenxarxa.net
/TESIS_UV/AVAILABLE/TDX-0519105-104838//parre%F1o.pdf
[12] Ramesh Babu, A., Ramesh Babu, N. Effective nesting of rectangular parts in multiple rectangular
sheets using genetic and heuristic algorithms. International Journal of Production Researc h, 37, 7,
1625-1643 (1999)
[13] Resende, M., Gonzales, J. GRASP: Procedimientos de bsqueda miopes aleatorizados y adaptativos .
AT&T Labs Tecnolgico de Monterrey. Mxico (2003), en http://www.research.att.com
/~mgcr/doc/sgrasp-spain.pdf
[14] Teodoro, Alan. O problema do corte Bidimensional uma abordagem utilizando o mtodo de gerao de
colunas. Tesis de maestra. Instituto de Computao, Universidade Estadual de Campinas. Brasil
(2003), en http://libdigi.unicamp.br/document/?code=vtls000316146
[15] Whitwell, Glenn Bsc, Novel Heuristic and Metaheuristic Approaches to Cutting and Packing,
University of Nottingham, school of Computer Science and Information Technology, Phd Thesis,
London (2004), en http://www.cs.nott.ac.uk/~gxk/papers/gxwPhDthesis.pdf

You might also like