Algoritmo genético para formação de células de fabricação Eduardo Vila Gonçalves Filho (EESC-USP) evila@sc.usp.br José Hamilton Chaves Gorgulho Júnior (UNIFEI) gorgulhojunior@ig.com.br Ana Rita T. Terra Argoud (EESC-USP) arterra@sc.usp.br Resumo Este trabalho apresenta um algoritmo genético para o projeto de células de manufatura. São abordadas a geração da população inicial, a codificação dos cromossomos, os operadores de cruzamento e mutação bem como os procedimentos de correção dos descendentes. No final um exemplo de aplicação é apresentado e discutido. Palavras chave: Algoritmo Genético, Arranjo Físico, Células de Fabricação. 1. Introdução O projeto da disposição das máquinas no chão de fábrica requer, a princípio, a definição do tipo de arranjo físico adequado às necessidades da produção. Além dos arranjos tradicionais como posicional, por produto (linha), por processo (funcional) e celular pode-se citar os arranjos fractal (VENKATADRI et al., 1997) e modular (IRANI & HUANG, 1998). O arranjo físico celular é indicado quando se tem média variedade de peças e tamanho de lote pequeno a médio. Além disso, quanto mais estável for a demanda e quanto maior for a vida dos produtos fabricados mais adequado se torna o arranjo físico celular. A implantação de um arranjo celular requer a formação das células, isto é, definição de quais máquinas pertencerão a cada célula e a disposição das máquinas dentro da célula. Na fase final faz-se o planejamento da posição das células na área disponível no chão de fábrica e define-se como a célula irá trabalhar (número de operadores, seqüenciamento das peças, ferramental etc). O problema de formação de células é foco de muitas pesquisas e trabalhos. Dentre as várias técnicas e metodologias usadas para esta atividade este trabalho irá abordar o problema usando um Algoritmo Genético (AG). 2. Algoritmos genéticos Os algoritmos genéticos foram inspirados nos princípios da genética e evolução natural. Cada indivíduo da população é definido por um cromossomo que, por sua vez, é formado por uma seqüência de genes. As mutações genéticas e o cruzamento de indivíduos levam a uma nova combinação de genes (Figura 1). De acordo com J. H. Holland apud Suresh et al. (1995) essas alterações permitem que a população possa se adaptar e gerar indivíduos melhores. Seleção Reprodução (Cruzamento) População Antiga População Intermediária População Nova Mutação e Inversão Figura 1 Princípio de trabalho de um algoritmo genético. ENEGEP 2004 ABEPRO 506
Um dos primeiros trabalhos relacionados com a formação de células utilizando algoritmos genéticos foi publicado por Venugopal & Narendran (1992). Esses autores usaram como cromossomo uma seqüência de números (string). Cada posição do cromossomo corresponde a uma máquina. Os números que formam o cromossomo indicam a qual célula a máquina pertence. A Figura 2 mostra do lado esquerdo um cromossomo composto por 9 máquinas. A codificação do cromossomo usa os numerais de 1 até 3, indicando portanto o uso de 3 células. Do lado direito da Figura 2 as células relacionadas com essa codificação estão explicitadas para melhor compreensão. M1 M2 M3 M4 M5 M6 M7 M8 M9 (1 1 2 3 2 1 3 3 2) Célula 1: M1, M2 e M6 Célula 2: M3, M5 e M9 Célula 3: M4, M7 e M8 Figura 2 Codificação de cromossomo usada por Venugopal & Narendran (1992). Os autores definiram duas funções objetivo para avaliar os cromossomos a cada população: F 1 : minimização do volume de movimentos entre as células. F 2 : minimização da variação da carga total dentro da célula. As funções são dadas abaixo sem maiores explicações por limitação de espaço. Recomenda-se a leitura do artigo original para maiores detalhes (VENUGOPAL & NARENDRAN, 1992). n k F1 = N j y jl 1 (1) j= 1 l= 1 m k n xil ( wij mlj ) F2 = (2) i= 1 l= 1 j= 1 3. A proposta No projeto de um arranjo físico celular sempre nos confrontamos com dois problemas: o de formação das famílias de peças e o de formação dos correspondentes grupos de máquinas (células), onde essas famílias serão processadas. O algoritmo genético aqui proposto trata do problema de formação dos grupos de máquinas e assume que as peças serão designadas às células através de algum critério posterior. Por exemplo, podemos designar cada peça à célula que possuir o maior número de máquinas requeridas pela peça. Outra possibilidade seria utilizar um coeficiente de similaridade ou uma medida de distância (distância Hamming, Euclidiana etc) para determinar o grau de similaridade entre a peça e cada célula formada, alocando a peça à célula que apresentar o maior grau de similaridade com a peça. O algoritmo genético proposto neste trabalho pode ser explicado com base em cinco elementos: função objetivo, codificação do cromossomo, população inicial, processo de seleção e operadores dos cromossomos. Esses elementos são detalhados nos itens seguintes. 4. Função objetivo Neste trabalho propõe-se combinar as funções F 1 e F 2, como mostradas em (1) e (2), em uma única função objetivo. Dessa forma o algoritmo genético deverá minimizar a função F resultante: F= c 1. F 1 + c 2. F 2. As constantes c 1 e c 2 permitem refletir a importância de cada critério na formação das células. 2 ENEGEP 2004 ABEPRO 507
Foi necessário desenvolver um escalonamento para os valores de F 2 que são muito menores que F 1. O FatorEscala foi obtido dividindo a média de F 1 pela média de F 2. Dessa forma temse em (3) o valor da função objetivo para cada cromossomo: F i = c 1.F 1 + c 2. F 2. FatorEscala (3) É importante observar que o AG proposto neste trabalho poderia trabalhar com qualquer outra função objetivo. A escolha de F 1 e F 2 foi feita para se ter uma base de comparação de resultados. 5. Codificação do cromossomo A codificação adotada foi inspirada na codificação proposta por Falkenauer (1998). Cada cromossomo é representado por grupos de máquinas. A codificação usada na Figura 2, doravante denominada de Forma 1, é transformada em duas outras codificações denominadas Forma 2 e Forma 3. Como se pode observar na Figura 3, a Forma 2 apresenta diretamente as máquinas que compõem cada célula e que estão separadas pelo caractere /. Forma 1 Forma 2 Forma 3 (1 2 2 3 1 1 3 1 3) (1 5 6 8 / 2 3 / 4 7 9) (4 6 9) Célula 1 Célula 2 Célula 3 Figura 3 Codificação dos cromossomos. A codificação da Forma 3 indica que a primeira célula é formada pelas 4 primeiras máquinas, a segunda célula é formada por duas máquinas (6-4=2), que são a quinta e a sexta máquinas da Forma 2. Por fim o último numeral indica que a terceira célula é formada por 3 máquinas (9-6=3), ou seja, as três últimas máquinas da Forma 2. A Forma 3 é importante para o processamento do algoritmo. Todas as operações são feitas com os cromossomos na Forma 2. 6. Geração da população inicial A população inicial é gerada aleatoriamente. Cada indivíduo gerado é analisado para garantir que cada máquina pertença a somente uma célula (restrição 1) e que cada célula seja composta pelo menos por duas máquinas (restrição 2). Os parâmetros a serem informados são o número de tipos de máquinas disponíveis (M) e o número de células a serem formadas (K). O procedimento usado na geração da população inicial pode ser dividido em duas etapas: Etapa 1: Escolher aleatoriamente duas máquinas para cada célula entre as M máquinas disponíveis. Após isso tem-se 2K máquinas associadas e M-2K máquinas não associadas às células; Etapa 2: Escolher aleatoriamente uma máquina entre as máquinas restantes. Associar essa máquina a uma célula escolhida aleatoriamente. Repetir o passo 2 até que todas as máquinas estejam associadas às células. 7. Processo de seleção O processo de seleção irá se basear no valor da função objetivo obtido por cada cromossomo. Os cromossomos são classificados em ordem decrescente segundo seus valores. Para garantir que boas soluções não sejam perdidas no processo de seleção, as melhores soluções (em torno ENEGEP 2004 ABEPRO 508
de 5%) são transferidas integralmente para a nova população. Isso significa que 95% da população será submetida ao processo de seleção. O processo de seleção adotado foi o da roleta (Roulette Wheel) da forma proposta por Goldberg (1989). A cada cromossomo associa-se um valor de probabilidade dado pelo quociente entre o valor da função objetivo do cromossomo e a soma dos valores da função objetivo de todos os cromossomos da população. Valores maiores desse quociente indicam cromossomos mais adaptados e com maior possibilidade de serem escolhidos para sofrerem cruzamento. 8. Operadores dos cromossomos Foram definidos quatro operadores de cromossomos: cruzamento, mutação 1, mutação 2 e inversão. A mutação 1 e a inversão são operadores que não apresentam possibilidades de ferir as duas restrições já citadas. Já o cruzamento e a mutação 2 devem sofrer uma avaliação posterior para garantir que as restrições sejam obedecidas. Operador Cruzamento: assim que dois cromossomos são sorteados pela roleta aplica-se a probabilidade de cruzamento. Caso o cruzamento não ocorra os dois cromossomos são submetidos aos operadores de mutação 1 e 2 e transferidos para a nova população. Caso o cruzamento ocorra o seguinte procedimento é adotado: Passo 1: Definir o ponto de cruzamento sorteando um número inteiro aleatório entre 1 e K-1; Passo 2: Gerar os cromossomos filhos trocando os grupos de máquinas à direita do ponto de cruzamento na Forma 2. A Figura 4 apresenta dois cromossomos pai na Forma 2 e o resultado do cruzamento, assumindo que o ponto de cruzamento seja na segunda posição (ou seja, trocam-se os genes da terceira posição em diante). Pais (1 10 14 / 2 3 8 / 4 6 13 / 5 11 12 / 7 9 15) Filhos (1 10 14 / 2 3 8 ) / 3 10 / 4 5 11 12 / 6 9 13 14 (1 8 / 2 7 15 / 3 10 / 4 5 11 12 / 6 9 13 14) (1 8 / 2 7 15 / 4 6 13 / 5 11 12 / 7 9 15) Figura 4- Exemplo de cruzamento. Passo 3: Corrigir os cromossomos filhos evitando alterar os grupos que foram trocados. Com o cruzamento proposto, máquinas podem aparecer em mais de um grupo. Além disso, pode ocorrer de algum grupo ficar com apenas 1 máquina. A primeira correção consiste em remover as máquinas duplicadas, caso existam. A segunda correção é a alocação aleatória das máquinas faltantes, inicialmente nos grupos com apenas 1 máquina. Caso todos os agrupamentos possuam o número mínimo de máquinas então as máquinas faltantes são designadas aleatoriamente a qualquer grupo. A Figura 5 ilustra a correção de um cromossomo filho gerado na Figura 4. ENEGEP 2004 ABEPRO 509
1 10 14 2 3 8 3 10 4 5 11 12 6 9 13 14 Remoção das máquinas duplicadas: 3, 10 e 14. 1 2 8 3 10 4 5 1 12 6 9 13 14 Adição das máquinas faltantes: 7 e 15. Recodificação da Forma 3. 1 7 15 2 8 3 10 4 5 11 12 6 9 13 14 Figura 5 Correção do cromossomo filho 1. Operador Mutação 1: na aplicação desse operador, que ocorre na Forma 2, sorteiam-se aleatoriamente dois números inteiros entre 1 e K, que representarão os grupos que sofrerão mutação no cromossomo. Em seguida sorteia-se uma máquina de cada grupo escolhido. As máquinas são então trocadas. Nota-se que não ocorre alteração no número de máquinas dos grupos envolvidos e também não existe a possibilidade de duplicação ou falta de alguma máquina. Essa mutação é exemplificada na Figura 6. Grupos selecionados: 2 e 5 Elementos sorteados: grupo 2=1 e grupo 5= 3 Antes da mutação: (1 10 14 / 2 3 8 / 4 6 13 / 5 11 12 / 7 9 15) Depois da mutação: (1 10 14 / 15 3 8 / 4 6 13 / 5 11 12 / 7 9 2) Figura 6 - Exemplo da mutação 1. Operador Mutação 2: sorteia-se aleatoriamente um número inteiro entre 1 e K-1, que irá representar a fronteira entre dois grupos. Sorteia-se também uma direção (esquerda ou direita). A mutação consiste simplesmente em mover a fronteira uma posição na direção sorteada. Esse operador é aplicado somente se a restrição 2 não for violada. A Figura 7 ilustra essa mutação. Número inteiro sorteado: 3 Direção sorteada: direita Antes da mutação: (1 10 14 / 2 3 8 / 4 6 13 / 5 11 12 / 7 9 15) Depois da mutação: (1 10 14 / 2 3 8 / 4 6 13 5 / 11 12 / 7 9 15) Figura 7- Exemplo da mutação 2. Operador Inversão: este operador deve ser aplicado antes que o cruzamento ocorra. Sua probabilidade de ocorrência é baixa, mas quando ocorre, o primeiro cromossomo do par escolhido para cruzamento é reescrito de forma invertida, como mostra a Figura 8. ENEGEP 2004 ABEPRO 510
Antes da inversão: (1 10 14 / 2 3 8 / 4 6 13 / 5 11 12 / 7 9 15) Depois da inversão: (7 9 15 / 5 11 12 / 4 6 13 / 2 3 8 / 1 10 14) Figura 8- Exemplo do operador inversão. 9. O algoritmo proposto O algoritmo foi implementado em Visual Basic 6 para execução de testes e segue os passos apresentados pela Figura 9. Passo 1 Entrada de dados. Fornecer os valores dos parâmetros do Quadro 1 e os dados de tempos de fabricação, preparação (setup) e demanda para cada produto. Passo 2 Gerar a população inicial. Passo 3 Calcular o valor da função objetivo para cada elemento da população inicial. Passo 4 Reescrever cada cromossomo da população nas formas 2 e 3. Passo 5 Determinar as melhores soluções (5%) da população inicial e levar para a nova população. Passo 6 Selecionar os cromossomos para cruzamento usando o procedimento da roleta. Se o cruzamento não ocorrer vá para o Passo 7. Se o cruzamento for ocorrer aplique o operador de inversão seguido do operador de cruzamento. Corrija os cromossomos descendentes se necessário. Passo 7 Aplique os operadores de mutação aos cromossomos resultantes no Passo 6 se a probabilidade de mutação ocorrer. Passo 8 Calcule o valor da função objetivo para cada elemento da nova população. Passo 9 Substitua a população antiga pela nova. Passo 10 Teste se o número de gerações foi alcançado. Em caso afirmativo, mostre a melhor solução contida na população e termine o algoritmo. Em caso negativo volte ao passo 5. Figura 9 Algoritmo proposto. 10. Parâmetros Os parâmetros requeridos pelo algoritmo genético proposto estão apresentados no Quadro 1, juntamente com os valores usados no teste discutido na seção 11. Parâmetro Valor Número de peças 30 K (número de células a serem formadas) 3 Tamanho do cromossomo (tipos de máquinas disponíveis) 15 Número de elementos da população 40 Número de gerações a explorar 200 Probabilidade de cruzamento 0,85 Probabilidade de mutação 1 0,10 Probabilidade de mutação 2 0,05 Probabilidade de inversão 0,10 Quadro 1 - Parâmetros e valores típicos. ENEGEP 2004 ABEPRO 511
Observa-se pelo Quadro 1 que a probabilidade de cruzamento é bastante alta enquanto as probabilidades de mutação e inversão são muito menores. As mutações e a inversão procuram manter uma diversidade dentro da população de cada geração. 11. Exemplo de aplicação Vários testes foram realizados com diferentes números de máquinas e peças. Em virtude da limitação de espaço, comentaremos a aplicação do algoritmo na matriz contendo 15 máquinas e 30 peças utilizada por Venugopal & Narendran (1992). O Quadro 2 mostra a matriz inicial e o Quadro 3 mostra a matriz diagonalizada obtida pelo algoritmo proposto. O resultado é o mesmo que o apresentado pelos autores citados. Máquinas Peças 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 0.3 0.6 0.6 0.2 0.2 0.5 0.7 0.4 0.6 2 0.4 0.5 0.7 0.3 0.4 0.3 0.6 0.8 0.9 0.2 3 0.6 0.7 0.3 0.2 0.4 0.9 0.6 0.2 0.2 0.4 0.3 0.5 4 0.2 0.3 0.4 0.7 0.5 0.6 0.2 0.4 0.4 0.5 0.6 5 0.2 0.3 0.4 0.5 0.7 0.8 0.9 0.6 0.8 0.2 6 0.8 0.9 1 0.7 0.2 0.3 0.4 0.5 0.6 0.8 7 0.8 0.9 0.3 0.5 0.5 0.7 0.3 0.5 0.6 0.9 8 1.1 1.2 0.3 0.8 0.3 0.9 0.2 0.3 0.4 0.5 9 0.4 0.5 0.6 0.9 0.5 0.6 0.7 0.8 0.9 1 10 0.6 0.2 0.3 0.9 0.2 0.3 0.4 0.5 0.6 0.8 11 0.3 0.3 0.2 0.3 0.4 0.5 0.9 0.2 0.5 0.6 0.7 0.8 12 0.6 0.7 0.8 0.9 0.9 0.3 0.5 0.5 0.6 0.7 13 0.7 0.5 0.6 0.8 0.5 0.3 0.4 0.5 0.7 0.8 14 0.2 0.6 0.8 1 0.5 0.4 0.6 0.8 0.2 0.8 15 0.5 0.7 0.9 0.3 0.7 0.9 0.3 0.4 Demanda 155 150 148 160144158 152155 164 148140144145162170140156132172164144158155 152 140166 148 145144170 Quadro 2 Matriz peça-máquina inicial (VENUGOPAL & NARENDRAN, 1992). Máquinas Peças 1 3 6 7 8 9 10 11 17 19 2 5 12 14 16 18 20 22 26 27 4 13 15 21 23 24 25 28 29 30 1 0.3 0.6 0.6 0.2 0.2 0.5 0.7 0.4 0.6 2 0.4 0.5 0.7 0.3 0.4 0.3 0.6 0.8 0.9 0.2 3 0.6 0.7 0.2 0.4 0.9 0.6 0.2 0.2 0.3 0.5 0.4 0.3 7 0.8 0.9 0.3 0.5 0.5 0.7 0.3 0.5 0.6 0.9 10 0.6 0.2 0.3 0.9 0.2 0.3 0.4 0.5 0.6 0.8 4 0.2 0.3 0.7 0.6 0.2 0.4 0.4 0.5 0.6 0.4 0.5 5 0.2 0.3 0.4 0.5 0.7 0.8 0.9 0.6 0.8 0.2 6 0.8 0.9 1 0.7 0.2 0.3 0.4 0.5 0.6 0.8 8 1.1 1.2 0.3 0.8 0.3 0.9 0.2 0.3 0.4 0.5 9 0.4 0.5 0.6 0.9 0.5 0.6 0.7 0.8 0.9 1 11 0.3 0.3 0.2 0.3 0.4 0.5 0.9 0.2 0.5 0.6 0.7 0.8 12 0.6 0.7 0.8 0.9 0.9 0.3 0.5 0.5 0.6 0.7 13 0.7 0.5 0.6 0.8 0.5 0.3 0.4 0.5 0.7 0.8 14 0.2 0.6 0.8 1 0.5 0.4 0.6 0.8 0.2 0.8 15 0.5 0.7 0.9 0.3 0.7 0.9 0.3 0.4 Demanda 155 148158 152 155164 148 140156 172 150144144162140132164158166148 160145170 144155 152 140145144170 Quadro 3 Matriz peça-máquina diagonalizada (solução). ENEGEP 2004 ABEPRO 512
A Figura 10 mostra uma evolução típica dos valores de F 1 e F 2 durante o processamento do algoritmo no caso da matriz do Quadro 2. Observa-se que após um certo número de gerações o algoritmo converge para a solução ótima. Também foram realizados diversos testes com uma matriz composta por 50 máquinas e 150 peças (ZOLFAGHARI & LIANG, 1997). A solução deste problema consiste de 6 células e foi encontrada pelo AG após 7000 gerações (valor médio determinado após 30 aplicações do algoritmo). Explica-se o número maior de gerações pela extrema complexidade do problema. Atualmente, nenhum algoritmo exato pode resolver este problema em um tempo de computação adequado ou aceitável. Movimentos entre células Variação total de carga dentro da célula 35 30 Fitness F1 F 1 min F 1avg Fitness F2 25 20 15 10 F 2min F 2avg 5 7000 6000 5000 4000 3000 2000 1000 0 10 20 30 40 50 60 70 80 90 100 Geração 0 10 20 30 40 50 60 70 80 90 100 Geração Figura 10 Evolução dos valores de F 1 e F 2 em função do número de gerações. 12. Comentários finais O algoritmo proposto possui diversas características novas, sendo algumas delas inéditas tais como a geração da população inicial, a codificação dos cromossomos na forma de grupos em vez de máquinas individuais, os operadores de cruzamento e mutação que trabalham diretamente com os grupos e o procedimento de correção dos descendentes. As soluções encontradas nos testes realizados fornecem informações importantes sobre as possíveis células que podem ser implementadas. Porém, por se tratar de uma heurística não se pode garantir que a melhor solução tenha sido encontrada. É necessário rodar o algoritmo diversas vezes para se ter a certeza de termos encontrado a melhor solução. Também quando não se sabe o número de células é necessário variar esse valor como dado de entrada do algoritmo e comparar as diferentes soluções obtidas. Os testes realizados mostraram que o número de gerações necessárias para se obter uma boa solução aumenta com o aumento do número de máquinas e com o número de células desejado. Referências FALKENAUER, E. (1988) - Genetic algorithms and grouping. John Wiley & Sons Ltd. GOLDBERG, D. E. (1989) - Genetic algorithm in search, optimization, and machine learning. Addison-Wesley. IRANI, S. A & HUANG, H. (1998) - Layout modules: a novel extension of hybrid cellular layouts. ASME International Mechanical Engineering Congress & Exposition. Winter Annual Meeting of the ASME. Anahein, CA. November 15-20. SURESH, G.; VINOD, V. V. & SASHU, S. (1995) - A genetic algorithm for facility layout. International Journal of Production Research. Vol 33, n.11, p.3411-3423. VENKATADRI, U.; RARDIN, R. L. & MONTREUIL, B. (1997) - A design methodology for fractal layout organization. IEE Transactions. Vol 29, p. 911-924. VERNUGOPAL, V. & NARENDRAN, T. T., (1992) - A genetic algorithm approach to the machine-component grouping problem with multiple objectives. Computers in Industrial Engineering. Vol 22, n.4, p. 469-480. ZOLFAGHARI, S. & LIANG, M. (1997) - An objective-guided ortho-synapse Hopfield network approach to machine grouping problems. International Journal of Production Research. Vol.35, n.10, p.2773-2792. ENEGEP 2004 ABEPRO 513