• Nenhum resultado encontrado

UNIVERSIDADE DE SÃO PAULO ESCOLA DE ENGENHARIA DE SÃO CARLOS DEPARTAMENTO DE ENGENHARIA DE PRODUÇÃO TRABALHO DE CONCLUSÃO DE CURSO ELTON KÔJI KAZAMA

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDADE DE SÃO PAULO ESCOLA DE ENGENHARIA DE SÃO CARLOS DEPARTAMENTO DE ENGENHARIA DE PRODUÇÃO TRABALHO DE CONCLUSÃO DE CURSO ELTON KÔJI KAZAMA"

Copied!
111
0
0

Texto

(1)

UNIVERSIDADE DE SÃO PAULO

ESCOLA DE ENGENHARIA DE SÃO CARLOS

DEPARTAMENTO DE ENGENHARIA DE PRODUÇÃO

TRABALHO DE CONCLUSÃO DE CURSO

ELTON KÔJI KAZAMA

HEURÍSTICAS CONSTRUTIVAS PARA PROGRAMAÇÃO DE

OPERAÇÕES EM SISTEMAS DE PRODUÇÃO FLOWSHOP

PERMUTACIONAL: CLASSIFICAÇÃO DE SUAS FASES

CONSTRUTIVAS

São Carlos

2011

(2)

UNIVERSIDADE DE SÃO PAULO

ESCOLA DE ENGENHARIA DE SÃO CARLOS

DEPARTAMENTO DE ENGENHARIA DE

PRODUÇÃO

TRABALHO DE CONCLUSÃO DE CURSO II

ELTON KÔJI KAZAMA

Nº USP 5909489

HEURÍSTICAS CONSTRUTIVAS PARA PROGRAMAÇÃO DE

OPERAÇÕES EM SISTEMAS DE PRODUÇÃO FLOWSHOP

PERMUTACIONAL: CLASSIFICAÇÃO DE SUAS FASES

CONSTRUTIVAS

Trabalho apresentado ao Departamento de Engenharia de Produção da Escola de Engenharia de São Carlos - Universidade de São Paulo, como Trabalho de Conclusão de Curso em Engenharia de Produção Mecânica.

Disciplina: SEP 1800081 – Trabalho de Conclusão de Curso II

Orientador: Prof. Dr. Marcelo Seido Nagano

São Carlos

2011

(3)

Faça o que for necessário para ser feliz. Mas não esqueça que a felicidade é um sentimento simples, Você pode encontrá-la e deixá-la ir embora por não perceber

a sua simplicidade.

(4)
(5)

AGRADECIMENTOS

Agradeço primeiramente a Deus, por todas as oportunidades a mim concedidas, pela saúde e pelas pessoas que Ele colocou em minha vida.

Gostaria de agradecer também ao meu orientador, professor Dr Marcelo Seido Nagano, pelo conhecimento e orientação dados que foram muito além deste trabalho, que perdurou pelo longo e valoroso trajeto da faculdade.

Agradeço imensamente a minha família, e em especial aos meus pais Kiyoji e Massae, por todo o apoio que possibilitou a concretização de um grande sonho – me formar em uma renomada escola. Agradeço pelo amor, carinho e dedicação que pude contar desde os meus primeiros segundos de vida até o presente momento.

Agradeço a todos que indiretamente contribuíram para a conclusão desta fase de minha vida.

E por fim, agradeço ao meu grande amor, Tássia, que esteve comigo em todos os momentos da confecção deste trabalho, com seu suporte e carinho que foram fundamentais para a finalização deste ciclo.

(6)

KAZAMA, E.K. Heurísticas construtivas para programação de operações em sistemas de produção flowshop permutacional: classificação de suas fases construtivas. São Carlos, 2011. 99 pág. Trabalho de Conclusão de Curso – Escola de Engenharia de São Carlos, Universidade de São Paulo.

RESUMO

Este trabalho se propõe a classificar os melhores métodos heurísticos da literatura que tratam da programação de operações em ambiente flowshop permutacional para minimização da duração total da programação (makespan). Tal classificação é feita segundo a proposta de Framinan, Gupta e Leisten (2004). Inicialmente foi feita uma análise bibliográfica das heurísticas construtivas que tratam do tema em questão. Posteriormente, procedeu-se à classificação de suas fases de construção e à elaboração de exemplos numéricos ilustrados de cada uma. Com isso, a pesquisa busca facilitar a localização de heurísticas simples ou compostas dentro de um quadro mais amplo, permitindo a identificação de combinações entre elas que possam melhorar seus resultados individuais em trabalhos futuros.

Palavras-chave: Flowshop permutacional. Programação da produção. Métodos heurísticos construtivos. Makespan.

(7)

ABSTRACT

The proposal of this work is to classify the best heuristics methods from the literature that deal with the Permutation Flowshop scheduling problem with the objective of minimizing the total flow time of jobs (makespan) according to Framinan, Gupta and Leisten (2004) classification system. The first step done was a literature review and analysis of the best constructive heuristics that deal with makespan minimization. Subsequently, this work proceeded with the classification of the constructive phases for each heuristic and the numeric illustration of the application for better understanding. In this way, this research seeks to facilitate the choice of simple or composed heuristics in the literature, enabling the identification of combination between them in order to improve individual results for future research.

(8)

LISTA DE FIGURAS

Figura 1 - Programação da produção em função dos prazos solicitados.

Fonte: Gigante (2010) ... 20

Figura 2 - Sequência ótima. Regra de Johnson ... 51

Figura 3 - Gráfico de Gantt da sequência obtida por Palmer ... 53

Figura 4 - Gráfico de Gantt da sequência obtida utilizando o método CDS. ... 56

Figura 5 - Gráfico de Gantt da sequência parcial obtida J1 - J3 ... 59

Figura 6 - Gráfico de Gantt da sequência parcial obtida J3 - J1 ... 60

Figura 7 - Gráfico de Gantt da sequência parcial obtida J3 - J1 - J2 ... 60

Figura 8 - Gráfico de Gantt da sequência parcial obtida J3 - J2 - J1 ... 60

Figura 9 - Gráfico de Gantt da sequência parcial obtida J2 - J3 - J1 ... 61

Figura 10 - Gráfico de Gantt da sequência obtida J3 - J1 - J2 - J4 ... 61

Figura 11 - Gráfico de Gantt da sequência obtida J3 - J1 - J4 - J2 ... 61

Figura 12 - Gráfico de Gantt da sequência obtida J3 - J4 - J1 - J2 ... 62

Figura 13 - Gráfico de Gantt da sequência obtida J4 - J3 - J1 - J2 ... 62

Figura 14 - Gráfico de Gantt da sequência parcial obtida J5 - J2 ... 66

Figura 15 - Gráfico de Gantt da sequência parcial obtida J2 - J5 ... 66

Figura 16 - Gráfico de Gantt da sequência parcial obtida J4 - J2 - J5 ... 66

Figura 17 - Gráfico de Gantt da sequência parcial obtida J2 - J4 - J5 ... 67

Figura 18 - Gráfico de Gantt da sequência parcial obtida J2 - J5 - J4 ... 67

Figura 19 - Gráfico de Gantt da sequência parcial obtida J1 - J2 - J4 - J5 ... 68

Figura 20 - Gráfico de Gantt da sequência parcial obtida J2 - J1 - J4 - J5 ... 68

Figura 21 - Gráfico de Gantt da sequência parcial obtida J2 - J4 - J1 - J5 ... 68

Figura 22 - Gráfico de Gantt da sequência parcial obtida J2 - J4 - J5 - J1 ... 69

Figura 23 - Gráfico de Gantt da sequência obtida J3 - J1 - J2 - J4 - J5 ... 69

(9)

Figura 25 - Gráfico de Gantt da sequência obtida J1 - J2 - J3 - J4 - J5 ... 70

Figura 26 - Gráfico de Gantt da sequência obtida J1 - J2 - J4 - J3 - J5 ... 71

Figura 27 - Gráfico de Gantt da sequência obtida J1 - J2 - J4 - J5 - J3 ... 71

Figura 28 - Gráfico de Gantt da sequência obtida J4 - J5 - J6 - J8 - J2 - J3 - J9 - J10 - J1 - J7 ... 72

Figura 29 - Gráfico de Gantt da sequência obtida J4 - J8 - J6 - J2 - J9 - J3 - J10 - J7 - J5 - J1 ... 72

Figura 30 - Gráfico de Gantt da sequência obtida J1 - J5... 76

Figura 31 - Gráfico de Gantt da sequência obtida J5 - J1... 76

Figura 32 - Gráfico de Gantt da sequência obtida J2 - J1 - J5 ... 76

Figura 33 - Gráfico de Gantt da sequência obtida J1 - J2 - J5 ... 76

Figura 34 - Gráfico de Gantt da sequência obtida J1 - J5 - J2 ... 77

Figura 35 - Gráfico de Gantt da sequência obtida J4 - J1 - J2 - J5 ... 77

Figura 36 - Gráfico de Gantt da sequência obtida J1 - J4 - J2 - J5 ... 77

Figura 37 - Gráfico de Gantt da sequência obtida J1 - J2 - J4 - J5 ... 77

Figura 38 - Gráfico de Gantt da sequência obtida J1 - J2 - J5 - J4 ... 78

Figura 39 - Gráfico de Gantt da sequência obtida J3 - J4 - J1 - J2 - J5 ... 78

Figura 40 - Gráfico de Gantt da sequência obtida J4 - J3 - J1 - J2 - J5 ... 78

Figura 41 - Gráfico de Gantt da sequência obtida J4 - J1 - J3 - J2 - J5 ... 78

Figura 42 - Gráfico de Gantt da sequência obtida J4 - J1 - J2 - J3 - J5 ... 79

Figura 43 - Gráfico de Gantt da sequência obtida J4 - J1 - J2 - J5 - J3 ... 79

Figura 44 - Gráfico de Gantt da sequência obtida J6 - J3 - J4 - J1 - J2 - J5 ... 81

Figura 45 - Gráfico de Gantt da sequência obtida J3 - J6 - J4 - J1 - J2 - J5 ... 81

Figura 46 - Gráfico de Gantt da sequência obtida J3 - J4 - J6 - J1 - J2 - J5 ... 81

Figura 47 - Gráfico de Gantt da sequência obtida J3 - J4 - J1 - J6 - J2 - J5 ... 82

(10)

Figura 49 - Gráfico de Gantt da sequência obtida J3 - J4 - J1 - J2 - J5 - J6 ... 82

Figura 50 - Gráfico de Gantt da sequência parcial obtida J5 - J1 ... 84

Figura 51 - Gráfico de Gantt da sequência parcial obtida J1 - J5 ... 84

Figura 52 - Gráfico de Gantt da sequência parcial obtida J2 - J5 - J1 ... 85

Figura 53 - Gráfico de Gantt da sequência parcial obtida J5 - J2 - J1 ... 85

Figura 54 - Gráfico de Gantt da sequência parcial obtida J5 - J1 - J2 ... 85

Figura 55 - Gráfico de Gantt da sequência parcial obtida J3 - J2 - J1- J5 ... 86

Figura 56 - Gráfico de Gantt da sequência parcial obtida J2 - J3 - J1- J5 ... 86

Figura 57 - Gráfico de Gantt da sequência parcial obtida J2 - J1- J3 - J5 ... 86

Figura 58 - Gráfico de Gantt da sequência parcial obtida J2 - J1- J5- J3 ... 86

Figura 59 - Gráfico de Gantt da sequência obtida J4- J2 - J1- J5 - J3 ... 87

Figura 60 - Gráfico de Gantt da sequência obtida J2 - J4 - J1- J5 - J3 ... 88

Figura 61 - Gráfico de Gantt da sequência obtida J2 - J1- J4- J5 - J3 ... 88

Figura 62 - Gráfico de Gantt da sequência obtida J2 - J1- J5 - J4 - J3 ... 88

Figura 63 - Gráfico de Gantt da sequência obtida J2 - J1- J5 - J3 - J4 ... 88

Figura 64 - Gráfico de Gantt da sequência obtida pelo método FRB3... 90

Figura 65 - Componentes do Makespan ... 90

Figura 66 - Gráfico de Gantt da sequência obtida J4 - J2 - J1 - J5 - J3 ... 93

Figura 67 - Gráfico de Gantt da sequência obtida J4 - J5 - J1 - J2 - J3 ... 95

Figura 68 - Gráfico de Gantt da sequência obtida J4 - J2 - J5 - J1 - J3 ... 96

Figura 69 - Tempo total para executar uma programação permutacional (Makespan M(σ)) ... 97

Figura 70 - Demonstração da propriedade LBY ... 98

Figura 71 - Gráfico de Gantt da sequência obtida J2 – J10 – J1 – J3 – J5 – J7 – J8 – J9 – J4 – J6 ... 102

(11)

Figura 72 - Gráfico de Gantt da sequência obtida J2 – J8 – J10 – J7 – J5 –

J9 – J3 – J1 – J6 – J4 ... 103 Figura 73 - Quadro Geral de Classificação das Fases Construtivas ... 104

(12)

LISTA DE TABELAS

Tabela 1 - Tempos de processamento para a Regra de Johnson50

Tabela 2 -Tempos de processamento para a heurística Palmer ... 52

Tabela 3 - Tempos de processamento para a heurística CDS... 54

Tabela 4 - Tempo de processamento para k=1 ... 55

Tabela 5 - Tempo de processamento para k=2 ... 55

Tabela 6 - Quadro resumo até a k-ésima sequência... 56

Tabela 7 - Tempos de processamento para a heurística NEH ... 59

Tabela 8 - Tempos de processamento para o método NEHKK ... 65

Tabela 9 - Tempos de processamento 10 tarefas - heurística NEHKK ... 72

Tabela 10 - Tempos de processamento heurística NEH-D... 75

Tabela 11 Tempos de processamento heurística FRB3 ... 83

Tabela 12 - Tempos de Processamento heurística HC ... 93

Tabela 13 - Cálculo do gap d1ij ... 94

Tabela 14 - Cálculo do gap d2i.j ... 94

Tabela 15 - Cálculo do gap d3i,j ... 94

Tabela 16 - Gaps ajustados dRi,j ... 95

(13)

SUMÁRIO

Resumo

Abstract

1 INTRODUÇÃO ... 14 1.1 OBJETIVOS ... 16 1.2 MÉTODO DE PESQUISA ... 17 2 REVISÃO BIBLIOGRÁFICA ... 18

2.1 PLANEJAMENTO E PROGRAMAÇÃO DA PRODUÇÃO ... 18

2.2 VISÃO GERAL SOBRE PROGRAMAÇÃO DA PRODUÇÃO (SCHEDULING) . 22 2.3 O AMBIENTE FLOWSHOP PERMUTACIONAL ... 25

2.4 TIPOS DE MODELOS PARA FLOWSHOP ... 26

2.4.1 Algoritmo Exato ... 26

2.4.2 Heurísticas ... 26

2.5 HEURÍSTICAS CONSTRUTIVAS ... 28

3 CLASSIFICAÇÕES EXISTENTES DE HEURÍSTICAS DE FLOWSHOP PERMUTACIONAL ... 38

3.1 CLASSIFICAÇÃO PROPOSTA POR FRAMINAN, GUPTA E LEISTEN (2004) . 39 3.1.1 Fase I: Desenvolvimento do índice ... 39

3.1.2 Fase II: construção da solução ... 42

3.1.3 Fase III: melhoramento da solução ... 44

3.1.4 Estratégias para cada fase de classificação das heurísticas ... 45

4 RESULTADOS E DISCUSSÃO ... 49

4.1 HEURÍSTICAS SIMPLES ... 49

4.1.1 Regra de Johnson (1954) ... 49

4.1.1 Palmer (1965) ... 52

4.1.2 Campbell, Dudek e Smith (1970) ... 53

4.1.3 Dannenbring (1977) ... 56

4.1.4 Nawaz, Enscore e Ham (1983) ... 57

4.1.5 Moccellin (1995) ... 62

4.1.6 Kalczynski e Kamburowski (2008) ... 64

4.1.7 Dong, Huang e Chen(2009) ... 73

4.1.8 Rad, Ruiz e Boroojerdian (2009) ... 82

4.2 HEURÍSTICAS COMPOSTAS ... 90

(14)

4.2.2 Nagano e Moccellin (2002) ... 96

4.3 QUADRO DE CLASSIFICAÇÃO ... 103

5 CONSIDERAÇÕES FINAIS ... 105

(15)

1. INTRODUÇÃO

Os tipos de problemas de programação de operações em máquinas vêm sendo caracterizados por diversos autores como Baker (1974), French (1982), Blazewicz et al. (1996) e Pinedo (2008). Problemas complexos podem surgir na programação de operações nas máquinas disponíveis. As restrições tecnológicas determinadas pelo fluxo das tarefas nas máquinas e a medida de desempenho da programação devem ser especificadas. Maccarthy e Liu (1993) classificam os problemas de programação de operações do seguinte modo:

Flowshop – todas as tarefas possuem o mesmo fluxo de processamento em todas as máquinas;

Jobshop – as tarefas possuem um roteiro específico de processamento, determinado para cada uma em particular;

Openshop – não há roteiros de processamento pré-estabelecidos para as tarefas;

Flowshop permutacional – flowshop onde a ordem de processamento das tarefas é a mesma para todas as máquinas;

Máquina única – máquina única disponível para a execução das tarefas;

Máquinas paralelas – duas ou mais máquinas disponíveis que podem executar qualquer tarefa, onde a tarefa só é executada em uma máquina;

Jobshop com máquinas múltiplas – é um jobshop no qual existem ki máquinas idênticas em cada estágio i (i= 1, 2, ..., m). Em cada estágio, cada tarefa é processada apenas por uma máquina.

Flowshop com máquinas múltiplas – é um flowshop onde as tarefas são processadas em múltiplos estágios seguindo a mesma ordem em cada um deles. É possível variar a quantidade por estágio e as tarefas são processadas em apenas uma máquina por estágio.

Os problemas de programação da produção remetem à área de otimização combinatória. No início da década de 70, Cook (1971) elaborou a base da teoria da complexidade computacional para problemas dessa área considerados “intratáveis”. Um problema de otimização intratável é aquele que não apresenta algoritmo em tempo polinomial para sua solução. Esta categoria de problemas enquadra-se na classe NP-hard, cuja definição pode ser encontrada em Garey e Johnson (1979). A partir da década

(16)

de 80, demonstrou-se que a maioria dos problemas de programação da produção enquadram-se nesta classe NP-hard (LAWLER et al. 1993; BLAZEWICZ et al. 1996).

Com isso, os pesquisadores voltaram-se para métodos heurísticos de resolução desses problemas, buscando uma solução de boa qualidade em tempo computacional baixo – situação desejável no cenário da produção, onde o tempo de tomada de decisão é curto, geralmente um dia ou um turno (GIGANTE, 2010).

A pesquisa aborda o problema de programação de operações em ambiente flowshop permutacional, onde o número de soluções viáveis é (n!), sendo n o número de tarefas a serem programadas independentemente do número de máquinas do sistema. Para resolver problemas de programação flowshop permutacional, as principais abordagens na literatura incluem programação matemática, métodos heurísticos e meta-heurísticos. Métodos heurísticos construtivos podem fornecer boas soluções, uma vez que apresentam o melhor trade-off entre a qualidade da solução e o custo computacional.

Desta forma, o objeto de estudo deste trabalho são os métodos heurísticos construtivos voltados para ambientes de flowshop permutacional, com o objetivo de redução do tempo total de fluxo (makespan). Dentre os fatores a serem considerados durante a programação em ambientes flowshop, a minimização do tempo de conclusão máximo (Cmáx) ou makespan são diretamente relacionados à maximização do rendimento e da utilização dos recursos. Portanto, não é surpresa que a maioria das pesquisas referente às ultimas décadas se concentraram sobre a minimização do makespan. Um ambiente flowshop consiste de n tarefas que devem ser processadas em m máquinas na mesma ordem (Fm). O problema de programação em ambientes flowshop em encontrar uma sequência de tarefas para cada máquina de acordo com determinada(s) medida(s) de desempenho. Além disso, para muitas situações, assume-se que todas as sequências de tarefas serão as mesmas em todas as máquinas (flowshop permutacional - prmu).

Este é um assunto relevante para o dinâmico ambiente de produção atual, e tem atraído atenção de muitos pesquisadores nos últimos anos. De fato, houve um crescimento exponencial de heurísticas do tipo Fm/prmu/Cmax a partir da década de 1960. Um certo número de abordagens foi sugerido (SZWARC, 1971; LAGEWEG et al, 1978; POTTS, 1980, ou CARLIER; REBAI,1996), considerando o problema do tipo NP-hard para três ou mais máquinas, mas a maioria dos esforços se concentraram em propor procedimentos heurísticos que produzam boas soluções (e não necessariamente

(17)

ótimas) dentro de intervalos relativamente curtos, tais como aqueles requeridos na tomada de decisões de programação e seqüenciamento.

Como o número de heurísticas disponíveis para estes tipos de problema estava aumentando, tornou-se claro que nem todos eles eram da mesma natureza, apresentando várias propriedades diferentes, tais como ordem de complexidade, tempo de processamento computacional ou memória requerida. Por exemplo, Widemer e Hertz (1991) ou Moccellin (1995) apresentaram heurísticas que requerem uma solução inicial (obtidas em ambos os casos por uma analogia ao problema do caixeiro viajante) seguida de uma busca-tabu que, a princípio, poderia ser empregada como uma solução inicial para qualquer outra solução heurística.

Atualmente, portanto, existem diversas heurísticas disponíveis que tratam do problema citado, Fm/prmu/Cmax , contudo, embora muitas tentativas de classificação já tenham sido realizadas – por exemplo, Gupta (1971), Pinedo (2008), ou Lourenço (1996) –, não existe nenhum quadro de classificação aprofundado sobre essas heurísticas. Tal quadro é fundamental para conduzir possíveis pontos de pesquisas futuras. Ao analisar estas heurísticas de acordo com uma classificação comum, é possível entender o modo como elas são construídas estruturalmente, e assim enxergar combinações de duas ou mais heurísticas para obter uma heurística composta que leve a soluções de melhor qualidade.

1.1 OBJETIVOS

O trabalho tem como objetivo uma classificação das fases de heurísticas construtivas para o ambiente de flowshop permutacional. A heurística pode ser definida como um método desenvolvido através de um modelo cognitivo, usualmente através de regras baseadas na experiência dos desenvolvedores. Heurísticas construtivas são assim denominadas por construírem a solução de um problema de maneira incremental, a partir do zero.

Devido ao fato de os problemas de flowshop permutacional com n-tarefas e m-máquinas pertencerem aos problemas NP-hard, (Johnson e Montgomery, 1974), os requisitos computacionais para obter soluções ótimas, que aumentam exponencialmente à medida que aumenta o tamanho do problema, tornam-se importantes na resolução de problemas de flowshop permutacional. Heurísticas construtivas foram desenvolvidas sob esta situação. Embora a meta-heurística melhore muito a qualidade das soluções, os

(18)

requisitos computacionais e a complexidade de implementação também aumentam, que é uma desvantagem quando se aplica na prática. Encontrar uma heurística construtiva eficaz e computacionalmente viável traz contribuições tanto para a prática quanto para a literatura, pois os resultados podem ser usados como inicialização para as meta-heurísticas, como por exemplo, para o algoritmo genético híbrido, e Busca Tabu (REEVES, 1993), o Algoritmo Genético (CHEN et al, 1995), etc.

Inicialmente, portanto, busca-se identificar e analisar os principais métodos heurísticos relacionados ao tema, para, posteriormente, estabelecer uma classificação de suas fases. Com isso, procura-se disponibilizar uma síntese das ferramentas heurísticas utilizadas para otimizar a programação das operações em Flowshop permutacional, fornecendo um panorama geral sobre o que existe na área e facilitando a combinação destas heurísticas para a resolução de problemas.

1.2 MÉTODO DE PESQUISA

O trabalho envolveu pesquisa bibliográfica sobre o tema abordado e levantamentos e sistematização de informações, obtidas através de pesquisa em teses, artigos e livros relacionados ao tema, e em ferramentas disponíveis no meio eletrônico.

A pesquisa bibliográfica abrangeu, além do material específico sobre os métodos heurísticos a serem estudados, materiais sobre programação da produção e sobre resolução de problemas de programação com flowshop permutacional. Esse instrumental teórico forneceu subsídios às investigações dos dados específicos sobre o objeto de estudo, permitindo balizar e analisar as informações obtidas.

A princípio, foi estabelecido um processo de leitura de modo a identificar os principais métodos heurísticos construtivos voltados ao problema de programação de Flowshop permutacional. A segunda etapa desse processo consistiu em estabelecer uma metodologia de classificação das fases necessárias para a aplicação dos métodos. Feita a classificação dos principais métodos heurísticos estudados a partir da metodologia sistematizada por Framinan, Gupta e Leisten (2004), elaborou-se um quadro-resumo das fases de cada um, permitindo melhor visualização e comparação dos dados. A ilustração das heurísticas analisadas foi feita através do software LEKIN® (Flexible Job-Shop Scheduling System), desenvolvido pela Stern School of Business (NYU).

(19)

2

REVISÃO BIBLIOGRÁFICA

2.1 PLANEJAMENTO E PROGRAMAÇÃO DA PRODUÇÃO

A função da atividade de Planejamento e Controle da Produção (PCP) é garantir, de forma correta e eficaz, a execução, controle e planejamento de todo o processo produtivo. Fala-se em processo produtivo porque, segundo Gigante (2010), a produção de bens ou serviços pode ser considerada como um conjunto de processos, ou um processo único, no qual ocorre a transformação de insumos em produtos e serviços. O objetivo final do PCP é atingir tempo e quantidade de produção adequados, além de proporcionar produtos de qualidade aos clientes.

Para um melhor entendimento sobre o PCP, é importante diferenciarmos planejamento e controle, uma vez que as atividades envolvidas nessa disciplina relacionam-se à gestão da capacidade de execução de uma certa operação com as demandas que ela exige (SLACK, 2002). De acordo com Gigante (2010), planejamento é o detalhamento do que se intenciona fazer em um determinado período de tempo. Já controle é o processo de ajustes necessários para que operações e atividades sejam feitas de acordo com o estabelecido.

Slack (2002) destaca ainda que, uma vez que planejamento e controle é a técnica de conciliar demanda e fornecimento, a tomada de decisões para planejar e controlar uma operação produtiva dependerá da natureza da demanda e do fornecimento da operação em questão.

O gerenciamento de processos produtivos feito pelo PCP deve levar em conta as restrições tecnológicas do ambiente e ajustar a produção ao tempo de execução das atividades e aos volumes de demanda, suprindo suas necessidades. E para conciliar volume e tempo são necessárias três atividades integradas, porém de caráter distinto: carregamento, sequência e programação (GIGANTE, 2010).

Carregamento pode ser definido como a quantidade de trabalho colocada em determinado centro de trabalho. Tal quantidade pode ser fixa para um certo período de tempo, ou contínua, com variação da quantidade de trabalho de acordo com a saída das atividades acabadas.

Sequenciamento é o ordenamento de execução das operações. Trata-se de uma atividade bastante complexa. Pode ser exemplificada da seguinte forma: uma máquina possui o sequenciamento de cinco atividades independentes, sendo 5! sequências

(20)

distintas para a execução dessas atividades ou 120 soluções possíveis de ordenamento. Em um caso que apresente dez atividades, o número de alternativas cresce para 3.268.800 – problema ainda pequeno em comparação ao que ocorre em ambientes reais (GIGANTE, 2010).

Por fim, programação é o conjunto de atividades que definem os volumes de cada produto, datas de início e término de produção e os equipamentos usados para sua fabricação. Seu objetivo, segundo Rodammer e White Jr. (1981), é encontrar um modo adequado de distribuir e sequenciar o uso de recursos compartilhados de forma que atenda às restrições da produção e minimize os custos.

Segundo Nambiar et al (1981), a programação da produção está no nível mais baixo na hierarquia de um sistema de planejamento da produção. Nessa hierarquia, o primeiro nível é determinado pelo programa mestre, elaborado com base nas decisões agregadas sobre produção e capacidade. Uma vez fixado o programa mestre de produção, temos o segundo nível da hierarquia, onde se determinam as quantidades a serem produzidas (ou compradas) dos diferentes componentes. O terceiro e último nível encontra-se após a definição das quantidades e datas de entrega dos diferentes componentes, e compreende os programas de produção e as alocações dos recursos necessários. Para o autor, portanto, o objetivo de uma programação é atribuir e seqüenciar a utilização desses recursos compartilhados, minimizando os custos e atendendo às restrições de produção.

De modo geral, a programação da produção envolve um conjunto de tarefas a serem processadas, e cada tarefa, por sua vez, compreende um conjunto de operações distintas. As operações requerem máquinas, recursos humanos e recursos materiais e devem ser executadas de acordo com uma sequência tecnológica viável. A programação é influenciada, portanto, por diversos fatores: prioridade de tarefas, prazos de entrega, restrições de custos, níveis de produção, restrições quanto aos tamanhos dos lotes, disponibilidade e capacidade de máquinas, precedências de operações, requerimentos de recursos e disponibilidade de recursos. O programa gerado seleciona uma seqüência adequada de operações que resultará na conclusão de todas as tarefas do conjunto no menor tempo possível.

No nível da programação de produção, as decisões tomadas não apresentam importância de forma individual. O conjunto de decisões tomadas em um período de tempo, contudo, possuem enorme influência nos planos elaborados nos níveis superiores da hierarquia, podendo comprometer o desempenho de um dado ambiente de

(21)

programação. Uma programação de baixa qualidade pode ocasionar desperdício de recursos e materiais, atrasos nas datas de entregas, baixa qualidade de produtos, baixa lucratividade, entre outros.

Para Graves (1981), o problema de programação da produção abrange um conjunto de tarefas a serem realizadas e os critérios de realização, que podem determinar, por exemplo, um término adiantado ou prolongado dessas tarefas.

A programação da produção e os estoques acomodam a demanda pelos produtos. Entretanto, há variáveis controláveis externas, como o nível de estoque e carga-máquina, que influenciam o desempenho do sistema produtivo. Assim, tais fatores também devem ser considerados na programação da produção, bem como os fatores internos, ambos levando a estratégias distintas.

Quanto à orientação externa, a programação busca atender a influência da demanda, representada pelas solicitações dos clientes em quantidade e prazo. Já a orientação externa, ligada à produtividade, envolve o uso eficiente dos recursos.

A programação da produção orientada aos fatores externos abrange a consideração de prazos, isto é, estabelecer os tempos de execução ou duração, bem como as tolerâncias de fabricação, a partir de um prazo de entrega ou data de término. Deste modo são obtidas as datas de início de fabricação ou execução das atividades.

Prazos podem ser estabelecidos de diversas maneiras, de acordo com os aspectos específicos de cada processo produtivo. Abaixo, tem-se um exemplo:

(22)

A situação ilustrada em (a) aplica-se aos casos onde já estão disponíveis as matérias-primas a serem usadas na fabricação. O prazo para início da função é obtido subtraindo-se o tempo de execução da função do prazo solicitado pelo cliente, ou do prazo dado pela reposição do estoque. O tempo de execução da função pode complementar tempos de espera caso haja indisponibilidade de equipamentos devido à fabricação de demais produtos da empresa, entre outros.

Na situação (b), onde não há disponibilidade de matéria-prima (ou outros recursos), ocorre um atraso no pedido do cliente, que só é processado após a obtenção dos recursos. Assim, além de coordenar a programação, é preciso coordenar também a obtenção dos recursos necessários.

Pode ocorrer ainda uma terceira situação, na qual o pedido do cliente marca o início da função. Nesse caso, o prazo de entrega ou término é dado pela duração da função ou atividade. Recebido o pedido do cliente, o início da função depende apenas da disponibilidade de recursos.

A programação da produção voltada aos fatores internos procura uma utilização eficiente da capacidade, como por exemplo, a máxima utilização das máquinas, através da coordenação das atividades simultâneas que ocorrem internamente.

Assim, a programação da produção orientada externamente busca atender critérios de serviços ao cliente, enquanto a orientada internamente busca atingir a produtividade dos recursos. Apesar do fato de que a estratégia de programação da produção dependa da prática de cada empresa, alguns objetivos básicos são preservados: entrega dos produtos fabricados nas datas compromissadas ou estabelecidas; distribuição da carga de trabalho para obter máxima utilização dos recursos; garantia de disponibilidade da matéria-prima e componentes quando solicitados pela fabricação; impedimento de grande concentração de trabalho em poucas máquinas; previsão da ociosidade da capacidade produtiva; estabelecimento de sequências de produção que minimizem o tempo de equipamento sem trabalho.

Os problemas de capacidade e de estoques estão fortemente ligados aos problemas de programação da produção, tanto ligados aos aspectos externos como aos internos.

A programação se torna mais complexa nas situações em que não há estoques de produtos acabados e as decisões de programação são influenciadas pela demanda imposta pelos clientes, pois o grau de competitividade das tarefas é baixo, o que demanda um alto controle na programação.

(23)

Já nas situações em que há estoque, a programação deve analisar três estágios do sistema: o prazo para o produto final entrar no estoque, o início da fabricação do produto e a disponibilidade de matérias-primas para a fabricação. Apesar de envolver mais estágios e ser tecnicamente mais complexa, nesta situação a determinação dos prazos é mais simples porque se volta para a demanda do estoque, e não para o cliente (GIGANTE, 2010).

De modo geral, um nível alto de demanda está ligado à padronização de produtos e serviços, o que acarreta uma repetitividade da função e a existência de recursos com finalidades específicas. Um nível baixo de demanda, por sua vez, pode estar associado à variedade de produtos e serviços não padronizados, que gera baixa repetitividade das tarefas e exige máquinas e equipamentos de uso geral.

A eficiência da programação da produção pode ser avaliada por parâmetros ligados a aspectos internos e externos. São parâmetros de orientação interna: nível de produtos acabados ou trabalhos em andamento/progresso; porcentagem de faltas nos estoques; e tempo parado por outros motivos (quebras, falta de uso, etc). São parâmetros de orientação externa: porcentagem das ordens entregues antes do prazo ou no prazo e tempo de espera do cliente. E há, ainda, parâmetros de origem externa e interna: porcentagem de utilização dos recursos, quantidade de clientes perdidos e tempo de preparação das máquinas.

Técnicas e métodos com finalidades específicas foram desenvolvidos para executar a programação da produção de acordo com seus objetivos, tanto para atender aos aspectos externos como para cumprir orientações internas. Entre os mais difundidos estão os Gráficos de Gantt, o Diagrama de Montagem, as Técnicas de Redes (CPM e PERT) e diversos métodos heurísticos que determinam o melhor seqüenciamento da produção.

2.2 VISÃO GERAL SOBRE PROGRAMAÇÃO DA PRODUÇÃO (SCHEDULING)

Um sistema de scheduling, ou programação da produção, segundo Morton e Pentico (1993), se refere a procedimentos dinâmicos para tomar decisões relacionando atividades de uma tarefa ou projeto com os recursos que as executam, de modo que os objetivos sejam atingidos, ou seja, as atividades sejam executadas pontualmente e com alta qualidade e, simultaneamente, o volume de produção seja maximizado e os custos

(24)

operacionais diretos minimizados. Já Sipper e Bulfin Jr. (1997) definem scheduling como o processo de organizar, escolher e temporizar o uso de recursos na realização de todas as atividades necessárias para produzir saídas nos momentos necessários. O scheduling deve satisfazer um grande número de restrições de tempo e de relações entre as atividades e os recursos. Caso os recursos sejam ilimitados, um problema de scheduling não existe (FERNANDES; FILHO, 2010).

Considerando uma máquina que processe 32 tarefas, o número de sequências possíveis seria de 32! = 2,5x1035, número excepcionalmente grande (SIPPER; BULFIN JR, 1997). Utilizando um computador sofisticado para avaliar todas as alternativas, este processo levaria centenas de anos. Portanto, verifica-se a necessidade de algoritmos para reduzir este universo de possibilidades de modo a obter as melhores sequências.

De modo geral, podemos afirmar que a programação da produção ou scheduling é um processo de decisão onde o objetivo é a otimização da produção e onde o uso dos recursos está sujeito a uma série de restrições. Portanto, esta programação diz respeito à alocação de recursos limitados para tarefas ao longo do tempo. As formas de recursos e tarefas podem ser diferentes, dada a variedade de indústrias e seus objetivos.

Em um sistema de manufatura, os pedidos devem ser liberados e traduzidos em tarefas, com suas respectivas datas de entregas. Tais tarefas devem ser processadas por máquinas em centros de trabalhos em uma determinada ordem ou sequência, e podem ter que esperar ou adiantar seu processamento caso as máquinas estejam ocupadas ou quando tarefas de alta prioridade precisam ser processadas antecipadamente. O planejamento detalhado das tarefas a serem executadas em um sistema de produção é necessário para manter a eficiência e o controle das operações. A programação é um importante processo de tomada de decisão existente na maioria dos sistemas de manufatura e produção, em ambientes de processamento de informações, de transporte e distribuição e outros tipos de indústrias de serviços. A programação da produção tem diferentes focos, desde o ponto de vista técnico até o da implementação. Na academia, os trabalhos científicos dão destaque para problemas de programação são semelhantes aos modelos de otimização combinatória e modelagem estocástica. As dificuldades que ocorrem durante a implementação na indústria, contudo, são de um tipo diferente e estão relacionados com a modelagem dos problemas de programação do mundo real e recuperação da informação (PINEDO, 2008).

De fato, a programação da produção tem sido objeto de estudo altamente explorado pelas comunidades acadêmicas nas últimas décadas. Trata-se de uma das

(25)

áreas com mais publicações em conferências e revistas especializadas. No entanto, é também uma das áreas onde há uma enorme distância entre a teoria e o que se consegue aplicar na prática industrial. Embora considerada relativamente simples em termos de formulação e visualização do que é requerido, esta classe de problemas apresenta alto grau de dificuldade para obter soluções ótimas até mesmo nas situações mais comuns. A maioria dos problemas reais de programação da produção é por natureza muito complexa e de difícil resolução, em termos da solução ótima. Tal constatação não implica dizer que os problemas de programação da produção do cotidiano das empresas não sejam resolvidos. O que se quer dizer é que as soluções encontradas por elas não são as soluções ótimas, mas sim soluções semi-ótimas que resolvem os problemas com a máxima eficiência possível.

Existem duas maneiras de descrever os problemas de programação. Conway et al. (1967) introduziram uma notação de parâmetros A/B/C/D, em que A representa o número de tarefas, B o número de máquinas, C é o ambiente da máquina, e D é a função objetivo. Graham et al. (1979) introduziram uma notação de três parâmetros α/β/γ, amplamente utilizada na literatura atual. O campo α descreve o ambiente da máquina e contém uma única entrada. O campo β fornece detalhes das características de processamento e as restrições, e pode não conter entradas, uma entrada única, ou múltiplas entradas. O campo γ contém o objetivo a ser minimizado e, geralmente, contém uma única entrada.

Existem cinco principais categorias de ambiente de máquina em problemas de programação: máquina única, máquinas paralelas, flowshop, jobshop e openshop. Alguns deles podem ser quebrados em subcategorias. O caso de uma única máquina é apresentado no campo α=1 e é o mais simples de todos os ambientes de máquinas possível. Pm descreve o ambiente de m máquinas idênticas paralelas. A tarefa j requer uma única operação e pode ser processada em qualquer uma das m máquinas ou em qualquer uma pertencente a um dado subconjunto. Qm descreve o ambiente de máquinas paralelas uniformes, em que m máquinas em paralelo possuem velocidades diferentes, mas a relação de velocidade é conhecida. O ambiente de máquinas paralelas é generalizado usando as letras Rm para representar máquinas paralelas não relacionadas, no qual as velocidades das máquinas são diferentes e a relação das velocidades são desconhecidas.

Os exemplos de possíveis dados de entrada no campo β são: data de liberação (rj), os tempos de set up dependentes da seqüência (sjk), interrupções (prmp), restrições de

(26)

precedência (prec), avarias (brkdwn), restrições de elegibilidade de máquina (Mj), permutações (prmu), bloqueio (block), sem-espera (nwt) e recirculação (recrc).

Exemplos de possíveis dados de entrada no campo γ são: data de término (Cij), tempo de fluxo (Fj), atraso da tarefa (Lj), tempo de atraso da tarefa (Tj), makespan – o tempo para completar todas as tarefas (Cmax), atraso máximo (Lmax), atraso ponderado (∑ ), tempo de término total ponderado (∑ ), número ponderado de tarefas atrasadas (∑ ), etc. O objetivo é determinado pela exigência da operação e gestão.

O ambiente Fluxoshop (Fm) descreve o ambiente em que m máquinas estão em série. Cada tarefa tem que ser processada em cada uma das m máquinas. Todas as tarefas têm as mesmas sequências. Após a conclusão em uma máquina, uma tarefa precisa esperar na fila caso a próxima máquina esteja ocupada. Se todas as filas são assumidas para operar sob o regime “first in first out” (FIFO), o flowshop é conhecido como Flowshop permutacional. O Flowshop flexível é uma generalização do ambiente de flowshop e de máquinas paralelas, e é denotado por FFs.

2.3 O AMBIENTE FLOWSHOP PERMUTACIONAL

Em muitas linhas de fabricação e montagem, várias operações necessitam ser realizadas em todas as tarefas. Muitas vezes, essas operações têm de ser realizadas em todas as tarefas na mesma ordem, o que implica que essas tarefas devem seguir a mesma sequência. Assume-se que as máquinas estão instaladas em série e o ambiente referido é o flowshop. Em um problema de programação flowshop permutacional, há um conjunto de n tarefas para serem processadas em um conjunto de m máquinas, o ambiente assumido dispões de m máquinas instaladas em série e cada tarefa é processada exatamente na mesma ordem. O objetivo é encontrar uma sequência, entre as n! possíveis, para o processamento das tarefas nas máquinas, de modo que alguma função-objetivo previamente estabelecida seja minimizada. Neste trabalho, o função-objetivo é a minimização do tempo total da programação ou makespan, que é o critério mais comum citado na literatura (RUIZ e MAROTO, 2005).

Os tempos de processamento necessários para as tarefas nas máquinas são representados por tij, onde i = 1, ... n, e j = 1, ..., m. Os tempos de processamento são fixos, conhecidos previamente, e não negativos. Baker (1974) lista várias premissas que são comumente feitas sobre esse problema:

(27)

Cada tarefa i pode ser processada no máximo em uma máquina j por vez;

Cada máquina m pode processar apenas uma tarefa i por vez;

 Após o início da operação, não são permitidas as interrupções;

 Cada operação tem no máximo uma precedente e uma sucessora, isto é, possuem fluxo unidirecional;

os tempos de set-up são insignificantes e portanto podem ser ignorados;

 as máquinas estão continuamente disponíveis;

 estoque em processo é permitido, entre outros.

2.4 TIPOS DE MODELOS PARA FLOWSHOP 2.4.1 Algoritmo Exato

As primeiras pesquisas sobre flowshop eram extremamente teóricas. A maioria dos pesquisadores considerava as abordagens de programação matemática para os problemas de programação flowshop, tais como a programação linear inteira (MANNE, 1960). Soluções branch and bound (LOMNICK 1965; MCMAHON E BURTON, 1967) foram desenvolvidas na década de 1960 para obter soluções ótimas. Entretanto, estas técnicas funcionam bem apenas em casos de pequenas dimensões. À medida que o tamanho do problema aumenta, elas se tornam ineficientes.

Johnson (1954), por exemplo, propôs um algoritmo de otimização para o problema de flowshop com duas máquinas e tarefas, e mostrou que a mesma permutação de tarefas pode ser aplicada em ambas as máquinas. Seu método provou ser ideal quando o número de máquinas é igual a dois ou três, sob determinadas condições, mas ele se torna ineficiente quando o número de máquinas é superior a três (JOHNSON, 1954).

2.4.2 Heurísticas

Uma heurística é um procedimento desenvolvido através de um modelo cognitivo, usualmente através de regras baseadas na experiência dos desenvolvedores. Ao contrário dos métodos exatos, que buscam encontrar uma forma algorítmica de achar uma solução ótima através da combinação ou busca de todas as soluções possíveis, as heurísticas normalmente tendem a apresentar um certo grau de conhecimento acerca do

(28)

comportamento do problema, gerando um número muito menor de soluções. Diante da dificuldade em encontrar uma solução ótima para o problema de flowshop, métodos heurísticos englobam estratégias, procedimentos e métodos aproximativos com o objetivo de encontrar uma boa solução, mesmo que não seja a ideal, em um tempo computacional razoável (FERNANDES; FILHO, 2010).

Quanto à forma de obtenção da solução, a literatura classifica os métodos heurísticos em construtivos e melhorativos.

Os métodos construtivos consistem em construir a solução de um problema a partir do zero, de forma incremental, e que será o resultado final do problema (PALMER, 1965; CAMPBELL et al., 1970; DANNENBRING, 1977; KOULAMAS, 1998; DAVOUD POUR, 2001; NAGANO e MOCCELLIN, 2002; KALCZYNSKI e KAMBUROWSKI, 2007; DONG; HUANG e CHENG, 2008; KALCZYNSKI e KAMBUROWSKI, 2008; RAD; RUIZ e BOROOJERDIAN, 2009). Este tipo de método gera uma solução factível para o problema das seguintes maneiras:

 A partir de geração sucessiva de sequências parciais das tarefas (subseqüências) até a obtenção de uma sequência completa, respeitando algum critério para realizar a inserção das tarefas, como citam Nagano e Moccellin (2002); Kalczynski e Kamburowski (2007); Dong; Huang e Chen (2008); Rad; Ruiz e Boroojerdian (2009);

 A partir da ordenação das tarefas segundo índices de prioridade calculados em função dos tempos de processamento das tarefas, por exemplo, através da heurística de Palmer (1965);

 Ou ainda, dado um conjunto de sequência, escolhe-se a melhor sequência utilizando-se também índices de prioridades associados a cada tarefa, como citado através de Campbell, Dudek e Smith (1970) e Hundal e Rajgopal (1988).

Heurísticas melhorativas partem de uma solução factível e procuram uma solução melhor dentro de uma vizinhança, definida geralmente por meio de permutações de posições das tarefas na sequência. Uma heurística clássica melhorativa pára quando não existe nenhum vizinho melhor que a solução corrente (ótimo local), dado uma medida de desempenho adotada. Dannenbring (1977) propôs duas heurísticas melhorativas simples, o Rapid Acess com Close Order Search (RACS) e Rapid Access com Extensive Search (RAES), que começam a partir de uma solução de programação construída pela

(29)

Rapid Access (RA). Rad, Ruiz e Boroojerdian (2009) modificaram a heurística NEH ao adicionar a abordagem da busca local após o procedimento principal. Pode-se citar ainda Taillard (1990); Widmer e Hertz (1991) e Nowicki e Smutnicki (1996). Rajedran e Ziegler (2004) apresentaram dois novos métodos baseados no ant-colony optimization (ACO). Estas heurísticas melhorativas utilizam técnicas de busca local para melhorar a qualidade da solução gerada.

Apesar da vasta gama de estudos na área de programação da produção em ambiente flowshop, muitos dos métodos desenvolvidos são considerados complexos e requerem grande esforço computacional. Portanto, a busca de métodos heurísticos mais simples, eficazes e de mais fácil implementação ainda permanecem como objetos de estudos visando à melhoria contínua no ambiente produtivo.

2.5 HEURÍSTICAS CONSTRUTIVAS

A seguir são apresentadas as principais heurísticas construtivas que tratam dos problemas de flowshop permutacional com critério de minimização da duração total da programação (makespan). Para tal, adotaremos as seguintes notações:

 Seja J={J1, J2, J3, ..., Jj, ..., Jn} um conjunto de n tarefas a serem processadas em

m máquinas distintas na mesma seqüência de processamento.

 pij é o tempo de processamento de tarefa Jj na máquina i, isto é pij (i=1, 2, 3, ...,

m; j=1, 2, 3... n). Vale lembrar que mesmo que todas as tarefas obedecem à mesma seqüência, uma determinada tarefa x pode não ser processada em uma determinada máquina y, e portanto, pyx=0.

Para problemas de n tarefas que sejam processadas em apenas 2 máquinas, Johnson (1954) desenvolveu um algoritmo que fornece a solução ótima de sequenciamento em ambientes flowshop com objetivo de minimização do makespan. Para problemas com n tarefas e m máquinas, encontrar uma solução ótima dentro de um tempo computacional finito ainda não foi possível. Isto se deve ao fato de que a função de complexidade do tempo computacional de problemas de flowtime é de natureza exponencial. E é então para estes casos que se faz necessário o uso de heurísticas para a resolução destes problemas com objetivo de alcançar soluções boas com esforço computacional aceitável.

(30)

como CDS. Trata-se de uma heurística multi-estágio que constrói m-1 sequências, agrupa as m máquinas originais em duas máquinas artificiais e resolve o problema gerado de duas máquinas utilizando repetidamente a regra de Johnson. Os tempos de processamento da tarefa j na máquina i (i=1 ou 2) são gerados iterativamente a partir dos tempos de processamentos originais nos m-1 estágios.

No estágio 1:

e

Em outras palavras, a Regra de Johnson é aplicada considerando apenas a primeira e a última máquinas, e as máquinas intermediárias são inicialmente ignoradas.

No estágio 2:

e

Ou seja, a Regra de Johnson é aplicada à soma dos tempos de processamento da primeira com a segunda máquinas e da penúltima com a última máquinas. Para o estágio t=m-1, os tempos de processamento das máquinas artificiais 1 e 2 serão dadas por: Estágio t: ∑ e ∑ ( )

Para cada estágio t (t = 1, 2, ..., m-1), obtém-se uma sequência de tarefas por meio da regra de Johnson. Com esta sequência, calcula-se o makespan com os tempos de processamento do problema original. Após m-1 estágios, a sequência que fornecer o menor makespan é escolhida como a melhor solução para o problema.

Palmer (1965) desenvolveu uma heurística que atribui um índice para cada tarefa, o chamado slope index, e em seguida, organiza a sequência de acordo com o índice atribuído a cada tarefa. Este índice é calculado de modo a organizar as tarefas em ordem não-crescente de seus tempos de processamento. As tarefas que possuem maiores

(31)

tempos de processamento recebem maiores índices, e então, cada tarefa é organizada de modo que aquelas com os maiores slope índex (Sj) ocupam as primeiras posições na sequência de execução. Tal índice Sj para a tarefa Jj é dado por:

( ) ( ) ( ) ( ) ( ) ∑( )

Gupta propôs uma modificação do slope index de Palmer que explorava algumas semelhanças entre os problemas de programação e triagem (Gupta, 1971). Na verdade, Gupta reconheceu que o algoritmo de Johnson é na verdade um método de ordenação de tarefas em problemas com 2 ou 3 máquinas, a partir da atribuição de um índice para cada tarefa, seqüenciando-as de acordo com a ordem crescente de tais índices. Gupta então generalizou o problema mas caso em que m>= 4 máquinas. A seguir é apresentado a forma como Gupta determina os índices pra a tarefa Jj.

( )

( )

onde:

{ }

Hundal e Rajgopal (1988) desenvolveram uma extensão da heurística de Palmer, uma vez que a Heurística de Palmer não considera a máquina (m+1)/2 quando m é impar. Este fato pode afetar a qualidade da solução. Desta forma, Hundal e Rajgopal propuseram outros dois métodos para o cálculo dos índices:

∑( ) ∑( )

A partir dos índices obtidos por este método, duas novas sequencias podem ser encontradas. Seleciona-se a sequencia que apresentar o menor makespan.

(32)

Moccellin (1995) propôs uma heurística denominada FSHOPH (flowshop heuristic), semelhante à heurística SPIRIT proposta por Widmer e Hertz (1991). A heurística FSHOPH baseia-se no problema do Caixeiro Viajante, porém o conceito de “distância percorrida” entre duas tarefas é muito diferente nesta heurística se comparado à SPIRIT.

O cálculo da duração total da programação no problema de Programação de Operações Flowshop Permutacional de uma sequência S com n tarefas e m máquinas é dada por ( ) ∑ ∑ Onde:

 : tempo de processamento da j-ésima tarefa na última máquina da sequência S.

: tempo transcorrido entre o término da tarefa que ocupa j-ésima posição na sequência S e o início da (j+1)-ésima tarefa, na última máquina.

 , representa uma tarefa fictícia, com tempo de processamento nulo e que ocupa sempre a primeira posição entre as tarefas da sequência S.

Se considerarmos como a “distância” entre as j-ésima e a (j+1)-ésima posições de S, então o problema de flowshop permutacional passar a ser tratado como um típico problema do Caixeiro Viajante. A sequência Sx que minimiza o makespan M(S) é dado pela rota mais curta que abrange todas a n tarefas.

Na heurística FSHOPH, a distância entre duas tarefas é baseada em uma propriedade apresentada por Moccellin (1993) que ocorre em problemas de flowshop permutacional:

Considere duas tarefas arbitrárias u e v em um conjunto de n tarefas. Para cada sequência S com as tarefa u e v posicionados respectivamente nas posições j e (j+1), j=0, 1, 2, ..., n-1, tem-se que:

(33)

Onde:

é um limitante superior de (que é o intervalo de tempo de espera da máquina h que ocorre entre o término da tarefa u e o início da tarefa v).

= tempo de processamento da tarefa i na máquina h. A partir dessa propriedade, tem-se:

Para uma sequência S de n tarefas, o limitante superior para a duração total da programação M(S) é dada por:

( ) ∑

Se considerarmos [ ][ ] como a “distância” entre as tarefas nas posições j e (j+1), então o problema de programação em flowshop permutacional pode ser heuristicamente resolvido por analogia direta com o problema do caixeiro viajante (Moccellin, 1995). No primeiro passo da heurística FSHOPH, a “distância” entre as tarefas u e v é dada por e é procurado a rota (sequência) que minimize o limitante superior ( ). Para o segundo passo, utiliza-se técnicas de busca Tabu para melhorar a solução inicial.

Dannenbring apresentou a heurística Rapid Acess (RA), que é uma mistura das idéias prévias do índice de Palmer e CDS (Dannenbring 1977). A principal idéia por trás é construir um único subproblema de duas máquinas (ao invés de m-1 subproblemas), onde os tempos de processamento de cada tarefa são determinados pelo esquema de ponderação linear. Este subproblema é resolvido usando o algoritmo de Johnson para duas máquinas. O procedimento de RA fornece uma boa solução de maneira rápida. Os pesos para as tarefas são calculados por:

∑( ) ∑( )

O desenvolvimento de heurísticas construtivas para os problemas de flowshop permutacional ocorreu principalmente nas décadas de 1960 e 1970, e proporcionou boas

(34)

soluções dentro de tempos de processamento razoáveis. No entanto, a qualidade das soluções ainda possui muitas oportunidades a serem melhoradas.

Sarin e Lefoka (1993) exploraram a ideia de minimizar o tempo ocioso da última máquina, pois o aumento do tempo ocioso da última máquina se traduzirá em um aumento no tempo de conclusão total ou makespan. Portanto, a sequência é completada inserindo-se uma tarefa de cada vez, e é dada prioridade ao trabalho que resulta na mínima adição de tempo ocioso na máquina m.

Nawaz, Enscore, e Ham (1983) desenvolveram uma heurística construtiva denominada NEH, que compreende duas fases simples, baseado na ideia de priorizar as tarefas em função da soma de seus tempos de processamento em todas as m máquinas. A heurística NEH é classificada como uma heurística construtiva, ao passo que exige n iteração do procedimento, que tem Ο(n2m) cálculos possíveis, de acordo com Ruiz e Maroto (2006).

Devido ao bom desempenho da heurística NEH original, pesquisadores enfatizaram o aprimoramento do NEH para diferentes abordagens. As principais direções das pesquisas para a modificação do NEH na literatura de programação da produção são baseadas em quatro categorias principais, descritas a seguir:

O objeto da primeira categoria é estudar o efeito da sequência inicial na fase I, na abordagem do NEH para o seu desempenho (NEH original). Framinan et al. (2003) analisaram 177 diferentes sequências iniciais, verificando mudanças nas fases iniciais (fase de indexação) do NEH, a qual os cinco melhores métodos para as funções objetivo de minimização de makespan, tempo ocioso de máquina (idletime) e tempo total de fluxo (flowtime). Foi calculado a porcentagem de desvio relativo, e os resultados mostraram que a sequência do NEH original teve o melhor desempenho para as funções objetivo de minimização do makespan e tempo ocioso.

Nagano e Moccellin (2002) desenvolveram uma heurística construtiva denominada N&M, onde esta se difere da heurística NEH (1983) apenas na fase inicial de ordenação. Este processo é quebrado em duas etapas:

Etapa 1: Calcular ∑ ∑ Onde: ∑ {∑ } ∑ ∑

(35)

= tempo de processamento da tarefa i na máquina k; n = número de tarefas; m = número de máquinas ( ( ) ) ( ( )) sendo,

A tarefa u é imediatamente precedente de v.

Etapa 2: Ordenar todos o Ii de forma não-crescente e prosseguir os próximos

passos identicamente ao método NEH.

A segunda categoria foca o desempate na fase de inserção do NEH original, pois podem existir várias seqüências parciais que têm o mesmo makespan parcial nesta abordagem. A seleção aleatória pode causar maiores makespan total na próxima etapa. Kalczynski e Kamburowski (2007) mediram o desempenho do NEH com uma modificação da etapa de inserção para demonstrar o impacto sobre o desempenho no tempo de desempate. Eles criaram uma heurística denominada NEHKK, em que há uma modificação no processo de construção da sequência solução do NEH. Quando ocorre empates nas sequências parciais, há uma avaliação levando em consideração a regra de Johnson. A seguir é apresentado as fases de construção da heurística NEHKK:

Etapa 1: Calcule ∑ ∑ , j J, e organize na ordem não-crescente; Etapa 2: Considere apenas as duas primeiras tarefas da seqüência obtida na etapa 1 e ordene-as de maneira a obter o menor makespan e faça ( [ ] [ ])

Etapa 3:Selecione a próxima tarefa r da ordenação inicial TPj e insira na primeira

posição da sequência parcial. Assuma a sequência inicial ( [ ] [ ] [ ]) e faça lx 1.

Para l de 2 até n, faça:

Teste a tarefa r na posição l de e siga o seguinte critério:

SE o makespan da sequência for menor que o makespan da sequência

OU SE: {o makespan da sequência for igual ao makespan da sequência } E: {o makespan da sequência ( ) for menor que o makespan da

(36)

sequência ( )} Então faça: lx 1 e

Uma abordagem de modificação da fase I do NEH original, proposto por Dong et al (2008) e denominado NEH-D, mostrou uma melhoria significativa ao criar uma regra de prioridade baseado na combinação linear da média (AVGj) e do desvio padrão (DEVj)

dos tempos de processamento das tarefas, dado por:

( ) [ ] ∑ [∑( ) ] ⁄ [ ∑( ) ] ⁄

Desta forma, cada tarefa recebe um valor do esquema de ponderação dado pela combinação linear ( ) . Em seguida, essas tarefas são colocadas em ordem não-crescente de acordo com esta regra de prioridade, caracterizando então a Fase I do NEH. Dong, Huang e Chen elaboraram ainda uma estratégia para o caso em que houver empate entre estes pesos dados às tarefas. A seguir, uma breve explanação sobre a metodologia:

Seja ( ) a tarefa da posição x de uma permutação . Logo ( ) é o tempo de processamento de tarefa ( ) na máquina i, ( )é a primeira data de término da tarefa ( ) na máquina i, ( )é a última da de início da tarefa ( ) na máquina i. Com isso, duas medidas podem ser calculadas para a tarefa ( ):

( ) ∑ ( ) ( ) ( ) ( ) ∑ ( ( ) ( ) ( ) ( ))

(37)

posição x com o menor ( ).

A terceira categoria na literatura de pesquisas que modificam a heurística NEH utiliza etapas adicionais para reinserir tarefas em posições vizinhas, a fim de melhor acomodar a nova tarefa. Rad et al. (2009) propuseram cinco novos métodos que superam o NEH denominados FRB1, FRB2, FRB3, FRB4 e a meta-heurística FRB5. Dentre os algoritmos construtivos, FRB3 e FRB4 foram as heurísticas com os melhores desempenho, e por tanto, a seguir eles serão detalhados. Método FRB3:

Etapa 1: Calcule ∑ e coloque em ordem não-crescente de TPj

e ;

Etapa 2: Para l= 1 até n, testar a tarefa h, na posição l de TPj, em todas as

possíveis posições de e inserir a tarefa na posição de menor makespan.

Etapa 2.1: Para i=1 ate l, retire a tarefa h da posição i de e teste h em todas as posições possíveis de , e inserir a tarefa na posição de menor makespan.

Para o método FRB4, a única mudança em relação ao FRB3 está no modo como é feito o processo de busca na Etapa 2.1. O FRB3 realiza a busca em l possíveis soluções, enquanto que o FRB4 busca em um intervalo definido entre o máximo de l e p – k e o mínimo de l e p+k, onde p é a posição em que a tarefa foi inserida no passo 2 e k é um valor pré-definido para método e varia entre {2, 4, 6, 8, 10, 12}. O método FRB4 é apresentado a seguir:

Etapa 1: Calcule ∑ e coloque em ordem não-crescente de TPj

e ;

Etapa 2: Para l= 1 até n, testar a tarefa h, na posição l de TPj, em todas as

possíveis posições de e inserir a tarefa na posição de menor makespan.

Etapa 2.1: Para i=Max (i, p-k) até Mín (l, p+k), retire a tarefa h da posição i de e teste –a em todas as posições possíveis de , e inserir a tarefa na posição de menor makespan.

A última categoria abrange alguns outros pesquisadores que trabalham para reduzir o tempo de processamento do NEH, enquanto que a qualidade da solução não é um requisito que necessite de cuidados, se comparado com o NEH original. Jin et al.

(38)

(2007) introduziram o procedimento de poda baseado nas propriedades de bloco dos problemas de programação flowshop, que é investigado para reduzir o tempo de execução, e dentro da heurística NEH, para reduzir a complexidade computacional. Os resultados experimentais mostraram que o NEH aperfeiçoado apresenta uma grande redução do tempo de execução quando comparado com o NEH original. Gao et al. (2007) propuseram o NEH melhorado, com completos movimentos de inserções para resolver o problema de flowshop permutacional. Método para o rápido cálculo do makespan e a política de eliminação de permutações não-promissoras são introduzidos para reduzir o esforço da avaliação.

(39)

3

CLASSIFICAÇÕES EXISTENTES DE HEURÍSTICAS DE

FLOWSHOP PERMUTACIONAL

Framinan, Gupta e Leisten (2004) desenvolveram um trabalho onde, além de demonstrar as principais heurísticas disponíveis na literatura para o problema de minimização do makespan, estabelecem um quadro geral que engloba todas elas, classificando-as em fases de construção comuns. Nos trabalhos prévios de classificação, considerando que nem todas as heurísticas disponíveis são da mesma natureza, o termo heurística construtiva foi utilizado para um primeira delimitação. Entretanto, esta se trata de uma classificação superficial e de escopo limitado, segundo Framinan, Gupta e Leisten (2004), e o significado do termo construtivo permanece confuso (e consequentemente, o mesmo se aplica às heurísticas assim classificadas). Por exemplo, Pinedo (2008) definiu heurística construtiva como o oposto à heurística composta, que são aquelas resultantes da combinação de heurísticas simples (construtivas). Já Lourenço (1996) definiu heurística construtiva como “um algoritmo que constrói sequências de tarefas e, uma vez que a decisão é tomada, não se deve alterá-la”.

Além disso, existiram outras tentativas de classificar as heurísticas existentes para a programação em ambientes flowshop, tal como proposto por Gupta (1971). Segundo ele, as heurísticas são classificadas em três classes: heurísticas funcionais fixas, heurísticas funcionais flutuantes e heurísticas funcionais sintéticas. A primeira classe engloba as heurísticas que exploram as características funcionais de um problema de classificação. Basicamente, consiste no desenvolvimento de alguns índices para classificar as tarefas, podendo estes índices serem baseados nos tempos de processamento do problema, por exemplo. Gupta inclui nesta classificação heurísticas como as de Palmer (1965), Campbel et al (1970), e Gupta (1971). Heurísticas funcionais flutuantes, por sua vez, geram uma função contínua para uma sequência parcial. Como exemplo o autor cita os algoritmos MINIT e MINOT de Gupta (1968; 1972). E por fim, como exemplo de uma heurística funcional sintética, pode-se citar a heurística MINMAX de Gupta (1972), baseado na programação de tarefas, ordenando primeiro as tarefas com os menores tempos de processamento, e por últimos, aquelas com os maiores tempos.

No entanto, de acordo com Framinan, Gupta e Leisten (2004), todas as classificações citadas apresentam problemas. Na classificação de Pinedo (2008), seria difícil classificar algumas heurísticas que fossem tratadas tanto como heurísticas

Referências

Documentos relacionados

Segundo Éric Laurent, a psicose ordinária se caracteriza pela não resposta aos significantes-mestres tradicionais, manifestando o fim do poder do Nome-do-Pai como

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Mediante o impacto do paciente com o ambiente do centro cirúrgico, a equipe de enfermagem deve estar voltada para o aspecto humano do atendimento, centrando suas

Sendo assim, o programa de melhoria contínua baseado no Sistema Toyota de Produção, e realizado através de ferramentas como o Kaizen, poderá proporcionar ao

Na tentativa de avaliar a confiabilidade das medidas lineares realizadas em radiografias panorâmicas, comparando-as com imagens obtidas por meio de TC, Nishikawa et al., 2010

Leite 2005 avaliou duas hipóteses: a diferentes tempos de condicionamento com AFL não influenciariam nos valores de resistência de união entre uma cerâmica e um cimento resinoso; b