ALGORITMO GENÉTICO COM BUSCA LOCAL APLICADO AO PROBLEMA DE JUST-IN-TIME JOB-SHOP SCHEDULING

Documentos relacionados
Algoritmo Genético e Busca Local para o problema Justin-Time Job-Shop Scheduling

Programação da produção em sistema no-wait flow shop com minimização do tempo total de fluxo

4 Métodos Existentes. 4.1 Algoritmo Genético

Pesquisa Operacional Aplicada à Mineração

5 VNS com Filtro e Reconexão por Caminhos

HEURÍSTICAS GRASP PARA A MINIMIZAÇÃO DO ATRASO TOTAL NO PROBLEMA DE PROGRAMAÇÃO DE TAREFAS EM UMA MÁQUINA COM SETUP TIME

Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo

ESTÁGIOS DOMINANTES FLEXÍVEIS EM SISTEMAS DE PRODUÇÃO FLOW SHOP HÍBRIDOS

Problemas de otimização

4 Implementação Computacional

XLVI Pesquisa Operacional na Gestão da Segurança Pública

ANÁLISE COMPARATIVA DE HEURÍSTICAS PARA MINIMIZAÇÃO DE ADIANTAMENTOS E ATRASOS EM FLOW SHOP COM TEMPOS DE SETUP

UMA ABORDAGEM AO PROBLEMA DE SEQUENCIAMENTO EM UMA MÁQUINA COM PENALIDADES POR ANTECIPAÇÃO E ATRASO DA PRODUÇÃO POR MEIO DE ALGORITMOS EVOLUTIVOS

Unidade de Matemática e Tecnologia, Universidade Federal de Goiás Regional Catalão

Algoritmos Genéticos. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial

3. Resolução de problemas por meio de busca

UM MÉTODO HEURÍSTICO APLICADO AO PROBLEMA DE PROGRAMAÇÃO DE SONDAS DE PRODUÇÃO. Miguel Angel Fernández Pérez

5 Estudo de Caso e Resultados

6 Experimentos realizados

UM ALGORITMO GENÉTICO HÍBRIDO PARA O PROBLEMA NO- WAIT FLOWSHOP COM MAKESPAN E ATRASO MÁXIMO

Algoritmos Branch e Bound para o problema de sequenciamento em uma única máquina

1. Computação Evolutiva

Algoritmos Genéticos

Formulações de Programação Matemática para o Problema de Seqüenciamento em uma Máquina com Janelas de Entrega Distintas e Tempo de Preparação

UMA COMPARAÇÃO EMPÍRICA DE OPERADORES DE CROSSOVER PARA O PROBLEMA DE JOB SHOP COM DATAS DE ENTREGAS

Inteligência Artificial. Algoritmos Genéticos. Aula I Introdução

Modelo de Algoritmo Genético para o Escalonamento de Tarefas em uma Arquitetura Multiprocessadora

Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP

REDUÇÃO DO ESTOQUE EM PROCESSAMENTO EM SISTEMAS DE PRODUÇÃO FLOW SHOP

Buscas Informadas ou Heurísticas - Parte III

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008

Computação Evolutiva. Computação Evolutiva. Principais Tópicos. Evolução natural. Introdução. Evolução natural

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Uma Introdução à Busca Tabu André Gomes

Algoritmos de Escalonamento do Preactor. Algoritmos de Escalonamento do Preactor. INESC Porto Unidade de Engenharia de Sistemas de Produção

Unidade de Matemática e Tecnologia, Universidade Federal de Goiás Regional Catalão

Otimização Combinatória - Parte 4

PROGRAMAÇÃO DA PRODUÇÃO EM SISTEMAS POR BATELADAS: UM ESTUDO PARA A OTIMIZAÇÃO DO MAKESPAN

UM ALGORITMO GENÉTICO COM INSERÇÃO GULOSA PARA O PROBLEMA DE ESCALONAMENTO DE TAREFAS JOB SHOP SEM ESPERA

6 Estudos de Casos Porta Lógica OU de 4 Entradas

Um Algoritmo Genético com Aprendizado por Reforço Simples aplicado ao problema do Mundo de Grid

Ummétodohíbridoparaescalonar turnosdeenfermeiras

Análise da Performance de um Modelo de Escalonamento Baseado em Pesquisa Tabu Aplicado em um Sistema de Manufatura Flexível

Inteligência Artificial

COMPARAÇÃO ENTRE FROTA HOMOGÊNEA E HETEROGÊNEA EM PROBLEMAS DE ROTEAMENTO DE VEÍCULOS CAPACITADOS

Sequenciamento de Tarefas em Máquinas Paralelas de Processamento em Lotes com Entregas

Sistemas de Produção em Fluxo

Exemplo de Aplicação de Algoritmos Genéticos. Prof. Juan Moisés Mauricio Villanueva cear.ufpb.br/juan

Experimentos e Resultados

LIMITANTE INFERIOR PARA O PROBLEMA DE MINIMIZAR O NÚMERO DE TROCAS DE FERRAMENTAS

UM MODELO DE PROGRAMAÇÃO INTEIRA MISTA PARA A PROGRAMAÇÃO DA PRODUÇÃO EM FLOWSHOP HÍBRIDO COM BUFFERS LIMITADOS

UMA HEURÍSTICA VNS MULTIOBJETIVO PARA O PROBLEMA DE SEQUENCIAMENTO DE TAREFAS EM UMA MÁQUINA COM PENALIDADES POR ANTECIPAÇÃO E ATRASO E FLUXO TOTAL

Técnicas de Inteligência Artificial

METAHEURÍSTICA Encontrar soluções boas ou até mesmo ótima

INVESTIGANDO O PROBLEMA DA MOCHILA IRRESTRITA EM SUA VERSÃO BIDIMENSIONAL

Algoritmos Genéticos

Algoritmo Evolutivo para o Problema de Corte de Estoque Unidimensional com Redução do Número de Padrões de Corte

Algoritmos Genéticos e Evolucionários

BUSCA LOCAL (PARTE 4 Resolução de problemas por meio de busca) (C)Russell & Norvig, capítulo 4

1_1 1_2 2_1 1_ _ _ Fonte: Autor

UM ALGORITMO GRASP PARA O SALBP-2

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO

1 Introdução 1.1 Motivação

Modelos Evolucionários e Tratamento de Incertezas

HEURÍSTICA BUSCA LOCAL ITERADA PARA O SEQUENCIAMENTO DE TAREFAS EM UMA MÁQUINA COM TEMPOS DE PREPARAÇÃO DEPENDENTES DA FAMÍLIA

Método Simplex. Marina Andretta ICMC-USP. 19 de outubro de 2016

Nuno Miguel Duarte Sequeira André VARIABLE NEIGHBOURHOOD SEARCH

ALGORITMO VNS MULTI-OBJETIVO PARA UM PROBLEMA DE PROGRAMAÇÃO DE TAREFAS EM UMA MÁQUINA COM JANELAS DE ENTREGA

Um Estudo Empírico de Métodos Hiper-Heurísticos

Max Pereira. Inteligência Artificial

Avaliação de métodos heurísticos em sistemas de produção no-wait flow shop

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

Marcone Jamilson Freitas Souza

Minimização da duração total da programação em sistemas de produção flowshop, sem interrupção de execução e tarefas

3 Algoritmos Genéticos

INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL. Aula 06 Prof. Vitor Hugo Ferreira

Tópicos Especiais em Informática Fatec Indaiatuba

GBT: GRASP + BUSCA TABU EM PROBLEMAS DE SCHEDULING

Inteligência Artificial

PAULO LÚCIO DE OLIVEIRA JÚNIOR

UM ITERATED LOCAL SEARCH PARA A MINIMIZAÇÃO DO MAKESPAN EM SISTEMAS DE PRODUÇÃO FLOWSHOP COM EXECUÇÃO CONTÍNUA DAS TAREFAS

Inteligência Artificial

Algoritmos Evolutivos para Otimização

4 Algoritmo Genético com Chaves Aleatórias

UMA HEURÍSTICA CONSTRUTIVA PARA O PROBLEMA DE MINIMIZAÇÃO DO ATRASO TOTAL NO AMBIENTE FLOWSHOP COM BUFFER ZERO

OTIMIZAÇÃO FUNÇÕES UTILIZANDO ALGORITMOS GENÉTICOS NO APLICATIVO MS EXCEL RESUMO INTRODUÇÃO

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS. Metaheurísticas de Buscas

ILS com reconexão de caminhos entre ótimos locais para um problema clássico de escalonamento com antecipação e atraso

Estratégias Evolutivas EEs. Prof. Juan Moisés Mauricio Villanueva

3. Resolução de problemas por meio de busca

MODELO DE PROGRAMAÇÃO LINEAR INTEIRA MISTA PARA MINIMIZAÇÃO DOS ADIANTAMENTOS E ATRASOS EM FLOW SHOP COM SETUP DEPENDENDE DA SEQUÊNCIA

Técnicas de Inteligência Artificial

Algoritmos genéticos para o problema de programação de tarefas em máquinas paralelas idênticas com dois critérios

Introdução aos Problemas de Roteirização e Programação de Veículos

Um Estudo Empírico de Hiper-Heurísticas

XLVII SIMPÓSIO BRASILEIRO DE PESQUISA OPERACIONAL

MÉTODO HEURÍSTICO HÍBRIDO PARA RESOLUÇÃO DO PROBLEMA DE LOCALIZAÇÃO DE FACILIDADES CAPACITADAS EM DOIS NÍVEIS

Transcrição:

ALGORITMO GENÉTICO COM BUSCA LOCAL APLICADO AO PROBLEMA DE JUST-IN-TIME JOB-SHOP SCHEDULING Rodolfo Pereira Araujo Universidade Federal de Viçosa Av. P.H. Rolfs, s/n, DPI Campus UFV 36.570-000 Viçosa, MG - Brasil rodolfo.araujo@ufv.br André Gustavo dos Santos Universidade Federal de Viçosa Av. P.H. Rolfs, s/n, DPI Campus UFV 36.570-000 Viçosa, MG - Brasil andre@dpi.ufv.br José Elias Cláudio Arroyo Universidade Federal de Viçosa Av. P.H. Rolfs, s/n, DPI Campus UFV 36.570-000 Viçosa, MG - Brasil jarroyo@dpi.ufv.br RESUMO Este artigo descreve uma combinação de algoritmo genético e busca local para o problema de just-in-time job-shop scheduling com penalidades por atraso e adiantamento. No problema tratado, as operações de cada tarefa têm uma ordem específica de processamento nas máquinas e cada operação tem um tempo de processamento, data de entrega e penalidades por atraso e adiantamento que são pagas se a operação é processada antes ou depois da data determinada. Encontrar uma solução exata é difícil até para pequenas instâncias, mas o algoritmo proposto mostrou-se eficiente quando comparado aos resultados recentemente publicados na literatura obtidos por outros. O método foi avaliado com instâncias da literatura com até 20 tarefas em 10 máquinas, e foram obtidas soluções de qualidade superior às já publicadas. PALAVRAS CHAVE. Metaheurística. Algoritmo genético. Scheduling. Área de classificação principal: MH - Metaheurísticas ABSTRACT This article describes a combination of genetic algorithm and local search for the just-in-time jobshop scheduling problem, with earliness and tardiness penalties. In this problem, each operation of each job has a specific machine to be processed in a specific order and a process time, a due date, and earliness and tardiness costs, which will be paid if the operation ends before or after the due date. Finding the exact solution is hard even for small instances, but the proposed algorithm showed to be efficient when compared to results of others methods recently published on the literature. The method was tested with instances from the literature with up to 20 jobs and 10 machines, and obtained solutions with higher quality than those already published. KEYWORDS. Metaheuristic. Genetic algorithm. Scheduling. Main area: MH - Metaheuristics XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1872

1. Introdução Os problemas de Just-In-Time Scheduling são muito comuns nos tempos atuais já que sua resolução pode ser de grande utilidade em todo ambiente industrial. No ambiente do just-in-time (JIT) scheduling, a tarefa deve ser finalizada tão próximo quanto possível da sua data de entrega, pois há penalidades por atraso e também por adiantamento, devido ao seu adiantamento onerar sua estocagem e seu atraso implicar na perda de credibilidade perante o mercado. Uma grande quantidade de pesquisas tem se voltado para os problemas tanto com atraso quanto com adiantamento (Baker & Scudder, Sequencing with earliness and tardiness, 1990).O foco principal tem sido para problemas com uma única máquina (Sourd & Kedad-Sidhoum, 2003). Para várias máquinas geralmente só o atraso é considerado (Mattfeld & Bierwirth, 2004), devido à intratabilidade do JIT job-shop scheduling. De modo geral há poucos trabalhos considerando penalidades por atraso e adiantamento. Em (Beck & Refalo, 2003) e (Kelbel & Hanzálek, 2007), por exemplo, todas as operações, exceto a última de cada tarefa, não possuem penalidades por atraso e adiantamento, assim só há penalidade se a última das operações for entregue fora da data, o que contradiz a filosofia do just-in-time. A definição do problema de just-in-time job shop scheduling (JITJSSP) considerada neste trabalho é baseada no trabalho de (Baptiste, Flamini, & Sourd, 2008). Há um conjunto de tarefas,,,, e um conjunto de máquinas,,,,. Cada tarefa é uma sequência de operações ordenadas,,,,, onde é a k-ésima operação da tarefa. Cada operação tem uma data de entrega, um tempo de processamento, e uma máquina específica onde tem que ser processada. Para avaliar o custo da solução, cada operação tem dois coeficientes de penalidade, e, penalizando o adiantamento e o atraso. Sendo o tempo de término da operação, 0, é seu adiantamento e 0, seu atraso. Cada operação está adiantada se 0 e está atrasada se 0. O objetivo então é encontrar uma solução que minimize as penalidades por atraso e adiantamento totais, dado por: min. (1) Uma solução factível deve obedecer aos critérios de precedência: para cada par consecutivo de operações e da mesma tarefa, a operação não pode ser iniciada antes da operação ser terminada, isto é, para 1,, e 1,,,. (2) Considera-se 0 para 1,, para a restrição valer para 1 a operação. A solução deve obedecer também às restrições de recurso: duas operações distintas e que devem ser processadas na mesma máquina não podem ser processadas ao mesmo tempo, isto é, para, 1,,, e para 1,, e 1, onde,. (3) O problema de job shop scheduling (JSSP) é bastante conhecido e está entre os mais difíceis entre os problemas de otimização combinatória. O JITJSSP abordado neste trabalho é uma extensão do JSSP, que é classificado como NP-difícil (Du & Leung, 1990). Baptiste et al. (2008) obtiveram bons limites inferiores para várias instâncias diferentes do JITJSSP utilizando dois tipos diferentes de relaxação Lagrangeana de um modelo de Programação Linear mista baseado em (1)-(3). Foram calculados também limites superiores com heurísticas sobre as soluções XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1873

obtidas das relaxações e também obtidas pelo software ILOG CPLEX. Porém para várias instâncias as distâncias entre esses limites ainda são grandes, o que justifica o estudo de outras técnicas. Os algoritmos genéticos (AG) tem sido muito utilizados na solução de problemas de otimização combinatória e vem apresentado bons resultados em várias áreas da engenharia, encorajando a utilização deste método para a resolução do JSSP (Jain & Meeran, 1999). Como em outras meta-heurísticas para o JSSP, métodos de busca local são usados com a finalidade de melhorar a solução encontrada pelo AG (Gonçalves, Mendes, & Resende, 2005) (Gao, Sun, & Gen, 2007). Isto é útil especialmente nos AGs para problemas de sequenciamento, pois dificilmente os operadores genéticos poderão realizar alterações, ao mesmo tempo, simples e significativas na solução. Neste artigo apresenta-se um algoritmo genético com um processo de busca local eficiente para encontrar boas soluções para o JITJSSP. O método foi testado em um grupo de instâncias com até 20 tarefas e 10 máquinas, geradas por Baptiste et al. (2008). A organização deste artigo é dada da seguinte forma: na Seção 2 é feita a descrição do algoritmo genético; a Seção 3 descreve a busca local; os testes computacionais com o algoritmo genético e a busca local são expostos na Seção 4; finalmente a Seção 5 resume as conclusões do trabalho. 2. Algoritmo genético A seguir são descritas as características do algoritmo genético proposto neste trabalho. São descritos dois operadores de crossover e dois operadores de mutação. 2.1. Representação do cromossomo No algoritmo genético implementado cada cromossomo representa uma solução factível, que é codificada em um vetor de inteiros que variam de 1 (número de tarefas), sendo que cada um aparece vezes (uma para cada operação). O cromossomo representa a ordem em que as tarefas serão escalonadas nas máquinas. Na Figura 1 mostra-se um exemplo de cromossomo para um problema com = 4 tarefas e = 2 máquinas. 1 2 4 1 4 3 2 3 Figura 1 - Sequência de genes num cromossomo 2.2 Fitness, avaliação do cromossomo O valor de fitness ou função de penalidade é o somatório dos atrasos e adiantamentos de todas as operações de todas as tarefas do cromossomo e é dado pelo valor de definido em (1). Para se calcular o tempo de término de cada operação, as operações das tarefas são escalonadas na ordem em que aparecem no cromossomo. Neste escalonamento cada tarefa é realizada tão cedo quanto for possível. Então, após serem escalonadas todas as operações de todas as tarefas, tenta-se diminuir o adiantamento destas quando possível. Isso é feito movendose cada operação adiantada até o maior valor entre sua data de entrega, a data de início da próxima operação da tarefa, e a data de início da próxima operação na mesma máquina. 2.3. População inicial A população usada no algoritmo genético é composta por um número fixo de cromossomos. Para os resultados da seção 4 utilizamos uma população inicial aleatória. Poderia ter sido empregada uma heurística construtiva mais sofisticada, no entanto, devido aos bons resultados alcançados, este esforço não se fez necessário até o presente momento. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1874

2.4. Fase de seleção Antes de ser iniciada a fase de seleção o cromossomo de melhor valor de fitness é preservado para que assim seja evitada a perda de uma boa solução (elitismo). Em relação aos outros cromossomos da população são feitos torneios ternários para determinar quais permanecem na população. O torneio ternário é feito da seguinte forma: três cromossomos são escolhidos aleatoriamente e o de melhor valor de fitness (menor valor de penalidade total) é selecionado. A fase de seleção define uma população de soluções candidatas para a realização de cruzamentos (crossover). 2.5. Operador de crossover Toda uma nova população é criada pelo operador de crossover, exceto aquele com melhor valor de fitness, que é copiado diretamente da população antiga para a nova. Dois cromossomos são escolhidos aleatoriamente da população para passarem pelo processo de crossover que gerará dois filhos dos quais somente o melhor será adicionado à nova população. Para os testes foram usados dois operadores de crossover, propostos por Iima (2005) e Zhang et al (2008) para outros problemas de job-shop. Seguem abaixo as descrições dos mesmos. 2.5.1. Operador Iima (2005) Um grupo de tarefas é dividido aleatoriamente em dois subconjuntos não vazios e, sendo que. O primeiro gene do é copiado para o se o gene pertence ao subconjunto ou para o se pertence ao subconjunto. O primeiro gene do vai para o se este pertence ao subconjunto ou para o se pertence ao subconjunto. O mesmo processo é repetido para o segundo gene do, para o segundo gene do e assim sucessivamente para todos os genes da esquerda para a direita. Assim, o é obtido dos genes do que pertencem ao subconjunto e dos genes do que pertencem ao subconjunto, na ordem em que aparecem em cada cromossomo. Os genes restantes vão para o. Este operador é ilustrado na Figura 2. S 1 1 3 S 2 2 4 cromossomo 1 1 2 4 1 4 3 2 3 2 3 1 4 2 3 4 1 filho 1 1 2 1 4 2 3 4 3 2 3 4 1 4 3 2 1 cromossomo 2 Figura 2 Exemplo do operador de crossover filho 2 2.5.2. Operador de Zhang et al (2008) Neste operador são escolhidas aleatoriamente % das tarefas que farão parte de um conjunto. Então, todos os genes do que pertencem ao conjunto são copiados na mesma posição em que se encontra para o. Depois de termos o com % de suas tarefas já posicionadas, as demais são preenchidas na ordem em que aparecem no. O outro filho mencionado é obtido invertendo-se o com o e aplicando-se o processo novamente. 2.6. Operador de mutação O operador de mutação tem por finalidade aumentar a diversidade das soluções da população. O melhor cromossomo é copiado sem passar pelo crivo da mutação e para os demais há uma probabilidade de sofrer mutação. Foram utilizados dois processos de mutação durante o trabalho: mutação Permuta e mutação Move maior janela. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1875

2.6.1. Mutação Permuta O operador de mutação Permuta é bastante simples: seleciona aleatoriamente dois dos genes da solução e troca-os de posição, como ilustrado na Figura 3. 1 2 4 1 4 3 2 3 1 2 3 1 4 4 2 3 Figura 3 Operador de mutação Permuta 2.6.2. Mutação move maior janela Neste trabalho é proposto outro operador de mutação, que utiliza características específicas do problema tratado. O operador Move maior janela procura na solução a maior seqüência de operações atrasadas ou a maior seqüência de operações adiantadas. Então, se estas estiverem adiantadas, são todas movidas uma posição para a direita na solução de forma a tentar minimizar seu adiantamento. Se a seqüência estiver atrasada, as operações são movidas para a esquerda para tentar diminuir seu atraso. A Figura 4 ilustra uma mutação feita por esse operador, considerando uma sequência de operações atrasadas. 1 2 4 1 4 3 2 3 1 4 1 4 3 2 2 3 Figura 4 Operador de mutação Move maior janela 2.7. Critério de parada As populações passam pelas fases de seleção, crossover e mutação um número de vezes, e a melhor solução encontrada ao final é retornada pelo AG. O único critério de parada utilizado é o número de iterações, assim, ao serem completadas as iterações o processo termina. 3. Busca local Após o termino do algoritmo genético (AG) a melhor solução encontrada por este é submetida ao processo de busca local (BL) que tem como principal finalidade melhorar o valor da solução por busca na vizinhança, através de transformações simples na solução, tentando assim atingir um mínimo local que talvez não fosse encontrado pelo AG devido à incapacidade ou mesmo dificuldade por parte de seus operadores em explorar toda a vizinhança. Neste trabalho foram utilizados 4 tipos diferentes de busca local: Permutação, Inserção, Inserção completa e Permutação com Lista, que são descritas a seguir. 3.1. Permutação O processo de busca local Permutação é o método mais elementar utilizado. Este é do tipo melhor-vizinho, pois enumera toda a vizinhança e então se o melhor dos vizinhos for melhor que a solução atual o processo se repete para o melhor vizinho. A enumeração dos vizinhos é feita pela troca de cada par de genes da solução, e assim, para uma solução com máquinas e tarefas, serão gerados e testados vizinhos. 2 3.2. Inserção O processo de busca local Inserção foi proposto por Suresh e Mohanasundaram (2006) e funciona da seguinte maneira: primeiramente, é escolhida uma janela de tamanho dentro da solução, sendo o início e o final. Então para cada um dos genes na janela, faz-se uma escolha aleatória de uma posição antes ou depois da janela. Se então todos os genes no intervalo, são movidos uma posição para a esquerda e o gene vai para a posição. Caso então todos os genes no intervalo, são movidos uma posição para a direita, exceto o gene que vai para a posição. Desta forma, para este processo o número de vizinhos é igual ao tamanho da janela escolhida. A busca continua a partir do melhor vizinho, ou para, caso não seja gerado nenhum vizinho melhor que a solução atual. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1876

3.3. Inserção completa Aproveitando-se do modelo utilizado pelo método Inserção e tendo observado que enumerar todos os seus possíveis vizinhos não aumentaria de maneira muito expressiva o tempo computacional do algoritmo, propôs-se uma expansão deste método para se alcançar melhores resultados. Para cada um dos 2 pares,, onde e são genes da solução, cada um dos genes no intervalo, é movido uma posição para a esquerda, e o gene vai para a posição. Isso enumera todos os possíveis vizinhos de uma dada solução que poderiam ser obtidos pelo processo Inserção. 3.4. Permutação com Lista Também foi proposta uma modificação do método de busca local por permutação. Em vez de selecionar sempre a melhor solução vizinha, existe uma lista ordenada que mantém as melhores soluções. Nesta modificação adiciona-se a solução gerada pelo algoritmo genético a esta lista. Ela é então marcada, enumera-se toda sua vizinhança, mantendo-se as melhores na lista. Para cada solução ainda não marcada da lista, esta é marcada e são enumeradas suas vizinhas. Reúnem-se as novas soluções com as da lista e são mantidas as melhores ordenadas pelo valor de fitness. O processo é repetido enquanto houver na lista soluções não marcadas. Uma descrição mais detalhada é apresentada em (Araujo, Santos, & Arroyo, 2009). Desta forma, é possível escapar de mínimos locais com mais facilidade. A busca não é tão gulosa como a Permutação. Não apenas o melhor vizinho é considerado, mas também alguns outros, que ainda estão presentes na lista. Caso estes tenham outro vizinho melhor, este vizinho também pode ser considerado em futuras iterações, o que não acontece no método Permutação que sempre substitui a solução atual pelo melhor vizinho, descartando os demais. 4. Resultados experimentais Nesta seção são apresentados os resultados dos testes experimentais do algoritmo genético com a busca local. 4.1. Instâncias As instâncias usadas são as mesmas utilizadas por (Baptiste, Flamini, & Sourd, 2008), que as geraram e as disponibilizaram na web. Para cada combinação de, 10,15,20 2,5,10 há oito instâncias, sendo que em todas elas as tarefas são processadas uma vez em cada máquina, e a máquina em que cada operação é processada é escolhida aleatoriamente, com tempos de processamento escolhidos no intervalo 10,30. As instâncias são nomeadas I-n-m- DD-W-ID, onde: DD é a distância entre duas datas de entrega de operações consecutivas, que pode ser exatamente igual ao tempo de processamento da última operação ( ), ou o tempo de processamento acrescido de um valor aleatório no intervalo 0,10 ( ). W é um valor relativo aos custos de adiantamento e atraso (, ), em que ambos podem ser escolhidos aleatoriamente em 0.1, 1 ( ) ou em 0.1, 0.3 e em 0.1, 1 ( ). Duas instâncias estão disponíveis para cada combinação de parâmetros ( 1) e ( 2). Isto leva a um total de 72 instâncias, todas disponíveis on-line (Baptiste, Flamini & Sourd, 2008b). 4.2. Resultados Os algoritmos foram implementados na linguagem de programação C++, e os testes foram realizados em um computador desktop Intel Pentium IV 3.0 GHz, com 2 GB de RAM. Os XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1877

resultados dos diversos operadores e buscas locais são então comparados entre si, e com os de (Baptiste, Flamini, & Sourd, 2008), criadores das instâncias. 4.3. Calibração dos parâmetros Neste tópico são descritos os parâmetros utilizados na implementação dos algoritmos. A população inicial usada no algoritmo genético é composta por 200 cromossomos e passa por 100 iterações, valores estes determinados experimentalmente. Não se justificaria usar valores menores, pois o processo demonstrou-se rápido, e com valores superiores a estes não houve melhoria significativa na qualidade das soluções geradas pelo algoritmo. Para o operador de crossover Zhang et al (2008) utilizou-se 20%, e para o operador de mutação utilizou-se 5% como probabilidade de ocorrência de mutação. Tais valores foram obtidos experimentalmente. Para o processo de busca local Permutação com Lista foi usada uma lista com tamanho 10. Para uma lista menor o processo torna-se muito guloso e perde a vantagem pela qual foi proposto, e para valores maiores verificou-se experimentalmente que o tempo computacional aumenta muito e não há uma melhoria muito expressiva nos resultados. 4.4. Comparação entre as buscas locais Como descrito na seção 3, foram implementadas quatro diferentes buscas locais, sendo duas delas propostas pelos autores deste trabalho. Em relação à qualidade da solução obtida, a busca local Permutação com Lista encontrou a melhor solução em 67 das 72 instâncias, provando ser a melhor busca local. Nas outras 5 instâncias restantes, a melhor solução foi obtida pela Inserção Completa. Comparando-se a Permutação com Lista e a Permutação simples, elas encontraram a mesma solução em 51 instâncias. A Permutação com Lista encontrou resultado melhor em 16 instâncias e em nenhuma instância ela foi pior. Isso mostra que a Permutação com Lista consegue escapar de mínimos locais que limitavam a busca da Permutação, sem se perder no espaço de soluções. O tempo de execução do algoritmo com as buscas locais Permutação com Lista e Inserção Completa é até duas vezes maior que as demais, para algumas instâncias, ou seja, não é significante comparado à melhoria de qualidade na solução obtida. 4.5. Comparação dos operadores de mutação e crossover Como descrito na seção 2, foram implementados dois operadores de crossover e dois de mutação. A Tabela 1 resume os resultados de cada combinação destes operadores. Tais resultados foram obtidos sem aplicação de busca local, para que os resultados fossem influenciados apenas pelos operadores. Os resultados são agrupados de acordo com o número de tarefas, e há 24 instâncias para cada grupo, contando as diferentes instâncias para 2, 5 e 10 máquinas. Para cada combinação de métodos de crossover e mutação são apresentados: - a média do valor da solução (penalidade média) entre as instâncias do grupo - o número de instâncias do grupo que encontrou a melhor solução, em relação às demais - o tempo total gasto para resolver todas as instâncias do grupo Percebe-se que o operador de crossover Iima (2005), embora na implementação feita neste trabalho tenha sido 5 vezes mais lento, teve resultados bem superiores ao outro operador, pois encontra resultados de melhor qualidade (cerca de metade do valor da penalidade), e em nenhum caso o operador de Zhang et al (2008) encontrou solução melhor que o de Iima. Já entre os operadores de mutação, pela penalidade média, percebe-se que a diferença é bastante pequena, levando a concluir que para estas instâncias os dois operadores não apresentam diferença significativa nos resultados. Porém, o operador proposto se saiu melhor nas instâncias menores, com 10 tarefas, enquanto o operador mais simples, permutação, se saiu melhor nas instâncias maiores, com 20 tarefas, tanto no valor da penalidade média quanto no número de melhores soluções. Em 6 das instâncias com 10 tarefas, os métodos encontraram exatamente o mesmo valor de solução. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1878

Tabela 1: Resultados comparativos obtidos com os diferentes operadores de crossover e mutação Crossover Iima (2005) Zhang et al (2008) Move maior Move maior Mutação Permutação Permutação Janela Janela 10 tarefas 669,48 671,83 1164,62 1161,61 Penalidade 15 tarefas 1868,26 1866,07 3658,61 3569,50 Média 20 tarefas 4026,86 4015,54 8412,62 8270,97 Melhores Soluções Tempo Total (s) 10 tarefas 18 12 - - 15 tarefas 12 12 - - 20 tarefas 6 18 - - 10 tarefas 68,0 64,0 14,0 12,3 15 tarefas 94,7 94,3 17,0 15,7 20 tarefas 119,7 116,0 23,3 21,0 4.6. Comparação com resultados da literatura Os resultados do algoritmo genético puro e com busca local Permutação com Lista são comparados com resultados da literatura (Baptiste, Flamini, & Sourd, 2008). Os resultados apresentados foram obtidos utilizando-se os operadores Iima para crossover e Permuta para mutação. Apesar do objetivo do artigo de Baptiste, et al. ser comparar os limites inferiores obtidos por três métodos (relaxação lagrangena das restrições de precedência e de recurso, e pelo software CPLEX), foram também encontrados limites superiores heuristicamente, baseados nas soluções por relaxação lagrangeana e pelo CPLEX. Como as soluções produzidas pelo método aqui proposto são todas viáveis, a comparação será feita com as soluções viáveis do artigo citado, ou seja, com seus limites superiores, e não com as soluções relaxadas. A Tabela 2 mostra os resultados para as instâncias com 10 tarefas. Nas colunas AG e AG+BL estão os dados obtidos com o algoritmo genético e o algoritmo genético com busca local. Nas colunas LB e UB os valores do melhor limite inferior (lower bound) e o limite superior (upper bound) obtidos por Baptiste, et al. Nesse caso, a coluna de tempo mostra o tempo gasto pelo método que obteve o melhor limite inferior. As colunas %melhoria mostram o percentual de melhoria do valor da solução dos métodos aqui propostos em relação ao limite superior conhecido anteriormente. Esse valor é dado por 100, no caso do algoritmo genético, sendo AG e UB os valores das colunas AG e UB, respectivamente o valor da solução encontrada pelo algoritmo genético e o limite superior de Baptiste, et al. Assim, como se trata de um problema de minimização, quando maior esse valor, maior a melhoria, ou seja, melhor foi a solução encontrada pelo algoritmo genético em comparação com os outros métodos. Se esse valor for negativo, então não houve melhoria, isso indica que a solução do genético não alcançou o limite superior conhecido. O gráfico mostrado na Figura 5 mostra a melhoria de forma mais clara e visual. O gráfico da esquerda compara o valor do limite superior com a solução do algoritmo genético. Quando a barra tende para a direita, vantagem do algoritmo genético. Quando tende para a esquerda, vantagem do limites obtido pelos métodos de Baptiste et al. Note que apesar do genético obter soluções melhores para algumas instâncias, ele leva grande desvantagem em outras, principalmente nas instâncias do tipo loose, quando as datas de entrega são mais folgadas. É interessante notar que a busca local cumpriu seu papel, e conseguiu melhorar a solução do algoritmo genético, tanto para as instâncias em que o algoritmo genético já encontrava melhor solução (que foi melhorada ainda mais), quanto para instâncias onde ele perdia, diminuindo a distância ao limite superior. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1879

Note ainda que o tempo de execução do algoritmo genético, mesmo com a busca local, fica a uma ou duas ordens de grandeza menor que os outros métodos. Isso sugere que os métodos aqui propostos são bem mais eficientes em termos de tempo computacional, embora não possam ser comparados diretamente, pois o artigo de Baptiste et al não diz a configuração da máquina usada. Tabela 2: Resultados comparativos dos métodos propostos com os de Baptiste et al (2008) Tempo (s) Valor da solução (penalidade total) cor no Instância LB/UB AG AG+BL LB UB AG AG+BL %melhoria gráfico I-10-2-tight-equal-1 13 1 1 434 453 467,77 465,56-3,3% I-10-2-tight-equal-2 3,9 0 0 418 458 448,65 448,32 2,0% I-10-5-tight-equal-1 32 1 1 660 826 804,09 765,35 2,7% I-10-5-tight-equal-2 29 1 2 612 848 784,28 779,52 7,5% I-10-10-tight-equal-1 121 1 4 1126 1439 1413,91 1322,86 1,7% I-10-10-tight-equal-2 363 2 4 1535 2006 2273,35 2175,22-13,3% I-10-2-loose-equal-1 4,1 1 1 219 225 224,84 224,84 0,1% I-10-2-loose-equal-2 10 0 0 313 324 335,98 331,08-3,7% I-10-5-loose-equal-1 114 1 2 1263 1905 1881,81 1871,52 1,2% I-10-5-loose-equal-2 126 1 1 878 1010 1092,63 1045,76-8,2% I-10-10-loose-equal-1 117 2 5 331 376 847,40 784,83-125,4% I-10-10-loose-equal-2 62 2 6 246 260 362,26 343,12-39,3% I-10-2-tight-tard-1 12 1 1 174 195 179,68 179,68 7,9% I-10-2-tight-tard-2 7 0 0 143 147 146,43 146,43 0,4% I-10-5-tight-tard-1 41 1 1 361 405 419,58 411,57-3,6% I-10-5-tight-tard-2 81 1 1 461 708 638,38 632,91 9,8% I-10-10-tight-tard-1 158 2 4 574 855 782,64 769,41 8,5% I-10-10-tight-tard-2 207 2 5 666 800 1082,72 1031,13-35,3% I-10-2-loose-tard-1 600 1 1 416 416 418,41 416,44-0,6% I-10-2-loose-tard-2 8,7 0 0 137 138 143,00 143,00-3,6% I-10-5-loose-tard-1 42 1 2 168 188 277,54 263,92-47,6% I-10-5-loose-tard-2 17 0 1 355 572 526,25 509,33 8,0% I-10-10-loose-tard-1 228 1 4 356 409 469,46 438,04-14,8% I-10-10-loose-tard-2 60 2 4 138 152 190,65 169,07-25,4% Baptiste, et al / AG Instâncias com 10 tarefas Baptiste, et al. / AG + Busca Local Instâncias com 10 tarefas -120,00% -100,00% -80,00% -60,00% -40,00% -20,00% 0,00% 20,00% -120,00% -100,00% -80,00% -60,00% -40,00% -20,00% 0,00% 20,00% Figura 5: Gráfico comparativo dos métodos para instâncias com 10 tarefas XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1880

Para as instâncias com 15 e 20 tarefas são apresentados apenas os gráficos de melhoria obtida pelos métodos propostos, sem exibir os detalhes de cada instância em tabelas, por questão de clareza e falta de espaço. A Figura 6 mostra os resultados obtidos para as instâncias com 15 tarefas. Note que o algoritmo genético puro conseguiu melhorar o limite superior de quase todas as instâncias, e em duas delas a melhoria foi de cerca de 20%. Ele não foi capaz de diminuir o valor da solução em apenas 5 das 24 instâncias. Para essas instâncias, após a aplicação da busca local, 3 dessas 5 também tiveram a solução reduzida, sobrando apenas 2 instâncias cujo valor da solução viável conhecida não foi melhorado. Note ainda que para várias instâncias a solução tem um valor cerca de 10% menor que as obtidas pelos outros métodos, e em 4 delas a melhoria foi superior a 20%. Além disso, apesar de não ser mostrada uma tabela com os tempos de execução, vale dizer que o tempo de execução do algoritmo genético com a busca local foi bastante reduzido, e em nenhuma instância ultrapassou 30 segundos. Já os resultados publicados por Baptiste et al relatam tempos de execução de vários minutos, chegando à marca de horas em algumas instâncias. Baptiste, et al / AG Instâncias com 15 tarefas Baptiste, et al. / AG + Busca Local Instâncias com 15 tarefas -30,00% -20,00% -10,00% 0,00% 10,00% 20,00% 30,00% -30,00% -20,00% -10,00% 0,00% 10,00% 20,00% 30,00% Figura 6: Gráfico comparativo dos métodos para instâncias com 15 tarefas Finalmente, para as instâncias maiores, com 20 tarefas, os resultados alcançados pelo algoritmo genético e busca local propostos superaram bastante os outros métodos. A Figura 7 mostra que o algoritmo genético puro só não foi melhor em 2 instâncias, demonstrado a qualidade do método proposto. E após a aplicação da busca local, todas as instâncias tiveram os valores melhorados, em nenhum caso os métodos de Baptiste et al encontraram resultados melhores. Note que em 7 instâncias a redução da penalidade total foi de cerca de 20%, chegando a 25% de melhoria em duas instâncias. Isso demonstra a eficácia do procedimento de busca local proposto. O tempo de execução, mais uma vez, também foi mínimo. Em nenhuma das instâncias ele passa de 1 minuto, enquanto os outros métodos gastam geralmente uma ou mais horas de execução. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1881

Baptiste, et al. / AG Instâncias com 20 tarefas Baptiste, et al. / AG + Busca Local Instâncias com 20 tarefas -5,00% 5,00% 15,00% 25,00% -5,00% 0,00% 5,00% 10,00% 15,00% 20,00% 25,00% 30,00% Figura 7: Gráfico comparativo dos métodos para instâncias com 20 tarefas Outra observação interessante é que quanto maior o número de tarefas da instância testada, melhor a qualidade das soluções encontradas pelo algoritmo genético com busca local em relação aos métodos de relaxação lagrangeana de Baptiste et al, sem aumentar significamente o tempo de execução. Isso demonstra que o método proposto é bem mais escalável, por conservar a eficácia e eficiência, mesmo quando se aumenta o tamanho da instância de teste. 5. Conclusões Neste trabalho é apresentado um algoritmo genético com busca local para a resolução do JITJSSP. As instâncias utilizadas levam em consideração o atraso e o adiantamento de cada operação das tarefas. São avaliados 4 métodos de buscas locais, e os que se mostraram mais eficientes em termos de qualidade de solução obtida, fora os dois propostos, Permutação com Lista e Inserção Completa. Com esses resultados, um trabalho futuro é criar uma busca local de Inserção com Lista. O método proposto foi submetido a testes para 72 instâncias e os resultados comparados com os melhores limites superiores conhecidos, obtidos por heurísticas sobre soluções encontradas por relaxações lagrangeanas e programação linear. O método melhorou os limites superiores para a grande maioria dessas instâncias. Mesmo sem a busca local, o método genético já havia melhorado o resultado de várias instâncias, o que demonstra a qualidade dessa metaheurística. Com a adição da busca local, o resultado foi ainda mais interessante, particularmente para as instâncias maiores, com 20 tarefas, em que todas as soluções obtidas foram melhores que os limites superiores conhecidos. Em 13 destas a melhoria foi maior que 10%, sendo superior a 20% em algumas delas. E toda essa melhoria na qualidade da solução foi obtida sem aumento do tempo computacional, pois esse é da ordem de segundos, enquanto as heurísticas de obtenção de limite inferior e superior do artigo comparado gastam minutos ou até horas. Agradecimentos Os autores agradecem à Fundação de Amparo à Pesquisa do Estado de Minas Gerais (FAPEMIG) pelo financiamento do projeto APQ3768-6.01/07 que originou esse trabalho. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1882

Referências Araujo, R. P., Santos, A. G., & Arroyo, J. E. (2009). Genetic Algorithm and Local Search for Just-in-Time Job Shop. IEEE Congress on Evolutionary Computation, pp. 955-961. Baker, K. R., & Scudder, G. D. (1990). Sequencing with earliness and tardiness. Operations Research, 38(1), pp. 22-36. Baptiste, P., Flamini, M., & Sourd, F. (2008b). Job-shop scheduling with earliness-tardiness penalties. Retrieved março 2008, from http://www-poleia.lip6.fr/~sourd/project/etjssp Baptiste, P., Flamini, M., & Sourd, F. (2008). Lagrangian bounds for just-in-time job-shop scheduling. Computers & Operations Research, 35, pp. 906-915. Beck, J. C., & Refalo, P. (2003). A hybrid approach to scheduling with earliness and tardiness costs. Annals of Operations Research, 118, pp. 49-71. Du, J., & Leung, Y. T. (1990). Minimizing total tardiness on one machine is NP-hard. Mathematics of Operations Research, 15, pp. 483-495. Gao, J., Sun, L., & Gen, M. (2007). A hybrid genetic and variable neighborhood descent algorithm for flexible job shop scheduling problems. Computers & Operations Research, 35(9), pp. 2892-2907. Gonçalves, J. F., Mendes, J. J., & Resende, M. G. (2005). A hybrid genetic algorithm for the job shop scheduling problem. European Journal of Operational Research, 167, pp. 77-95. Iima, H. (2005). Proposition of selection operation in a genetic algorithm for a job shop rescheduling problem. Proc. EMO Evolutionary Multi-Criterion Optimization, pp. 721-735. Jain, A. S., & Meeran, S. (1999). A state-of-the-art review of job-shop scheduling. European Journal of Operational Research, 113, pp. 390-434. Kelbel, J., & Hanzálek, Z. (2007). Constraint Programiming Search Procedure for Earliness/Tardiness Job Shop Scheduling Problem. Proc. of the 26th Workshop of the UK Planning and Scheduling Special Interes Group, pp. 67-70. Mattfeld, D. C., & Bierwirth, C. (2004). An efficient genetic algorithm for job shop scheduling with tardiness objectives. European Journal of Operational Research, 155, pp. 616-630. Sourd, F., & Kedad-Sidhoum, S. (2003). The one machine problem with earliness and tardiness. Journal of Scheduling, 6, pp. 533-549. Suresh, R. K., & Mohanasundaram, K. M. (2006). Pareto Archived Simulated Annealing for Job Shop Scheduling with Multiple Objectives. International Journal on Advanced Manufacturing Technology, 29, pp. 184-196. Zhang, C., Rao, Y., & Li, P. (2008). An effective hybrid genetic algorithm for the job shop scheduling. The International Journal of Advanced Manufacturing Technology, 39, pp. 965-974. XLI SBPO 2009 - Pesquisa Operacional na Gestão do Conhecimento Pág. 1883