TIMES ASSÍNCRONOS PARA FLOW SHOP COM BUFFERS



Documentos relacionados
UMA HEURÍSTICA GRASP PARA O PROBLEMA ESTENDIDO DE SEQUENCIAMENTO DE CARROS

MOG-45 - GESTÃO DE OPERAÇÕES LISTA DE EXERCÍCIOS 2

PROGRAMAÇÃO DA PRODUÇÃO EM PROCESSOS BATELADAS UTILIZANDO PLANILHAS ELETRÔNICAS

Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento

Memória cache. Prof. Francisco Adelton

Sistemas Operacionais

INSTITUTO SUPERIOR DE CIÊNCIAS APLICADAS ADMINISTRAÇÃO DE EMPRESAS B

Capítulo 5: Aplicações da Derivada

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Exercícios Teóricos Resolvidos

Aulas 17 & 18. Comutação Rápida a Pacote. Eytan Modiano MIT

Problema de Otimização Combinatória

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

APLICAÇÃO DA METAHEURÍSTICA COLÔNIA DE FORMIGAS AO PROBLEMA DE ROTEAMENTO DE VEÍCULOS

Especificação do Trabalho

TÉCNICAS DE PROGRAMAÇÃO

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Descrição do processo de priorização para tomada de tempos: Pesquisa ação em uma empresa job shop de usinados aeronáuticos.

Uma Heurística para o Problema de Redução de Padrões de Corte

3 Previsão da demanda

Unidade 5: Sistemas de Representação

O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO

Especificação do 3º Trabalho

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Caso de uma Central de distribuição. Seqüência de processamento. Injeção de plásticos

TEORIA DAS RESTRIÇÕES: PRINCIPAIS CONCEITOS E APLICAÇÃO PRÁTICA

Trabalho Computacional

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

6. Programação Inteira

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

3 Estratégia para o enriquecimento de informações

Faculdade Sagrada Família

UTILIZAÇÃO DE SOFTWARES NA RESOLUÇÃO DE UM PROBLEMA DE PROGRAMAÇÃO LINEAR. Cintia da Silva Araújo, Tiago de Souza Marçal, Magda Aparecida Nogueira

ALGORITMOS E FLUXOGRAMAS

Resolução da lista de exercícios de casos de uso

MODELAGEM E SIMULAÇÃO

ARQUITETURA DE COMPUTADORES

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Cálculo Numérico Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU

DEFINIÇÃO DE PARÂMETROS NA UTILIZAÇÃO DE METAHEURÍSTICAS PARA A PROGRAMAÇÃO DE HORÁRIOS ESCOLARES

ROTEAMENTO PERIÓDICO DE VEÍCULOS UTILIZANDO SIMULATED ANNEALING

Bem-vindo ao curso delta Gerenciamento de peso para a versão 9.1. Este curso aborda a nova solução de peso introduzida nessa versão.

ANÁLISE DE DIFERENTES MODELOS DE ATRIBUIÇÃO DE NOTAS DA AVALIAÇÃO INTEGRADORA (AVIN) DO CURSO DE ENGENHARIA CIVIL DO UNICENP

Análise de Arredondamento em Ponto Flutuante

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Classificação: Determinístico

ALGORITMO EVOLUTIVO PARA A OTIMIZAÇÃO DA GRADE HORÁRIA DO CURSO DE ENGENHARIA ELÁTRICA DA FEIS-UNESP

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Bem-vindo ao tópico sobre administração de listas de preços.

CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves

White-box test: Também conhecido como teste estrutural, tem por objetivo validar os dados derivados das funções do sistema.

III Seminário da Pós-graduação em Engenharia Elétrica

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

TÓPICO ESPECIAL DE CONTABILIDADE: IR DIFERIDO

Gerenciamento de memória

CENTRO DE CIÊNCIAS TECNOLÓGICAS CCT CURSO DE TECNOLOGIA EM SISTEMAS DE INFORMAÇÃO

Métodos Quantitativos Prof. Ms. Osmar Pastore e Prof. Ms. Francisco Merlo. Funções Exponenciais e Logarítmicas Progressões Matemáticas

Introdução à Engenharia de Computação

Dadas a base e a altura de um triangulo, determinar sua área.

A presente seção apresenta e especifica as hipótese que se buscou testar com o experimento. A seção 5 vai detalhar o desenho do experimento.

MODELOS PROBABILÍSTICOS MAIS COMUNS VARIÁVEIS ALEATÓRIAS DISCRETAS

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Boletim. Contabilidade Internacional. Manual de Procedimentos

Avaliação de Desempenho de Sistemas

IMPLANTAÇÃO DOS PILARES DA MPT NO DESEMPENHO OPERACIONAL EM UM CENTRO DE DISTRIBUIÇÃO DE COSMÉTICOS. XV INIC / XI EPG - UNIVAP 2011

Material Teórico - Aplicações das Técnicas Desenvolvidas. Exercícios e Tópicos Relacionados a Combinatória. Segundo Ano do Ensino Médio

Apresentação. 1. Introdução. 2. Situação Problema

Estudaremos métodos numéricos para resolução de sistemas lineares com n equações e n incógnitas. Estes podem ser:

Laudo Técnico. Belo Horizonte, 22 de outubro de Retificação ao Laudo Técnico emitido no dia 18 de setembro de Considerar o presente laudo.

Só Matemática O seu portal matemático FUNÇÕES

Dois eventos são disjuntos ou mutuamente exclusivos quando não tem elementos em comum. Isto é, A B = Φ

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Sequenciamento da Produção em uma Linha de Usinagem Industrial utilizando a Metaheurística Simulated Annealing

ERP-8115 Nota Fiscal Eletrônica v2.0 (XML) Erro "Elemento inválido" emitido pelo sistema na transmissão da Nota Fiscal Eletrônica.

Tecnologia da Informação Prof. Mário Henrique de Souza Pardo Resumo Aula 4

Estudo de Casos Estudo de Caso 1: Velocidade Intervalar e Espessura da Camada

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

Parametrização Itens para Movimentação

PLANEJAMENTO DA MANUFATURA

Arquitetura e Organização de Computadores

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton

O QUE É A CENTRAL DE JOGOS?

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

MATEMÁTICA A - 12o Ano Probabilidades - Triângulo de Pascal Propostas de resolução

Considerações sobre redimensionamento de motores elétricos de indução

Karine Nayara F. Valle. Métodos Numéricos de Euler e Runge-Kutta

Exercícios Adicionais

Otimização do tempo de setup na operação gargalo de uma indústria gráfica utilizando o Sistema de Troca Rápida de Ferramentas

CAPÍTULO 1 REVISÃO DE LÓGICA COMBINACIONAL

Gerência do Processador

Capítulo 4 Gerenciamento de Memória

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

OBTENÇÃO DE CONFIGURAÇÕES ECONÔMICAS PARA O PROJETO DE TESOURAS EM AÇO

Requisitos de Software

QUESTÃO 1 ALTERNATIVA B

Sistemas de Arquivos NTFS, FAT16, FAT32, EXT2 e EXT3

ANÁLISE DE DESEMPENHO DA PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PRIMOS UTILIZANDO PTHREAD E OPENMP 1

3. Fase de Planejamento dos Ciclos de Construção do Software

A SEGUIR ALGUMAS DICAS PARA O DESENVOLVIMENTO DE UM PROJETO CIENTÍFICO

Transcrição:

TIMES ASSÍNCRONOS PARA FLOW SHOP COM BUFFERS Márcio Antônio Ferreira Belo Filho Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo (USP) Av. Trabalhador São-carlense, 400, Caixa Postal 668-13560-970 - São Carlos - SP - Brasil marciobelof@gmail.com Maristela Oliveira dos Santos Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo (USP) Av. Trabalhador São-carlense, 400, Caixa Postal 668-13560-970 - São Carlos - SP - Brasil mari@icmc.usp.br Cláudio Nogueira de Meneses Centro de Matemática, Computação e Cognição - Universidade Federal do ABC (UFABC) Rua Catequese, 242/Santo André-SP claudio_n_meneses@yahoo.com RESUMO Neste trabalho um problema de dimensionamento e seqüenciamento de lotes é considerado. O objetivo é determinar uma programação de produção visando minimizar os custos de estoque, o uso de horas extras e o tempo de fluxo total de produção. Propomos a aplicação da técnica Times Assíncronos (A-Teams) cuja arquitetura é composta de distintas heurísticas que se comunicam pelo acesso a soluções armazenadas em memórias compartilhadas. Desenvolvemos um programa escrito na linguagem C que obteve bons resultados para várias instâncias. A metodologia desenvolvida e os resultados obtidos são apresentados nesse artigo. PALAVRAS CHAVE. Times Assíncronos, Flow Shop, Estoques Intermediários Metaheurística, Administração e Gestão da Produção ABSTRACT In this work a lot sizing and sequencing problem is considered. The objective is determine a production scheduling aiming minimize the inventory costs, the overtime use and the makespan. We propose the application of technique Asynchronous Teams (A-Teams) which architecture is composed of distinct heuristics that communicate with each other by accessing solutions stored in shared memories. We developed a C program that obtains good results to many instances. The developed methodology and the results are presented in the paper. KEYWORDS. Asynchronous Teams, Flow Shop, Intermediate Buffers Metaheuristics, Production Management 173

1. Introdução Nos últimos anos as indústrias vêm sendo forçadas a aperfeiçoarem os seus níveis de produção, de forma a satisfazerem suas demandas, a respeitarem suas capacidades de recursos disponíveis e minimizarem seus custos de produção. O problema investigado consiste na determinação de uma programação de produção em um sistema de produção do tipo Flow Shop. Desejamos resolver o problema de dimensionamento e seqüenciamento de lotes, obtendo ao final, uma seqüência de produção e os tamanhos dos lotes nos períodos distribuídos num horizonte de planejamento. São consideradas restrições de capacidade de produção, estoques intermediários, tempos de preparação de máquinas dependentes da seqüência de produtos e custos de horas extras. Os objetivos são a redução do tempo de fluxo total de produção (makespan), a minimização do uso de estoque e de horas extras. Diversos pesquisadores estudaram o problema de dimensionamento e seqüenciamento de lotes em uma programação de produção de múltiplos itens, diversas máquinas em uma linha de produção do tipo Flow Shop. O problema é tradicionalmente decomposto em dois subproblemas: o dimensionamento de lotes e o seqüenciamento de lotes. Esta é uma maneira aproximada de se resolver o problema, porque em geral essas decisões são interdependentes. Há estudos na literatura sobre estes subproblemas. O problema de dimensionamento de lotes consiste em definir o número de unidades de um item contidos nos lotes a serem produzidos no período, de forma que a demanda seja atendida. O leitor interessado neste tema é referido aos artigos: Karimi et al. (2003) e Jans e Degraeve (2007). O problema de seqüenciamento de lotes, que consiste em estabelecer seqüencias dos lotes de produtos a serem produzidos, é bem estudado em Ouenniche et al. (1999) e Taillard (1990). O problema é analisado em conjunto por Lee et al. (2001) e Ruiz et al. (2005), porém não são considerados estoques intermediários. Sikora et al. (1996) apresenta o problema analisado nesse artigo, considerando estoques intermediários, preparações de máquinas dependentes da seqüência e horas extras. O autor apresenta uma heurística para o problema, denominada Integrated Approach, que analisa o problema de forma integrada, usando adaptações de heurísticas já existentes na literatura. Sikora (1996) propõe um algoritmo genético para o problema apresentado em Sikora et al. (1996), obtendo melhores resultados em menor tempo computacional, por meio de uma aproximação no recálculo do makespan, além do uso de seleção por torneio, agentes de mutação e cruzamento específicos para o dimensionamento e seqüenciamento de lotes. Ponnambalam e Reddy (2003) desenvolvem uma heurística híbrida, composta de um algoritmo genético e um simulated annealing para o problema descrito em Sikora et al. (1996). O algoritmo genético trata do dimensionamento de lotes, enquanto o simulated annealing faz buscas locais do seqüenciamento de lotes. Neste artigo propomos a aplicação do método Times Assíncronos para o problema discutido em Sikora et al. (1996). O método A-Teams foi proposto por Talukdar e Souza (1993). Um A-Team é composto de distintos algoritmos heurísticos, chamados agentes, que se comunicam por meio de memórias compartilhadas. As memórias armazenam as soluções geradas pelos agentes. Cada agente pode tomar suas próprias decisões de seleção, uso e alocação de recursos. A técnica é bem utilizada na solução de problemas combinatórios. Um exemplo de uso da técnica é descrito em Meneses et al. (2008). Na próxima Seção descrevemos o problema. A Seção 3 apresenta uma breve descrição da técnica A-Teams, enquanto a Seção seguinte lista os agentes utilizados, com detalhes e exemplos da utilização dos mesmos. Na Seção 5 os detalhes da implementação são discutidos e os resultados computacionais são analisados. Na Seção 6 alguns comentários finais são apresentados. 2. Descrição do Problema O problema consiste em definir uma programação de produção para uma indústria cujo ambiente de produção é do tipo Flow Shop. Nesse ambiente, todos os produtos devem passar pelo mesmo roteiro de máquinas dispostas em série. Assim sendo, caracterizam o problema: 174

M máquinas em série; N produtos diferentes (itens); T períodos de planejamento de igual duração, caracterizando um horizonte de planejamento finito; Depósitos intermediários (buffers ou estoques intermediários), são depósitos entre máquinas cuja finalidade é armazenar produtos inacabados de uma máquina para outra. Esses buffers possuem capacidade C j, indicando quantas unidades de um lote podem ser armazenadas, (j=1,2,...,m-1); Quando um estoque intermediário se encontra cheio, a máquina imediatamente anterior fica parada (caracterizando o blocking), voltando a ficar pronta para processar o próximo item assim que uma unidade do estoque intermediário seja transferida para a máquina seguinte, liberando assim espaço no buffer; Tempo de processamento, p ij, é o tempo necessário para cada produto i ser processado na máquina j, (i=1,2,...,n; j=1,2,...,m); Tempo de preparação de máquina (setup), s ikj, é o tempo necessário para preparação da máquina j que outrora produzia o item i, para produzir o item k, (j=1,2,...,m; i=1,2,...,n; k=1,2,...,n; i k). Os tempos de setup são dependentes da seqüência, ou seja, o tempo de preparação de uma determinada máquina depende do item processado pela mesma anteriormente. A máquina não precisa ser preparada para produtos iguais, apenas para mudanças de produtos; Os primeiros tempos de preparação das máquinas em todos os períodos são dados pela média dos tempos de preparação de todos os produtos para o primeiro produto na seqüência da programação da produção, não importando o último produto da seqüência do período anterior, ou seja, não preservam as preparações (setup carryover); Todas preparações de máquinas são não-antecipatórias (attached, non-antecipatory), ou seja, só é iniciada a preparação da máquina quando o novo produto estiver pronto para ser processado pela mesma (caso fosse antecipatória, o setup seria iniciado assim que o último produto na máquina fosse processado); O produto semi-acabado, P ij, é o resultado do processamento do produto i na máquina j, (i=1,2,...,n; j=1,2,...,m-1). O produto P im é o produto final obtido após processamento na máquina M. O produto semi-acabado P ij é transferido para o estoque entre as máquinas j e j+1, e na sua vez, será processado pela máquina j+1 assim que estiver pronta, (i=1,2,...,n; j=1,2,...,m-1); A ordem de processamento dos itens é a mesma para depósitos intermediários e máquinas, não havendo preferência entre itens. A linha de produção é uma fila na qual todos os itens têm de passar por todos processos (máquinas e buffers); O estoque de produtos acabados, I it, é o estoque do produto acabado P im ao final do período t, (i=1,2,...,n; t=1,2,...,t). Não é permitido estoque intermediário de produtos inacabados ao final de todo período. O estoque de produtos acabados possui capacidade ilimitada; Custo de estoque, h i, para cada produto acabado P im, por período de tempo estocado, (i=1,2,...,n). O custo de estoque é independe do período. Demanda de produto, D it, é a demanda de produtos acabados i, ao final do período de tempo t, (i=1,2,...,n; t=1,2,...,t). Deve ser satisfeita em todos os períodos por meio da produção naquele período e/ou de estoques de períodos anteriores; Para definir a programação de produção resultante deve-se encontrar os tamanhos dos lotes x it, referentes à quantidade de produto i que será produzida ao final do período de tempo t, (i=1,2,...,n; t=1,2,...,t). O problema investigado é multi-objetivo e visa a minimização do tempo total de produção (makespan) e do custo total de estoque de produtos acabados. O tempo total de produção inclui o tempo do período mais um tempo extra (overtime), que pode ser usado caso necessário, associando-se um custo de overtime. Para tratar desse problema como um problema de um único objetivo, associamos pesos aos objetivos e definimos a função: 175

O custo de produção é proporcional ao tempo de produção. é o custo de produção referente ao tempo gasto no período regular de trabalho, OT é o custo de produção do tempo gasto em tempo extra, enquanto o custo de estoque é dado pelo somatório que associa o custo de cada produto h i ao estoque dos períodos I it. O custo de hora extra é, na maioria dos casos, maior que o custo do período regular, e representa de certa forma uma penalidade na função objetivo, já que o custo das horas extras são maiores que os custos no período regular ( OT >> ). Variantes do problema foram analisadas. A primeira delas é o bloqueio da máquina, blocking. No modelo descrito a máquina anterior a um estoque intermediário cheio pára e inicia o processamento do item seguinte apenas quando o depósito intermediário volta a não estar cheio. Dessa forma o tempo de início de processamento do item na máquina coincide com o tempo em que o buffer fica não cheio. Foi considerada a situação em que o tempo final de processamento coincide com o tempo de esvaziamento do estoque intermediário. A segunda envolve a preparação de máquina. No modelo descrito as preparações de máquina são não antecipatórias, assim, apenas quando o item inacabado fica disponível para determinada máquina esta inicia a sua preparação. Essa preparação de máquina pode ser antecipada, quando um controle maior do processo industrial é feito. Logo, antecipa-se o setup da máquina ao desmembrar o setup com a chegada do item na máquina. Segue um exemplo de uma programação de produção. Suponha que a fábrica possui três máquinas e produz três itens diferentes. Os estoques entre máquinas possuem capacidade igual a dois. Os estoques intermediários trabalham como filas, assim, a primeira unidade a entrar será necessariamente a primeira a sair (FIFO First in, First Out). Os tempos de processamento em minutos e os tempos de preparação de máquina (setup) dependentes da seqüência são dados pela Tabela 1, entre parênteses. Por exemplo, o tempo de processamento do item 3 na máquina 1 é de 3 minutos e o tempo de setup do item 1 para o item 2 é de 4 minutos na máquina 3. Não há preparação de máquina dentro da produção de um lote, ou seja, após setup para determinado item, a máquina continua preparada para produzi-lo. Tempos Máquina 1 Máquina 2 Máquina 3 (minutos) Item 1 Item 2 Item 3 Item 1 Item 2 Item 3 Item 1 Item 2 Item 3 Item 1 0 (1) 4 5 0 (2) 3 4 0 (2) 4 3 Item 2 3 0 (2) 3 2 0 (2) 2 3 0 (1) 4 Item 3 3 2 0 (3) 4 5 0 (1) 5 4 0 (1) Tabela 1 Tempos de processamento dos itens e tempos de preparação das máquinas. A demanda é de seis unidades de cada item ao final dos dois períodos, distribuída igualmente entre os períodos, ou seja, cada período possui uma demanda de três unidades de cada item. Os custos de estoque são de 1 unidade monetária para os itens 1 e 2, enquanto que para o item 3 esse custo é de 0,5 unidades monetárias. Os custos de makespan são equivalentes a 1 unidade monetária por minuto e o período equivale a 40 minutos. Caso seja ultrapassado 40 minutos, são consideradas horas extras a um custo de 3 unidades monetárias por minuto. A partir desses dados simulamos uma linha de produção e apresentamos os gráficos de Gantt dos períodos. (Ver as Figuras de 1 a 8). As partes em cinza claro são os tempos de descanso (idle times) das máquinas (máquina parada) e dos estoques intermediários (parte do estoque intermediário vazia), as partes em branco, envolvidas por um contorno são os tempos de carregamento (load times), que representam máquina carregada ou parte do estoque intermediário cheio. As partes do diagrama em cinza escuro correspondem aos tempos de preparação de máquina. No primeiro período a seqüência dos itens é dada por 1, 2 e 3, sendo que os lotes possuem três unidades do item 1, três e seis unidades dos itens 2 e 3 respectivamente, caracterizando a notação (1,3)(2,3)(3,6). De acordo com a demanda, o período terminará com três unidades do item 3 em estoque. As preparações de máquina são do tipo não-antecipatórias (non- 176

anticipatory ou attached), consequentemente, observa-se grandes períodos de máquina parada cumulativos. Isto se deve ao fato da fábrica modelada por Sikora et al. (1996) ter poucos funcionários que fazem as preparações das máquinas manualmente. Na Figura 1, o gráfico de Gantt apresenta a primeira preparação de máquina, juntamente com a primeira unidade do lote do item 1. O primeiro setup é dado pela média das preparações de máquina de um item qualquer para o primeiro item na seqüência, para cada máquina. Assim, a máquina 1 (M1) demora 3 minutos para ser preparada. Após sua preparação, o produto intermediário da primeira unidade do lote é produzido em 1 minuto. Após sua produção, a unidade permanece no estoque intermediário até que a preparação da máquina seguinte esteja pronta. A preparação da máquina começa quando a unidade de um item diferente do anterior chega ao buffer anterior, ou seja, os setups são não-antecipatórios. A M2 demora 3 minutos para ser preparada, enquanto M3 demora 4 minutos. Observa-se que a M3 levou 9 minutos para começar o seu setup, e 13 minutos para começar a produção de um item, nesse cenário cujos tempos de preparação é da mesma ordem que os tempos de processamento dos itens. Figura 1. Primeiro Período Primeiro Setup e Primeira Unidade do Item 1 Na Figura 2, outra unidade do item 1 é produzida. Nota-se que o término da produção dessa unidade em M1 ocorre enquanto parte do estoque está cheio da primeira unidade, que ainda espera pela preparação da máquina 2. Dessa forma, o estoque intermediário estará cheio, enquanto primeiro item não iniciar seu processo em M2. Feito isso, a segunda unidade produzida avança no estoque intermediário, liberando o estoque para mais uma unidade. Figura 2. Primeiro Período Segunda Unidade do Item 1 Na Figura 3, é observado que a M1 e M2 ficam determinadas partes do tempo paradas devido ao blocking. Toda vez que o buffer estiver cheio, a máquina imediatamente anterior pára. Apenas quando o estoque voltar a ter espaço disponível, a produção na máquina anterior é retomada. Terminada a produção do primeiro lote (1,3) (item 1, 3 unidades), iniciar-se-á a produção do lote (2,3). 177

Figura 3. Primeiro Período Terceira Unidade do Item 1. Na Figura 4, inicia-se a preparação de M1 para a produção do item 2. Assim, o tempo gasto nesta preparação é dado por 4 minutos na máquina 1, 3 minutos na máquina 2 e 4 minutos na última máquina. Como ressaltado, as preparações de máquinas são não-antecipatórias. Figura 4. Primeiro Período Segundo Setup, Primeira Unidade do Item 2 Por fim, na Figura 5 o primeiro período é representado. Como o período de trabalho equivale a 40 minutos, e o término da última tarefa ocorre em 43 minutos, observa-se o uso de tempo extra, ou seja, os 3 minutos finais são overtime. Figura 5 Gráfico de Gantt do Primeiro Período Na Figura 6, o segundo período é apresentado. Não há produção do item 2 nesse período, afinal sua produção foi adiantada e produzida no primeiro período. Figura 6 Gráfico de Gantt do Segundo Período O custo desse exemplo é dado pela soma dos custos de tempo de produção, hora extra e estoque. O custo total do período 1 é de 50,5 unidades monetárias enquanto o 178

segundo período possui custo de 27 unidades monetárias, resultando num custo de programação de produção de 77,5 unidades monetárias. Segue na Figura 7 o gráfico de Gantt do primeiro período do exemplo simulado numa linha de produção onde o blocking é tratado tal que o tempo de final de processamento de um item na máquina coincide com o tempo de esvaziamento parcial do estoque intermediário seguinte quando o este se encontra cheio. Esse procedimento pode não eliminar o tempo de máquina parada, como pode ser visto na Figura 7, mas reduz este tempo. Figura 7 Gráfico de Gantt considerando non-blocking Na Figura 8, as preparações de máquinas são consideradas não antecipatórias, logo, não é necessária a chegada do item à máquina para a mesma iniciar a sua preparação. As máquinas são preparadas antecipadamente, exigindo um controle maior sobre a sua linha de produção, utilizando técnicas de controle e automação industrial. Logo inicialmente todas as máquinas são preparadas. Como pode ser visto na Figura 8, as preparações de máquinas antecipadas decresceram o uso dos estoques intermediários consideravelmente, já que os itens decresceram o tempo de espera nos buffers intermediários devido ao tempo de preparação da máquina seguinte. Figura 8 Gráfico de Gantt considerando preparação de máquina antecipatória 3. Times Assíncronos Nesta seção é apresentada uma breve descrição de Times Assíncronos. Um A-Teams é composto por agentes e memórias compartilhadas, e pode ser caracterizado predominantemente por 3 características: Agentes Autônomos: Os agentes tomam suas próprias decisões de seleção de soluções, o momento de uso das mesmas, e controle de alocação de memória; Comunicações Assíncronas: Os agentes podem ler e escrever informação nas memórias compartilhadas sem qualquer sincronização entre eles; Fluxo de dados cíclico: Os agentes tomam, modificam e salvam informações continuamente nas memórias compartilhadas. A Figura 9 mostra um A-Teams. As setas e o retângulo representam, respectivamente, os agentes e a memória compartilhada. Os agentes são normalmente heurísticas simples, mas metaheurísticas (busca tabu, algoritmo genético, simulated annealing, GRASP etc) também podem ser usadas. Os agentes construtores são responsáveis pela criação e inclusão de soluções na memória compartilhada. Os agentes de melhoria lêem soluções da memória compartilhada e, após processamento, retornam uma solução para a memória, que é inserida juntamente com a eliminação de soluções da memória feita pelos agentes destruidores. 179

A-Teams são efetivos na resolução de problemas combinatórios de difícil resolução, onde há vários algoritmos implementados, mas que nenhum deles é totalmente satisfatório. Chega-se a um meio termo combinando-os para obter respostas melhores num tempo menor. Qualquer agente pode ser excluído/incluído do/no conjunto de agentes de forma fácil. Assim, para determinadas aplicações pode-se escolher quais agentes são utilizados para melhoria de desempenho do programa. Na próxima seção descrevemos os agentes desenvolvidos neste trabalho. Vários agentes foram estudados e testados por meio de várias instâncias. Os melhores agentes permaneceram no programa final. Figura 9 Exemplo de um A-Team. 4. A-Team Aplicado ao Problema Os agentes desenvolvidos são responsáveis pela criação de soluções iniciais, pela melhoria e destruição de soluções. Dessa forma os agentes são divididos em 3 grupos: agentes construtores, de melhoria e destrutores. 4.1. Agentes Construtores O primeiro agente construtor dimensiona o número de lotes de cada período, tomando os valores que satisfazem a demanda do mesmo (política lote-por-lote). A seqüência de tarefas é dada aleatoriamente. Por exemplo, seja um período com 5 itens (1,2,3,4,5) e cujas demandas sejam, respectivamente, 10, 15, 20, 40 e 20 unidades. Dessa forma, o agente construtor cria uma solução para o período de seqüência aleatória, por exemplo: (2,15)(3,20)(5,20)(1,10)(4,40). O segundo agente é uma heurística que adota a política lote-por-lote para o dimensionamento de lotes e cuja seqüência é definida por meio do índice D it /p ij. Assim, dado um estágio j, calcula-se o índice de cada item em cada período colocando-os em ordem decrescente. Dessa maneira pode-se construir uma solução para cada máquina, ou seja, M soluções. Esse agente foi baseado na heurística BDS (Best Descending Sequence- Ouenniche et al., (1999)). Considere o exemplo anterior, porém os tempos de processamento dos mesmos na máquina j são dados por 1, 2, 4, 2 e 5 minutos, respectivamente. Dessa forma, o índice fica, na máquina j, 10 para o item 1, 7.5 para o item 2, 5 para o item 3, 20 para o item 4 e 4 para o item 5 e obtemos a seqüência: (4,40)(1,10)(2,15)(3,20)(5,20). O terceiro agente é uma heurística análoga à heurística BAS (Best Ascending Sequence- Ouenniche et al., 1999) e da mesma forma que o segundo agente construtor, define o índice D it /p ij, tomando esse índice na ordem crescente. Assim, usando o exemplo dado a seqüência é (5,20)(3,20)(2,15)(1,10)(4,40). 4.2. Agentes de Melhoria Todos os agentes de melhoria escolhem uma solução da memória compartilhada por meio de seleção por torneio de tamanho 2 (Tournament Selection). O primeiro agente, dada a vizinhança definida por troca de dois itens quaisquer na seqüência (swap), analisa certa quantidade de soluções vizinhas à solução inicial. O agente retorna a melhor combinação das soluções construindo uma solução com os melhores períodos de todas as soluções geradas. Por exemplo, seja a solução gerada pelo agente construtor 2 dada por 180

(4,40)(1,10)(2,15)(3,20)(5,20), a solução (4,40)(3,20)(2,15)(1,10)(5,20) pode ser obtida trocandose as posições dos itens 1 e 3 na seqüência. O segundo agente utiliza a vizinhança de swap assim como o primeiro agente. É analisado um caminho de uma certa quantidade de soluções iniciando-se da solução selecionada, tomando-se os vizinhos dos vizinhos. O agente retorna a melhor combinação das soluções da mesma forma que o agente anterior. Considerando o exemplo (4,40)(1,10)(2,15)(3,20)(5,20), um primeiro vizinho poderia ser (4,40)(3,20)(2,15)(1,10)(5,20), que é obtida trocando-se as posições dos itens 1 e 3 na primeira seqüência. Dessa última seqüência tem-se outro vizinho (2,15)(3,20)(4,40)(1,10)(5,20) resultado da troca dos itens 2 e 4. O terceiro e quarto agentes são análogos ao primeiro e segundo respectivamente, entretanto a vizinhança definida é de simples inserção, onde se escolhe um item da seqüência e o insere em outra posição. O quinto agente de melhoria adianta tarefas para períodos anteriores. Dessa forma, transfere toda a produção de certo item escolhido aleatoriamente de um período para outro imediatamente anterior. Caso tenha-se que inserir um item a mais na seqüência, este será inserido na primeira posição. O objetivo desse agente é a diminuição do valor do makespan, já que tempos de setup são eliminados do processo de produção. Em contrapartida haverá custos relacionados ao estoque de produtos acabados. O sexto agente é análogo ao agente anterior, porém analisa a capacidade do período com relação ao makespan, permitindo que partes da produção de um item sejam adiantadas de um período para outro imediatamente anterior. Apenas em períodos que possuem itens em comum haverão mudanças, assim, é necessário que haja produção do item no período destino. O sétimo agente, ao contrário dos dois anteriores posterga a produção excedente. Seleciona aleatoriamente um dos itens que tem produção excedente, posterga certa quantidade de produção para os outros períodos, mas sempre atendendo a demanda. Caso tenha-se que inserir um item a mais na seqüência, este será inserido na primeira posição. O oitavo e último agente mescla os dois últimos agentes, postergando parte da produção e adiantando parte de outra produção. Esse agente foi desenvolvido para o caso do custo de estoques seja menor que o custo do makespan. Ao postergar a produção, aumentar-se-ia o custo, porém ao adiantar a produção de outro item poder-se-ia ter um resultado melhor que o inicial. 4.3. Agentes Destruidores O agente de destruição é bastante simples. Se a solução gerada por um agente de melhoria é igual a uma das soluções pertencentes à memória compartilhada, então a memória compartilhada fica inalterada. Caso contrário, a solução gerada é inserida na memória compartilhada somente se esta solução é melhor do que a pior solução existente na memória compartilhada. 5. Experimentos Computacionais Nesta seção descrevemos os resultados computacionais dos testes realizados. 5.1. Instâncias Usadas nos Experimentos As instâncias foram geradas com base nos experimentos propostos nos artigos Sikora (1996), Sikora et al. (1996) e Ponnambalam & Reddy (2003). Foram feitos testes com instâncias contendo 5, 10 e 15 máquinas através dos quais são produzidos 5, 10 ou 15 produtos diferentes em 3 períodos de 1200 minutos. A capacidade de cada estoque intermediário é de 2 unidades. Os tempos de setup dependentes da seqüência foram considerados de 5 a 15 minutos. Os tempos de processamento de cada item são dados entre 0.10 e 1 minuto. Os custos de estoque são dados entre 0.10 e 1 unidade de custo por item. O custo de makespan é dado por 1 unidade de custo por minuto. O valor da hora extra é dada por 3 vezes o valor do período normal, 3 unidades de custo por minuto. A demanda é gerada de forma aleatória, tal que as primeiras soluções (obtidas com a política lote-por-lote, usando a seqüência de tarefas aleatória) seja de 3 períodos de aproximadamente 1200 minutos de tempo total de produção. Foram geradas 45 instâncias, 5 de 181

cada combinação de 5, 10 e 15 itens por 5, 10, 15 máquinas. Cada combinação MxN possui 5 instâncias. Cada instância é sujeita a dez testes, e por isso possui dez valores iniciais da função geradora de números aleatórios, assim as três abordagens (Algoritmo Genético, Algoritmo GA + SA e A-Teams) usam os mesmos valores iniciais dessa função pseudo-aleatória. 5.2. Ambiente de Teste O algoritmo usado para a geração de números aleatórios é uma implementação do multiplicative linear congruential generator, com parâmetros 16807 (multiplicador) e 2 31 1 (número primo). Este algoritmo é descrito em Park e Miller (1988). Todos os testes foram feitos usando um Intel Core 2 Duo com velocidade de 2.0GHz e 2GB de RAM sob o MS Windows Vista. Todos os algoritmos foram implementados em C e os tempos de CPU foram computados usando a função clock. 5.3. Parâmetros usados nos algoritmos Em todos os algoritmos foi usada uma população de 10 indivíduos. O número de iterações dos algoritmos foi baseado na função mais cara computacionalmente do algoritmo, dada pelo cálculo da função objetivo, principalmente o cálculo do makespan, ou seja, a cada recálculo da função objetivo se tem uma iteração. O custo do makespan é dado por a igual a 1 unidade de custo por minuto. O custo da hora extra a OT é dado por 3 unidades de custo por minuto. 5.3.1. Algoritmo Genético - Sikora (1996) Os parâmetros utilizados são iguais aos utilizados por Sikora (1996). A seleção é feita por meio de torneio de tamanho 2. As probabilidades de uso dos operadores de cruzamento e de mutação são fixas com o valor de 0.7 e 0.3 respectivamente, tanto para os operadores relacionados ao problema de dimensionamento quanto aos de seqüenciamento. O número de gerações do algoritmo genético é 2000, resultando em 20 mil iterações. A população inicial é dada aplicando-se a política lote-por-lote, enquanto a seqüência é aleatória. 5.3.2. Algoritmo GA + SA - Ponnambalam & Reddy (2003) Os parâmetros utilizados são iguais aos descritos em Ponnambalam & Reddy (2003). Para o algoritmo genético as probabilidades de uso dos operadores de cruzamento e mutação e a seleção são iguais aos do trabalho de Sikora (1996). Para o algoritmo de Simulated Annealing é utilizado: coeficiente de redução de temperatura a=0.7, temperatura inicial T 0 =10 e condição de parada e=1. A vizinhança é de inserção simples. O número de gerações é 20, assim, como a cada geração uma iteração é feita para mudanças de dimensionamento de lotes e 105 iterações são feitas na heurística Simulated Annealing, a cada geração temos 1060 iterações, portanto em 20 iterações temos 21200 iterações. A população inicial é gerada assim como Sikora (1996). 5.3.3. A-Team Proposto O número de indivíduos da memória é dado por 10 soluções. A população inicial é dada pelos agentes construtores, que possuem a mesma probabilidade de serem escolhidos. Os agentes de melhoria são oito no total e também possuem probabilidade igual de serem escolhidos. Os agentes de seqüenciamento, como descritos acima, analisam duas vizinhanças diferentes. Para os agentes de seqüenciamento, o parâmetro da quantidade de vizinhos analisados é 10. A condição de parada é dada por 20 mil iterações, assim a utilização de um agente de melhoria de seqüenciamento é responsável por 10 iterações, já que são analisados 10 vizinhos nesses agentes. 5.4. Análise dos Experimentos Os resultados computacionais são apresentados pela Figura 10, um gráfico de colunas que apresenta as médias dos resultados dos testes de cada combinação do número de máquinas e do número de produtos (MxN). Em cada combinação MxN a primeira coluna (branca) representa os resultados do A-Team. A segunda (cinza claro) e a terceira (cinza escuro) colunas representam os resultados do Algoritmo Genético de Sikora (1996) e de Ponnambalam e Reddy (2003), respectivamente. Todos os valores considerados são dados pelas médias das 5 instâncias de cada combinação MxN. Os valores são apresentados de forma relativa, considerando que o melhor 182

resultado obtido pelo A-Team vale 1.0 para cada combinação. A primeira parte de cada coluna representa a média das melhores soluções para cada instância, enquanto a parte em preto representa a diferença da primeira parte de cada coluna para a média das soluções dos testes de cada combinação. Os resultados mostraram que o A-Team proposto foi, em média, melhor que o Algoritmo Genético de Sikora (1996) e a Heurística Híbrida de Ponnambalam e Reddy (2003) para as instâncias analisadas. Para combinações de máquinas e quantidade de itens pequenas, os resultados foram próximos, aumentando as diferenças entre os métodos ao aumentar o tamanho do problema. A heurística híbrida de Ponnambalam e Reddy (2003) se demonstrou mais instável, já que a diferença entre os melhores resultados e a média dos resultados resultou numa diferença maior que as outras heurísticas. Figura 10 Gráfico de colunas dos resultados obtidos. Usamos também o A-Team proposto para testar as seguintes variantes do problema: (a) Diminuição do blocking de máquinas e (b) Antecipação das preparações de máquina. Na Figura 11 são apresentados os resultados dessas simulações. O gráfico de colunas representa para cada combinação MxN os resultados do A-Team mudando-se o modelo nas variantes citadas. A coluna branca (primeira) é o método normal, de acordo com o problema de Sikora et al. (1996), a segunda (cinza claro) e terceira (cinza escuro) colunas de cada combinação são dadas pelas simulação da programação de produção com a redução do blocking e com o setup antecipatório, respectivamente. Vale ressaltar que o modelo descrito possui preparação de máquina não antecipatória e blocking. Da mesma maneira que o gráfico anterior, os valores são relativos ao resultado dos melhores resultados do A-Team para o problema de Sikora et al. (1996). Analogamente, a parte inferior de cada coluna representa a média das melhores soluções para cada instância, enquanto a parte em preto representa a diferença da primeira parte de cada coluna para a média das soluções dos testes de cada combinação. A segunda variante é mais estável indicando que a convergência de resultados é mais consistente. Os resultados indicam que a automação do sistema produtivo, com o aumento do controle do tempo de preparação de máquinas (com a contratação de funcionários ou automação da máquina) e de processamento dos lotes nas máquinas, é viável, para o problema considerado. Figura 11 Gráficos de colunas dos resultados das variantes. Nota-se que ambas variantes causam redução no custo da função objetivo devido à redução do tempo total de produção. Observou-se que quanto maior é o tamanho do problema, maior é a redução do valor da função objetivo para as variantes. Dessa forma os melhores resultados da segunda variante na combinação 15x15 é apenas 30% do valor da função objetivo 183

dos resultados do A-Team aplicado ao problema original. A segunda variante é mais estável, indicando que a convergência de resultados é mais consistente. 7. Comentários Finais Consideramos o problema de programação de produção envolvendo o dimensionamento e seqüenciamento de lotes em um ambiente de produção Flow Shop, com tempos de preparação de máquinas dependentes da seqüência, estoques intermediários e horas extras, conforme proposto por Sikora et al. (1996). Para tentar resolver o problema implementamos os algoritmos de Sikora (1996), baseado em Algoritmo Genético e de Ponnambalam e Reddy (2003), baseado em Algoritmo Genético juntamente com Simulated Annealing. Também foi desenvolvido e implementado um algoritmo do tipo Times Assíncronos, sendo que o uso desta metaheurística é inédito para este problema. Os resultados obtidos utilizando as três metaheurísticas sobre um conjunto de instâncias foram comparados e analisados. Os resultados finais do A-Team proposto são bastante promissores. Um fato importante é que A-Teams são bastante flexíveis, podendo os agentes ser adicionados ou retirados de maneira adaptativa. Outra idéia de melhoria do método proposto é a sua paralelização. Como os agentes trabalham de forma assíncrona, o método se enquadra muito bem à programação em paralelo. Agradecimentos Agradecemos a FAPESP pelo apoio financeiro para o desenvolvimento deste trabalho (Iniciação Científica - Processo: 2007/02936-2). Bibliografia Jans, R. e Degraeve, Z. (2007), Meta-heuristics for dynamic lot sizing: A review and comparison of solution approaches, European Journal of Operational Research, 177, 1855-1875. Karimi, B., Ghomi Fatemi, S.M.T. e Wilson, J.M. (2003), The Capacitated lot sizing problem: a review of models and algorithms, OMEGA, 31, 365-378. Lee, I., Gupta, J.N.D. e Amar, A.D. (2001), A Multi-Neural-Network Learning for Lot Sizing and Sequencing on a Flow-Shop, Proceedings of the 2001 ACM symposium on Applied Computing, 36-40. Meneses, C.N., Pardalos,P.M. e Ragle, M. (2008), Asynchronous Teams for probe selection problems, Discrete Optimization, 5, 74-87. Ouenniche, J., Boctor, F.F. e Martel, A. (1999), The impact of sequencing decisions on multiitem lot sizing and scheduling in flow shops, International Journal of Production Research, 37(10), 2253-2270. Park, S. e Miller, K. (1988), Random number generators: Good ones are hard to find. Communications of the ACM, 31, 1192-1201. Ponnambalam, S. G. e Reddy, M. M. (2003), A GA-SA Multiobjective Hybrid Search Algorithm for Integrating Lot Sizing and Sequencing in Flow-Line Scheduling, International Journal of Advanced Manufacturing Technology, 21, 126-137. Ruiz, R., Maroto, C. e Alcaraz, J. (2005), Solving the flowshop scheduling problem with sequence dependent setup times using advanced metaheuristics, European Journal of Operational Research, 165, 34-54. Sikora, R., Chhajed, D., e Shaw, M. (1996), Integrating the lot sizing and sequencing decisions for scheduling a capacitated flow line, Computers Industrial Engineering, 30, 659-679. Sikora, R. (1996), A genetic algorithm for integrating lot sizing and sequencing in scheduling a capacitated flow line, Computers Industrial Engineering, 30, 969-981. Taillard, E. (1990), Some efficient heuristic methods for the flow shop sequencing problem, European Journal of Operational Research, 47, 65-74. Talukdar, S. N. e Souza, P. S. (1993), Asynchronous organizations for multialgorithm problems, ACM Symposium on Applied Computing, Indianapolis. 184