Você está na página 1de 6

Proposta de melhoria no algoritmo GRASP-2D aplicado ao

problema de corte bidimensional guilhotinado e restrito.


Alexsandro Trindade Sales da Silva
1
, Jssica Neiva Figueredo
2
,

Francisco Chagas Lima Jnior
2
, Francisco Mrcio de Oliveira
3

1
MBA Sistemas de Informao / ESAB
Vila Velha ES Brasil
1
alex_trindade@hotmail.com
2
Universidade do Estado do Rio Grande do Norte
Mossor RN Brasil
fclimajr@gmail.com, jessicaneiva@gmail.com
3
Mestrado em Cincias da Computao / UERN / UFERSA
Mossor RN Brasil
fmarciooliveira@gmail.com

Abstract. The GRASP-2D was initially proposed by Velasco (2005), which based
on the metaheuristic GRASP, the author created a heuristic applied to the two-
dimensional guillotine cutting problem and restricted. This paper proposes an
improved algorithm that, acting on the number of elements of the candidate list,
after choosing the first track used to compose the solution. To validate the
proposed improvement were used the same instances of the literature used by the
author in his original article.
Resumo. O algoritmo GRASP-2D foi proposto inicialmente por Velasco (2005),
que com base na metaheuristica GRASP, o autor props uma heurstica aplicada
ao problema de corte bidimensional guilhotinado e restrito. O presente artigo
prope uma melhoria nesse algoritmo, atuando na quantidade de elementos da
lista candidata, aps a escolha da primeira faixa utilizada para compor a
soluo. Para validar a melhoria proposta foram utilizadas as mesmas instncias
da literatura utilizadas pelo autor em seu artigo original.
1. Introduo
Proposto em 2005, no mais encontramos trabalhos referenciados ao GRASP-2D, que em
seus resultados mostrados em Velasco (2005), comparados com os resultados de outras
heursticas j conhecidas pela literatura como: Busca Tabu e Simulated Annealing, o
algoritmo GRASP-2D obteve xito sobre as outras duas heursticas em quase todas as
instncias testadas.
Este artigo props uma melhoria na formao da lista C de candidatos aptos a
compor uma soluo vivel, e utilizando as mesmas instncias usadas pelo autor em sua
verso original, foi possvel observar bons resultados, pois em vrias instncias o algoritmo
proposto conseguiu atingir o mesmo valor da funo objetivo, porm com um custo menor
de tempo ou nmero de iteraes, e em algumas instncias conseguiu valor da funo
objetivo superior ao algoritmo original.

2. Problemas de corte e empacotamento
2.1. Definio
A tarefa de cortar: madeira, ao, vidro, papel, tecido ou esponja, faz parte do processo
produtivo de diversas indstrias que utilizam estes itens como matria prima. Geralmente
armazenam em estoque peas de tamanho padro (bobinas, chapas ou folhas), e devem
produzir peas de tamanhos menores, que so cortadas de acordo com a demanda.
De acordo com Baldo (2006), o problema de corte consiste em encontrar a melhor
maneira de cortar unidades maiores em estoque (objetos), para produzir unidades menores
em quantidades previamente demandadas (itens).
Os Problemas de Corte pertencem classe dos problemas NP-Difcil [Teodoro
2003], o que significa que no existe um algoritmo exato que o solucione em tempo
polinomial, e esta dificuldade atribuda grande quantidade de arranjos combinatrios
possveis de serem gerados.
2.2 O Problema de Corte Bidimensional (PCB)
De acordo com Velasco (2008), o PCB consiste em encontrar a melhor maneira de
cortar itens (p
i
) de dimenses (l
i
, c
i
), de maneira que atenda a uma demanda (d
i
), utilizando
o menor nmero de objetos padro (P), de dimenses (L, C), respeitando um conjunto de
restries de padro.
Quando o problema possui restrio relacionada ao nmero de itens que podem ser
produzidos classificado como restrito, quanto ao tipo de corte pode ser guilhotinado
ortogonal ou no guilhotinado. [Temponi 2007; Velasco 2008].
Encontram-se aplicaes desse problema em diversas indstrias que utilizam em
seus processos produtivos o corte de placas retangulares para produo de produtos semi-
acabados ou produtos finais, como indstria de mveis, vidros, metalrgica e etc.
[Temponi 2007; Arenales et al 2004].

3. GRASP-2d
O algoritmo GRASP-2d foi proposto por Velasco(2005), onde o autor criou um algoritmo
baseado na metodologia GRASP (Greedy Randomized Adaptive Search Procedure). A
GRASP proposta inicialmente por Feo & Resende, um processo iterativo multipartida
onde cada iterao composta por duas fases: uma de construo e uma de busca local
.[Lima Jnior, 2009].
Como na metodologia GRASP, o GRASP-2d composto de uma fase de construo e
uma fase de melhoria, com a diferena em que na GRASP a fase de melhoria executada
aps uma soluo completa vivel ser construda, e no GRASP-2d a fase de melhoria atua
logo aps a primeira faixa ser criada. [Lima Jnior, 2009; Velasco, 2005].
O algoritmo aplicado ao problema de corte bidimensional guilhotinado, ou seja, a
cada corte dois novos objetos so gerados, e a partir do primeiro objeto, cortado sempre do
lado inferior esquerdo, duas novas faixas podem surgir: uma vertical ou uma horizontal.
[Velasco, 2008].


Figura 1. Cortes guilhotinados e faixas
3.1 Fase de construo
Na fase de construo do GRASP
comprimento C e largura L
menores ordenadas de forma decrescente por
acordo com a demanda a ser atendida.
Inicialmente um conjunto C formado contendo todos os itens de
(p
1
p
m
), e um conjunto C com todos os elementos de C com C
Aps isso formada uma
elementos pertencentes a C
[ = max(:(p

); (p

) C
i
).
temos solues completamente gulosas e com
aleatrias. [Velasco, 2005].
Uma pea p(k) escolhida
com FH = (I, p
k
(c)) e FV = (
no possa mais ser alocada na faixa
utilizada de FH e FV gera dois sub
(p
k
(l), C - p
k
(c)), que sero explor
Caso a pea escolhida na LRC no possa ser alocada, a pea descartada e retirada de C,
e o processo se repete at que
3.2 Fase de melhoria
As duas faixas FH e FV, produzidas
necessariamente bem aproveitadas.
utilidade das faixas guilhotinas construdas minimizando o valor percentual de perda
gerada em cada faixa. [Velasco, 200
Aps a criao das faixas FH e FV
conjuntos de peas so criados, BH e BV, formados por todas as peas candidatas a
compor a soluo, que ainda possuam demanda a ser atendida e
Rfh e Rfv com BH = (p(l

, c
Nesta etapa os conjuntos BH e BV tm
altura para o conjunto BH e sua maior largura para
Aps a criao dos conjuntos BH e BV escolhido
serem inseridas nos respectivos retngulos Rfh e Rfv
escolhida at que a mesma
atendida. O processo se repete at que no exista mais nenhuma pea nos conjuntos BH e
BV que possam ser alocados em Rfh ou Rfv

. Cortes guilhotinados e faixas guilhotinas. [Velasco, 2008].
Na fase de construo do GRASP-2d, temos um objeto retangular R
comprimento C e largura L e um conjunto P = {(c
1
, l
1
), (c
2
, l
2
) (c
ordenadas de forma decrescente por :(p

) = (c

), que devero ser cortadas


acordo com a demanda a ser atendida.
onjunto C formado contendo todos os itens de
), e um conjunto C com todos os elementos de C com C = ((p
isso formada uma LRC (Lista Restrita de Candidatos), contendo os melhores
elementos pertencentes a C definidos por: LRC = (p

C
i
o[ :
) Em que o um parmetro que pode variar entre [
temos solues completamente gulosas e com o=1 temos solues completamente

escolhida na LRC aleatoriamente construindo duas faixas: FH e FV
) e FV = (p
k
(l), C)). A pea p(k) alocada n vezes at que a
possa mais ser alocada na faixa ou que tenha sua demanda atendida.
utilizada de FH e FV gera dois sub-retngulos: Rfh = (I - p
k
(l),
que sero explorados posteriormente na fase de melhoria do algoritmo.
Caso a pea escolhida na LRC no possa ser alocada, a pea descartada e retirada de C,
que um padro vivel seja construdo. [Velasco, 2005.].
produzidas pela fase de construo do GRASP
bem aproveitadas. A fase melhoria tem como o objetivo aprimorar a
utilidade das faixas guilhotinas construdas minimizando o valor percentual de perda
[Velasco, 2005].
Aps a criao das faixas FH e FV, e dos sub-retngulos Rfh e Rfv,
conjuntos de peas so criados, BH e BV, formados por todas as peas candidatas a
compor a soluo, que ainda possuam demanda a ser atendida e possam
( c

); l

, c

Rb(I, C)) e BV = (p(l

, c

); l

,
os conjuntos BH e BV tm as peas ordenadas de acordo com a sua maior
altura para o conjunto BH e sua maior largura para o conjunto BV. [Velasco, 200
Aps a criao dos conjuntos BH e BV escolhido melhor pea de BH e BV para
respectivos retngulos Rfh e Rfv, e repete-se a alocao da pea
a mesma no mais possa ser alocada, ou que tenha sua demanda
processo se repete at que no exista mais nenhuma pea nos conjuntos BH e
possam ser alocados em Rfh ou Rfv. Finalizado esta faze verifica
[Velasco, 2008].
R = (C, L) com
(c
m
, l
m
)] de peas
que devero ser cortadas de
onjunto C formado contendo todos os itens de P com C=
(p
1
p
t
) , t m).
, contendo os melhores
:(p

) [), com
um parmetro que pode variar entre [0,1], com o=0
=1 temos solues completamente
aleatoriamente construindo duas faixas: FH e FV,
n vezes at que a mesma
A parte no
, p
k
(c)) e Rfv =
ados posteriormente na fase de melhoria do algoritmo.
Caso a pea escolhida na LRC no possa ser alocada, a pea descartada e retirada de C,
[Velasco, 2005.].
pela fase de construo do GRASP-2d, no foram
A fase melhoria tem como o objetivo aprimorar a
utilidade das faixas guilhotinas construdas minimizando o valor percentual de perda
retngulos Rfh e Rfv, dois outros
conjuntos de peas so criados, BH e BV, formados por todas as peas candidatas a
possam ser alocadas em
, c

R:(I, C)).
as peas ordenadas de acordo com a sua maior
o conjunto BV. [Velasco, 2005].
melhor pea de BH e BV para
se a alocao da pea
que tenha sua demanda
processo se repete at que no exista mais nenhuma pea nos conjuntos BH e
Finalizado esta faze verifica-se qual das

faixas obteve a menor perda interna (Pi), onde se perda interna horizontal (Pih) = (Fb(I
C
)
I(p

)) e perda interna vertical (Piv) = (F:(I C) I(p

)). [Velasco, 2005].


A faixa com menor perda interna selecionada e os seus itens so includos no padro
de corte. O conjunto C atualizado subtraindo-se a demanda dos itens utilizados na faixa
escolhida e retirando-se de C os itens que tiverem sua demanda atendida e com a escolha
da melhor faixa obtm o retngulo Rf com Rf =(I, C p
k
(c)) para a escolha de FH e Rf =
(I p
k
(l), C) para escolha de FV, inicialmente Rf(I, C) = R(I, C) [Velasco, 2005].

3.3 Melhoria proposta
No algoritmo original GRASP-2d, a lista candidata C inicialmente formada por todos os
elementos de C, candidatos a compor a soluo. Na primeira execuo todas as peas
atendem a condio de p(c
,
, l

) R(C, I), porm depois de criada faixa FH ou FV, nem


todos os itens atendem essa condio mais a condio de p(c
,
, l

) R(C, I)
Com a proposta original pode se obter uma LRC com itens que no satisfaam a
condio, caso isso ocorra o item descartado, uma nova LRC criada e um novo item
sorteado, at que seja escolhido um item que possa ser includo na soluo.
A proposta atualizar C, aps atualizao de C de forma que C =(C
i

Cp(c
,
, l

) R(c
,
, l

) ), e com isso diminuir a quantidade de vezes que se executa o


lao entre as linhas seis e 22 (Figura 3), e formar a LRC conforme Lima Jnior (2009).










(a) Algoritmo Original (b) Algoritmo modificado
Figura 2. (a) Algoritmo original [Velasco, 2008].
4. Testes computacionais
Como a proposta original do algoritmo GRASP-2d, os testes foram feitos em uma mquina
com configurao muito abaixo das configuraes existentes hoje, e para termos resultados
mais justos, o algoritmo foi implementado em sua forma original, e tambm na forma
Procedimento GRASP-2Dmod(PI, di, v(pi), , maxiter)
1.S* = e aprovS* = 0;
2.Para (Iter = 1,2,...,maxiter) faa
3.S=, aprovS=0 e defina C=(p

, , p
m
);
4. Enquanto (|C| u) faa
5. padcorte(g) = , R = R c cric C
i
=(p

, , p
t
); t m;
6. Enquanto (|C
i
| u) faa
7. [ = max {:(p

); p

C
i
];
8. LRC= {p

. . C
i
1+ (N 1)];
9. Escolha aleatoriamente uma pea de LRC que mantenha a viabilidade
10. Construa Fh e FV
11. Determine MFh, perdaintFh, MFv e perdaintFv
12. Crie BH e BV
13 Se (|BE| u c |BI| u) faa
14. Selecione uma pea de BH e uma pea de BV;
15. Melhore FH e Melhore FV;
16. Atualize BH, MFh, perdaintFh, BV, MFv e perdaintFv;
17. Fim-se;
18. Determine pcrJointF
mcIho
= min {pcrJointF:(FE), pcrJointF:
I(F:)]
19. Inclua F
mcIho
ossocioJo o pcrJointF
mcIho

20. poJcortc
(g)
= poJcortc
(g)
{ F
(mcIho)
];
21. Atualize C =(C
i
Cp(c
,
, l

) R(c
,
, l

) ) e Rf = Rf - F
(mcIho)

22 . Fim-equanto;
23. S = S poJcortc
g
) ;
24. Atualize C;
25. Fim-enquanto;
26. Calcular aprovS =
v(pi
)
g.(R)
;
27. Se aprovS > aprovS* faa
28. Atualize S* = S e aprovS* = AprovS;
29 Fim-se
30. Fim-para;
31. Retorna(S*,aprovS*)
Fim Grasp-2D
Procedimento GRASP-2D(PI, di, v(pi), , maxiter)
1.S* = e aprovS* = 0;
2.Para (Iter = 1,2,...,maxiter) faa
3.S=, aprovS=0 e defina C=(p

, , p
m
);
4. Enquanto (|C| u) faa
5. padcorte(g) = , R = R c cric C
i
=(p

, , p
t
); t m;
6. Enquanto (|C
i
| u) faa
7. [ = max {:(p

); p

C
i
];
8. LRC= {p

. . C
i
[ :(p

) [];
9. Escolha aleatoriamente uma pea de LRC que mantenha a viabilidade
10. Construa Fh e FV
11. Determine MFh, perdaintFh, MFv e perdaintFv
12. Crie BH e BV
13 Se (|BE| u c |BI| u) faa
14. Selecione uma pea de BH e uma pea de BV;
15. Melhore FH e Melhore FV;
16. Atualize BH, MFh, perdaintFh, BV, MFv e perdaintFv;
17. Fim-se;
18. Determine pcrJointF
mcIho
= min {pcrJointF:(FE), pcrJointF:
I(F:)]
19. Inclua F
mcIho
ossocioJo o pcrJointF
mcIho

20. poJcortc
(g)
= poJcortc
(g)
{ F
(mcIho)
];
21. Atualize C e Rf = Rf - F
(mcIho)

22 . Fim-equanto;
23. S = S poJcortc
g
) ;
24. Atualize C;
25. Fim-enquanto;
26. Calcular aprovS =
v(pi
)
g.(R)
;
27. Se aprovS > aprovS* faa
28. Atualize S* = S e aprovS* = AprovS;
29 Fim-se
30. Fim-para;
31. Retorna(S*,aprovS*)
Fim Grasp-2D

modificada conforme figura 2(a) e 2(b), e foram utilizadas as mesmas instncias usadas
para validar o algoritmo original conforme Velasco (2005).
Os algoritmos foram implementados na linguagem Java, utilizando a IDE Netbeans
6.9.1, e executadas em um microcomputador com processador Intel Core2Duo 2.53Ghz, e
3Gb de memria RAM. Todos os resultados foram obtidos considerando como critrio de
parada (maxit) o valor 10.000 (dez mil) iteraes.

4.1 Resultados
A figura 3 mostra os resultados obtidos pelo algoritmo original em Velasco(2005), a figura
4 mostra os resultados obtidos com a implementao do algoritmo original em Java para
comparao com o algoritmo modificado e os resultados obtidos com o algoritmo proposto
encontram-se nas figuras 3 e 4.





Figura 3. Resultados obtidos com o algoritmo original.





Figura 4. Resultados obtidos com o algoritmo modificado.

Conforme poder ser visto em destaque na figura 6, nas instncias L1 e L2, em que,
onde o algoritmo original obteve 100% de aproveitamento no melhor padro de corte
encontrado, o algoritmo proposto tambm obteve o mesmo resultado, mas com um nmero
menor de iteraes.
Na instncia L3 para = u.S c u.7S, houve uma melhora nos padres encontrados,
como tambm um nmero menor de iteraes, com a instncia L5 houve melhoria nos
padres encontrados para = u.1, u.7S c 1, e tambm um nmero menor de iteraes
foram executadas.
E por ltimo, com a instncia L6, para todos os valores de foram encontrados o
mesmo percentual de aproveitamento nos padres, porm com melhora no tempo de
execuo.
Abaixo segue a melhor soluo encontrada pelo algoritmo original para a instncia
L6 (instncia com o maior nmero de itens), como tambm a melhor soluo encontrada
pelo algoritmo modificado.


Algoritmo Original Aproveitamento da Soluo: 85,60% Algoritmo Modificado Aproveitamento da Soluo: 88,72%
Padro de Corte 1: H1P18 V1P13M1P8 (85,93%) Padro de Corte 1: V1R18M1R1H1P17 (89,78%)
Padro de Corte 2: H1P17 V1R16 V2P3 (91,68%) Padro de Corte 2: V1P15H1R19 (83,28%)
Padro de Corte 3: V2R13 H1R7 H1R6 V1P3 (94,43%) Padro de Corte 3: H1R14M1R12V1P4V1P4V1P4 (97,07%)
Padro de Corte 4: V1R20M1R10 H1R1 (76,32%) Padro de Corte 4: V1P9M1R8H1P13M1R4 (84,64%)
Padro de Corte 5: V2P12 H1R8 V1P4M1P2 (89,57%) Padro de Corte 5: H2R12V1R6V1R6H1P2 (94,32%)
Padro de Corte 6: V2R14 H1R6 V2P4 (98,36%) Padro de Corte 6: H1R13M1R13V1R5V1R5H1P3 (97,21%)
Padro de Corte 7: V2P11M1R10 (73,54%) Padro de Corte 7: H2P11V1R7V1R7 (87%)
Padro de Corte 8: H1P15 V1R19 (77,36%) Padro de Corte 8: H1R16M1R10V1P3V1P3V1P2 (88,60%)
Padro de Corte 9: H1P10M1P9 H1R5M1P4M1P2 H2R2(88,64%) Padro de Corte 9: V1P9M1R8V1R10M1P8 (85,68%)
Padro de Corte 10: H2R7 H2P9 V1P7 (80,14%) Padro de Corte 10: H1P9M1R6M1R2H1R6M1R5M1P2 (79,60%)
(a) Algoritmo Original [Velasco, 2005] (b) Algoritmo proposto
Figura 5. Resultados obtidos com as duas verses do algoritmo

5. Consideraes finais
Diante dos resultados apresentados, pode-se concluir que o algoritmo proposto pode ser
utilizado para aplicaes em problemas de corte bidimensional guilhotinado. Pois o mesmo
conseguiu superar o algoritmo original em algumas das instncias testadas. Porm todas as
instncias utilizadas possuem no mximo 20 (vinte) itens, e para trabalhos futuros prope-
se utilizar instncias com uma quantidade maior de itens.
6. Referncias
Arenales, M. N.; Morabito, R. e Yanasse, H. H. (2004). Mini curso: Problema de corte e
empacotamento. So Joo del Rey, MG. XXXVI SOBRAPO: Simpsio Brasileiro de
Pesquisa Operacional.
Baldo, Tmara Anglica (2006). Estudo de Heursticas para o Problema de Corte e
Estoque com Aproveitamento de Sobras. Universidade Estadual de Londrina,
Londrina PR Brasil.
Lima Jnior, Francisco Chagas (2009). Algoritmo Q-Learning Como Estratgia de
Explorao/Explotao para as Metaheursticas GRASP e Algoritmo Gentico.
Tese (Doutorado em Engenharia da Computao), UFRN, Natal RN Brasil.
Teodoro, Alan Augusto (2003). O Problema de Corte Bidimensional: uma abordagem
utilizando o mtodo de gerao de colunas. Dissertao (Mestrado Profissional em
Computao), UNICAMP, So Paulo SP Brasil.
Temponi, Elias Carlos Correa (2007). Uma Proposta de Resoluo do Problema de
Corte Bidimensional via Abordagem Metaheurstica. Dissertao (Mestrado
Modelagem Matemtica e Computacional), CEFET, Belo Horizonte MG Brasil.
Velasco, Andr Soares et al (2008). Um algoritmo heurstico baseado na GRASP para o
problema de corte bidimensional guilhotinado e restrito. Revista GEPROS Gesto
da Produo, Operaes e Sistemas Ano 3. n.1, jan mar/08, p. 129 141.
Velasco, Andr Soares (2005). GRASP para o problema de corte bidimensional
guilhotinado e restrito. Dissertao (Mestrado em Cincias de Engenharia, rea de
concentrao de Engenharia de Produo.), Universidade Estadual do Norte
Fluminense, Campo dos Goyatacazes, Rio de Janeiro RJ Brasil.