• Nenhum resultado encontrado

Algoritmos Construtivos

2.3 Componente Combinatória

2.3.3 Algoritmos Construtivos

Os algoritmos construtivos são utilizados para a criação de padrões de corte peça a peça. Nestes algoritmos existem dois parâmetros a definir, a sequência pela qual as peças são colocadas

22 Revisão Bibliográfica: Problemas de Nesting

no layout e o método de colocação das peças. As sequências de peças normalmente valorizam a colocação das peças mais difíceis primeiro, mas não existe apenas um critério para definir qual é a peça mais difícil, sendo que as várias técnicas são abordadas nesta secção. A colocação de peças pode adotar a metodologia de colocação bottom-left, que obtém uma solução rapidamente, e com alguma qualidade. No entanto, existem métodos mais sofisticados, que procuram o melhor lugar para posicionar a próxima peça no layout.

Sequência de Peças A sequência de peças define a ordem pela qual as peças são colocadas no layout. O método mais simples é a escolha aleatória das peças a colocar, normalmente utili- zando a heurística de Monte Carlo. Embora seja fácil de implementar não cria soluções ótimas, sendo utilizada mais em perspetiva de criar uma solução inicial nos algoritmos de melhoramento. Gomes [12] utilizou como método de criação de soluções iniciais, o sequenciamento de peças se- gundo área, comprimento e irregularidade decrescentes, entre outros. Este concluiu que a escolha de uma solução inicial através deste método dependia muito do conjunto de dados utilizados.

Dowsland et al [33] usaram vários métodos de seleção, como ordenar por área do polígono, área e largura do retângulo que engloba o polígono, todos com o objetivo de colocar em primeiro lugar as peças mais difíceis de acomodar.

A seleção dinâmica também é um método muito utilizado neste tipo de algoritmos, que se- gundo o tipo de peças e a quantidade de peças de cada tipo (incluindo rotações discretas das peças), procura as diferentes formas de sequenciar as peças. São testadas todas as combinações possíveis e usam critérios de avaliação para escolher a melhor peça a colocar. Um exemplo desta metodologia, é a Figura2.19, que no nível 0 se insere cada uma das peças disponíveis, e segundo um critério definido anteriormente foi escolhida a peça 2 com rotação 0o. Para o seguinte nível esta peça fica fixa, e procura-se dinamicamente a próxima peça a ser inserida, sendo que foi escolhida a peça 1. é utilizado este método sucessivamente até serem esgotadas as peças a serem inseridas.

Albano e Sapuppo [24] implementaram a seleção dinâmica com a utilização de uma árvore de pesquisa. Cada nó da árvore correspondia a uma solução parcial, que tinha como decisão para o seguinte nó a adição de uma peça nova. Cada último nó desta árvore representava uma solução final. O número de peças a colocar representava a largura da árvore, e o número de peças por colocar corresponde ao número de ramos a sair de cada nó. Estes usaram um critério de desperdício que avaliava ao longo da árvore qual o ramo que aumentava menos o desperdício do nó anterior.

Bennell e Song [2] utilizam um método em tudo semelhante, mas com a utilização de Beam Search, que utilizava dois critérios de avaliação, um para escolher os próximos melhores ramos, e outro critério para avaliar o desempenho global da solução.

Colocação de Peças A colocação de peças dita qual o posicionamento de cada peça da sequência definida na secção anterior. A regra de posicionamento mais utilizada é Bottom-left, no entanto, existem algumas alternativas, que são expostas a seguir.

Introduzida por Art [23], uma a regra de colocação de peças mais utilizada é Bottom-left, como se pode ver na Figura2.20, onde a peça é movida dentro do padrão de corte o mais possível

2.3 Componente Combinatória 23

Figura 2.19: Iteração de seleção dinâmica (adaptado de Oliveira et al. [11])

para a esquerda, assim que não é possível movimentar-se mais, move-se verticalmente para baixo, até encontrar outra peça, ou o fim do padrão de corte. A regra termina quando não for possível mover tanto para a esquerda como para baixo. Esta heurística implica a utilização de um método de deteção de sobreposições, normalmente o NFP, para detetar que se sobrepôs a outra peça, ou o IFR, para se detetar que atingiu o fim do padrão de corte.

Um conjunto de artigos definiram uma alteração no funcionamento desta heurística, em que em vez das peças serem colocadas vindas do ponto mais à direita do padrão de corte, estas eram colocadas no ponto mais à direita e para cima, o chamado Top-right, eram identificadas sobre- posições e movimentadas até não se verificarem mais sobreposições. Segenreich e Braga [18] e Dowsland et al [33] utilizaram-no para a representação em grelha.

Burke et al [17] apresentou esta heurística para a representação baseada numa grelha com po- sições horizontais discretas e posições verticais contínuas. Na colocação de novas peças no padrão de corte, ferramentas geométricas baseadas nas primitivas geométricas dos objetos resolviam as possíveis sobreposições. O autor refere que este método consegue lidar com sobreposições em arcos e buracos mais eficientemente que os NFP’s. As sobreposições são resolvidas calculando a distância necessária segundo a vertical para a qual deixa de haver sobreposição entre as duas peças.

24 Revisão Bibliográfica: Problemas de Nesting

Figura 2.20: Regra de Bottom-left (adaptado de Bennel e Oliveira [2])

A colocação de peças encarrega-se de colocar num layout admissível a sequência de peças escolhida. É comum utilizar NFP para criar um conjunto de posições possíveis dentro de um padrão de corte entre as peças já colocadas e uma nova peça. Isto cria um número infinito de posições possíveis.

Figura 2.21: Posições admissíveis considerando os NFP e IFR (adaptado de Gomes [12]) O NFP também pode ser utilizado como ferramenta de criação de posições admissíveis, junta- mente com o IFR. Se considerarmos o exterior do NFP entre peça a colocar e as peças já colocadas, e o interior do IFR, temos o conjunto de pontos onde é possível colocar as peças. Na Figura2.21a zona branca, que corresponde ao padrão de corte exceto as peças (a cinzento escuro) e os NFP’s (a cinzento claro) correspondem a esse conjunto de locais admissíveis para colocar uma peça. Desta forma é possível utilizar o Bottom-left com esta metodologia para preencher possíveis buracos en- tre peças, como o existente na Figura2.21. Gomes [12] reduziu um número de posições de uma peça num padrão de corte, considerando que a peça apenas se poderia "encostar"a um vértice. Este vértice podia ser do NFP entre a peça a ser colocada e as peças já colocadas, o IFR do padrão de corte, ou a interceção entre arestas destes. Este conjunto de pontos era então processado por um

2.3 Componente Combinatória 25

método de colocação Bottom-left. Dowsland et al [33] utilizou um sistema análogo, mas conside- rando em vez dos vértices, as arestas desta região. Neste caso a peça deslizava pela aresta mais à direita até encontrar uma posição sem sobreposições. Ambas as heurísticas tem a capacidade de preencher buracos.

Ribeiro e Carravilha[34] utilizou uma abordagem que prescindia de regras de colocação, mas apenas resultava para problemas pequenos. Este utilizava CLP (Constraint Logic Programming), numa representação discreta para detetar quais as posições onde era possível colocar a peça, tendo em conta as peças já colocadas.

Oliveira et al. [11] criou um algoritmo diferente de colocação de peças, que utilizava um sistema de pesquisa da melhor posição e orientação para cada peça, com a definição das posições admissíveis a ser feita pelo NFP. Este NFP criado entre todas as peças já colocadas e a peça a colocar, e desta forma a parte do padrão de corte entre estas era considerado desperdício, não sendo considerado para futuros melhoramentos, como preenchimento de buracos. O principal objetivo deste algoritmo era minimizar o espaço ocupado pelas peças e impedir sobreposições.

2.3.4 Algoritmos de Melhoramento

Uma das características que diferencia estes algoritmos dos construtivos é o facto de se fazerem alterações a uma solução completa. Estes algoritmos têm dois principais problemas com várias soluções para ambos presentes na bibliografia. A definição da sequência pela qual as peças são colocadas no padrão de corte é um desses desafios. Por outro lado temos as alterações no layout, em que se modificam depois de colocadas as peças neste, segundo uma qualquer heurística. Neste método é normalmente feito um padrão de corte inicial, criado normalmente com uma sequência aleatória. São feitas alterações ao padrão de corte de forma a melhorar a solução final.

Alterações de sequências Na procura de sequências existem três principais estratégias de alteração da sequência das peças. Estas são a troca de peças, presentes na Figura2.22, que troca a posição de duas peças, inserir peça, que retira uma peça da sua ordem na sequência e a insere noutra posição, e mudança de orientação, que muda a direção da peça, consoante as rotações que são permitidas pelo problema em questão. Depois de haver essa alteração de sequência, é utilizada uma heurística de colocação de peças, normalmente Left-bottom.

Estas alterações de sequência devem ser limitadas, porque um grande número de alterações criaria um grande aumento na computação de uma solução. Gomes [12] utilizou trocas de duas peças no seu trabalho, sendo que a distância entre as peças apenas poderia ser de 1, 2 ou 3 peças. O limite de distância permitida entre peças limita o tamanho das vizinhanças. Eram criadas vizi- nhanças com cada uma das trocas, e criadas soluções que depois era avaliadas segundo 3 critérios: a primeira melhor solução; a melhor solução; aleatoriamente escolhida entre as melhores.

Takahara et al [35] utilizou uma pesquisa na vizinhança com dois estados, normal e adaptativo. No estado normal havia a mesma probabilidade de se movimentar para todas as peças, enquanto que no estado adaptativo, a probabilidade de movimentar-se dependia do peso da peça. Este peso

26 Revisão Bibliográfica: Problemas de Nesting

Figura 2.22: Alterações de Sequência (adaptado de Bennel e Oliveira [2])

da peça era aumentado consoante as movimentações desta peça tivessem melhorado a solução. Este modelo procurava focar-se nas peças que melhoravam a solução, por algumas iterações.

Jakobs [36] sugeriu um algoritmo genético para criar novas sequências de peças. Estas sequên- cias tem associadas a si uma variável de fitness, que indica o desempenho da sequência. A primeira geração de sequência de peças é criada por com valores aleatórios. Desta primeira população, são selecionados dois indivíduos, o descendente recebe um número aleatoriamente definido de posi- ções da sequência (código genético) do primeiro parente, e o restante do segundo. As mutações são feitas através de rotações das peças de 90o. Depois de criado o descendente, é aplicado o método de Bottom-Left e chegam a um valor de fitness. Assim este novo elemento é adicionado à população, e o elemento com pior valor de fitness é retirado.

Figura 2.23: Método jostle (adaptado de Bennel e Oliveira [2])

Dowsland et al.[33] propôs o método de jostle que consistia em colocar peças com uma heu- rística que coloque as peças do lado esquerdo. Depois de colocadas, são reordenadas em ordem decrescente de posição mais à direita, e empacotadas do lado direito, com uma iteração exem- plificada na Figura 2.23. O mesmo é feito depois para a esquerda. O método simula o agitar de uma caixa para a esquerda e direita, que faz com que as peças se encaixem umas nas outras mais naturalmente. Este método tem um sistema de preenchimento de buracos.

2.3 Componente Combinatória 27

Burke et al, [17] utilizou dois algoritmos de pesquisa no espaço de soluções, em que ambos utilizavam operadores de permuta da sequência de colocação das peças no padrão de corte. Estes operadores poderiam retirar uma peça de uma posição e colocá-la noutra aleatória (Opt), ou trocar de lugar duas a n peças (Opt 2 até N). Os vários operadores tinham diferentes probabilidades de ser escolhidos, desde o mais provável, Opt, ao menos, Opt N, sendo que este último era menos provável porque criava uma alteração mais radical na sequenciação. Um dos algoritmos usados foi hill climbing, que utiliza um dos operadores, se uma solução melhor que a presente for encontrada, adota essa como nova solução, se não for melhor, continua a procura na vizinhança. Também utilizou pesquisa tabu para encontrar uma solução, gera uma vizinhança, e a melhor solução desta era sujeita aos operadores mencionados anteriormente, criando uma vizinhança de soluções, e assim sucessivamente. Esta lista tabu contia 200 soluções, e tinha um limite de vizinhança de 5 soluções.

Alteração de layout Alterações do layout acarretam algumas decisões, como a utilização de todo o espaço de soluções, ou reduzir o número de soluções com várias estratégias. Uma das mais interessantes é permitir a sobreposição de peças, em que estas sobreposições são penalizadas pela função objetivo. No entanto este método pode complicar a admissibilidade do padrão de corte, que por vezes não é possível.

Uma das limitações de algumas ferramentas de procura local é a sua necessidade de reduzir os espaço de soluções possíveis, o que é garantido usando um sistema de grelha para a repre- sentação discreta dessas soluções. Isto facilita a implementação do sistema, mas compromete a qualidade das soluções, porque esta depende do método utilizado para a escolha dos pontos de soluções admissíveis, que pode negligenciar soluções ótimas. Este método foi utilizado com su- cesso moderado por Oliveira e Ferreira [16], que usou arrefecimento simulado para escolher uma movimentação na vizinhança. A vizinhança era composta pelo padrão de corte criado por uma movimentação de uma peça por uma unidade na grelha. Na possibilidade de haver sobreposi- ções entre peças depois desta movimentação, Oliveira e Ferreira [16] utilizam um conjunto de pontos que podem eliminar essa sobreposição, exemplificados na Figura2.24, em tudo análogos à redução de pontos de colocação de peças introduzido na subsecção de Colocação de peças. Bennell e Dowsland [7] utilizaram um método semelhante, mas com a vizinhança a conter várias movimentações de uma peça para uma nova posição na grelha.

Blazewicz et al [37] também foi capaz de reduzir o número de soluções da vizinhança, com um método diferente. Inicialmente criava um padrão de corte com uma heurística de Bottom-left, com capacidade de preencher buracos. Depois com a pesquisa tabu, pesquisava numa vizinhança por movimentos de uma peça para buracos no padrão de corte, ou para o fim do padrão de corte. Este método era demorado por ser preciso ter em conta quais eram os buracos disponíveis.

Outras soluções para lidar com uma vizinhança infinita foram aplicadas, como Gomes e Oli- veira [38] que utilizavam todos os pontos de uma movimentação de uma peça, mas limitando a distância máxima de afastamento do ponto de partida.

28 Revisão Bibliográfica: Problemas de Nesting

Figura 2.24: Posicionamentos de eliminação de sobreposições (adaptado de Bennel e Oliveira [2])

com o impedimento das mesmas, porque existiriam posições de certas peças que não seriam se- quer consideradas por não existirem sobreposições. A utilização apenas de soluções admissíveis cria um espaço reduzido de alternativas à solução inicial. No entanto, isto também cria novos problemas, como por exemplo haver a possibilidade de não se conseguir criar um padrão de corte admissível. Mesmo que seja possível tornar o padrão de corte admissível, será de inferior quali- dade. Para permitir a existência de sobreposições, existe a sua penalização na função objetivo, o que no entanto não garante que não existam sobreposições. Para que a correção de casos de so- breposição afetem o mínimo possível a qualidade do padrão de corte produzido, é necessário criar metodologias para avaliar ambos os aspetos da solução. Heckmann e Lengauer [39] criaram um custo na função objetivo para o comprimento do padrão de corte, outro para as sobreposições par- a-par, e um para as sobreposições segundo a vertical e a horizontal, com diferentes pesos, obtidos dinamicamente. Uma abordagem diferente desta consistia em minimizar cada um dos parâmetros sequencialmente. Bennell e Dowsland [40] utilizaram este método, minimizando primeiro o ta- manho do padrão de corte, depois resolvendo as sobreposições, assim sucessivamente, até atingir o menor padrão de corte admissível.

Figura 2.25: Resolução de sobreposições (adaptado de Bennel e Oliveira [2])

Para corrigir os casos de sobreposição, criaram-se medidas para eliminar a sobreposição de um padrão de corte. Uma destas medidas é a profundidade mínima de penetração, de onde se retira a distância e direção mínima para se anular a sobreposição, o caso b) da Figura2.25. Esta distância é normalmente preterida por apenas uma direção vertical ou horizontal (caso c)) para diminuir a

2.4 Resumo 29

carga computacional, não correspondendo à mínima distância de penetração.

Em Gomes e Oliveira [9], utilizou um híbrido de Arrefecimento simulado com programação linear. Um espaço de soluções inicial era criado através da heurística de Bottom-left. Este modelo utilizava alternadamente o modelo de compactação e separação, segundo a necessidade da iteração em questão para a procura de um espaço de soluções. Este método permitiu melhorar os resultados de problemas conhecidos, com a desvantagem de ter elevados tempos de computação. Os autores reconhecem que a utilização de um algoritmo guloso poderia melhorar este aspeto.

Bounsaythip e Maouche [41] usaram um algoritmo evolucionário, que melhora os resultados de Fujita, Akaji & Hirokawa[42], precursores do método em Nesting, para melhorar as soluções alcançadas pelo algoritmo de Comb-Nesting, que resolvia geometricamente o problema de Nes- ting. O algoritmo evolucionário procurava dentro de uma árvore de soluções possíveis, em que cada ramo correspondia a um padrão de corte.

2.4

Resumo

Os problemas de Nesting são caracterizados, na vertente geométrica, por normalmente se divi- direm em duas categorias mais utilizadas, representação poligonal e representação em grelha com algumas alternativas também interessantes para o mesmo efeito.

A representação poligonal é a mais largamente utilizada, e tem como principal vantagem o fato de ser muito precisa na representação das peças. No entanto é computacionalmente mais exigente, e apresenta algumas dificuldades quando é necessário representar buracos, e as movimentações de peças podem resultar em repetição de cálculo de sobreposições, que são suavizadas com a utiliza- ção de ferramentas como a Função-D, para deteção do posicionamento dos polígonos entre si. Por outro lado existe a representação em grelha, que permite, consoante a resolução da grelha decidir se é mais importante a computação rápida de um layout sem grande foco no detalhe da represen- tação da peça, ou se por outro lado é importante o detalhe e se aumenta a exigência da técnica. As várias posições da grelha indicam a presença de uma peça ou não, assim como podem representar vários níveis de sobreposição (uma ou mais peças sobrepostas). Ambas as representação fazem uso normalmente da ferramenta de criação de NFP’s, com diferentes abordagens à forma como se criam os mesmos. Podem ser criados através das somas de Minkowski, que cria facilmente o NFP de duas peças convexas, mas tinha problemas com concavidades e buracos. Por outro lado, existe a utilização de slope diagrams, que representam o deslize entre as duas peças, mas também apresentam dificuldades quando utilizados com polígonos com buracos ou concavidades. Existem adaptações a estas duas técnicas, como nos deslizes a adaptação de Ghosh consegue representar peças não-convexas, ou a decomposição de peças em versões mais simples, mas dependendo do tipo de decomposição ou adaptação, podem tornar-se computacionalmente mais custosas. À parte destas duas representações, existem também a representação em cobertura por círculos, que tem especial facilidade a lidar com rotações pelo seu método de funcionamento apenas com círcu- los, mas pode ter algumas imprecisões na representação de certas peças. A representação pela

30 Revisão Bibliográfica: Problemas de Nesting

função phi é um método com potencial, visto que esta técnica para além de identificar sobreposi- ções, calcula a distância entre as peças. A desvantagem desta representação é que o aumento da complexidade da peças diminui o seu desempenho.

Na componente de criação de padrões de corte, podemos definir dois procedimentos: algo- ritmos construtivos e algoritmos de melhoramento. Os algoritmos construtivos baseiam-se em construir um bom layout desde o início, escolhendo passo a passo a melhor peça para o propósito.

Documentos relacionados