framework computacional para programação de produção de ...

126
UNIVERSIDADE NOVE DE JULHO PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO VALDECIR DE OLIVEIRA PEREIRA FRAMEWORK COMPUTACIONAL PARA PROGRAMAÇÃO DE PRODUÇÃO DE CAPACIDADE FINITA São Paulo 2013

Transcript of framework computacional para programação de produção de ...

Page 1: framework computacional para programação de produção de ...

UNIVERSIDADE NOVE DE JULHO

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO

VALDECIR DE OLIVEIRA PEREIRA

FRAMEWORK COMPUTACIONAL PARA PROGRAMAÇÃO DE

PRODUÇÃO DE CAPACIDADE FINITA

São Paulo

2013

Page 2: framework computacional para programação de produção de ...

VALDECIR DE OLIVEIRA PEREIRA

FRAMEWORK COMPUTACIONAL PARA PROGRAMAÇÃO DE

PRODUÇÃO DE CAPACIDADE FINITA

Dissertação apresentada ao programa de

pós-graduação da Universidade Nove de Julho,

como requisito parcial para obtenção do título

de Mestre em Engenharia da Produção.

Orientador: Prof. Dr. André F. H. Librantz

São Paulo

2013

Page 3: framework computacional para programação de produção de ...
Page 4: framework computacional para programação de produção de ...
Page 5: framework computacional para programação de produção de ...

Agradecimentos

Agradeço primeiramente à Deus por me dar saúde, força e dedicação.

Aos meus pais pelo exemplo de garra, carácter e ética.

À Rafaela minha esposa, pelo carinho, dedicação e compreensão.

Ao meu orientador Dr. André Felipe Librantz pelo apoio, orientação e amizade, além de nossas

conversas regadas a muito café.

Ao Professor Dr. Rafael Agnelli Mesquita, por ter me convidado e apresentado a este programa

de mestrado.

Aos demais professores do programa de mestrado, pela dedicação e desejo de contribuir com o

desenvolvimento dos mestrandos.

Aos meus sócios e amigos Rodrigo e Gabriel, pelo apoio e compreensão.

À UNINOVE pela concessão da bolsa de estudos.

E finalmente a todos os colegas de turma e a todas as demais pessoas que contribuíram para a

realização deste trabalho.

Page 6: framework computacional para programação de produção de ...

vi

RESUMO

O ambiente competitivo atual leva as empresas a produzir melhor, mais rápido e com

menor custo. Para se manter à frente de seus concorrentes, é necessário o uso de ferramentas

que podem ajudar na tomada de decisão. Neste contexto, um software de programação de

produção, pode contribuir para o sucesso. Neste cenário, o framework proposto pode fornecer

uma infraestrutura básica para o desenvolvimento de software que pode atender às demandas

dos sistemas de produção atuais e pode ser estendido para satisfazer outros requisitos. Um

software protótipo foi desenvolvido para ser utilizado como referência para a estrutura proposta.

Nesta aplicação foram desenvolvidas algumas regras de despacho e algoritmos genéticos

visando melhores resultados. O sistema foi implantado em uma indústria de moldes e os

resultados indicam que é uma boa alternativa para melhorar o desempenho da produção.

Palavras-chave: Programação da Produção, Planejamento Avançado e Programação,

Programação por Capacidade Finita, Regras de Despacho, Algoritmos Genéticos.

Page 7: framework computacional para programação de produção de ...

vii

ABSTRACT

The current competitive environment leads companies to produce better, faster and at

lower cost. To keep ahead of your competition, it is necessary to use tools that can help in

decision making. In this context, a production planning software can contribute to success. In

this scenario, the proposed framework can provide a basic infrastructure for software

development that can meet the demands of the current production systems and it can be

extended to satisfy other requirements. A prototype software was developed as reference to the

proposed framework. In this application, some dispatching rules and genetic algorithms were

developed aiming better results. The system was deployed in a mold industry and the results

indicate that it could be a good alternative to improve production performance.

Keywords: Production Scheduling, Advanced Planning and Scheduling, Finite

Capacity Dispatching Rules, Genetic Algorithms.

Page 8: framework computacional para programação de produção de ...

viii

Constraint programming represents one of the closest approaches

computer science has yet made to the Holy Grail of programming: the

user states the problem, the computer solves it. (FREUDER, Eugene C., 1997).

Programação por restrições representa uma das abordagens mais

próximas do Santo Graal da programação oferecidas pela ciência da

computação até hoje: o usuário declara o problema, o computador o

soluciona (FREUDER, Eugene C., 1997).

Page 9: framework computacional para programação de produção de ...

ix

LISTA DE FIGURAS

Figura 1 – Metodologia de pesquisa .......................................................................................... 4

Figura 2 - Sistema Produtivo. ..................................................................................................... 9

Figura 3 - Os três níveis hierárquicos do sistema produtivo. ................................................... 17

Figura 4 - Representação gráfica de uma classe. ..................................................................... 31

Figura 5 - Agregação e composição de classes. ....................................................................... 32

Figura 6 - Herança de Classes .................................................................................................. 32

Figura 7 - Exemplo das 4 rainhas com propagação das restrições. .......................................... 36

Figura 8 - Exemplo da segunda tentativa do algoritmo. .......................................................... 37

Figura 9 - Exemplo de programação para frente. ..................................................................... 41

Figura 10 - Exemplo do ajuste com programação para trás. .................................................... 41

Figura 11 - Sequenciamento por ordem. .................................................................................. 42

Figura 12 - Sequenciamento por Operação. ............................................................................. 43

Figura 13 - Representação de um indivíduo. ............................................................................ 44

Figura 14 - Esquema de funcionamento do Algoritmo Genético. ............................................ 45

Figura 15 - Esquema de cruzamento com um corte aleatório. ................................................. 46

Figura 16 - Funcionamento da mutação de um gene em um indivíduo. .................................. 46

Figura 17 - Exemplo de variação de eficiência em recursos discretos. .................................... 48

Figura 18 - Exemplo da variação de máximos e mínimos em recursos contínuos. ................. 48

Figura 19- Horizonte de programação. .................................................................................... 52

Figura 20 - Esquema de representação gráfica de uma operação. ........................................... 53

Figura 21 - Representação gráfica da alocação de um recurso discreto. .................................. 54

Figura 22 - Representação gráfica do uso de um recurso contínuo. ........................................ 54

Figura 23- Exemplo de Alocação -Estágio atual da programação. .......................................... 55

Figura 24 - Fluxo de validação das restrições. ......................................................................... 56

Figura 25 - Exemplo da alocação de uma operação. ................................................................ 57

Figura 26 - Diagrama de Classes do Framework proposto. ..................................................... 58

Figura 27 - Fluxo da regra de liberação MDT. ........................................................................ 59

Figura 28 - Fluxo da regra de carregamento paralelo. ............................................................. 60

Figura 29 - Representação de indivíduo. .................................................................................. 61

Figura 30 - Exemplo de cruzamento. ...................................................................................... 62

Figura 31 - Exemplo de mutação. ............................................................................................ 62

Page 10: framework computacional para programação de produção de ...

x

Figura 32 - Cadastro de recursos. ............................................................................................. 67

Figura 33 - Cadastro de grupo de recursos. .............................................................................. 68

Figura 34 - Turnos para dias da semana e dias específicos. ..................................................... 68

Figura 35 - Cadastro de turnos. ................................................................................................ 69

Figura 36 - Cadastro de roteiros. .............................................................................................. 69

Figura 37 - Detalhe de configuração de uma operação. ........................................................... 70

Figura 38 - Cadastro de ordens de produção. ........................................................................... 70

Figura 39 - Cadastro de estados de calendário. ........................................................................ 71

Figura 40 - Tela de programação do software protótipo. ......................................................... 72

Figura 41 - Gráfico de representação do recurso contínuo. ..................................................... 72

Figura 42 - Utilização dos recursos discretos. .......................................................................... 73

Figura 43 - Gráfico de tempo de espera acumulado. ................................................................ 74

Figura 44 - Tempo acumulado de operações em espera .......................................................... 74

Figura 45 - Gráfico de normalização por data de entrega. ....................................................... 75

Figura 46 - Informações sobre a programação. ........................................................................ 76

Figura 47 - Tela do software com diversos cenários gerados. ................................................. 77

Figura 48 - Gráfico de Gantt com todas as ordens programadas. ............................................ 78

Figura 49 - Quadro de parâmetros do Algoritmo Genético do software protótipo. ................. 80

Figura 50 - Gráfico de variação de Leadtime total nas soluções geradas pelo AG. ................. 82

Figura 51 - Gráfico de variação de espera total nas soluções geradas pelo AG. ..................... 82

Figura 52 - Tela para o desenvolvimento de regras de liberação. ............................................ 84

Figura 53 - Exemplo da regra de liberação WIP para frente em linguagem Pascal. ................ 84

Figura 54 - Janela de manutenção no banco de dados do software. ......................................... 85

Figura 55 - Ambiente de desenvolvimento do software protótipo. .......................................... 86

Figura 56 - Exemplo de código fonte no software protótipo. .................................................. 86

Figura 57 - Integração do software protótipo ao sistema de gestão. ........................................ 89

Page 11: framework computacional para programação de produção de ...

xi

LISTA DE TABELAS

Tabela 1 - Diferenças básicas entre os termos planejamento e programação. ......................... 22

Tabela 2 - Diferença entre os períodos de planejamento e programação. ................................ 22

Tabela 3 - Regras de liberação. ................................................................................................ 40

Tabela 4 - Formas de utilização dos recursos contínuos. ......................................................... 49

Tabela 5 - Resultados comparativos entre regras de liberação. ............................................... 79

Tabela 6 - Soluções geradas pelo Algoritmo Genético. ........................................................... 81

Tabela 7 - Indicadores da empresa A antes e após a implantação do software protótipo. ....... 90

Page 12: framework computacional para programação de produção de ...

xii

LISTA DE QUADROS

Quadro 1 - Comparativo entre os diversos sistemas produtivos. ............................................. 10

Quadro 2 - Comparativo entre sistemas produtivos contínuos e de massa .............................. 12

Quadro 3 - Diferenças básicas entre os sistemas jobshop e flowshop. ..................................... 15

Quadro 4 - Etapas para normalização e obtenção do índice ponderado. .................................. 63

Quadro 5 - Lista de recursos da ferramentaria exemplo. ......................................................... 64

Quadro 6 - Disponibilidade dos recursos. ................................................................................ 65

Quadro 7 - Roteiro de fabricação da peça A. ........................................................................... 65

Quadro 8 - Roteiro de fabricação da peça B. ........................................................................... 66

Quadro 9 - Ordens de produção do exemplo. ........................................................................... 66

Quadro 10 - Recursos e pessoal ocupado na ferramentaria. ................................................... 88

Page 13: framework computacional para programação de produção de ...

xiii

LISTA DE SIGLAS

APS - Advanced Planning and Scheduling

ATO - Assemble to Order

BoM - Bill of Material

COM - Critical Path Method

CR - Critical Ratio

CRP - Capacity Requirements Planning

CSP - Constraint Satisfaction Problem

EDD - Earliest Due Date

ERP - Enterprise Resource Planning

ETO - Engineer to Order

FCFS - First Come, First Served

FCS - Fine Capacity Scheduling

FIFO - Fist in fist out

ICR - Índice Crítico (Razão Crítica)

IFA - Índice de Falta

IFO - Índice de Folga

IPI - Índice de Prioridade

MDE - Menor Data de Entrega

MRP I - Material Requirements Planning

MRP II - Manufacturing Resource Planning

MTO - Make to Order

MTP - Menor Tempo de Processamento

MTS - Make to Stock

OC - Ordem de Compra

OP - Ordem de Produção

PA - Produto Acabados

PERT - Program Evaluation and Review Technique

PCP - Planejamento e Controle da Produção

PESP - Primeira que Entra Primeira que Sai

PMP - Plano Mestre de Produção

PPCP - Planejamento, Programação e Controle da Produção

Page 14: framework computacional para programação de produção de ...

xiv

RDP - Restrição Dependência entre Operações

RF - Razão do Faturamento

RFMT - Restrição Fim Mais Tarde

RIMC - Restrição Início Mais Cedo

RMC - Razão da Margem de Contribuição

ROA - Restrição Operação Alocada

RPC - Restrição Propriedade de Conferência

RRC - Restrição Recurso Contínuo

RRD - Restrição Recurso Discreto

SPT - Shortest Processing Time

UML - Unified Modeling Language

WIP - Work in Process

Page 15: framework computacional para programação de produção de ...

15

Sumário

RESUMO .............................................................................................................................. vi

ABSTRACT ......................................................................................................................... vii

LISTA DE FIGURAS ........................................................................................................... ix

LISTA DE TABELAS .......................................................................................................... xi

LISTA DE QUADROS ........................................................................................................ xii

LISTA DE SIGLAS ............................................................................................................ xiii

1. CONSIDERAÇÕES INICIAIS ....................................................................................... 1

1.1. Objetivo geral ............................................................................................... 2

1.2. Objetivos específicos .................................................................................... 2

1.3. Justificativa ................................................................................................... 3

1.4. Metodologia de pesquisa .............................................................................. 3

1.5. Revisão da literatura ..................................................................................... 4

1.6. Organização do trabalho ............................................................................... 8

2. FUNDAMENTAÇÃO TEÓRICA .................................................................................. 9

2.1. Introdução aos sistemas produtivos .............................................................. 9

2.1.1. Classificação dos sistemas produtivos ..................................................... 10

2.1.2. Fluxo de operações .................................................................................. 14

2.1.3. Estratégia de atendimento da demanda .................................................... 16

2.1.4. Atividades do PCP ................................................................................... 16

2.1.5. Sistema coordenador de ordens ............................................................... 18

2.1.6. Material Requirements Planning (MRP) ................................................. 19

2.1.7. Criticas à adoção do MRP ....................................................................... 21

2.1.8. Diferença entre os termos planejamento e programação ......................... 21

2.1.9. Programação da produção ........................................................................ 23

Page 16: framework computacional para programação de produção de ...

16

2.2. Fundamentação teórica das técnicas utilizadas ........................................... 29

2.2.1. Conceitos utilizados para construção do framework ............................... 29

2.2.1.1. Orientação a objetos.............................................................................. 29

2.2.1.2. UML (Unified Modeling Language) .................................................... 30

2.2.1.3. Framework ............................................................................................ 32

2.2.2. Algoritmos de busca e otimização ........................................................... 34

2.2.2.1. CSP (Constraint Satisfaction Problem)................................................. 34

2.2.2.2. Regras de liberação ............................................................................... 38

2.2.2.3. Algoritmo Genético .............................................................................. 43

3. MATERIAIS E MÉTODOS ......................................................................................... 47

3.1. Horizonte de programação .......................................................................... 47

3.2. Entidades ..................................................................................................... 47

3.3. Restrições .................................................................................................... 50

3.4. Métodos de escolha do recurso ................................................................... 51

3.5. Resolução das restrições ............................................................................. 51

3.6. Exemplo de funcionamento ........................................................................ 55

3.7. Diagrama de classes .................................................................................... 57

3.8. Sequenciamento das ordens e operações .................................................... 58

3.9. Exemplo de modelagem de um sistema produtivo ..................................... 63

4. RESULTADOS E DISCUSSÃO .................................................................................. 67

4.1. Software protótipo ...................................................................................... 67

4.2. Estudo de caso ............................................................................................ 87

5. CONCLUSÃO .............................................................................................................. 92

5.1. Sugestões de trabalhos futuros .................................................................... 92

6. REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................... 94

7. ANEXO–Publicação XXXI Encontro Nacional de Engenharia de Produção (2011) . 100

Page 17: framework computacional para programação de produção de ...

1

1. CONSIDERAÇÕES INICIAIS

A concorrência mundial tem pressionado as empresas a cada dia produzirem mais, em

menor tempo, com menor custo, com melhor qualidade, respeitando o meio ambiente e com

grande variedade de produtos, tendendo a produtos personalizados. A cada dia a pressão por

sistemas produtivos que sejam mais eficientes e controláveis estimula a pesquisa por

alternativas inteligentes e viáveis.

Dentro deste cenário, a programação da produção de capacidade finita é objeto de

pesquisa no mundo nas últimas décadas, sempre buscando soluções ótimas, ou boas, do ponto

de vista de redução de tempo e custo de setup, makespan, tempo de fluxo, atraso das tarefas e

no atendimento das ordens de produção dentro de prazos de entrega e com a melhor utilização

dos recursos da fábrica (MORAIS, 2009). Dentre os diversos tipos de indústria existem sempre

novos desafios que partem das características do processo de fabricação, da forma de

atendimento das ordens às restrições técnicas e tecnológicas. Gerar uma programação das

ordens de produção considerando todas estas características e garantir bons resultados em

tempo computacional aceitável é um grande desafio e gera espaço para novas pesquisas.

Turatti (2009) sugere que o sistema de programação de produção deve reproduzir as

decisões estratégicas da empresa, com regras de programação que respeitem estas decisões,

tornando-o assim um sistema que busca os melhores resultados em uso da capacidade fabril,

direcionando os esforços da fábrica em busca dos objetivos estratégicos da empresa.

Framinan e Ruiz (2010) realizaram um levantamento em 184 artigos sobre programação

de produção. Dentre todos artigos, menos de 3% consideravam condições realistas de produção.

Outro fato que reforça a pesquisa em soluções de programação da produção, foi a

pesquisa realizada por (GIACON,2011), apoiada pela FIESP (Federação das Indústrias do

Estado de São Paulo), que destacou que apenas 11% dos respondentes utilizam sistemas de

programação da produção e 40% dos respondentes MTO (Make to order) disseram que

pretendem investir neste tipo de solução. Esta mesma pesquisa demonstra que a adoção de

soluções ERP (Enterprise Resource Planning) já é bastante difundida no mercado brasileiro e

com instalações sendo utilizadas há mais de 10 anos.

A adoção de soluções de ERP, que normalmente utilizam algoritmos MRP I (Material

Requirements Planning) ou MRP II (Manufacturing Resource Planning), não são capazes de

gerar uma programação detalhada para a fábrica com eficiência. A deficiência na geração de

uma programação detalhada ocorre em função de diversas características como: lead times

superestimados, programação infinita, mesmo com a adoção do módulo CRP(Capacity

Page 18: framework computacional para programação de produção de ...

2

Requirements Planning) que faz uma verificação aproximada da capacidade e não detalhada

como nas soluções de programação da produção (GIROTTI,2011).

Outros trabalhos descrevem as vantagens das soluções de programação da produção

também conhecidas pelo nome comercial APS (Advanced Planning and Scheduling) em relação

às técnicas MRP I e II, como a flexibilidade para a geração de cenários sendo uma ferramenta

de apoio à tomada de decisão, que não é possível em soluções ERP (GIROTTI,2011).

Dentre as diversas técnicas possíveis para o desenvolvimento de soluções APS, este

trabalho apresenta um framework ou arcabouço, utilizando um diagrama de classes em

UML(Unified Modeling Language) e a aplicação do método de busca CSP (Constraint

Satisfaction Problem), como método de busca local, associado a regras de liberação e

Algoritmos Genéticos, concluindo com o desenvolvimento de software protótipo, seguido de

um exemplo de modelagem e um estudo de caso.

1.1. Objetivo geral

Desenvolver um framework conceitual que possa ser utilizado para o desenvolvimento

de software de programação de produção que respeite as reais características dos diversos

sistemas produtivos.

1.2. Objetivos específicos

- Desenvolver um diagrama de classes para servir de modelo para o desenvolvimento

de software de programação de produção que possa ser extensível às necessidades de cada

indústria, além de permitir a adoção de regras de liberação e algoritmos metaheurísticos.

- Desenvolver um software protótipo para validação do framework, com exemplos da

adoção de regras de liberação e Algoritmos Genéticos.

- Fazer a implantação do software protótipo em uma empresa e verificar os resultados

de sua adoção.

Page 19: framework computacional para programação de produção de ...

3

1.3. Justificativa

A crescente pressão por melhores produtos, com menor custo e sendo produzidos com

mais eficiência, tem exposto as falhas das soluções de ERP (Enterprise Resource Planning)

atualmente utilizadas pelas empresas. Esta pressão pode ser atenuada com adoção das

ferramentas computacionais adequadas, no caso da programação de produção, o uso de soluções

APS (Advanced Planning and Scheduling) (LIDDELL, 2009).

Essas soluções devem considerar o posicionamento estratégico da empresa e aderir as

características reais dos sistemas produtivos, fazendo-se necessário muitas vezes o

desenvolvimento de regras ou algoritmos específicos para atender as reais necessidades das

empresas (TURATTI;MARCANTONIO, 2009).

O mercado de soluções APS comerciais no Brasil é dominado por soluções

desenvolvidas em outros países, o que reforça a importância da pesquisa e desenvolvimento no

país fazendo com que se desenvolva este tipo de tecnologia (PACHECO;SANTORO, 2001),

desta forma, esse trabalho pode servir de contribuição para as empresas brasileiras

desenvolverem sistemas produtivos mais eficientes.

1.4. Metodologia de pesquisa

Este trabalho caracteriza-se como uma pesquisa de natureza aplicada para gerar

conhecimento, a partir da aplicação da solução em problemas específicos. De acordo com Gil

(2002), este trabalho pode ser classificado como exploratório-descritivo. Classifica-se como

exploratório, pois visa proporcionar maior familiaridade com o objeto em estudo, tornando-o

explícito através da apresentação do framework e algoritmos correlatos, descritiva, pois detalha

as atividades de modelagem de sistemas produtivos através de um exemplo de modelagem e

um estudo de caso.

O projeto teve início com uma pesquisa bibliográfica realizada principalmente por meio

de sistemas de busca no portal de periódicos da CAPES, Science Direct, Scielo, EBSCOhost

além de livros de administração de produção (Figura 1). As buscas se concentraram nos temas

production scheduling, APS (Advanced Planning and Scheduling), framework, constraint

satisfaction problem e suas combinações.

O diagrama de classes foi desenvolvido utilizando a notação UML (Unified Modeling

Language) e as premissas de abstração em modelagem de sistemas foram baseados em

orientação a objetos

Page 20: framework computacional para programação de produção de ...

4

Figura 1 – Metodologia de pesquisa

Fonte: o autor

.

A empresa selecionada para servir o de caso foi uma empresa de fabricação sob

encomenda, com grande variedade de roteiros de fabricação e disposta a disponibilizar as

informações necessárias bem como utilizar-o software protótipo.

1.5. Revisão da literatura

Nesta seção estão organizados em ordem cronológica crescente os trabalhos que mais

influenciaram o desenvolvimento do framework de programação de produção.

Reis (1996) fez um resumo das ferramentas de sequenciamento de produção

desenvolvidas até 1996 e as tecnologias empregadas em cada solução com os benefícios e

problemas de cada ferramenta.

Brailsford, Potts e Smith (1999) fizeram uma revisão das principais técnicas utilizadas

para resolução de restrições como arco consistência e propagação de restrições, concluindo que

não é o método mais eficiente em grandes espaços de busca em comparação com métodos como

Algoritmos Genéticos ou Simulated Anneling, mas que pode ser bastante eficiente

principalmente em problemas de busca local.

Pacheco e Santoro (2001) realizaram um estudo de caso em seis empresas brasileiras

consideradas líderes em seus setores, identificando a falta de conhecimento sobre a tecnologia

APS(Advanced Planning and Scheduling) empregada bem como definição clara dos objetivos

e critérios formais de escolha.

Page 21: framework computacional para programação de produção de ...

5

Brucker (2002) demonstrou uma generalização do problema RCPSP(Resource-

Constrained project scheduling problem), com o uso de propagação de restrições.

Ichihara (2002) tratou o problema da alocação de recursos em projetos, com objetivo de

minimizar o tempo de execução do projeto bem como o custo e valor presente do projeto,

utilizando de métodos heurísticos.

Branco Coelho e Mayerle (2007) utilizaram Algoritmos Genéticos para realizar

programação em job shop. Os autores utilizaram como população inicial o resultado de duas

regras de liberação SPT(Shortest Processing Time) e aleatória, reduzindo o tempo

computacional para o Algoritmo Genético alcançar os melhores resultados.

Rodrigues e Gômez (2008) realizaram um trabalho com o uso de Busca Tabu para o

problema job shop em um sistema de manufatura flexível, levando em consideração datas de

entrega, turnos de produção e trocas de ferramentas. Com o uso do método de Busca Tabu, o

número de iterações necessárias para encontrar a solução foi reduzido.

Fernandes, Azeka e Godinho-filho (2008) desenvolveram um trabalho de identificação

da lacuna entre as tecnologias de programação e controle e suas aplicações na indústria. O

trabalho atuou em três áreas distintas: revisão da literatura, pesquisas com gerentes de grandes

empresas e com reconhecidos acadêmicos da região de São Carlos. Os autores concluíram que

existe a necessidade de uma aproximação entre as empresas e a universidade para a troca de

tecnologias e capacitação dos colaboradores das empresas.

Turatti e Marcantonio (2009) descreveram os benefícios da adoção de scheduling e a

relação com os três níveis decisórios da empresa. Os autores sugerem novas regras de

priorização que contemplem a direção estratégica da empresa. Discorreram sobre a vantagem

de gerar cenários que possam ser analisados antes da tomada de decisão e ressaltaram a

importância do controle para garantir a aplicação da programação na fábrica.

Xing, Chen e Yang (2009) estudaram o problema de programação job shop flexível,

com a adoção de objetivos multicritério. Eles consideraram conjuntamente a minimização de

makespan, tempo total de carregamento por máquina e pela máquina gargalo, utilizando

Algoritmos Genéticos e Busca Tabu para a solução do problema estudado.

Morais, Menegarde e Cantiere (2009) fizeram um estudo das principais regras de

despacho e o impacto no resultado da programação. Analisaram também os diversos critérios

de desempenho. Concluíram que cada regra tem objetivo específico e seu trabalho pode ser

utilizado como um guia para orientar a aplicação mais adequada das regras de despacho aos

objetivos específicos.

Page 22: framework computacional para programação de produção de ...

6

Vianna, Franco e Vianna (2010) compararam o uso de Algoritmos Genéticos com

cruzamento com um corte aleatório em relação a duas estratégias distintas utilizando a

reconexão por caminhos em problemas job shop. Os autores observaram que as duas

abordagens de reconexão por caminhos alcançaram os melhores resultados em menos tempo

computacional.

Browning e Yassine (2010) fizeram um estudo no qual analisaram o desempenho de

vinte regras de despacho com 12.320 testes para validar o desempenho de cada regra em

diversos ambientes. Os autores sugerem o uso deste trabalho como guia para a aplicação das

regras mais adequadas aos objetivos desejados, com destaque para as regras conhecidas como

MINSLK(Minimum Slack) e SASP(Shortest Activity from Shortest Project).

Cantiere, Morais e Boiko (2010) realizaram um levantamento bibliográfico sobre o

problema de programação de produção em sistemas flow shop com tempos de setup

dependentes de sequência. Poucos trabalhos que consideram esta característica foram

encontrados. Os autores propuseram uma nova regra de despacho tendo como base a regra MM-

FlowTime1 que foi nomeada de MMC-FlowTime. Com esta nova regra obteve-se um bom

desempenho de minimização makespan quando comparado a outras regras de despacho.

Novas e Henning (2010) apresentaram um framework com técnicas para realização da

realocação das operações, identificando somente as alterações necessárias, diminuindo o custo

computacional ante o sequenciamento de todas as operações, reagindo instantaneamente ou não

com informações em tempo real da fábrica, alterando somente as operações afetadas por

mudanças e as que sofrerão impacto destas mudanças. Diversas estratégias foram abordadas e

analisadas. A proposta de um framework para corrigir a programação utilizou orientação a

objetos e CP(Constraint Programming).

Framinan e Ruiz (2010) propuseram uma arquitetura básica para o desenvolvimento de

soluções APS (Advanced Planning and Scheduling). A arquitetura por eles proposta apresenta

os principais módulos e as diversas técnicas que podem ser empregadas para solução do

sequenciamento de operações. Os autores ressaltam a grande quantidade de artigos que não

consideram as características reais da fábrica.

Zeballos (2010) apresentou uma metodologia que utiliza conceitos de programação de

restrição aplicada em sistemas de manufatura flexível. Para a resolução das restrições o autor

1 As siglas MM são utilizadas para representar a minimização de média do tempo de fluxo.

Page 23: framework computacional para programação de produção de ...

7

utilizou o solver comercial da IBM, ILOG e conseguiu bons resultados em menos de 2000

segundos de processamento.

Hvolby e Steger-Jensen (2010) fizeram um levantamento dos principais trabalhos sobre

sequenciamento de produção baseado em restrições, demostrando através do uso da solução

Oracle APS os benefícios em relação aos algoritmos MRP.

Mainieri e Ronconi (2010) propuseram uma nova regra de despacho denominada

PRTTa2 para o problema flowshop flexível. Os autores encontraram resultados satisfatórios

com a redução de makespan.

Weglaz et al.(2010) fizeram uma vasta pesquisa bibliográfica sobre as mais importantes

publicações dos últimos anos, sobre sequenciamento de atividades de projetos, analisando as

diversas técnicas empregadas até hoje. Os autores analisaram diferentes pontos de vista sobre

sequenciamento com as diferentes estratégias. Com o objetivo de facilitar o desenvolvimento

de novos trabalhos sobre o tema padronizaram a nomenclatura sobre recursos, tipos de recursos,

restrições de precedência, de tempo de duração, entre outros.

Bicalho, Santos e Arroyo (2011) propuseram uma metaheurística híbrida GRASP e

Busca TABU para o problema clássico job shop. Obtiveram resultados melhores do que os já

publicados para o problema.

Girotti, Nishimura e Mesquita (2011) desenvolveram um sistema de programação da

produção para job shop implementando três regras de despacho FIFO (First In First Out), SPT

(Shortest Processing Time) e EDD (Earliest Due Date) utilizando o software VBA/Excel®.

Apesar das limitações impostas pelo Excel®, obtiveram bons resultados. A solução proposta

permite oferecer uma visão geral do problema de programação de produção.

Silva, Leite e Junior (2011) utilizaram a Lógica Fuzzy com a data de entrega, tempo de

ciclo do processo de produção e margem de contribuição para gerar um índice que foi utilizado

como ordem no sequenciamento das operações.

Balin (2011) estudou o problema de máquinas paralelas com duas abordagens distintas.

Algoritmo Genético e Fuzzy e comparou os resultados com base na regra LPT(longest

processing time).

Xu, Xu e Xie (2011) fizeram um levantamento das últimas pesquisas relacionadas ao

problema de dupla restrição entre máquinas e operadores, conhecido na literatura como DRC

(Dual Resource Constrained). Os autores fazem uma crítica à adoção de regras de liberação

2 A sigla PRTTa é uma variação da sigla PRTT (Priority Rule for Total Tardiness) é uma regra para

redução do atraso total.

Page 24: framework computacional para programação de produção de ...

8

estáticas e sugerem uso de outras técnicas como Rede Neural Artificial e Algoritmos Genéticos

defendendo o uso de regras dinâmicas de programação.

Silva, Morabito e Yanasse (2011) propuseram uma solução utilizando programação

inteira mista, para indústria aeronáutica com uso de gabaritos de montagem que sofrem restrição

adicional com a limitação de uso de recursos adjacentes.

Esta revisão da literatura destaca diversos esforços da comunidade cientifica em buscar

melhores soluções para programação de produção. No entanto não foi encontrada durante as

buscas uma proposta de framework que pudesse ser usada como base para o projeto de um

software de programação avançada de produção. Entretanto, serviram como contribuição as

diversas estratégias utilizadas pelos seus respectivos autores ao propósito de desenvolver um

framework computacional, tendo como principal referência o trabalho de Weglaz et al.(2010).

1.6. Organização do trabalho

Este trabalho está dividido em cinco capítulos, como segue:

Capítulo 1: traz a definição objetivos, justificativa, metodologia de pesquisa e a

revisão da literatura.

Capítulo 2: inclui a fundamentação teórica dos sistemas produtivos com as

principais formas de classificação e características além das atividades exercidas pelo PCP,

destacando a atividade de programação da produção e também faz uma introdução ao

desenvolvimento orientado a objetos, seguido das técnicas de busca e otimização utilizadas

neste trabalho: CSP(Constraint Satisfaction Problem), regras de liberação e Algoritmos

Genéticos.

Capítulo 3: apresenta os componentes do framework, diagrama de classes,

restrições, formas de aplicação concluindo com um exemplo de uso através de uma modelagem.

Capítulo 4: demonstra o software protótipo desenvolvido utilizando o modelo

proposto pelo framework e relata também a implantação do software em uma indústria de

moldes para injeção plástica.

Capítulo 5: traz a conclusão do trabalho e sugestões de trabalhos futuros.

Além dos capítulos citados, também faz parte do trabalho as referências bibliográficas

e um anexo com o artigo publicado.

Page 25: framework computacional para programação de produção de ...

9

2. FUNDAMENTAÇÃO TEÓRICA

Neste capítulo será feita a revisão da literatura dos principais temas abortados neste

trabalho.

2.1. Introdução aos sistemas produtivos

O sistema de produção é um conjunto de elementos inter-relacionados com o objetivo

de produzir bens e serviços. Pode ser descrito como um conjunto de insumos (input) que são

processados através de recursos (máquinas, equipamentos, mão de obra, energia, etc.) e serão

transformados em produtos ou serviços (output) de maior valor agregado. Transformar input

em output, com valor adicionado, é eficaz se os recursos são utilizados da melhor forma

possível, sem desperdício agregando maior valor ao final do processo (FERNANDES;

GODINHO-FILHO, 2010; TUBINO, 2007). A tarefa de transformar insumos em produtos e

serviços, tem a cada dia novos desafios em função da pressão de concorrentes, compradores,

produtos substitutos, fornecedores e entrantes potenciais (PORTER, 2004). São considerados

como input do sistema, mão-de-obra, capital energia e outros insumos, cujos resultados do

processamento são produtos e serviços, conforme observado na Figura 2.

Figura 2 - Sistema Produtivo.

Fonte (MARTINS e LAUGENI, 2005).

Os sistemas produtivos podem ser classificados com o objetivo de facilitar o

entendimento das características inerentes a cada sistema e a relação com a complexidade de

planejamento e controle desses sistemas. Na literatura estão descritas várias classificações que

permitem aplicar técnicas distintas de controle e planejamento a grupos de sistemas produtivos

que possuam as mesmas características.

Page 26: framework computacional para programação de produção de ...

10

Diversos autores (BOIKO;TSUJIGUCHI;VAROLO, 2009 ; PERALES, 2001)

desenvolveram trabalhos específicos de pesquisa na literatura sobre os diversos tipos de

classificação do sistema produtivo com o objetivo de organizá-los e facilitar a compreensão.

A classificação do sistema produtivo não está associada ao tipo de produto que está

sendo processado, mas ao comportamento da demanda, ao arranjo funcional, ao nível de contato

com o cliente, às características do processo de fabricação, à tecnologia aplicada, entre outros

(TUBINO, 2007).

Em uma empresa podem haver diversos tipos de sistemas produtivos em sua estrutura,

atendendo diretamente aos clientes externos ou a outras áreas da empresa (clientes internos)

(CHASE;JACOBS;AQUILANO, 2006).

2.1.1. Classificação dos sistemas produtivos

Uma classificação amplamente utilizada para os sistemas produtivos é a classificação

pelo grau de repetitividade dos produtos. Analisando o Quadro 1 pode-se citar dois extremos,

estando de um lado os sistemas de produção contínuos ou em massa e outro lado os sistemas

de fabricação sob encomenda, dependendo do tamanho do lote os sistemas repetitivos em lotes,

podem tender aos sistemas de produção contínuos/massa ou para o sistema produtivo sob

encomenda (TUBINO, 2007).

Quadro 1 - Comparativo entre os diversos sistemas produtivos.

Fonte (TUBINO, 2007).

Page 27: framework computacional para programação de produção de ...

11

Na primeira linha pode-se observar que o volume de produção tende a ser maior nos

sistemas contínuos ou de massa se comparados aos sistemas de lote ou sob encomenda. É

possível verificar também que quando a flexibilidade e a variedade de itens aumentam quando

estamos tratando de sistemas produtivos sob encomenda, aumentando o lead time e os custos

envolvidos. O detalhamento da programação e o sequenciamento das operações por recursos

tendem a ser mais importantes aos sistemas de fabricação sob encomenda (TUBINO, 2007).

Outros autores propuseram outras formas de classificação de sistemas produtivos, sendo

uma das mais relevantes foi a classificação proposta por MACCARTHY e FERNANDES

(2000) que a classificação é baseada em um modelo multidimensional identificados por quatro

grupos principais (caracterização geral, caracterização do produto, caracterização do processo

e caracterização do processo de montagem) os quais englobam doze variáveis que segundo o

autor tem impacto direto na complexidade do sistema produtivo.

Nas próximas seções serão detalhadas as características de cada sistema produtivo:

contínuo e de massa, repetitivos em lotes e sob encomenda.

2.1.1.1. Sistemas contínuos e de massa

Os sistemas contínuos são empregados quando existe alta uniformidade dos produtos e

com produção em grande escala, permitindo que os processos produtivos altamente

especializados façam uso extensivo de automatização. Já os sistemas em massa, exigem uma

adoção maior de mão-de-obra tendo reduzida possibilidade de automatização (TUBINO, 2007).

No Quadro 2 foram citados alguns exemplos de empresas de cada sistema e as principais

características dos sistemas de massa e contínuos, com destaque principalmente para

especialização dos recursos, tempo de setup e layout, nas quais foram encontradas as principais

diferenças.

Page 28: framework computacional para programação de produção de ...

12

Quadro 2 - Comparativo entre sistemas produtivos contínuos e de massa

Adaptado de (TUBINO, 2007)

Característica Contínuo Massa

Produtos

Energia elétrica

Petróleo

Produtos químicos

Montadora de automóveis

Montadora de eletrodomésticos

Abate e beneficiamento de aves.

Serviços

Monitoramento Radar

Fornecimento de Gás e Água

Busca de Páginas internet

Editoração de Jornais e Revistas

Transporte Aéreo

Comportamento da

Demanda Estável Estável

Variedade de Produto Baixa Baixa

Especialização dos

Recursos Muito Alta Alta

Nível de Automação Rígido Rígido

Tempo de Setup Alto Médio

Layout Por produto Por produto ou grupo de produtos

Lead time Curto Curto

Fernandes e Godinho-filho (2010) classificam o sistema de produção contínuo e de

massa em três níveis distintos: contínuo puro, semicontínuo e produção em massa. Desancando

como principais pontos de diferenciação o nível customização dos produto e os sistemas de

controle e planejamento de produção.

2.1.1.2. Sistemas repetitivos em lotes

São sistemas orientados a lotes padronizados de produtos, sendo necessária uma série

de operações para a fabricação do lote. São utilizados quando não existe volume suficiente para

a organização do sistema produtivo em massa ou em processos contínuos e existe uma

variabilidade maior de produtos (TUBINO, 2007).

Pode-se adotar como medida auxiliar a criação de lotes econômicos como forma de

reduzir os custos de preparação (setup) e estoques de segurança para diminuir o tempo de

Page 29: framework computacional para programação de produção de ...

13

resposta ao cliente. Em relação aos sistemas produtivos contínuos ou de massa existe uma

dependência maior da variação da demanda (MARTINS;LAUGENI, 2005).

A programação da produção dos sistemas repetitivos em lote poderá ser puxada ou

empurrada. Na programação empurrada, os lotes de produção são obtidos a partir da demanda

de diferentes produtos acabados através do PMP (Plano Mestre de Produção), que gera a

necessidade de PA (Produto Acabados). Estas necessidades são transferidas para um sistema

coordenador de ordens, geralmente um sistema MRP3.De acordo com a estrutura de produtos e

estoques disponíveis calcula-se as quantidades de matéria-prima ou produtos intermediários

que serão compradas via OC (Ordem de compra) ou que serão fabricados via OP(Ordem de

Produção) e que posteriormente serão passadas a um sistema de sequenciamento o qual definirá

a sequência das operações (CHASE;JACOBS;AQUILANO, 2006).

A programação é chamada empurrada, pois o centro de trabalho recebe um conjunto de

ordens que uma vez concluída é empurrada para o centro de trabalho seguinte (TUBINO, 2007).

Na programação puxada o MRP é utilizado para fazer a previsão de demanda para o

dimensionamento de estoques (TUBINO, 2007).

Quando os clientes entram em contato solicitando itens, é gerada uma ordem de

produção ao posto de trabalho anterior, para início do processo de fabricação. É chamada de

programação puxada, pois quem autoriza a produção é o cliente interno que puxa, solicita, e

autoriza ao centro de trabalho anterior o início da produção.

Fernandes e Godinho-filho (2010) classificam o sistema repetitivo em lotes em dois

sistemas distintos: repetitivos e semirepetitivos. A principal diferença destacada pelo autor é o

sistema de controle e planejamento de produção.

2.1.1.3. Sistemas sob encomenda

É um sistema dedicado às necessidades específicas dos clientes, no qual o produto tem

uma data específica negociada com o cliente e utiliza equipamentos de uso geral que permitem

alta flexibilidade, produzindo pequenos lotes tendendo a unidade. Muitas vezes o cliente

participa ativamente no desenvolvimento do produto em diversas etapas com acompanhamento

mais próximo de cada operação. A demanda é variável em função dos clientes o que

impossibilita a geração de estoques de segurança. Existe uma grande preocupação com a data

3 A sigla MRP pode ser utilizada para Material Requirement Planning ou Manufacturing Resource

Planning, que são sistemas coordenadores de ordens tratados em mais detalhe nas próximas seções.

Page 30: framework computacional para programação de produção de ...

14

de entrega e a disponibilidade de recursos capazes de cumprir os prazos. Esta preocupação se

inicia a partir da negociação do produto com o cliente, portanto é necessária uma aproximação

maior do departamento de PCP(Planejamento e Controle de Produção) com área de vendas para

que sejam combinadas datas que possam efetivamente ser cumpridas (MARTINS;LAUGENI,

2005).

Pode existir ociosidade de alguns recursos enquanto outros estão com fila, pois a

variedade de produtos e as datas de entrega podem fazer com que o gargalo mude de recurso

para recurso em função dos estágios de fabricação de cada produto. O atraso na entrega do

produto não só compromete a reputação do fornecedor, mas também é comum a adição de

multas contratuais (TUBINO, 2007)

A organização é por centros de trabalho ou departamento com foco por tipo de trabalho.

Quando o projeto pode se estender por semana/meses são aplicadas técnicas de

PERT/CPM4 para acompanhamento em detalhes para evitar atrasos. Pode se citar exemplos de

empresas que trabalham com produção sob encomenda como a fabricação de navios, aviões,

usinas hidroelétricas, máquinas e ferramentas. Como exemplo de empresas de prestação de

serviços pode se citar as agências de propaganda, escritório de advocacia e arquitetura

(TUBINO, 2007).

Fernandes e Godinho-filho (2010) classifica o sistema de fabricação sob encomenda em

sistemas não repetitivos ou grandes projetos, sendo que o principal motivador da diferenciação

está no nível de customização dos produtos e no sistema de controle e planejamento de

produção.

2.1.2. Fluxo de operações

A classificação dos sistemas produtivos em função do fluxo de operações nos recursos,

também é bastante utilizada. Podem ser observadas no Quadro 3 as principais diferenças entre

os sistemas job shop e flow shop, ressaltando como principais diferenças além do fluxo de

operações e do tempo do setup, temos o tipo de equipamento utilizado e as filas nos centros de

trabalhos ou recursos.

4 PERT/CPM são duas ferramentas para o gerenciamento de projetos

Page 31: framework computacional para programação de produção de ...

15

Quadro 3 - Diferenças básicas entre os sistemas jobshop e flowshop.

Fonte: (PUTNAM, 1983)

JOB SHOP FLOW SHOP

Opera em lotes Opera em fluxo de materiais e peças

Varia a produção variando o tamanho dos

lotes ou a frequência dos lotes

Varia a produção alterando a taxa de

produção

Tende a ter custos maiores de setup Tende a ter custos menores de setup

Materiais são trazidos para os departamentos

ou centros de trabalho onde cada operação é

realizada. Filas nos centros de trabalho são

maiores

As operações de tipos diferentes são

sequenciadas de modo que o fluxo seja

mantido. Filas são pequenas e as variações

tem que ser acompanhadas

Utilização de equipamentos de uso geral Utilização de equipamento de uso

especializado (dedicado)

Em complementariedade, podem ser encontradas na literatura outras formas de

classificação em função do fluxo de trabalho (MACCARTHY;LIU, 1993).

Flow shop: todas as tarefas possuem o mesmo fluxo de processamento em todas as

máquinas

Job Shop: todas as tarefas possuem um roteiro específico de processamento,

determinado para cada operação.

Flow shop permutacional: as ordens de processamento das tarefas são exatamente as

mesmas para todas as máquinas.

Máquina única: existe apenas uma única máquina disponível para a execução das

tarefas

Máquinas paralelas: são disponíveis duas ou mais máquinas, normalmente máquinas

idênticas, que podem executar qualquer tarefa, onde a tarefa só é executada em uma máquina.

Job Shop com máquinas múltiplas: é um job shop no qual existem k(i) máquinas

idênticas em cada estágio i(i=1,2,...m), sendo que em cada estágio cada tarefa é processada por

somente uma máquina.

Flow shop com máquinas múltiplas: é um flow shop onde as tarefas são processadas

em múltiplos estágios seguindo a mesma ordem em cada um deles, sendo possível a variação

da quantidade por estágio e as tarefas são processadas apenas por uma máquina em cada estágio.

Page 32: framework computacional para programação de produção de ...

16

2.1.3. Estratégia de atendimento da demanda

Para atendimento da demanda por produtos e serviços pode-se adotar diversas

estratégias, iniciando pela produção para estoque MTS (make to stock). O objetivo é manter o

estoque em níveis para atender a demanda dos clientes, possibilitando uma resposta rápida, pois

os itens já estão fabricados e disponíveis em uma determinada quantidade. A produção é

baseada nas previsões de demanda de itens padronizados, mas incorre em custos extras com a

geração de estoques de produtos acabados (FERNANDES;GODINHO-FILHO, 2010).

Outra forma de atender a demanda é quando a mesma inicia o processo de fabricação,

conhecido como MTO (make to order), onde o processo somente se tem início a partir da

solicitação do cliente que tem que aguardar o processo de fabricação para receber o produto, o

que faz com que seja negociada a data de entrega. Em alguns casos pode-se até mesmo ser

projetado em paralelo com a fabricação, o qual poderia ser considerado já uma variação de

MTO (make to order) para ETO (engineer to order) que será citada a seguir. Essa estratégia de

atendimento de demanda também pode ser adotada quando os produtos são perecíveis ou de

alto custo.

- ETO (engineer to order)-Engenharia sob encomenda, o projeto, a produção de

componentes e a montagem final são feitos com base nas decisões do cliente. É uma estratégia

utilizada principalmente em grandes projetos, ou projetos de alta complexidade, específico para

o cliente e tem que atender a um grande número de requisitos (MARTINS;LAUGENI, 2005).

- ATO (assemble to order) A empresa faz estoque de subconjuntos e monta conforme a

solicitação dos clientes. Os principais componentes do produto final são produzidos conforme

a previsão de demanda. A chegada do pedido do cliente dispara a ordem de montagem final

mediante a utilização dos componentes previamente produzidos é particularmente útil quando

a variedade de produtos finais é grande, mas são produzidos através de poucos componentes.

(TUBINO, 2007)

2.1.4. Atividades do PCP

As decisões sobre o sistema produtivo normalmente são tomadas pelo departamento de

PCP (Planejamento e Controle da Produção), também é possível encontrar na literatura por

PPCP (Planejamento, Programação e Controle da Produção). Independente da nomenclatura

utilizada seu papel é definir o que, quanto e quando produzir, comprar e entregar, além de quem

Page 33: framework computacional para programação de produção de ...

17

e/ou onde se produzir além do controle e acompanhamento do que está sendo produzido ou não

produzido (TUBINO, 2007; CHASE;JACOBS;AQUILANO, 2006).

Para facilitar, este conjunto de ações foi dividido em três níveis hierárquicos de longo

médio e curto prazo (Figura 3).

Figura 3 - Os três níveis hierárquicos do sistema produtivo.

Fonte (TUBINO, 2007)

Para o horizonte de longo prazo é identificado o planejamento de processo e estratégico

de capacidade. São decisões que utilizam previsão de demanda de longo prazo, determinando

com que capacidade do sistema produtivo deverá trabalhar para atender aos clientes e deve estar

de acordo com o planejamento estratégico da corporação.

O horizonte de médio prazo leva em consideração os pedidos firmes, previsões de

demanda de médio prazo se adaptando as flutuações do mercado de forma mais rápida. Inclui

neste momento o planejamento por um sistema coordenador de ordens, tradicionalmente em

sistemas ERP(Enterprise resource planning). O principal objetivo é coordenar a demanda do

mercado com os recursos internos da empresa de forma a programar as taxas adequadas de

produção de produtos finais gerando como resultado final o PMP (Plano mestre de produção),

que desmembra o planejamento estratégico em planos específicos de produtos acabados.

O horizonte de curto prazo refere-se a decisões de onde serão executadas as ordens

planejadas ou firmadas no médio prazo. Neste instante está procurando determinar uma

Page 34: framework computacional para programação de produção de ...

18

programação para a fábrica, considerando efetivamente data para início e duração de cada

ordem ou operação, com quais recursos estarão efetivamente disponíveis. São considerados

também, turnos de trabalho, disponibilidade de materiais, quebras e manutenções preventivas

(CHASE;JACOBS;AQUILANO, 2006).

O controle pode ser definido como atividade gerencial por regular, no curto prazo, o

fluxo de materiais em um sistema de produção por meio de informações e decisões para a sua

execução. Pode se definir como quatro principais atividades do PCP (Planejamento e controle

de produção):

- Programar a produção em termos de itens finais PMP (Plano Mestre de Produção);

- Controlar por meio de regras a necessidade de componentes e insumos;

- Controlar a emissão e liberação de ordens de produção e compras;

- Sequenciar as tarefas nas máquinas;

Diversos sistemas foram propostos para o controle de necessidade de componentes e

insumos, a emissão e liberação de ordens de compra e a programação das tarefas nas máquinas,

que foram classificados por Fernandes e Filho (2007) como sistemas coordenadores de ordens

e que serão discutidos na próxima seção.

2.1.5. Sistema coordenador de ordens

O sistema coordenador de ordem mais utilizado é o sistema MRP. No entanto, existem

outros sistemas que possuem objetivos similares e bons resultados em alguns sistemas

produtivos. Como visto na seção 2.3, em uma única fábrica podem existir diversas estratégias

de maneira que pode-se adotar sistemas mais específicos a cada necessidade. Seguem abaixo

os quatro grupos de sistemas coordenadores de ordens classificados por Fernandes e Filho

(2007).

1) Grupo I: Sistema de pedido controlado: é impossível manter estoque de produtos

finais, possivelmente sistemas de produção sob encomenda ou repetitivo em lotes

tendendo a unidade.

a) Sistema de programação por contrato;

b) Sistema de alocação de carga por encomenda.

2) Grupo II: Sistemas controlados pelo nível de estoque: as decisões são baseadas pelo

nível de estoque e influenciam diretamente a geração e emissão de ordens de

produção e compra.

Page 35: framework computacional para programação de produção de ...

19

a) Sistemas de revisão contínua, também encontrado na literatura como

sistemas de duas gavetas, sistema de ponto de reposição e sistema de estoque mínimo;

b) Kanban CNE (Controlado pelo Nível de Estoque),

c) CONWIP (Constant Work in Process) CNE;

d) Sistema de revisão periódica.

3) Grupo III: Sistemas de fluxo programado; as decisões são baseadas no estoque

somadas as previsões de necessidade.

a) Sistema de estoque base;

b) MRP (Material Requirements Planning);

c) PBC (Period Batch Control);

d) OPT (Optimized Production Technology);

e) Sistemas de lote padrão, etc..

4) Grupo IV: Sistemas híbridos possuem características dos sistemas dos grupos I e II

a) Maxmin;

b) CONWIP H ;

c) Kanban H ;

d) DBR (Drum, Buffer, Rope) tambor, pulmão e corda ;

e) DEWIP (Decentralized Wok in Process) ;

f) LOOR (Load Oriented Order in Process) ;

g) POLCA (Paired-cell Overlapping Loops of Cards with Authorization)

Os diversos sistemas coordenadores de ordem não serão tratados neste trabalho e podem

ser encontrados com mais detalhes em Fernandes e Filho (2007). No entanto será realizada uma

breve descrição do funcionamento do MRP e as críticas do seu uso na programação de

operações.

2.1.6. Material Requirements Planning (MRP)

O MRP (Material Requirements Planning) foi desenvolvido no século passado por volta

dos anos 60 e surgiu com a introdução da computação nas empresas com o objetivo de fazer a

programação na indústria.

O MRP evoluiu e foram adicionadas novas capacidades até que por volta dos anos 80,

surgiu o desdobramento do conceito de MRP (Manufacturing Resource Planning), quando

foram criadas as siglas MRP I para Material Requirements Planning e MRP II para

Page 36: framework computacional para programação de produção de ...

20

Manufacturing Resource Planning. Foram também adicionados novos recursos para atender

novas áreas da empresa sendo denominado como ERP (Enterprise Resource Planning).

Atualmente podem ser adotados tanto MRP I quanto MRP II ou outro sistema coordenador de

ordens (GIROTTI;MESQUITA, 2011).

O MRP necessita para o cálculo das necessidades, inicialmente da divisão do horizonte

de planejamento em unidades de tempo, normalmente semanas ou dias que são denominadas

como time buckets. O horizonte de planejamento deve contemplar o período de pedidos firmes

e não exceder a capacidade de previsão.

O MRP tem como entrada para o cálculo o que segue:

PMP (Plano mestre de produção): possui a quantidade e data de entrega dos produtos;

Lista de materiais (BoM - Bill of Material): Lista de componentes necessários para

elaboração dos produtos. A lista é definida em níveis para quando for realizada a explosão a

mesma seja realizada nível a nível, até a conclusão.

Estoques: quantidade atual de cada item, incluindo reservas para ordens em produção e

ordens de compra programadas.

A lógica de funcionamento do MRP inicia pelos itens de demanda independente

(produtos acabados) seguindo os passos:

Netting (Balanço de estoque): determina as necessidades líquidas em cada período,

subtraindo das necessidades brutas os estoques projetados e os recebimentos programados;

Lot Sizing (Formação de Lote): agrupa as necessidades líquidas em tamanhos

apropriados de lotes para ordens de produção ou de compra.

Time Phasing (Programação para trás): obtem as datas de início e vencimento das

ordens, baseando-se nos lead times padrão.

BoM Explosion (Explosão de materiais): utiliza as datas de início e a lista de materiais

para gerar as necessidades brutas de cada componente do próximo nível.

Iteração: determina que nível da lista de materiais esta sendo explodido.

Como resultado o MRP gera uma lista de ordens de compra e produção com as

respectivas datas.

Com o passar dos anos foram adicionado novas funções ao módulo de MRP, tendo

destaque ao RCCP (Rough-cut Capacity Planning), que faz uma verificação preliminar da

capacidade de produção de alguns poucos recursos críticos com o objetivo de assegurar a

viabilidade dos planos de produção estipulados.

Page 37: framework computacional para programação de produção de ...

21

No sistema MRP II pode se adotar um módulo o CRP (capacity requirements planning)

que recebe as informações do MRP e faz uma análise detalhada dos recursos críticos para

determinar as datas em função da capacidade de produção.

Mesmo utilizando o módulo CRP, o MRP sofre diversas críticas em sua adoção, que são

tratadas na próxima seção.

2.1.7. Criticas à adoção do MRP

A adoção do MRP traz inúmeros benefícios, mas sua adoção para a programação da

produção traz críticas que serão descritas abaixo:

Programação infinita: Não considera a disponibilidade efetiva dos recursos;

Lead time superestimado: Leadtime constante que não utiliza informações do

chão de fábrica em seu algoritmo. Como utiliza leadtime fixo, o mesmo é superestimado para

garantir que possa ser cumprido e são somados aos tempos leadtime os tempo de fila. Além

disso, o MRP discretiza o tempo em dias ou semanas (LIDDELL, 2009);

Nervosismo do sistema: pequenas mudanças no PMP(Plano Mestre de Produção)

geram grandes mudanças no plano gerado pelo MRP;

Cultura de formação de lotes: talvez não seja o mais eficiente para alguns sistemas de

produção, gerando excesso de WIP (Work in Process);

Além das características citadas acima o MRP faz a programação pra trás com

capacidade infinita. Mesmo com a adoção do módulo CRP , o MRP não consegue gerar uma

programação detalhada, pois utilizam lead time médios que somam ao tempo de processo os

tempos de fila, sendo que os tempos de fila deveriam ser resposta do sistema e não parâmetro.

Outras críticas podem ser encontradas no trabalho de (GIROTTI;MESQUITA, 2011).

2.1.8. Diferença entre os termos planejamento e programação

A diferença entre os termos de planejamento e programação pode ser observada na

Tabela 1. Pode-se destacar que, diferente do planejamento, na programação existe uma

preocupação mais fina com a utilização dos recursos e com os detalhes do processo de

fabricação (ZATTAR, 2004).

Page 38: framework computacional para programação de produção de ...

22

Tabela 1 - Diferenças básicas entre os termos planejamento e programação.

Fonte: (ZATTAR, 2004)

Planejamento Programação

O que, quando e onde fazer. Encontrar data de início e fim para cada

operação

Trabalha com família de produtos ou outras

formas de agrupamento Detalhes de cada produto

Capacidades, taxas, restrições de inventário,

plantas e mão-de-obra

Sincronizar atividades/operações com

recursos

Planejamento sazonal Minimizar setup

Balanceamento de recursos Prioridades, restrições e conflitos.

Planejamento orçamentário Gerenciar mudanças

A diferença entre planejamento e programação também depende do nível de

detalhamento em que será realizado, quanto mais detalhes são definidos, utiliza-se o termo

programação e quanto menos o termo planejamento (Tabela 2).

Tabela 2 - Diferença entre os períodos de planejamento e programação.

Fonte: (FERNANDES;GODINHO-FILHO, 2010)

Nível Item considerado Período Considerado Horizonte usual

Planejamento

Agregado de Produção

Famílias de

produtos Mês

12 meses (vários

meses)

Planejamento

Desagregado Produto final Mês

12 meses (vários

meses)

Programação Mestre de

Produção

Produto final ou

módulo Semana Várias semanas

Programação em nível

de componentes e

materiais

Módulo ou

componente ou

matéria prima

Semana ou dia Algumas

semanas ou dias

Programação de

operações Operações Dia, turno ou hora.

Alguns dias ou

várias horas

Page 39: framework computacional para programação de produção de ...

23

Dependendo do produto a ser fabricado os termos curto prazo e longo prazo podem

expressar períodos diferentes, como por exemplo, na montagem de uma usina hidroelétrica e

na montagem de computadores (FERNANDES;GODINHO-FILHO, 2010).

2.1.9. Programação da produção

Dentro da programação da produção pode-se destacar três atividades básicas que são a

administração de estoques, a emissão e liberação de ordens, além do sequenciamento para o

qual este trabalho está dedicado.

A atividade de programação da produção inicia quando se tem as ordens de produção

geradas através do MRP, ou de outro sistema coordenador de ordens. O sistema coordenador

de ordens tem como objetivo determinar uma sequência para execução das operações e definir

quais recursos cada operação irá utilizar. Talvez pareça simples considerando um conjunto

pequeno de recursos e operações, não considerando a variação de oferta dos recursos em função

do tempo ou as datas de entrega prometida como também a dependência entre operações.

Quando são adicionadas tais características ou mesmo as combinações possíveis geradas por

um conjunto razoável de recursos e operações torna-se um problema cuja exploração por

algoritmos completos de busca exaustiva é praticamente impraticável, tratando-se de um

problema da classe NP-Difícil, o que significa que o tempo para encontrar a melhor solução

aumenta exponencialmente em função do tamanho do problema (ROSA, 2011).

Além das características do processo de fabricação e suas possibilidades combinatórias,

devem ser consideradas características da política de atendimento das ordens de produção da

empresa. Uma vez que os critérios que determinarão a sequência das operações podem variar

em função do posicionamento estratégico da empresa e da característica da demanda no instante

da programação.

O sequenciamento de produção também é encontrado na literatura como scheduling, o

qual pode ser definido como procedimentos para dinamicamente tomar decisões relacionando

as atividades com os recursos, de modo que as atividades sejam executadas pontualmente e com

alta qualidade bem como simultaneamente o volume de produção seja maximizado e os custos

operacionais minimizados (FERNANDES;GODINHO-FILHO, 2010).

O sequenciamento das operações trata de simular, dentro de um horizonte de tempo, o

início e término das tarefas para gerar um programa detalhado para cada ordem de produção

respectivamente para cada centro de trabalho, respeitando a disponibilidade de recurso.

(CHASE;JACOBS; AQUILANO, 2006).

Page 40: framework computacional para programação de produção de ...

24

Com base em uma programação detalhada, o gerente pode determinar o efeito de

mudanças de última hora gerenciar, eventos não planejados tais como a chegada de novas

ordens, quebras, manutenções e executar análise de alternativas de programação.

Chase, Jacobs e Aquilano (2006), citam importantes conceitos em relação à

programação da produção como segue:

Carregamento Infinito: a operação é passada ao recurso, verificando apenas o que é

necessário com o passar do tempo, sem uma verificação de se há realmente capacidade

suficiente para concluir os trabalhos;

Carregamento Finito: verifica exatamente o que será feito em cada recurso a cada

momento durante o dia de trabalho. Faz-se uma verificação detalhada da capacidade e das

restrições de disponibilidade do recurso;

Programação para frente (forward): a programação para frente o objetivo é programar

todas as operações de uma a ordem o mais breve possível para que a ordem seja concluída o

quanto antes;

Programação para trás(backward): programa a partir de uma data futura (por

exemplo, a data de entrega) todas as operações pela ordem inversa, indicando o início mais

tarde possível com os recursos disponíveis.

O scheduling de capacidade finita ou a programação de capacidade finita, pode ser

definido como a capacidade de gerir recursos escassos combinada com a demanda ou gerenciar

os processos produtivos sujeitos às restrições tecnológicas do ambiente para suprir a demanda

ajustando a produção aos volumes e tempo de execução das atividades

(GIROTTI;MESQUITA, 2011).

Outro conceito importante é o carregamento que consiste na atividade de selecionar com

quais recursos uma operação será executada. Visto desta forma teremos o carregamento em

cada recurso de quais operações deverão ser executadas e em que sequência, com início e fim

determinados.

O carregamento de ordens com suas respectivas operações em um sistema

computacional necessita de uma representação do conceito de operações e recursos como segue:

Weglaz et al. (2010) classificaram os recursos em duas categorias: recursos discretos e

contínuos. Recursos discretos possuem domínio discreto quando são conhecidos todos os

possíveis valores, enquanto no contínuo podem existir infinitos valores em um intervalo. Cada

tipo representa melhor um conjunto de recursos. Exemplos de recursos discretos são: máquinas,

ferramentas, enquanto recursos contínuos são energia, dinheiro, volume, etc.

Page 41: framework computacional para programação de produção de ...

25

Os mesmos autores definiram atividades/operações como caracterizadas pela

necessidade de recursos, dependência com outras operações, além de outros parâmetros

específicos do problema em estudo. A necessidade de recurso pode ser de recursos discretos,

contínuos ou ambos e os mesmos podem ser grupos de recursos onde cada grupo possui um

conjunto de tempos da necessidade do recurso.

Recurso: pode ser usado para definir máquinas ou mão-de-obra. Os processos podem

ser limitados pelas máquinas, pela mão-de-obra ou por ambos

(CHASE;JACOBS;AQUILANO, 2006)

Centro de trabalho: é uma área da empresa na qual recursos produtivos estão

organizados e o trabalho é completado. O centro de trabalho pode ser composto por uma única

máquina, um grupo de máquinas ou uma área onde se realiza um tipo de trabalho.

(CHASE;JACOBS;AQUILANO, 2006)

A maneira como os recursos podem ser utilizados também foram citados em Weglaz,

et al.(2010) e Ichihara (2002), uma vez que os recursos podem ser renováveis, ou seja,

novamente disponíveis após o uso ou não renováveis.

Os mesmos autores também citam a dependência ente operações, quando podem existir

diversas formas como: fim da primeira com início da segunda, fim da primeira com o fim da

segunda, início da primeira com início da segunda e fim da segunda com início da primeira. As

operações dependem de duas datas, de início possível e a data de entrega. Podem ser

adicionados a uma operação/atividade parâmetros como prioridade, custo, tempo de preparação

(setup) etc.

O sequenciamento das operações tem como principais objetivos a redução no tempo de

processamento, entrega no prazo, redução de makespan, redução de tempo e custo bem como a

utilização de recursos mais econômicos com menor tempo de preparação (setup).

Soluções específicas de software foram desenvolvidas para atender necessidades de

programação de produção. Estas soluções são encontradas no mercado com o nome de soluções

APS (Advanced Planning and Scheduling) ou FCS (Fine Capacity Scheduling) e serão tratadas

na próxima seção.

2.1.9.1. Programação avançada de produção

Programação avançada de produção ou APS (Advanced Planning and Scheduling)

surgiu no final dos anos 90 com um conjunto de ferramentas para permitir gerar cenários

Page 42: framework computacional para programação de produção de ...

26

diferentes com informações detalhadas dos recursos produtivos, gerando planos de execução

viáveis. Define-se como sistemas avançados de planejamento e programação todos aqueles que:

a) Consideram simultaneamente os recursos, materiais e a planta;

b) Utilizam algoritmos de otimização que incorporam as restrições e as metas do negócio;

c) São capazes de prover uma programação em tempo real com rápida geração de novas

mudanças;

d) Apresentam capacidade de simular cenários;

e) Auxiliam na tomada de decisão;

f) Realizam simulações do tipo “disponível para promessa” (avaliable-to-promise).

Para que as soluções APS possam fazer a programação da produção, são necessárias

algumas informações, como segue:

Centro de trabalho(recursos): com informações sobre turnos, manutenções,

horas extras, rendimento, etc.

Roteiros: operações com os tempos para produção com a sequência que devem

ser executadas. Deve fazer parte do roteiro restrições como limitação de quais recursos são

capazes de executar a operação, tempos de setup fixo, dependente de sequência, etc.

Ordens: são dados dinâmicos, ou seja, as ordens podem ser abertas e fechadas.

As ordens podem ser geradas pelos sistemas coordenadores de ordens, mas devem ao menos

possuir informações como: identificação da ordem, produto, quantidade, data de liberação, data

de entrega quantidade, prioridade e cliente. Devem ser adicionados também limites como início

e fim.

O resultado final será toda a definição de data de início e fim para todas as operações,

respeitando precedência no roteiro de produção e a disponibilidade dos recursos.

2.1.9.2. Técnicas de Sequenciamento

O sequenciamento de operações em recursos possui dois momentos distintos. No

primeiro momento define-se qual ordem deverá entrar primeiro no sistema e no segundo

momento define-se qual recurso será utilizado por cada operação. Estes dois momentos estão

ligados às políticas de atendimento e a melhor utilização dos recursos pela fábrica, ou como

citado por Tubino (2007), as decisões estão ligadas ao tempo de processamento (custo) e data

de entrega (atendimento ao cliente).

Page 43: framework computacional para programação de produção de ...

27

Diversas técnicas distintas podem ser utilizadas para o sequenciamento das operações,

iniciando pelos algoritmos completos, que gerariam todas as combinações possíveis. No

entanto, como comentado anteriormente, não gerariam solução em tempo computacional

viável, sendo aplicados apenas a problemas com pouca quantidade de recursos e operações.

Outra técnica utilizada é a pesquisa operacional (programação linear, inteira, grafos, etc)

que é viável matematicamente e podem ser desenvolvidas para soluções particulares. Contudo,

com a dinâmica da variabilidade dos sistemas produtivos, roteiros, recursos disponíveis, a

manutenção dos modelos torna-se difícil.

As regras de despacho pela sua simplicidade e bom desempenho em termos de tempo

computacional são as técnicas mais utilizadas mesmo não tendo a garantia de encontrar a

solução ótima.

Outro grupo de algoritmos que também é utilizado com frequência são os algoritmos

metaheurísticos. Estudos práticos demonstram boa chance de se obter soluções ótimas ou sub

ótimas em diversas classes de problemas (BRANCO;COELHO;MAYERLE, 2007) .

2.1.9.3. Variáveis do sistema produtivo

Dentro da programação de produção existem diversas variáveis que são utilizadas pelas

soluções APS (Advanced Planning and Scheduling) como parâmetros para a programação

(FERNANDES e GODINHO-FILHO, 2010). Seguem abaixo as principais variáveis utilizadas

pelas soluções APS:

a) Data de entrega: corresponde a data de entrega do produto ou conclusão da

operação;

b) Data de início mais cedo: corresponde a data mais cedo em que a ordem ou

operação poderá iniciar o processo de fabricação;

c) Quantidade total: quantidade total a ser produzida;

d) Tempo de setup: tempo de preparação;

e) Tempo de processamento/operação: tempo gasto para ser executada uma

operação;

f) Tempo de transporte: tempo gasto entre dois pontos, entre duas máquinas por

exemplo.

Page 44: framework computacional para programação de produção de ...

28

2.1.9.4. Medidas de Desempenho

As medidas de desempenho também conhecidas como critérios de desempenho, são

destacadas abaixo (MORAIS;MENEGARDE;CANTIERE, 2009 ; FERNANDES;GODINHO-

FILHO, 2010):

a) Makespan: tempo gasto para conclusão das operações programadas, ou seja, do

início da primeira operação ao fim da última operação. Também pode ser definido como o

tempo necessário para executar um conjunto de tarefas

(MORAIS;MENEGARDE;CANTIERE, 2009);

b) Número médio de operações/tarefas no sistema: quantidade de material em

produção, quantidade de operações dentro do sistema produtivo, o qual possui influência

direta no WIP (working in proocess);

c) Tempo de fluxo / Lead time de produção: tempo gasto da entrada em produção

ao término de todas as operações de uma ordem. É o somatório dos tempos de

processamento, de setup e de espera além do tempo de transporte;

d) Tempo de fluxo total: Soma do tempo de fluxo de todas as operações no sistema

e) Tempo médio de fluxo: média dos tempos de fluxo de conjunto de tarefas;

f) Tempo de atraso (tadiness): é o tempo entre o término de uma ordem de

produção e a data de entrega. Pode ser positivo ou negativo, se estiver em atraso será

positivo, se antecipado será negativo;

g) Utilização: porcentagem do uso de um recurso em um determinado período de

tempo;

h) Tempo de espera / tempo de fila: Tempo entre o término de uma operação e

início de outra, provocado por ocupação do segundo recurso, também encontrado na

literatura como tempo de fila no recurso;

i) Porcentagem de ordem entregue no prazo/antes e depois: Do total de ordens

atrasadas, qual o percentual será entrega no prazo, atrasado ou antecipado;

j) Tempo de setup: Tempo necessário para preparação dos recursos antes da

execução propriamente dita;

k) Custo de Preparação: custo gasto na preparação das tarefas;

l) Quantidade de clientes perdidos: Quantidade de clientes que deixaram de

comprar por motivos de atraso na entrega.

Page 45: framework computacional para programação de produção de ...

29

2.2. Fundamentação teórica das técnicas utilizadas

Nesta seção são abordados os tópicos relevantes das técnicas computacionais utilizadas

para a especificação do framework e as técnicas de busca e otimização utilizadas no

sequenciamento das operações.

2.2.1. Conceitos utilizados para construção do framework

Nesta seção são apresentadas as tecnologias de desenvolvimento de software e

orientação a objetos, modelagem através da linguagem UML concluindo com a definição e

características de um framework.

2.2.1.1. Orientação a objetos

O termo orientação a objetos refere-se à organização de programas de computador em

objetos discretos. O objetivo é aproximar a representação computacional o mais próximo da

realidade. O conceito de objeto é uma abstração ou simplificação do objeto real. Um objeto é

uma entidade que pode representar objetos concretos como carro, bola, cadeira, etc. Também

pode representar entidades conceituais como estratégia de jogo, política de escalonamento de

recursos, etc. (FERREIRA, 2005).

Um objeto possui uma identificação única e sua estrutura é representada por atributos

que representam as características daquele objeto como cor, tamanho, etc. O comportamento é

representado por um conjunto de operações que podem ser executadas sobre os atributos do

objeto.

Os objetos que possuem a mesma estrutura e comportamento são agrupados em uma

mesma classe. Um objeto é um instância de uma classe e cada objeto possui seu conjunto de

valores de seus atributos (BOOCH;JACOBSON;RUMBAUGH, 1999).

A separação dos aspectos internos do objeto com os externos, os quais podem ser

acessados por outros objetos, foi definida como encapsulamento. O encapsulamento é uma

forma que evita que o programa torne-se tão interdependente que uma pequena mudança tenha

grandes efeitos na aplicação. O encapsulamento permite que o objeto seja modificado

internamente sem afetar outros objetos que o utilizam.

Outro conceito fundamental do desenvolvimento de software orientado a objetos está

no conceito de herança, que permite que as classes sejam desenvolvidas em níveis de

Page 46: framework computacional para programação de produção de ...

30

especialização. A classe que herda de outra classe aproveita as definições de atributos e

operações. Como exemplo, pode-se citar uma classe com veículo de transporte, sendo

especializado em transporte terrestre, náutico ou aeronáutico, podendo ainda possuir mais

níveis de especialização como por exemplo, em veículos terrestres sendo especializados em

veículos de carga e passageiros e assim sucessivamente em função da necessidade e do objetivo

do software que está sendo desenvolvido (SILVA, 2000).

O último conceito fundamental do desenvolvimento de software orientado a objetos é o

conceito de polimorfismo, cuja palavra de origem grega significa: muitas formas. É

principalmente útil quando não se sabe que objeto será necessário, mas se conhece apenas a

“família”. Considerando o conceito de herança, portanto poderia se definir que será necessário

um veículo de transporte o que possibilita que seja instanciado qualquer objeto descendente

desta classe, flexibilizando o processo de desenvolvimento do software.

Outras características como a possibilidade de criação de classes abstratas, a

implementação de interfaces para classes e a herança de múltiplas classes podem ser

encontradas em (BOOCH;JACOBSON;RUMBAUGH, 1999) ou no site da OMG (Object

Management Group).

2.2.1.2. UML (Unified Modeling Language)

A linguagem UML nasceu da necessidade de uma notação padronizada para o

desenvolvimento de software orientado a objetos principalmente nas fases de levantamento de

requisitos, análise e design. Foi a junção de diversas técnicas de modelagem OMT(Object

Modeling Technique), Booch, entre outras, desenvolvida por Grady Booch, James Rumbaugh,

e Ivar Jacobson. Em 1997 foi submetida ao OMG (Object Management Group) a qual aprovou

e ficou responsável pelo desenvolvimento e padronização da linguagem.

A UML é um conjunto de notações gráficas que auxiliam a visualização, especificação,

construção e documentação de sistemas de software. Para novos sistemas a UML fornece

diversos diagramas para projetar software, permitindo verificar se o projeto está completo e

correto (BOOCH;JACOBSON;RUMBAUGH, 1999).

No total a UML possui treze diagramas que são classificados em estrutural e

comportamental. Dentre os treze diagramas será apresentado a seguir apenas parte do diagrama

de classe utilizado neste trabalho.

Page 47: framework computacional para programação de produção de ...

31

O diagrama de classes ilustra as especificações para as classes de software e de interface

de uma aplicação e contém as seguintes informações: classes (associações e atributos),

interfaces (com suas operações e constantes), métodos, informações do tipo do atributo.

Uma classe é a descrição de um tipo de objeto. Todos os objetos são instâncias de

classes, onde a classe descreve as propriedades e comportamentos daquele objeto. Usam-se

classes para classificar os objetos que são identificados no mundo real.

A representação gráfica em UML para uma classe possui três seções, sendo a primeira

com o nome da classe, a segunda com os atributos e a terceira com as operações relativas a

classe (Figura 4).

Figura 4 - Representação gráfica de uma classe.

Adaptado de: (BOOCH;JACOBSON;RUMBAUGH, 1999)

As classes possuem relações que podem ser de: associação, especializadas, dependência,

realização ou uso (BOOCH;JACOBSON;RUMBAUGH, 1999). Apenas os tipos de relação

utilizados no framework serão citados a seguir:

A diferença entre as relações de agregação e composição determinam no caso da

composição que não existe o todo sem a parte, ou seja no exemplo da Figura 5 os objetos

instanciados da classe Pedido não podem existir sem os objetos das classes Cliente e Itens do

Pedido. Diferente da relação existente entre as classes Assinatura e Desempenho onde os

objetos da classe Assinatura existem mesmo sem a existência de um objeto da classe

Desempenho.

Page 48: framework computacional para programação de produção de ...

32

Figura 5 - Agregação e composição de classes.

Adaptado de: (BOOCH;JACOBSON;RUMBAUGH, 1999)

A relação de herança exemplificada entre as classes da Figura 6, apresentam as classes

especializdas Texto Criptografado e Texto Sem Criptografia, ou seja, todas são classes

derivadas da classe Texto, portanto herdam os atributos Corpo e Posição como suas operações,

sendo que as classes derivadas tem sua implementação especializada para cada objetivo.

Figura 6 - Herança de Classes

Adaptado de: (BOOCH;JACOBSON;RUMBAUGH, 1999)

2.2.1.3. Framework

O framework conceitual é o resultado do processo qualitativo de teorização e pode ser

compreendido como uma rede de conceitos que juntos oferecem a compreensão abrangente de

um fenômeno. Em outras palavras pode ser entendido como uma rede de conceitos organizados

Page 49: framework computacional para programação de produção de ...

33

para representar entidades do mundo real. A seguir são apresentadas algumas características de

um framework (YOSEF, 2009):

Um framework conceitual não é apenas um conjunto de conceitos, mas uma

construção em que cada conceito tem seu papel integral;

Apresenta uma intepretação da realidade;

É indeterminista por natureza e, portanto, não permite prever um resultado;

Frameworks conceituais são criados sobre um determinado domínio e fornecem

uma compreensão da arquitetura de forma diferente de modelos quantitativos.

Para exemplificar o uso de frameworks conceituais, Yosef (2009) apresenta em seu

trabalho um framework para o desenvolvimento sustentável.

Outros frameworks conceituais são bastante utilizados na gestão empresarial. Como

exemplo pode-se citar os frameworks de arquitetura corporativa TOGAF e Zachman,

framework para análise de forças SWOT, frameworks de gestão e qualidade de dados DMBok,

para gerenciamento de projetos ágeis como Scrum, entre outros (IIBA, 2011;

CARVALHO;ABRANTES;CAMEIRA, 2011; DAMA, 2010).

O frequente uso do termo framework no Desenvolvimento de software segue os

princípios de orientação a objetos. Abaixo são citados algumas referências sobre framework.

Hautamäki (2005) propôs como definição para framework um esqueleto de

implementação de uma aplicação ou de um subsistema em um domínio de problema em

particular. É composto por classes concretas ou abstratas e define um modelo de interação ou

colaboração entre as instâncias de classes definidas pelo framework, citando a seguir as

principais vantagens do uso de framework.

Reusabilididade de código comum;

Armazenamento da experiência do desenvolvimento;

Distribuição de trabalho entre equipes;

Melhoria do ciclo de desenvolvimento de software;

Redução do trabalho de manutenção do software.

Hautamäki (2005) também cita os principais problemas com o uso de framework.

Dificuldade em criar framework reutilizável para domínios complexos;

Pode aumentar a curva de aprendizado;

Trabalho com múltiplos framework integrados podem ser muito difícil;

Aplicações com grande quantidade de manutenções podem ser complexos;

Page 50: framework computacional para programação de produção de ...

34

Validação e depuração de código é mais difícil;

Eficiência pode ser prejudicada;

Não existem padrões para a definição e documentação específicas para

framework.

Diferente de uma biblioteca de classes onde a relação entre as classes fica a cargo da

aplicação, em um framework já está definido o papel de relações entre as classes. Por outro lado

os framework são mais dependentes do domínio do problema (TALIGENT, 1994).

Framework oferece infraestrutura de projeto permitindo ao desenvolvedor reduzir o

esforço. As interconexões estabelecidas definem a arquitetura da aplicação. O desenvolvedor

faz uso do framework estendendo e moldando as suas necessidades específicas (DIAS, 2004).

Pode-se concluir que o objetivo do framework é desenvolver diferentes aplicações de

software para um domínio específico. Classes abstratas no framework é um repositório de

conceitos gerais para o domínio da aplicação. Em contexto do desenvolvimento de framework

pode se deixar propositalmente incompleto para que sua definição seja acabada no

desenvolvimento da aplicação (SILVA, 2000).

2.2.2. Algoritmos de busca e otimização

Nesta seção será apresentado os algoritmos de busca e otimização utilizados neste

trabalho.

2.2.2.1. CSP (Constraint Satisfaction Problem)

O CSP (Constraint Satisfaction Problem) é um sistema de busca onde se conhece os

estados possíveis com um conjunto de variáveis sob um determinado domínio (RUSSELL;

NORVIG, 2010). O CSP (Constraint Satisfaction Problem) pode ser considerado como o

estudo de sistemas computacionais baseados em restrições, tendo por fundamento resolver

problemas apenas especificando os requisitos (restrições) sobre a área problema ou, em outras

palavras, sobre os valores possíveis (domínio) das variáveis. A solução para o problema,

portanto, um conjunto de valores que atendam todos os requisitos (PEREIRA, 2011).

Um problema formulado como satisfação de restrições possui três componentes

principais: variáveis, domínios e restrições.

Page 51: framework computacional para programação de produção de ...

35

O domínio das variáveis pode ser classificado em discretos ou contínuos, ou seja, em

um domínio discreto são conhecidos todos os possíveis valores das variáveis, enquanto no

contínuo podem existir infinitos valores em um intervalo.

As restrições podem ser classificadas pela natureza e pelo número de argumentos.

Quanto à natureza as restrições podem ser absolutas, quando não podem ser violadas, ou

preferenciais que devem ser satisfeitas quando possível.

Em função do número de argumentos ou aridade, as restrições podem ser: unárias

quando possuírem apenas uma variável; binária quando possuírem duas variáveis ou n-árias,

sendo que as restrições com mais de uma variável são produtos cartesianos dos domínios.

Para Tsang (1993) e Russell e Norvig (2010) um problema com n variáveis, e restrições

d com a cardinalidade máxima de todos os conjuntos de domínio das variáveis apresenta

complexidade O(d n), ou seja o problema é de ordem exponencial para todas as soluções

possíveis. À medida que se introduz novas restrições ao problema, aumenta-se o espaço de

busca por uma solução, o que faz com que este problema aumente sua complexidade e o tempo

para encontrar a solução. Porém, o espaço de busca pode ser diminuído em função das restrições

impostas ao problema, ou seja, utiliza-se das próprias restrições para diminuir o espaço de

busca.

Para exemplificar um problema de satisfação de restrições será utilizado como exemplo

o problema de n rainhas, no qual serão posicionadas n rainhas em um tabuleiro de xadrez com

dimensões n x n de tal forma que as rainhas não se ataquem.

As rainhas se atacam se estiverem na mesma linha, na mesma coluna, ou na mesma

diagonal principal ou diagonal secundária. Cada rainha deve ser colocada em uma linha do

tabuleiro. O problema consiste em selecionar uma coluna para cada rainha, de forma que elas

não se ataquem. Uma forma de representação deste problema é associar para cada rainha dois

valores, sendo um para a linha e outro para a coluna, sendo ambas dentro do domínio válido de

inteiros positivos até n.

As restrições são as condições para que o problema seja considerado válido, ou seja, que

as rainhas não se ataquem. Para ilustrar (Figura 7) considera-se um tabuleiro 4 x 4 e os passos

para encontrar a primeira solução.

A cada passo ou iteração, em função das restrições, somente serão testadas as opções

válidas. As demais foram marcadas para demonstrar que a cada passo diminuem o espaço de

possibilidades de busca. Portanto, a cada atribuição de uma variável a restrição imposta ao

problema reduz o domínio das variáveis. Este é um exemplo da técnica de propagação de

Page 52: framework computacional para programação de produção de ...

36

restrições, também encontrada na literatura como técnica de consistência e filtro de domínio

(PEREIRA, 2011).

Para ilustrar o funcionamento da técnica de propagação de restrições, será

exemplificado em um algoritmo de busca que considera somente as alternativas válidas a cada

passo como pode ser observado na Figura 7.

Figura 7 - Exemplo das 4 rainhas com propagação das restrições.

Fonte: O autor

A cada novo passo do algoritmo ilustrado na Figura 8, resta apenas uma posição por

linha até todas as quatro rainhas estejam posicionadas, sendo então encontrada a primeira

solução válida.

Page 53: framework computacional para programação de produção de ...

37

Figura 8 - Exemplo da segunda tentativa do algoritmo.

Fonte: O autor

Para melhorar o desempenho da busca em problemas CSP (Constraint Satisfaction

Problem) podem ser utilizadas duas estratégias: ordenação das variáveis ou dos valores a serem

associados às variáveis, sendo que as mais comuns estão citadas na sequência:

a) Variável mais restritiva: variável envolvida no maior número de restrições é preferida;

b) Variável mais restringida: variável que pode assumir menos valores é preferida;

c) Valor menos restritivo: valor que deixa mais liberdade para futuras escolhas.

Também é possível em função da estrutura do problema, utilizar uma heurística

específica. Como exemplo, a heurística dos conflitos mínimos para o problema de n Rainhas

Page 54: framework computacional para programação de produção de ...

38

onde a sugestão da próxima tentativa é na linha e coluna que possua menor número de conflitos

(TSANG, 1993 ; RUSSELL e NORVIG, 2010).

CSP (Constraint Satisfaction Problem) também pode ser modelado por meio de grafo

de restrições, formando uma rede onde as variáveis de decisão são representadas pelos vértices

e as restrições pelas arestas, que permite a utilização das ferramentas para manipulação de

grafos.

Dentre as principais formas de busca em restrições modeladas através de grafos

podemos citar: consistência de nó, consistência de arco e consistência de caminho. Todos com

o mesmo objetivo de minimizar o retrocesso do algoritmo por não ter encontrado a solução pelo

caminho selecionado inicialmente (BRUCKER, 2002)

Também pode ser encontrada na literatura alternativa para resolução de problemas de

satisfação de restrições como o particionamento do problema, denominado DCSP (Distributed

Constraint Satisfaction Problem), cujo principal objetivo é permitir o processamento em

paralelo e distribuído das restrições e com a possibilidade do uso de agentes inteligentes

(PEREIRA, 2006 ; GIACOMET, 2010).

Outra característica importante é a facilidade em modelar o problema, uma vez que se

podem adicionar restrições independentemente de como será a solução do problema. Também

difere de outros tipos de busca, por que não interessa qual o caminho para encontrar a solução,

mas se encontrou uma solução que satisfaça as restrições (RUSSELL;NORVIG, 2010).

Problemas reais também foram observados no trabalho de (FRAMINAN;RUIZ, 2010)

com o uso de CSP (Constraint Satisfaction Problem).

Zeballon (2010) descreveu em seu trabalho a aplicação do uso de restrições para a

programação de produção. Além do detalhamento dos tipos de restrições o autor argumenta

sobre a facilidade de modelar problemas reais, pois durante o desenvolvimento do modelo não

é necessário ter a preocupação com qual tipo de solução.

2.2.2.2. Regras de liberação

A decisão de qual operação será processada em que recurso, bem como a sequência em

que estas operações serão processadas, gerou espaço para a criação de regras de liberação,

também encontrada na literatura como regras de despacho. Diversos autores estudaram e

publicaram dezenas de regras com objetivos e resultados diferentes, ou seja, cada regra de

Page 55: framework computacional para programação de produção de ...

39

liberação tem um objetivo específico (BROWNING;YASSINE, 2010;

TURATTI;MARCANTONIO, 2009).

As regras de liberação podem ser classificadas em regras estáticas ou dinâmicas. Nas

regras estáticas a ordem das operações não é alterada durante a programação, enquanto as regras

dinâmicas acompanham as alterações mudando dinamicamente sua posição.

Outra forma de classificação das regras de liberação são regras locais ou globais. As

regras globais consideram informações de toda a programação e as locais apenas a fila de

trabalho do recurso.

As regras de liberação também podem ser classificadas em função da complexidade em

três grupos: regras simples, com índices ponderados e regras de heurísticas sofisticadas. As

regras simples utilizam apenas informações do trabalho a ser executado como data de entrega,

tempo de folga restante, tempo de processamento restante, etc. As regras de índice ponderado

utilizam pesos para diferentes regras simples, formando um índice composto que define a

prioridade. Por fim, as regras heurísticas sofisticadas não utilizam somente informações do

trabalho a ser executando, mas também pode utilizar informações de gargalos, rotas

alternativas, etc.

Turatti e Marcantonio (2009) propuseram a criação de regras que utilizam em seus

índices ponderados informações econômicas e financeiras, como algumas citadas a seguir:

a) Data de entrega e cliente ou mercado consumidor;

b) Data de entrega e valor da ordem de produção.

c) Data de entrega e margem de contribuição da ordem;

d) Data de entrega e potencial de geração de caixa em curto prazo;

e) Data de entrega e produtos que estejam disponíveis em estoque

As principais regras simples utilizadas podem ser observadas na Tabela 3.

Page 56: framework computacional para programação de produção de ...

40

Tabela 3 - Regras de liberação.

Fonte: (TUBINO, 2007)

Sigla Especificação Definição

PEPS

/

FCFS

Primeira que entra

primeira que sai / First

Come, First Served

Os lotes são processados de acordo com sua chegada

ao recurso

MTP /

STP

Menor tempo de

processamento / Shortest

Processing Time

Os lotes são processados de acordo com os menores

tempos de processamento no recurso.

MDE

/ EDD

Menor data de entrega /

Earliest Due Date

Os lotes serão processados de acordo com as menores

datas de entrega

IPI Índice de Prioridade Os lotes são processados de acordo com a prioridade

atribuída ao cliente ou ao produto

ICR /

CR

Índice Crítico (Razão

Critica) / Critical Ratio

Os lotes serão processados de acordo com o menor

valor de:(data de entrega - data atual) /tempo de

processamento

RF e

RMC

Razão do Faturamento e

Razão da Margem de

Contribuição

Os lotes serão processados de acordo com o menor

valor de:(Valor Faturamento ou Valor Margem de

Contribuição) /tempo de processamento

IFO Índice de folga

Os lotes serão processados de acordo com o menor

valor de: (data de entrega - ∑ tempo restante de

processamento) /Número de operações restante

IFA Índice de falta Os lotes serão processados de acordo com o menor

valor de: quantidade de estoque / taxa de demanda

As regras de heurísticas sofisticadas podem ser encontradas com diversos objetivos,

como segue:

Regra de minimização de WIP (Work in Process) : Tem como objetivo a redução do

intervalo de tempo entre as operações, reduzindo o tempo de espera e consequentemente a

quantidade de material em processo.

A Figura 9 mostra o sequenciamento da ordem A e posteriormente a ordem B. Observa-

se que existe uma espera entre as operações B-20 e B-30, aguardando a disponibilidade do

recurso R3.

Page 57: framework computacional para programação de produção de ...

41

Figura 9 - Exemplo de programação para frente.

Fonte: O autor

Após a programação para frente, a ordem B encontra a data mais cedo em que pode ser

concluída. A partir desta data faz a programação para trás, sendo que no pior caso vai encontrar

o mesmo início para cada operação ou conseguir uma redução do tempo de espera (Figura 10).

Figura 10 - Exemplo do ajuste com programação para trás.

Fonte: O autor

Page 58: framework computacional para programação de produção de ...

42

Esta mesma regra pode ser adotada ao inverso, quando se programa para trás e após

encontrar o início mais cedo, faz-se a programação para frente.

Regra de carregamento paralelo: Tem como objetivo a melhor utilização dos recursos

e minimização de makespan.

Diferente da maioria das regras, quando se cria um índice e faz o sequenciamento de

todas as operações de uma ordem de uma só vez. A regra de carregamento paralelo realiza o

sequenciamento de todas as operações respeitando o índice, mas alocando as operações que

podem ocupar o recurso o quanto antes, ou seja, a ocupação do recurso é preferida em relação

à prioridade da ordem.

Pode-se observar na Figura 11 que as ordens A, B e C foram sequenciadas ordem após

ordem e o recurso R2 somente iniciou a primeira operação após as 8 horas.

Figura 11 - Sequenciamento por ordem.

Fonte: O autor

O objetivo do carregamento paralelo é manter os recursos ocupados, portanto, permite

o sequenciamento da operação B-10 mesmo possuindo uma prioridade menor que a operação

A-20, como pode ser observada na Figura 12.

Page 59: framework computacional para programação de produção de ...

43

Figura 12 - Sequenciamento por Operação.

Fonte: O autor

Outros trabalhos como o proposto por Xu & Xu & Xie (2011) sugere o uso de

Algoritmos Genéticos ou rede neural artificial para predefinir a melhor sequência. A regra será

definida pelo resultado do Algoritmo Genético ou da rede neural artificial. Outra proposta

encontrada é o uso de regras combinadas dinamicamente que conforme variam os indicadores

de performance global do sistema, as regras irão variar de um critério para outro, por exemplo

de setup para prazo de entrega, em função da melhora ou piora destes indicadores.

2.2.2.3. Algoritmo Genético

O Algoritmo Genético consiste em um método de busca e otimização, baseado no

princípio da seleção e evolução das espécies proposto por Charles Darwin. O algoritmo

proposto por Holland na década de 70 utilizou de forma análoga os conceitos da biologia, como

a sobrevivência dos mais aptos e a troca de informações de forma estruturada. Holland definiu

como representação do indivíduo um conjunto de alelos representados por uma sequência de

números zeros e uns, conforme pode ser observado na Figura 13 (ROSA, 2011).

Page 60: framework computacional para programação de produção de ...

44

Figura 13 - Representação de um indivíduo.

Fonte: (ROSA, 2011)

Para melhor elucidar seguem abaixo os principais termos utilizados em Algoritmos

Genéticos:

a) Cromossomo ou Indivíduo: formado por uma cadeia de caracteres representa

alguma informação. Cada indivíduo representa um modo de solução do problema;

b) Genes ou variáveis: é a unidade básica do indivíduo, representa o valor da variável;

c) População: Conjunto de indivíduos ou soluções;

d) Operações genéticas ou operadores genéticos: Operações que o Algoritmo

Genético realiza sobre os indivíduos;

e) Região Factível: É o conjunto, espaço ou região que compreende as soluções

possíveis do problema. É expresso por restrições que definem as soluções factíveis;

f) Função Objetivo: É a função que contém informações sobre o desempenho de cada

indivíduo na população. Nesta função são expressas as características do problema

que o Algoritmo Genético necessita para realizar seu objetivo.

A população inicial de indivíduos é na maioria das vezes gerada de forma aleatória. No

entanto, existem situações que pode ser mais vantajoso utilizar como população inicial outros

métodos, como por exemplo, o resultado de uma busca heurística.

Os indivíduos são avaliados por uma função chamada fitness na qual o indivíduo mais

apto tem os melhores valores (função objetivo), seja de maximização ou minimização. Sobre a

população são aplicados dois operadores, cruzamento (Crossover) e mutação (Mutation). Após

a aplicação dos operadores é realizada novamente a função fitness, onde será selecionada apenas

uma parte de toda a população restante para a nova geração. Desta forma a cada geração deve

Page 61: framework computacional para programação de produção de ...

45

haver uma população (soluções) mais próxima do objetivo ou das melhores soluções. O

algoritmo pode parar quando atingir um número de gerações, duração de tempo em

processamento ou ter atingido um determinado objetivo conforme ilustrado na Figura 14

(ARAUJO, LIBRANTZ e ALVES, 2007).

Figura 14 - Esquema de funcionamento do Algoritmo Genético.

Fonte (ARAUJO, LIBRANTZ e ALVES, 2007)

Dependendo do problema podem existir diversas formas de se fazer o cruzamento e a

mutação (VIANNA;FRANCO;VIANNA, 2010).

A Figura 15 ilustra a forma de corte único, onde é gerada uma posição de corte aleatória

sendo que a parte inicial dos cromossomos do primeiro indivíduo será somado às partes finais

do segundo indivíduo formando um novo indivíduo filho. A operação oposta, ou seja, parte

inicial do segundo indivíduo somada à segunda parte do primeiro indivíduo irá formar outro

indivíduo filho. Após este processo de cruzamento e aplicação do operador de mutação, serão

adicionados à população e avaliados pela função fitness.

Também são encontradas diversas estratégias para determinar qual indivíduo será

cruzado com qual, podendo-se optar por utilizar estratégia aleatória ou, por exemplo, o

cruzamento dos melhores indivíduos (CASTRO, 2001).

Page 62: framework computacional para programação de produção de ...

46

Figura 15 - Esquema de cruzamento com um corte aleatório.

Fonte: (ARAUJO;LIBRANTZ;ALVES, 2007)

Outro operador importante é o de mutação que consiste na troca aleatória de alelos de

um percentual dos indivíduos também chamado de taxa de mutação. Este mecanismo tem com

objetivo diminuir a chance de parar em mínimos locais, garantindo a diversidade dos indivíduos

(CASTRO, 2001). A Figura 16 apresenta um exemplo de mutação de apenas um gene, sendo

que a quantidade de genes a serem trocados será em função da taxa de mutação.

Figura 16 - Funcionamento da mutação de um gene em um indivíduo.

Fonte: (ARAUJO, LIBRANTZ e ALVES, 2007)

Page 63: framework computacional para programação de produção de ...

47

3. MATERIAIS E MÉTODOS

Nas próximas seções serão apresentadas as entidades do framework, os métodos de

sequenciamento o relacionamento entre entidades, concluindo com as regras de programação.

3.1. Horizonte de programação

Deve-se considerar que o período de programação de curto prazo está associado ao

leadtime de fabricação e ao período de ordens de produção liberadas. Pode se usar o maior

leadtime de produção somado alguns dias de folga, por exemplo, 30 dias. Este período tem que

ser suficientemente grande para atender a programação de curto prazo, mas não pode exceder

muito por ter impacto direto no tempo computacional para a programação das operações. O

desenvolvimento do framework utilizará o horizonte de programação total como limite

máximo, sendo que a partir deste, não se considera mais como factível a solução.

3.2. Entidades

A capacidade produtiva da empresa pode ser representada pela disponibilidade de

recursos produtivos (máquinas, operadores, ferramentas, materiais, energia, etc.). Para o

framework proposto os recursos foram divididos em recursos discretos e recursos contínuos,

utilizando cada qual para representar melhor algum tipo de recurso (WEGLAZ et al., 2010).

O recurso discreto possui sua disponibilidade com a variação da eficiência em função

do tempo, ou seja, conforme muda o período, poderá ou não estar disponível com eficiência

diferente. Por exemplo: suponha uma empresa que possui seus recursos disponíveis a uma

eficiência produtiva de 100% durante o horário das 8h00 às 12h00, indisponível das 12h00 às

13h00, em função do horário de almoço, ou seja eficiência de 0%, retomando das 13h00 às

17h00 a eficiência de 100%. Mas somente de segunda a sexta feira, exceto feriados. Pode-se

concluir que os recursos discretos têm sua disponibilidade somente das 8h00 às 12h00 e das

13h00 às 17h00, ou seja, 8 horas por dia, conforme pode ser observado na Figura 17. Outra

informação é que poderia executar múltiplas operações simultaneamente. Para restringir apenas

uma operação durante determinado período, deverá ser adicionada nova restrição ROA

(Restrição de Operação Alocada), que será tratada no decorrer deste trabalho.

Page 64: framework computacional para programação de produção de ...

48

Figura 17 - Exemplo de variação de eficiência em recursos discretos.

Fonte: O autor

Nos recursos contínuos a disponibilidade varia em função dos limites inferior e superior

e em função do tempo. Na Figura 18 pode ser observado que foram considerados como

exemplo, três funcionários disponíveis das 08h00 às 12h00 e das 13h00 às 17h00. Quando uma

operação ou um recurso adicionar (soma), por exemplo, dois funcionários, caso uma segunda

operação necessite também de dois funcionários deverá esperar o término da operação e a

respectiva devolução (subtração) dos funcionários. O modo como serão utilizados os recursos

discretos pode ser observado na Tabela 4.

Figura 18 - Exemplo da variação de máximos e mínimos em recursos contínuos.

Fonte: O autor

Page 65: framework computacional para programação de produção de ...

49

Tabela 4 - Formas de utilização dos recursos contínuos.

Fonte: O autor

Tipo de uso Descrição

Adicionar ao início setup Incrementa o valor imediatamente ao início do setup

Reduzir ao início de setup Decrementa o valor imediatamente ao início do setup

Adicionar somente durante setup Incrementa o valor ao início do setup e decrementa

ao término do setup

Reduzir somente durante setup Decrementa o valor no início do setup e decrementa

ao término do setup

Incrementar durante setup Faz o ajuste incremental do início do setup,

concluindo ao final do setup com a adição do valor.

Decrementar durante setup Faz o ajuste no início do setup, concluindo ao final

com a redução do valor.

Adicionar ao início da operação Incrementa o valor imediatamente ao início da

operação e fim do setup

Reduzir ao início da operação Decrementa o valor imediatamente ao início da

operação e fim do setup

Adicionar ao término da

operação Incrementa o valor ao término da operação

Reduzir ao término da operação Decrementa o valor ao término da operação

Adicionar somente durante

operação

Incrementa o valor ao início da operação e

decrementa ao término da operação

Reduzir somente durante

operação

Decrementa o valor ao início da operação e

decrementa ao término da operação

Incrementar durante operação

Faz o ajuste incremental do início da operação,

concluindo ao final da operação com a adição do

valor.

Decrementar durante operação Faz o ajuste no início da operação, concluindo ao

final da operação com a redução do valor.

Page 66: framework computacional para programação de produção de ...

50

3.3. Restrições

As restrições são entidades que limitam, condicionam ou impedem a execução de uma

operação. Devemos estudar todas as restrições para que durante o processo de modelagem

possamos utilizar as que melhor representarem as características do processo, ressaltando que

as restrições somente podem ser associadas a operações e recursos. Todas as restrições do

framework serão absolutas, ou seja, todas devem ser satisfeitas para que seja considerada válida

a solução. Segue abaixo a relação de restrições com suas respectivas características:

a) RRD (Recurso Discreto): Esta restrição valida um conjunto de recursos discretos

utilizando um método de escolha conforme serão citados posteriormente, retornando

apenas um recurso válido para a restrição. Caso sejam necessários dois recursos

simultâneos para a mesma operação, deve-se adicionar outra restrição deste tipo.

b) RRC (Recurso Contínuo):Na restrição de recurso contínuo, deve-se além do método de

escolha do recurso, que é o mesmo utilizado em recursos discretos, informar quais

recursos irão participar do processo de escolha, pois somente um recurso válido

contínuo será definido por restrição. Caso deseje mais de um recurso válido contínuo

definido, deverá adicionar uma nova restrição com os respectivos recursos contínuos.

Para adicionar um recurso contínuo será necessário informar uma quantidade e o método

de uso conforme apresentado na Tabela 4.

c) RPC (Propriedade de Conferência): Esta restrição somente aceita operações ao mesmo

tempo em um recurso, caso possuam uma propriedade idêntica. Utilizada quando se

quer garantir em um recurso de uso compartilhado somente operações que possuam

simultaneamente o mesmo tipo de material, cor, ciclo, etc.

d) RIMC (Início mais cedo): Esta restrição define uma data mínima para o início da

operação.

e) RFMT (Fim mais tarde): Esta restrição define uma data máxima para o término da

operação.

f) RDP (Dependência entre operações): Para que esta operação seja alocada a operação

antecessora deverá estar devidamente alocada, respeitando todos os parâmetros da

mesma.

g) ROA (Operação Alocada): Esta restrição garante que apenas uma operação por vez

possa ser alocada em um recurso, ou seja, garante uso exclusivo do recurso durante o

processamento da operação, também é possível informar recursos adjacentes que são

Page 67: framework computacional para programação de produção de ...

51

influenciados pelo uso do recurso especificado e não podem estar em operação

simultaneamente.

3.4. Métodos de escolha do recurso

As restrições que utilizam recursos RRD e RRC, possui um método de escolha para

quando possuírem mais de um recurso capaz de executar a operação, a escolha de qual será o

recurso eleito depende do método escolhido, os quais seguem.

a) Disponível primeiro: Dentre todos os recursos definidos na restrição o que estiver

disponível para executar a operação o mais breve possível, será o recurso eleito;

b) Terminar primeiro: Dentre todos os recursos definidos na restrição o que terminar a

operação o mais breve possível, será o recurso eleito;

c) Menor Custo: Dentre todos os recursos definidos na restrição, independente do início

ou término da operação, o que consumir menos recursos financeiros será o recurso

eleito;

d) Menor Tempo de Processamento: Dentre todos os recursos definidos na restrição, o

recurso em que a duração total da operação for menor, será o recurso eleito;

e) Menor Tempo de Preparação(setup): Dentre todos os recursos definidos na restrição,

o recurso em que o tempo de preparação(setup) for menor, será o recurso eleito.

3.5. Resolução das restrições

O método para atender as restrições foi baseado em CSP (Constraint Satisfaction

Problem) onde conforme já citado são necessários três componentes principais para modelagem

de um problema que estão definidas abaixo:

a) Variável: Data e hora em que todas as restrições são atendidas;

b) Domínio: Início ao fim da programação (horizonte de programação);

c) Restrições: Adicionadas a operações e recursos conforme citadas anteriormente.

A Figura 19 ilustra o espaço de busca que tem seu início a partir da data e hora atuais,

até uma determinada data e hora definida como horizonte de programação. A programação para

frente inicia a busca a partir da data e hora atuais até o fim máximo (horizonte de programação).

A programação para trás tem seu início a partir de uma data de entrega retroagindo até a data e

hora atuais.

Page 68: framework computacional para programação de produção de ...

52

As restrições foram ordenadas pela complexidade, pois cada restrição tem um

funcionamento diferente e pode diminuir o espaço de busca mais rapidamente, com economia

de tempo computacional. Por exemplo, uma restrição de RIMC (Restrição de início mais cedo)

definida, por exemplo, pela data da disponibilidade de insumos é mais simples de ser analisada

do que os turnos de trabalho de um determinado recurso.

No primeiro grupo estão as restrições de baixa complexidade, RIMC, RFMT, RDD,

ROA, RPC. O segundo grupo com recursos discretos (RRD) e o terceiro com recurso contínuo

(RRC).

São validadas as restrições do primeiro grupo e somente se todas estiverem válidas é

que será válida a restrição do segundo grupo e assim até o terceiro grupo de restrições.

Figura 19- Horizonte de programação.

Fonte: o autor

Os métodos de sequenciamento podem ser aplicados em ordens e operações.

Dependendo das regras de programação eles utilizam um ou outro, ou até mesmo ambos de

forma combinada.

No método de sequenciamento para frente verifica-se se todas as restrições podem ser

atendidas o mais breve possível. Caso exista alguma que não atenda, utiliza-se o início mais

tarde da restrição que violou e que esteja disponível como sugestão para nova tentativa, então

verifica-se novamente com todas as restrições, até que todas sejam atendidas ao mesmo tempo

ou ultrapasse o horizonte de programação, quando será considerada como uma programação

fora da área de busca.

Page 69: framework computacional para programação de produção de ...

53

No método de sequenciamento para trás uma operação valida todas restrições o mais

tarde possível (data de entrega). Caso alguma restrição seja violada, utiliza-se o término mais

cedo da restrição que violou, então verifica se novamente todas as restrições até que todas sejam

atendidas no mesmo término, ou a data e hora atual sejam ultrapassadas, sendo considerada

como uma programação fora da área de busca.

A Figura 20 apresenta um esquema de uma operação com suas respectivas restrições. A

restrição de dependência por exemplo, irá verificar o fim da operação antecessora, a restrição

de recurso discreto irá verificar dentro da lista de recursos discretos da restrição.

Após o processo de alocação é possível extrair uma série de informações como por

exemplo, qual recurso foi escolhido, a duração do setup e da operação com seus respectivos

com início e término, além do tempo de espera para conseguir um recurso.

Figura 20 - Esquema de representação gráfica de uma operação.

Fonte: O autor

A alocação de um recurso pode ser representada de forma diferente para recursos

discretos e contínuos. Para o recurso discreto a melhor representação é o gráfico de Gantt que

pode ser observado na Figura 21 no eixo vertical estão os recursos e no eixo horizontal o tempo.

Page 70: framework computacional para programação de produção de ...

54

As operações são representadas por uma barra que ocupa no eixo vertical um recurso e no

horizontal sua duração.

Figura 21 - Representação gráfica da alocação de um recurso discreto.

Fonte: O autor

Para o recurso contínuo a melhor representação gráfica são três gráficos combinados,

sendo que dois de linha representam os limites inferiores e superiores em função do tempo e

um gráfico de área que representa a área ocupada dentro dos limites inferiores e superiores

como pode ser observado na Figura 22.

Figura 22 - Representação gráfica do uso de um recurso contínuo.

Fonte: O autor

Page 71: framework computacional para programação de produção de ...

55

Quando o método é chamado em uma ordem seja para frente ou para trás, o mesmo

aplica o método em todas as operações, relacionadas a respectiva ordem.

3.6. Exemplo de funcionamento

Para elucidar o funcionamento será utilizado como exemplo a inserção de uma nova

operação utilizando do método de programação para frente sem parâmetros iniciais.

A operação a ser alocada possui duas restrições sendo RIMC (Restrição de Início Mais

Cedo), que foi informada pelo sistema coordenador de ordens, contendo a data de

disponibilidade de matéria-prima, que para este exemplo será as 8 horas. E uma segunda

restrição RDD (Restrição de recurso discreto), com necessidade de 1 hora de setup e 2 horas de

processamento exclusivamente no recurso R1.

O recuso R1 possui uma restrição ROA (Restrição de Operação Alocada), fazendo com

que não aceite operações simultâneas no mesmo recurso.

A Figura 23 apresenta o estágio atual da programação, contendo apenas uma operação

já alocada no sistema.

Figura 23- Exemplo de Alocação -Estágio atual da programação.

Fonte: O autor

A Figura 24 apresenta os passos de validação das restrições de operações e recursos.

Page 72: framework computacional para programação de produção de ...

56

Figura 24 - Fluxo de validação das restrições.

Fonte: O autor

A Figura 25 apresenta o resultado do sequenciamento da operação B-10, após validar

todas as restrições da operação e dos recursos relacionados, concluindo com a programação da

operação iniciando as 10:00 horas.

Page 73: framework computacional para programação de produção de ...

57

Figura 25 - Exemplo da alocação de uma operação.

Fonte: O autor

O exemplo citado demonstra que a variável contendo a data e hora válida avança em

função das restrições, como existe um limitador de tempo que é o horizonte de programação

todo avanço da data e hora é na verdade uma diminuição do espaço de busca.

Outra forma seria a passagem de parâmetros iniciais com a interação humana, onde o

operador do software especifica a partir de que momento a operação poderia ser programada,

utilizando-se, por exemplo, do recurso de arrastar e soltar a operação no gráfico, sendo que a

partir daquele ponto seria chamado o método de programação para frente, com parâmetro a data

e hora da posição do mouse no gráfico de Gantt.

As restrições também foram agrupadas em restrições exclusivas para recursos (ROA),

exclusiva para operações (RDO) e disponíveis para recursos e operações (RIMC, RFMT, RPC,

RRD e RRC).

3.7. Diagrama de classes

As entidades e métodos de sequenciamento citados neste trabalho são apresentados em

um diagrama de classes em UML(Unified Modeling Language) que representa a agregação de

restrições em recursos ou operações. As restrições são especializadas em diversos tipos, sendo

que cada tipo de restrição tem seu próprio objetivo, e as restrições RRC e RRD são compostas

Page 74: framework computacional para programação de produção de ...

58

por um ou mais recursos dependendo da necessidade. Os recursos são especializados em

discretos e contínuos e as ordens compostas por um conjunto de operações.

Neste contexto, podem-se criar novos tipos de restrição caso sejam necessários e sua

agregação também ocorre de forma dinâmica, o que facilita a modelagem de problemas a partir

de componentes razoavelmente simples como pode ser observado na Figura 26.

Figura 26 - Diagrama de Classes do Framework proposto.

Fonte: O autor

Na seção seguinte veremos como manipular estas entidades, criando regras de

programação que atenda aos objetivos da empresa.

3.8. Sequenciamento das ordens e operações

Para o framework foram utilizadas regras de liberação e a técnica Algoritmos Genéticos

como forma de demonstrar sua aplicação.

Page 75: framework computacional para programação de produção de ...

59

3.8.1. Regras de liberação

As regras de liberação determinam qual o critério de escolha das ordens ou operações

vão disputar os recursos da fábrica. As regras de liberação seguem normalmente as políticas de

atendimento das ordens definidas pela empresa, ressaltando que podem ser utilizadas diversas

regras de sequenciamento sobre um mesmo ambiente a fim de se obter a melhor programação

para a empresa naquele momento. Como citado anteriormente existe na literatura uma grande

quantidade de regras de liberação e que podem ser adotadas pelo framework. Para exemplificar

serão apresentadas a seguir algumas regras de liberação e sua utilização com as entidades do

framework.

De modo geral as regras baseadas em ordens de produção seguem o mesmo

funcionamento, ordenando as ordens por um determinado critério e faz sua alocação de todas

as operações desta ordem, conforme o método de sequenciamento escolhido (para frente ou

para trás).

As regras baseadas em operações também ordenam as ordens por um critério, mas a

alocação das operações nos recursos pode acontecer mesmo que a ordem anterior não tenha

sido totalmente programada.

Outra possibilidade é a simulação de algumas ordens de produção ou operações para

que se possa criar os indicadores para a programação final, conhecidas como regras dinâmicas.

No framework pode ser utilizado qualquer um dos tipos de regras de sequenciamento

citados, bastando apenas que a regra chame o método da respectiva classe de ordem ou

operação, conforme as regras exemplo abaixo:

As regras estáticas que utilizam as informações da ordem seguem de forma geral o

mesmo mecanismo da regra MDT (Menor data de Entrega) conforme o exemplo da Figura 27:

Figura 27 - Fluxo da regra de liberação MDT.

Fonte: O autor

Page 76: framework computacional para programação de produção de ...

60

Também podem ser desenvolvidas regras dinâmicas como as regras de carregamento

paralelo apresentado na Figura 28.

Figura 28 - Fluxo da regra de carregamento paralelo.

Fonte: O autor

3.8.2. Algoritmo Genético utilizado

A representação do indivíduo bem como os operadores de cruzamento e mutação poder

ser adaptados em função do problema abordado para que possa alcançar resultados mais

rapidamente (VIANNA;FRANCO;VIANNA, 2010).

Nos últimos anos foram propostos diversos métodos, nos quais a representação do

indivíduo através de uma sequência de zeros e uns que pode dificultar a implementação em

alguns casos específicos. Para este trabalho, foi adotada como representação do indivíduo uma

sequência de inteiros.

O operador de cruzamento, desenvolvido neste trabalho foi baseado nos métodos OX

(Order Crossover) e CX(Cylcle Crossover) citados por Abdoun e Abouchabaka (2011) e por

Branco, Coelho e Mayerle (2007).

As técnicas de mutação também foram adaptadas e baseadas no RSM (Reverse

Sequence Mutation) também citado por Abdoun e Abouchabaka (2011).

Page 77: framework computacional para programação de produção de ...

61

Para exemplificar as técnicas de cruzamento e mutação adotadas neste trabalho, pode-

se observar na Figura 29 uma sequência aleatória gerada contendo valores de 1 a 10, que

representam as operações existentes no sistema, sendo que cada operação recebeu um número

único.

Uma sequência de operações representa uma solução possível que será alocada através

do método de sequenciamento para frente operação por operação.

Para reduzir a chance de criar-se uma sequência inválida, toda sequência gerada

aleatoriamente ou através dos operadores de cruzamento e mutação são previamente validadas

pela restrição RDO (dependência entre operações).

A população pode ser gerada por sequências aleatórias ou a partir do resultado de regras

de liberação. Caso a quantidade de indivíduos gerada pelas regras de liberação não seja

suficiente para toda população, a mesma será completada por sequências geradas

aleatoriamente.

Figura 29 - Representação de indivíduo.

Fonte: O autor

O operador de cruzamento pode ser observado na Figura 30. Foram selecionados dois

indivíduos (A e B). São sorteados aleatoriamente dois pontos de corte. Os filhos gerados

(indivíduos C e D) pelo cruzamento recebem os primeiros genes do primeiro indivíduo e são

completados com os genes do segundo indivíduo, garantindo que não existam números

repetidos ou faltantes e a dependência entre operações definida na restrição RDO seja

respeitada.

Page 78: framework computacional para programação de produção de ...

62

Figura 30 - Exemplo de cruzamento.

Fonte: O autor

O operador de mutação, como pode ser observado na Figura 31, seleciona um ponto

aleatório de um indivíduo.

A probabilidade de mutação será convertida em quantidade de operações trocadas.

A mutação será a troca de posição da operação entre duas listas sendo uma contendo as

operações que irão trocar de posição e a segunda contendo o restante de operações que será

mantido, alternando se um gene por lista até o término da lista de genes a ser trocado de posição.

Cabe ressaltar que durante o processo de mutação, a sequência válida pela restrição

RDD deve ser garantida.

Figura 31 - Exemplo de mutação.

Fonte: O autor

Para o processo de seleção dos indivíduos, será feito o sequenciamento utilizando o

método de sequenciamento para frente de todas as operações do indivíduo. São coletadas

informações da programação de cada indivíduo como makespan, leadtime acumulado, atraso

total, tempo de setup total, tempo em operação total, tempo em espera total.

Page 79: framework computacional para programação de produção de ...

63

Estes indicadores têm valores em escalas diferentes e devem ser normalizados Após a

normalização o índice de cada indicador será multiplicado pelo peso informado pelo usuário.

No exemplo no Quadro 4 utilizou-se 90% para makespan e 10% para atraso total.

Quadro 4 - Etapas para normalização e obtenção do índice ponderado.

Fonte: O autor

A seleção dos indivíduos para a próxima geração será por elitismo, ou seja, somente os

indivíduos com os menores índices ponderados serão considerados. A seleção será de 50% de

toda a população, mantendo assim o mesmo número de indivíduos da população inicial.

3.9. Exemplo de modelagem de um sistema produtivo

Para exemplificar a modelagem de problemas utilizando-se do framework será utilizada

como exemplo uma pequena ferramentaria fictícia, onde serão cadastrados os recursos, turnos

de trabalho, roteiros e ordens de produção para posteriormente ser demonstrado através da

Page 80: framework computacional para programação de produção de ...

64

utilização do software protótipo desenvolvido a aplicação de diversas regras de liberação além

da utilização do Algoritmo Genético.

A ferramentaria do exemplo é composta por cinco máquinas com seus respectivos

turnos de trabalho e dois recursos contínuos sendo um para o número de funcionários e outro o

controle de um dispositivo de fixação, como pode ser observado no Quadro 5.

Quadro 5 - Lista de recursos da ferramentaria exemplo.

Fonte: O autor

Recurso Tipo Restrições

Torno 1 Discreto RRC(Funcionário, Adicionar somente durante toda operação 1)

Torno 2 Discreto RRC(Funcionário, Adicionar somente durante toda operação 1)

Fresa 1 Discreto RRC(Funcionário, Adicionar somente durante toda operação 1)

Fresa 2 Discreto RRC(Funcionário, Adicionar somente durante toda operação 1)

Centro de

Usinagem Discreto RRC(Funcionário, Adicionar somente durante o setup 1)

Funcionários Contínuo

Dispositivo Contínuo

Para os recursos de torno e fresa foram adicionadas restrições RCC, que adiciona

durante toda a operação o valor de 1um funcionário (recurso contínuo), ou seja, para que o

recurso esteja em operação será necessário 1 funcionário disponível.

Para o recurso Centro de Usinagem, também foi adicionada a restrição RCC de 1

funcionário, mas somente durante o tempo de preparação setup.

Foram definidos também como turnos de trabalho para todos os recursos discretos como

disponível com 100% de eficiência do horário das 8h00 às 17h00 e com parada para refeições

das 12h00 às 13h00. Para o recurso funcionários foram criados os turnos de 24 horas por dia,

limitados a 3 funcionários, uma vez que os turnos estão sendo controlados pelos recursos

discretos e será utilizada somente como restrição do número de funcionários disponíveis. O

Quadro 6 apresenta os turnos de disponibilidade dos recursos.

Page 81: framework computacional para programação de produção de ...

65

Quadro 6 - Disponibilidade dos recursos.

Fonte: O autor

Período Recurso Eficiência Motivo Início Término

Segunda a Sexta Tornos e Fresas 100% Turno 08:00 17:00

Segunda a Sexta Tornos e Fresas 0% Refeição 12:00 13:00

Segunda a Sexta Funcionários Mínimo = 0

Máximo = 3 Disponibilidade 00:00 23:59

Segunda a Sexta Dispositivo Mínimo = 0

Máximo = 1 Disponibilidade 00:00 23:59

Foram criados para o exemplo dois roteiros de produtos com cinco operações cada, onde

foram adicionadas as restrições RRD, para definir em quais recursos a operação pode ser

produzida além da restrição RDP para definir a dependência entre as operações , ou de outra

forma a sequência entre as operações e finalmente a restrição RRC nas operações de fresamento

que necessitarem de um dispositivo de fixação que pode ser observado nos Quadros 6 e 7,

respectivamente.

Quadro 7 - Roteiro de fabricação da peça A.

Fonte: O autor

Número Descrição Restrições

10 Torno RRD(Torno1 ou Torno2, 00:30 setup e 08:00 operação)

20 Fresa

RRD(Fresa1 ou Fresa2, 00:30 setup e 04:00 operação)

RDP(Operação 10)

RRC(Dispositivo, Adicionar durante toda operação, 1 dispositivo)

30 Torno RRD(Torno1 ou Torno2, 00:30 setup e 06:00 operação)

RDP(Operação 20)

40 Centro de

Usinagem

RRD(Centro de Usinagem, 00:30 setup e 07:00 operação)

RDP(Operação 30)

50 Fresa

RRD(Fresa1 ou Fresa2, 00:30 setup e 14:00 operação)

RDP(Operação 40)

RRC(Dispositivo, Adicionar durante toda operação, 1 dispositivo)

Page 82: framework computacional para programação de produção de ...

66

Quadro 8 - Roteiro de fabricação da peça B.

Fonte: O autor

Número Descrição Restrições

10 Fresa RRD(Fresa1 ou Fresa2, 00:30 setup e 10:00 operação)

RRC(Dispositivo, Adicionar durante toda operação, 1 dispositivo)

20 Torno RRD(Torno1 ou Torno2, 00:30 setup e 05:00 operação)

RDP(Operação 10)

30 Fresa

RRD(Fresa1 ou Fresa2, 00:30 setup e 20:00 operação)

RDP(Operação 20)

RRC(Dispositivo, Adicionar durante toda operação, 1 dispositivo)

40 Centro de

Usinagem

RRD(Centro de Usinagem, 00:30 setup e 12:00 operação)

RDP(Operação 30)

50 Torno RRD(Fresa1 ou Fresa2, 00:30 setup e 5:00 operação)

RDP(Operação 40)

O Quadro 9 apresenta as ordens de produção exemplo, com suas respectivas datas de

entrega e prioridade.

Quadro 9 - Ordens de produção do exemplo.

Fonte: O autor

Número

Ordem Prioridade Produto Quantidade Data Entrega

1 1 Peça A 1 05/12/2012

2 1 Peça A 1 13/12/2012

3 2 Peça B 1 10/12/2012

4 2 Peça B 1 20/12/2012

Esta modelagem exemplo apresenta os dados que serão utilizados com o software

protótipo nas próximas seções.

Page 83: framework computacional para programação de produção de ...

67

4. RESULTADOS E DISCUSSÃO

Nesta seção será apresentado o software protótipo desenvolvido nos moldes do

framework, além do estudo de caso da implantação do mesmo em uma empresa fabricante de

moldes de injeção.

4.1. Software protótipo

O software foi desenvolvido em linguagem Delphi 2010 e é constituído por diversos

módulos que serão apresentados de forma resumida a seguir:

a) Cadastro de Recursos: Permite o cadastro de todos os recursos discretos e

contínuos do sistema além das respectivas restrições de cada recurso como no exemplo da

Figura 32.

Figura 32 - Cadastro de recursos.

Fonte: O autor

b) Cadastro de Grupo de Recursos: Este módulo permite o agrupamento de

recurso que realizam tarefas similares ou que atendam as mesmas regras de turno (Figura

33).

Page 84: framework computacional para programação de produção de ...

68

Figura 33 - Cadastro de grupo de recursos.

Fonte: O autor

c) Cadastro de Turnos: Permite a definição dos turnos de trabalho semanal e para

dias específicos, que pode ser observado na Figura 34.

Figura 34 - Turnos para dias da semana e dias específicos.

Fonte: O autor

A Figura 35 apresenta a tela com a sequência das regras que determinam o

funcionamento correto dos turnos.

Page 85: framework computacional para programação de produção de ...

69

Figura 35 - Cadastro de turnos.

Fonte: O autor

d) Cadastro de Produtos/Roteiros: Permite a definição da sequência de operações, com as

respectivas dependências e restrições associadas a cada operação (Figura 36).

Figura 36 - Cadastro de roteiros.

Fonte: O autor

Em cada operação todas as respectivas restrições deverão ser configuradas para que

tenha seu funcionamento correto.

Page 86: framework computacional para programação de produção de ...

70

Figura 37 - Detalhe de configuração de uma operação.

Fonte: O autor

e) Cadastro de Ordens: Permite o cadastramento das ordens de produção com as respectivas

datas de entrega, quantidade a ser produzida e prioridades (Figura 38).

Figura 38 - Cadastro de ordens de produção.

Fonte: O autor

f) Estados de calendário: Define padrões de eficiência para os recursos discretos, além da

representação em cores para preenchimento no gráfico de Gantt (Figura 39).

Page 87: framework computacional para programação de produção de ...

71

Figura 39 - Cadastro de estados de calendário.

Fonte: O autor

g) Tela de Programação: Ambiente onde será realizada a programação e a avaliação das

informações da programação, com gráficos para orientar o usuário sobre o resultado de cada

simulação. Por ser o principal ambiente de trabalho será um pouco mais detalhada abaixo.

A tela de programação é composta por três seções principais, iniciando pela relação de

ordens de produção, a seção de gráficos e informações sobre a programação e a terceira com as

ações de programação e navegação.

A seção com as ordens de produção possui informações se a mesma já foi

completamente alocada e com informações de data e hora de início e término programados. O

início e términos programados são encontrados a partir do início da primeira operação e o fim

programado é encontrado com o término da última operação.

Os recursos foram divididos em dois gráficos distintos, sendo um para recursos discretos

e outro para recursos contínuos.

O gráfico de Gantt com suas características já citadas anteriormente representa os

recursos discretos com sua variação de turnos de trabalho sendo desenhadas a partir das cores

definidas no cadastro de estados de calendário e com as cores das ordens definidas no respectivo

cadastro. Também pode ser observada na Figura 40 que no início da barra que representa a

operação, existe uma barra de espessura menor que representa o tempo em setup, ilustrado pela

letra A.

Page 88: framework computacional para programação de produção de ...

72

Figura 40 - Tela de programação do software protótipo.

Fonte: o autor

Para os recursos contínuos a melhor representação é através de três gráficos, sendo dois

de linha e outro de área. O gráfico de linha azul representa o limite inferior e outro gráfico de

linha vermelha o limite superior. O gráfico de área representa os valores utilizados do recurso

e sua variação em função do tempo como pode ser observado na Figura 41.

Figura 41 - Gráfico de representação do recurso contínuo.

Fonte: o autor

B

A

B

A

Page 89: framework computacional para programação de produção de ...

73

A Figura 42 apresenta o gráfico de utilização dos recursos discretos, onde barra azul

claro representa o tempo em percentual alocado em cada recurso discreto, destacado no gráfico

pela letra A. A parte em branco representa o tempo disponível e ainda não alocado, representado

no gráfico pela letra B e a parte hachurada representa o tempo de eficiência igual a zero, ou

seja, que são considerados como não disponíveis, destacado no gráfico pela letra C.

Figura 42 - Utilização dos recursos discretos.

Fonte: o autor

A Figura 43 apresenta o gráfico de espera que representa o tempo acumulado de fila no

recurso. Também é possível identificar quais operações geraram o tempo de espera.

A B C

Page 90: framework computacional para programação de produção de ...

74

Figura 43 - Gráfico de tempo de espera acumulado.

Fonte: o autor

A Figura 44 apresenta o gráfico de processos em espera que demonstra a quantidade de

operações em espera e a duração destas operações o que pode sugerir a quantidade faltante de

recurso discreto naquele momento e diferente do gráfico de espera não apresenta quanto tempo

se está em espera mas a quantidade em horas das operações em espera.

Figura 44 - Tempo acumulado de operações em espera

Fonte: o autor

O gráfico de normalização mostrado na Figura 45 apresenta as ordens de produção e sua

diferença entre a data de conclusão foi programada e a data de entrega. Este gráfico esta em

Page 91: framework computacional para programação de produção de ...

75

escala de dias de antecipação ou quantidade de dias de atraso. Pode sugerir, por exemplo, o

aumento da prioridade de ordens com provável atraso e postergação de ordens com maior folga

entre a conclusão prevista e a sua data de entrega.

Figura 45 - Gráfico de normalização por data de entrega.

Fonte: o autor

A Figura 46 apresenta a tela que possui informações sobre a programação tais como a

quantidade total de ordens no sistema, dentre todas as ordens qual a quantidades que foram

alocadas ou seja programadas com sucesso dentro do prazo de entrega, a quantidade de ordens

que não foram alocadas ou parcialmente alocadas concluindo com a quantidade de ordens que

foram alocadas mas que ultrapassam a data de entrega. Além das informações do número de

ordens também são apresentados nesta tela informações em percentuais das respectivas

quantidades de ordens e suas respectivas classificações.

Antecipação

Atraso

Page 92: framework computacional para programação de produção de ...

76

Figura 46 - Informações sobre a programação.

Fonte: o autor

A quantidade de operações segue as mesmas classificações das ordens apenas não

possuindo a quantidade e nem o percentual de operações atrasadas.

Outro grupo de informações destaca indicadores da programação e possuem em sua

maioria o tempo total acumulado de todas as operações o menor valor encontrado a média e o

maior valor encontrado.

A informação de makespan é encontrada a partir do início da primeira operação até o

término da última, ou seja, o tempo total necessário para todas as operações que foram

sequenciadas sejam concluídas em outras palavras o tempo necessário para conclusão de todo

trabalho.

Leadtime total representa a soma dos tempos calculados pela diferença entre o término

da última operação de uma ordem com início da primeira, ou seja, o tempo total somado dos

tempos que demorou cada ordem. Os tempos mínimos e máximos representam da ordem que

teve a menor diferença de tempo entre o fim e seu início bem como o tempo máximo representa

a maior diferença entre o fim e o início.

O Atraso total representa a quantidade de horas somadas de cada ordem que está com

sua data de conclusão programada após a data de entrega. Os tempos mínimo e máximo

Page 93: framework computacional para programação de produção de ...

77

representam a ordem com menor atraso e o tempo máximo o maior atraso, bem como a média

representa a média de atraso da conclusão das ordens.

Setup total representa a quantidade total de horas em preparação de todas as operações,

bem como o menor setup o maior e o tempo médio de setup.

Operação total é o tempo após a realização do setup a conclusão da operação, mesmo

havendo variações de eficiência, como paradas para manutenção ou refeições.

A Espera total representa o tempo que uma operação disponível para ser produzida

demorou em conseguir os recursos necessários para sua operação e também estão somados a

este tempo os tempos de espera entre operações.

Figura 47 - Tela do software com diversos cenários gerados.

Fonte: o autor

O software também permite salvar cada programação para posteriormente comparar os

indicadores avaliando qual o melhor para aquele momento da empresa. Pode ser observado na

Page 94: framework computacional para programação de produção de ...

78

Figura 47 que existe uma lista de simulações salvas e conforme a navegação do usuário pode

ser observada os indicadores de cada uma. Caso seja mais conveniente a programação pode ser

exportada para um editor de planilhas eletrônicas para que seja analisada por exemplo em forma

de gráficos.

4.1.1. Sequenciamento das operações

Na Figura 48 pode-se observar a tela responsável pelo sequenciamento das operações.

Como exemplo já se tem uma ordem alocada com sua respectiva sequência de operações

alocadas em função do tempo no gráfico de Gantt .

O sequenciamento de uma ordem pode ser realizado manualmente com o uso do mouse.

Figura 48 - Gráfico de Gantt com todas as ordens programadas.

Fonte: o autor

Além da possibilidade do sequenciamento manual com o uso do mouse o software

possibilita a utilização de duas técnicas distintas para o sequenciamento das ordens de produção,

sendo a primeira baseada em regras de liberação e a segunda com a utilização de algoritmos

genéticos, ambas serão detalhadas nas próximas seções.

Page 95: framework computacional para programação de produção de ...

79

4.1.2. Utilizando regras de liberação para o sequenciamento de ordens ou

operações

Como já citado no capítulo 3, as regras de liberação são bastante difundidas e utilizadas

para o sequenciamento de operações. Esta seção apresentará algumas regras que foram

utilizadas com software protótipo e os dados do exemplo de modelagem da seção 4.8.

Foi utilizado a regra de sequenciamento por data de entrega com três regras de liberação

discutidas na seção 3.2, todas com o método de sequenciamento para frente.

O objetivo da Tabela 5 não é comparar as regras, mas sim os resultados obtidos com o

pequeno experimento reforçando as diferenças entre os objetivos de cada regra de liberação.

Pode se observar na Tabela 5 que, como citado na literatura, a regra de carregamento

paralelo obteve o melhor resultado com os dados da modelagem exemplo em makespan o pior

indicador em termos de leadtime total e um desempenho intermediário no indicador de espera

total.

Tabela 5 - Resultados comparativos entre regras de liberação.

Fonte: o autor

Regra de liberação Makespan Leadtime total Espera Total

Ordem 627:00:00 893:30:00 660:00:00

Minimização de WIP 627:00:00 799:00:00 134:00:00

Carregamento Paralelo 505:30:00 968:00:00 462:00:00

Em contrapartida a regra de liberação de minimização de WIP, obteve os melhores

resultados em leadtime total e espera total.

O desenvolvimento de regras de liberação no software protótipo será apresentado na

seção 5.1.4.

Page 96: framework computacional para programação de produção de ...

80

4.1.3. Utilização dos Algoritmos Genéticos no software protótipo

Outra forma de sequenciamento desenvolvida no software protótipo foi a adoção de

Algoritmos Genéticos discutido em detalhes na seção 4.7.2.

A Figura 49 apresenta a tela de parâmetros para o Algoritmo Genético desenvolvido no

software protótipo. Além dos parâmetros tradicionais do Algoritmo Genético como tamanho da

população inicial, número de gerações e taxa de mutação foram adicionados dois parâmetros

como o tempo máximo de execução. O segundo parâmetro adicionado é o percentual de

reaproveitamento de soluções, onde o software ao invés de sempre gerar soluções aleatórias

pode fazer uso de soluções salvas anteriormente, como soluções geradas anteriormente por um

Algoritmo Genético ou por regras de liberação. Este parâmetro pode ajudar o Algoritmo

Genético a partir de soluções boas continuar sua busca, sendo que o restante da população será

completado por soluções geradas aleatoriamente.

Figura 49 - Quadro de parâmetros do Algoritmo Genético do software protótipo.

Fonte: o autor

Page 97: framework computacional para programação de produção de ...

81

Na Tabela 6 são apresentados os resultados da utilização do Algoritmo Genético com

os dados da modelagem (exemplo da seção 4.8), utilizando como índice de ponderação 100%

para makespan.

Os parâmetros utilizados foram: população de oito indivíduos e taxa de mutação de 4%.

Estes parâmetros foram colocados experimentalmente e como já se obteve bons resultados em

relação a regra de carregamento paralelo e por somente se tratar de um exemplo, não se julgou

necessário um estudo mais aprofundado se estes seriam os melhores parâmetros para o

problema abordado.

Como pode ser observado na Tabela 6, o Algoritmo Genético conseguiu resultados

melhores de makespan dos que as regras de liberação utilizadas na seção anterior, cujo o melhor

resultado alcançado foi de 505:30:00 contra 435:00:00 do Algoritmo Genético, resultando em

uma redução de 13,95% para conclusão de todos os trabalhos, ou seja os trabalhos seriam

concluídos com quase três dias de antecipação. Em contrapartida tiveram uma piora nos

indicadores de leadtime total e espera total, comparados com a regra de minimização de WIP.

Tabela 6 - Soluções geradas pelo Algoritmo Genético.

Fonte: o autor

Soluções Finais do Algoritmo

Genético Makespan Lead Time Espera total

Indivíduo 1 435:00:00 1399:00:00 596:30:00

Indivíduo 2 435:00:00 1399:00:00 596:30:00

Indivíduo 3 435:00:00 1398:30:00 596:00:00

Indivíduo 4 435:00:00 1378:00:00 542:30:00

Indivíduo 5 435:00:00 1398:30:00 596:00:00

Indivíduo 6 435:00:00 1332:00:00 611:00:00

Indivíduo 7 435:00:00 1332:00:00 611:00:00

Indivíduo 8 435:00:00 1398:30:00 596:00:00

Os resultados de makespan foram iguais para todos os oito indivíduos do experimento,

o que possibilita uma análise secundária dos outros indicadores da programação.

A

Figura 50 apresenta um gráfico gerado para demonstrar que os indivíduos 6 e 7 possuem

como já citado, além do makespan igual em todas as soluções, um leadtime total menor que o

restante da população.

Page 98: framework computacional para programação de produção de ...

82

Figura 50 - Gráfico de variação de Leadtime total nas soluções geradas pelo AG.

Fonte: o autor

Pode-se analisar também variação de tempo de espera total como apresentado na Figura

51, onde o indivíduo 4 possui o melhor resultado.

Figura 51 - Gráfico de variação de espera total nas soluções geradas pelo AG.

Fonte: o autor

Page 99: framework computacional para programação de produção de ...

83

Estes gráficos podem ser úteis como um critério secundário para decidir qual solução

efetivamente será adotada pela empresa, ressaltando que caso a intenção desde o princípio seja

de melhorar outro indicador, bastaria parametrizar o Algoritmo Genético com pesos nos

respectivos parâmetros como citado anteriormente.

4.1.4. Desenvolvimento de regras especiais de sequenciamento

Desenvolvimento de regras especiais é útil principalmente em casos particulares onde

as regras tradicionais não atendem aos detalhes do sistema produtivo. O desenvolvimento destas

regras especiais no software protótipo se dá pela manipulação por objetos que representam os

objetos do diagrama de classes e podem ser manipulados por duas linguagens de programação

sendo uma baseada em Basic e outra em Pascal.

Para a manipulação das classes do framework foram criados objetos que representam e

manipulam as respectivas classes, são eles:

-xSOrder: Representa todas as ordens do sistema, podendo ser utilizado no software

para coleta de dados sobre a programação ou acionamento dos métodos de programação;

-xSOperation: Representa todas as operações do sistema, possibilitando a manipulação

dos métodos de sequenciamento e a coleta de dados sobre as operações como se a operação está

ou não sequenciada, em que recurso, os tempos de início e fim, além de informações como o

tempo de fila no recurso, etc.

-xSResources: Este objeto é uma representação de todos os recursos no sistema e

através dele pode se obter informações sobre sua ocupação, tempo de fila, etc.

A decisão de não permitir o acesso direto as classes do framework e sim através de uma

classe de interface foi uma decisão de implementação do software para garantir somente acesso

aos métodos e propriedades desejáveis.

Pode ser observada na Figura 52 a tela em que são desenvolvidas regras especiais ou

mesmo a inclusão de novas regras de liberação.

Page 100: framework computacional para programação de produção de ...

84

Figura 52 - Tela para o desenvolvimento de regras de liberação.

Fonte: o autor

A manipulação dos objetos citados anteriormente permite o desenvolvimento de regras

avançadas de programação da produção como ilustrado na Figura 53 onde o código apresentado

é da regra de minimização de WIP para frente desenvolvido em linguagem Pascal.

Figura 53 - Exemplo da regra de liberação WIP para frente em linguagem Pascal.

Fonte: o autor

Page 101: framework computacional para programação de produção de ...

85

4.1.5. Personalização do software protótipo

Para permitir que cada empresa possa personalizar o software em função de suas

necessidades, o software protótipo foi desenvolvido a partir de uma arquitetura que permite

total personalização, como a criação de campos no banco de dados do software, como pode ser

observado na Figura 54.

Figura 54 - Janela de manutenção no banco de dados do software.

Fonte: o autor

Todas as interfaces com o usuário foram desenvolvidas com o próprio software

protótipo o que permite o desenvolvimento de novas janelas, gráficos, etc. Esse ambiente de

desenvolvimento possui as principais características da maioria dos principais ambientes de

desenvolvimento de softwares comerciais.

A Figura 55 apresenta o ambiente de desenvolvimento onde no lado direito está a paleta

de componentes, ao centro o desenho da interface e a esquerda o editor de propriedades e

eventos.

Page 102: framework computacional para programação de produção de ...

86

Figura 55 - Ambiente de desenvolvimento do software protótipo.

Fonte: o autor

A Figura 56 apresenta um exemplo com o editor de código fonte do software protótipo

Figura 56 - Exemplo de código fonte no software protótipo.

Fonte: o autor

Page 103: framework computacional para programação de produção de ...

87

4.2. Estudo de caso

Para validar o framework foi desenvolvido um software protótipo citado na seção

anterior. Este software foi implantando em uma empresa que será referenciada neste trabalho

apenas como empresa A.

Inicialmente é realizada uma apresentação da empresa e do mercado que está inserida,

detalhando posteriormente sua estrutura, concluindo a avaliação dos resultados pelos gerentes

da empresa.

4.2.1. Empresa estudada

Trata-se de uma empresa localizada no interior do estado de São Paulo, atuante no

mercado de embalagens industriais e utensílios domésticos desde 1978. Possui atualmente

aproximadamente 900 funcionários divididos em duas estruturas organizacionais, sendo uma

responsável pela injeção plástica e a outra pelo departamento de ferramentaria, que tem como

objetivo desenvolver moldes de injeção plástica que serão utilizados para a fabricação de todas

as linhas de produtos da empresa.

O objeto de estudo será a área de ferramentaria, uma vez que foi definida como

diferencial estratégico da empresa em relação a seus concorrentes.

Por se tratar de uma ferramentaria cativa, ou seja, é uma ferramentaria que apenas

fabrica moldes para uso interno, seu posicionamento estratégico está pautado em dois focos,

sendo o primeiro para a melhoria contínua da qualidade e o segundo para redução nos prazos

de entrega dos moldes.

A redução nos prazos de entrega do molde está ligada à possibilidade da empresa no

lançamento de produtos mais rapidamente pela área de injeção plástica o que se torna muito

importante principalmente para a linha de embalagens sendo que a mesma deva garantir as

embalagens no prazo, quantidade e qualidade acertada com seus clientes. Caso isso não ocorra

pode gerar um grande prejuízo considerando o atraso no lançamento de um produto como a

perda de receita e outros prejuízos.

A linha de utensílios tem uma pressão um pouco menor pela redução no prazo, pois trata

de produtos da própria empresa, mas também tem sua importância no faturamento e não pode

desmerecer atenção ao prazo.

O quesito qualidade conforme citado pela gerência da ferramentaria está ligada a dois

outros pontos. Sendo o primeiro a produtividade do molde com redução dos tempos de injeção

Page 104: framework computacional para programação de produção de ...

88

e o segundo com a redução de operações adicionais, como fechamento de tampas ou retirada

de rebarba o que aumenta o custo e diminui a produtividade.

Para atingir estes objetivos estratégicos a gerência da ferramentaria tem direcionado seu

foco no projeto do ferramental e no planejamento e controle da fabricação, reduzindo etapas e

buscando ganhos de escala como a padronização de componentes e de projeto.

A estrutura da ferramentaria apresentada no Quadro 10, conta com 22 funcionários

trabalhando dois turnos e produzem aproximadamente 4000 horas mensalmente distribuídas

entre a construção e manutenção das ferramentas.

Quadro 10 - Recursos e pessoal ocupado na ferramentaria.

Fonte: Empresa A

Equipamento/Tipo de operação Equipamentos Funcionários

Projeto 3 3

Detalhamento 2D 1 1

Programador CAM 1 1

Centro de Usinagem 5 3

Eletroerosão Penetração 3 3

Torno CNC 2 2

Tridimensional 1 1

Retificas 3 3

Operações de bancada (Ajuste e polimento) 5 5

4.2.2. Ambiente de software e integração com o sistema de gestão

A implantação do software teve início há dois anos com uma versão preliminar do

software protótipo onde o ambiente de integração será citado abaixo:

A ferramentaria possui um software de gestão o qual possui um módulo para a criação

e manipulação da estrutura dos produtos (molde de injeção) e integração com as outras soluções

da empresa como as ferramentas CAD e CAM. Possui também um módulo de apontamento da

produção através de coletores de dados espalhados pela fábrica, que permitem

acompanhamento on-line da de cada etapa de fabricação. Além da estrutura dos produtos,

possui também a lista de operações e os recursos que podem executar cada operação com

Page 105: framework computacional para programação de produção de ...

89

tempos destacados de setup e operação. Possibilita também a dependência entre ordens, ou seja,

organização de montagens do molde.

A integração com o software de gestão foi realizada com o recebimento das ordens e

operações liberadas, ficando a responsabilidade de gerar os cenários e definir a programação da

fábrica para o software protótipo que posteriormente devolve ao software de gestão as ordens e

operações programadas.

A integração foi realizada diretamente através de tabelas compartilhadas no banco de

dados Microsoft SQL Server®. Algumas tabelas são disponibilizadas com as informações do

software de gestão para o software protótipo, que devolve em outra tabela as operações com

informações de início e término além dos recursos que foram selecionados para executar a

operação (Figura 57).

Figura 57 - Integração do software protótipo ao sistema de gestão.

Fonte: o autor

4.2.3. Benefícios após a implantação do software protótipo

Após decorrido dois anos do início dos trabalhos foi realizado um estudo dos benefícios

da adoção do software na ferramentaria. Este estudo foi realizado pela gerência da ferramentaria

que disponibilizou alguns dados para este trabalho. Seguem abaixo os principais pontos do

estudo realizado:

Page 106: framework computacional para programação de produção de ...

90

- Redução do tempo gasto com a programação da fábrica, antes realizada com a

Microsoft Excel®, além de trabalhoso não tinha informações atualizadas da fábrica ficando

constantemente desatualizado.

- Priorização real dos trabalhos, pois cada molde dependendo da complexidade e número

de cavidades pode ser composto por centenas de componentes o que dificulta ter uma de visão

onde cada componente está, o quanto já foi produzido e quanto tempo resta para sua conclusão.

Com a adoção do software a mudança de prioridade do projeto é repassada a todos os

componentes do molde.

-Previsibilidade de real entrega, pois a diretoria ou os clientes do segmento de

embalagens exigiam prazos realistas o que era muito difícil com as ferramentas computacionais

utilizadas anteriormente.

-Análise de diferentes cenários antes da efetivação da programação com visão global da

fábrica.

-Atendimento da estratégia da empresa, redução do tempo para lançamentos de produtos

ou atendimento dos clientes nos prazos que desejavam. Este benefício foi conseguido pois a

partir do momento em que era possível ter uma visão geral da ferramentaria, foi possível iniciar

um trabalho de melhoria de processos.

- Redução de compras antecipadas, pois estão alinhadas à programação da

ferramentaria.

A empresa estudada forneceu indicadores antes da implantação e após a implantação do

software, permitindo uma visão mais detalhada dos ganhos obtidos que podem ser observados

na Tabela 7.

Tabela 7 - Indicadores da empresa A antes e após a implantação do software protótipo.

Fonte: Empresa A

Indicador Antes Depois

Percentual dos moldes entregue com atraso 40% 8%

Percentual do custo que ultrapassa o orçamento 40% -11%

Percentual de horas extras sobre o total de horas normais 10% 3%

Percentual gasto com horas extras sobre o valor da folha

de pagamento 10% 6%

Page 107: framework computacional para programação de produção de ...

91

Analisando os dados da Tabela 7, pode-se observar ganhos significativos na diminuição

do atraso na entrega das ferramentas o que além de benefícios financeiros como a redução no

pagamento de eventuais multas, permite também um aumento na confiabilidade na empresa em

cumprir seus prazos com os clientes e a diretoria.

Outro indicador que merece destaque foi a significativa melhora na precisão dos custos

dos orçamentos, pois com uso do software de programação de produção associado ao sistema

de apontamento permite comparar efetivamente o tempo gasto com o orçado e planejado.

Evitando uma subestimação de tempos de fabricação, impactando diretamente em imprecisões

de prazo e custo.

Os demais indicadores fornecidos pela gerência da empresa estão relacionados à

redução no custo e na utilização de horas extras. O principal ganho foi a mudança na forma

como eram utilizadas as horas extras que principalmente eram utilizadas para atender os prazos

prometidos e pouco cumpridos. Atualmente são utilizadas de forma planejada como aumento

de capacidade temporária em recursos gargalos.

Page 108: framework computacional para programação de produção de ...

92

5. CONCLUSÃO

Este trabalho apresentou um framework computacional para o desenvolvimento de

software de programação de produção, que considerou condições reais de fabricação e permitiu

o uso diversas regras de liberação como carregamento paralelo, minimização de WIP além a

utilização de Algoritmos Genéticos. Com base nas especificações do framework foi

desenvolvido um software protótipo que se demonstrou ser bastante flexível, pois permitiu que

a especificação de recursos e operações sem a preocupação de quais alternativas de

programação seriam utilizadas. Esta separação permitiu concentrar-se nas características do

processo e restrições operacionais, como turnos, manutenções e quebras para posteriormente

poder adotar uma ou outra forma de sequenciamento, podendo o usuário analisar diversos

indicadores de cada cenário gerado para posteriormente decidir qual é o mais adequado para a

empresa naquele momento.

O software permite o desenvolvimento de diversas regras de liberação de forma

relativamente simples, possibilitando também a criação de regras especiais ou personalizadas

para atender a características específicas de um sistema produtivo.

Além do desenvolvimento das regras de liberação também foi adicionado no software o

algoritmo genético, que permitiu encontrar valores melhores que as regras de liberação. Um

teste realizado com algoritmo genético permitiu a redução do makespan em aproximadamente

14%, o que corresponderia a 3 dias de trabalho.

O software foi implantado em uma empresa de injeção plástica no setor de fabricação

de moldes e após a implantação forneceu resultados que apontaram ganhos significativos na

redução de atraso na entrega, na redução de horas extras e na melhor visão dos itens em

produção. Também foi possível à empresa desenvolver melhorias em seus processos e

concentrar-se no projeto de ferramental, lançando produtos com mais rapidez, podendo dessa

maneira focar em seus diferenciais competitivos.

O software protótipo desenvolvido utilizando as especificações do framework

apresentou de forma mais concreta as possibilidades do framework objetivo deste trabalho.

5.1. Sugestões de trabalhos futuros

Como sugestões de trabalhos tem-se:

-A implementação de novas regras de liberação com estudo dos resultados;

-O desenvolvimento de novas classes de restrições;

Page 109: framework computacional para programação de produção de ...

93

-Adição de outros algoritmos metaheurísticos como por exemplo o Simulated

Annealing;

-Implantação do software protótipo em outras empresas e segmentos;

-Desenvolvimento de outro software em outra linguagem de programação;

-Utilização técnicas de processamento em paralelo para solução das restrições.

Page 110: framework computacional para programação de produção de ...

94

6. REFERÊNCIAS BIBLIOGRÁFICAS

ARAUJO, S. A. D.; LIBRANTZ, A. F. H.; ALVES, W. A. L. Uso de algoritmos genéticos em

problemas de roteamento de redes de computadores. Exacta, São Paulo, v. 5, n. 2, p. 321-327,

julho/dezembro 2007.

BALIN, S. Parallel machine scheduling with fuzzy processing times using a robust genetic

algorithm and simulation. Information Sciences, Istambul, n. 181, p. 3551-3569, abril 2011.

BICALHO, L. H. C.; SANTOS, A. G. D.; ARROYO, J. E. C. GBT: GRASP+ Busca Tabu em

problemas de scheduling. XLIII Simpósio Brasileiro de Pesquisa Operacional, Ubatuba, p.

15-18, agosto 2011.

BOIKO, T. J. P.; TSUJIGUCHI, L. T. D. A.; VAROLO, F. W. R. Classificação de Sistemas de

Produção:Uma Abordagem de Engenharia de Produção. IV EPCT - Encontro de Produção

Científica e Tecnológica, Campo Mourão, p. 1-10, 20 a 21 outrubro 2009.

BOOCH, G.; JACOBSON, I.; RUMBAUGH, J. The Unified Modeling Language Reference

Manual. Massachusetts: Addison Wesley Longman, Inc, 1999.

BRAILSFORD, S. C.; POTTS, C. N.; SMITH, B. M. Constraint satisfaction problems:

Algorithms and applications. European Journal of Operational Research, Southampton, p.

557-581, 1998.

BRANCO, R. M.; COELHO, A. S.; MAYERLE, S. F. Programação da Produção: Solução de

escalonamento em job shop por algoritmo genético híbrido. XXVII Encontro Nacional de

Engenharia de Produção, Foz do Iguaçu, p. 1-10, Outrubro 2007.

BROWNING, T. R.; YASSINE, A. A. Resource-constrained multi-project scheduling: Priority

rule performance revisited. International Journal of Production Economics, Beirute, p. 212-

228, 20 março 2010.

BRUCKER, P. Scheduling and constraint propagation. Discrete Applied Mathematics,

Osnabrück, p. 227-256, 2002.

CANTIERE, P. C.; MORAIS, M. D. F.; BOIKO, T. J. P. Análise de Desempenho de Regras de

Prioridade para Programação em Sistemas Flow Shop Híbridos e Tempos de Setup dependentes

da Sequência. V EPCT - Encontro de Produção Científica e Tecnológica, Campo Mourão,

p. 1-11, outubro 2010.

CARVALHO, A. R. N.; COSTA, R. S. Simulação Computacional para a Programação das

Atividades de Produção: Aspectos da Modelagem e da Metodologia de Desenvolvimento. XXII

Encontro Nacional de Engenharia de Produção, Ouro Preto, p. 1-8, outubro 2003.

Page 111: framework computacional para programação de produção de ...

95

CARVALHO, C. E. C. D.; ABRANTES, C. T. D.; CAMEIRA, R. F. Métodos Ágeis de

Desenvolvimento de Software: Um Caso Prático de Aplicação do Scrum. XXXI Encontro

Nacional de Engenharia de Produção, Belo Horizonte, 2011. 1-14.

CASTRO, R. E. D. Otimização de Estruturas com Multi-objetivos Via Algoritmos Genéticos

de Pareto. Universidade Federal do Rio de Janeiro - Tese de Doutorado em Ciências em

Engenharia Civil, Rio de Janiero, Maio 2001.

CHASE, R. B.; JACOBS, F. R.; AQUILANO, N. J. Administração da produção para a

vantagem competitiva. 10ª edição. ed. Porto Alegre: Bookman, 2006.

CORRÊA, H. L.; CORRÊA, C. A. Administração de Produção e de Operações. 1ª. ed. São

Paulo: Editora Atlas S.A., v. 1, 2005.

DAMA, D. M. I. DAMA-DMBOK, The DAMA Guide to the Data Management Body of

Knowledge (DAMA-DMBOK) Portuguese Edition. São Paulo: Technics Publications, LLC,

2012.

DIAS, V. C. Proposta de um Framework conceitual de dados e padrões de análise para a

definição de um banco de dados em qualidade de energia elétrica. Dissertação (mestrado)

Pontífica Universidade Católica de Minas Gerais, Belo Horizonte, 2004.

FERNANDES, F. C. F.; AZEKA, F.; GODINHO-FILHO, M. Análise da Lacuna entre teoria e

prática no planejamento e controle da produção em um pólo de ensino e tecnologia do estado

de São Paulo. XXVIII Encontro Nacional de Engenharia de Produção, Rio de Janeiro, p. 1-

14, Outubro 2008.

FERNANDES, F. C. F.; GODINHO-FILHO, M. Planejamento e Controle da Produção: dos

fundamentos ao Essencial. São Paulo: Editora Atlas, 2010.

FERNANDES, F. C. F.; GOFINHO-FILHO, M. Sistemas de Coodernação de ordens: revisão,

classificação, funcionamento e aplicabilidade. Gestão e Produção, São Carlos, v. 14, p. 337-

352, maio/agosto 2007.

FERREIRA, F. M. G. Desenvolvimento e Aplicacões de um Framework Orientado a Objetos

para Análise Dinâmica de Linhas de Ancoragem e de Risers. Dissertação (mestrado) -

Universidade Federal de Alagoas , Maceió, Dezembro 2005.

FILHO, M. G.; FERNANDES, F. C. F. Uma análise dos sistemas de planejamento e controle

de produção em uma grande empresa de materiais de escrita. XXII Encontro Nacional de

Engenharia de Produção, Curitiba, p. 1-8, 2002.

FRAMINAN, J. M.; RUIZ, R. Architecture of manufacturing scheduling systems: Literature

review and an integrated proposal. European Journal of Operational Research, Sevilha, n.

205, p. 237-246, 2010.

Page 112: framework computacional para programação de produção de ...

96

GIACOMET, B. Otimização Distribuída de Restrições em Ambientes Dinâmicos. Dissertação

(Mestrado) -Pontifícia Universidade Católica do Paraná, Curitiba, 2010.

GIACON, E.; MESQUITA, M. A. Levantamento das práticas de programação detalhada da

produção: um survey na indústria paulista. Gestão e Produção, São Carlos, v. 8, p. 487-498,

2011.

GIL, A. C. Como elaborar projetos de pesquisa. 4. ed. São Paulo: Atlas, 2002.

GIROTTI, J.; NISHIMURA, V. S.; MESQUITA, M. A. D. Simulação em planilhas para

programação de ordens de produção em sistemas job shop. XXXI Encontro Nacional de

Engenharia de Produção, Belo Horizonte, p. 1-14, outrubro 2011.

GIROTTI, L. J.; MESQUITA, M. A. D. Uma análise comparativa das abordagens MRP e APS

para programação detalhada da produção. XXXI Encontro Nacional de Engenharia de

Produção, Belo Horizonte, p. 1-14, outrubro 2011.

HAUTAMÄKI, J. Pattern-Based Tool Support for Frameworks Towards Architecture-Oriented

Software Development Environment. Tese (Doutorado) Tampere University of Technology,

Auditorium, fevereiro 2005.

HVOLBY, H.-H.; STEGER-JENSEN, K. Technical and industrial issues of Advanced Planning

and Scheduling (APS) system. Computers in Industry, n. 61, p. 845-851, 2010.

ICHIHARA, J. A. O problema de programação de projetos com restrição de recursos

(Resource-Constrained Porject Scheduling Problem). XXII Encontro Nacional de

Engenharia de Produção, Curitiba, p. 1-8, outubro 2002.

IIBA, I. I. O. B. A. Babok - Um guia para o corpo de conhecimento de análise de negócios.

2.0. ed. São: International Institute of Business Analysis, 2011.

LIDDELL,. Pequeno Livro Azul da Programação da Produção. Vitória: [s.n.], 2009.

MACCARTHY, B. L.; FERNANDES, F. C. A Multidimensional Classification of Production

System for the Design and Selection of Production Planning and Control systems. Production

Planning & Control, 2000.

MACCARTHY, B. L.; LIU, J. Addressing the gap in scheduling research: a review of

optimization and heuristic methods in production scheduling. International Journal of

Production research, n. 31, p. 59-79, 1993.

MAINIERI, G. B.; RONCONI, D. P. Regras de despacho para a minimização do atraso total

no ambiente flowshop flexível. Gestão e Produção, São Carlos, n. 17, p. 683-692, 2010.

MARTINS, P. G.; LAUGENI, F. P. Administração da Produção. 2ª. ed. São Paulo: Editora

Saraiva, v. 1, 2005.

Page 113: framework computacional para programação de produção de ...

97

MORAIS, M. F.; MENEGARDE, J. K.; CANTIERE, P. C. Regras de Prioridade e Critérios de

Desempenho Adotados em Problemas de Programação da Produção em Ambientes Flow Shop.

IV Encontro de Produção Científica e Tecnologia, Campo Mourão, Outubro 2009. 1-12.

NIEUWENHUYSE, I. V. et al. Advanced resource planning as a decision support module for

ERP. Computer in Industry, v. 62, p. 1-8, 2010.

NOVAS, J. M.; HENNING, G. P. Reactive scheduling framework based on domain knowledge

and constraint programming. Computer and Chemical Engineering, n. 34, p. 2129-2148,

2010.

PACHECO, R. F.; SANTORO, M. C. A adoção de modelos de scheduling no Brasil:

deficiências do processo de escolha. Gestão e Produção, n. 8, p. 128-138, agosto 2001.

PERALES, W. Classificação dos Sistemas de Produção. XXVII Encontro Nacional de

Engenharia de Produção, Salvador, p. 1-6, 2001.

PEREIRA, F.. Problema de otimização de restroção: um modelo específico de fluxo

multiproduto. Dissertação (Mestrado em Ciências) - Pós-Graduação em Engenharia

Elétrica e Informática Industrial - Universidade Tecnológica Federal do Paraná, Curitiba,

2011.

PEREIRA, R. Particionamento Automático de Restrições. Tese Doutorado – COPPE

Universidade Federal do Rio deJaneiro, Rio de Janeiro, 2006.

PORTER, M. E. Estratégia competitiva. 2ª. ed. Rio de Janeiro: Elsevier, v. 1, 2004.

PUTNAM, A. O. MRP for repetitive manufacturing shops: a flexible kanban system for

America. Production and Inventory Management, p. 60-88, 1983.

REIS, J. O Scheduling em Inteligência Artificial : um resumo. Relatório Interno -

Departamento de Ciências e Tecnologias da Informação - Instituto Superior de Ciências

do Trabalho e da Empresa, Lisboa, Novembro 1996.

RODRIGUES, A. G.; GÔMEZ, A. T. Tratamento de um problema de escalonamento

considerando data de entrega, turnos de produção e trocas de ferramentas via Busca Tabu.

Produção, n. 18, p. 64-75, jan/abr 2008.

ROSA, A. D. F. C. Um estudo comparativo das técnicas metaheurísticas Algoritmos Genéticos

e Simulated Anneling aplicadas a sistemas de apoio à decisão para otimização de parâmetros

em processos de usinagem. Universidade Nove de Julho - Dissertação de Mestrado, São

Paulo, Março 2011.

RUSSELL, S.; NORVIG, P. Artificial Intelligence: A Modern Approach. 3. ed. [S.l.]: Pearson

Education, 2010.

Page 114: framework computacional para programação de produção de ...

98

SILVA, B. J. V. D.; MORABITO, R.; YANASSE, H. D. Programação da Produção de gabaritos

de montagem com restrições de adjacência na industria aéronáutica. Produção, n. 21, p. 696-

707, outubro 2011.

SILVA, C. A. D. S.; LEITE, J. C.; JUNIOR, C. T. D. C. Nova proposta de sequênciamento de

produção com lógica fuzzy, usando a margem de contribuição do produto como fator

preponderante. XXXI Encontro Nacional de Engenharia de Produção, Belo Horizonte, p. 1-

14, 04 a 07 outubro 2011.

SILVA, R. P. E. Suporte ao desenvolvimento e uso de frameworks e componentes. Tese

(doutorado) Universidade do Rio Grande do Sul, Porto Alegre, Março 2000.

SOUZA, M. D. D.; BORGONHONI, P. A consolidação dos três níveis de planejamento e

controle de produção. Caderno de Administração, n. 15, p. 19-28, jul/dez 2007.

TALIGENT, I. Building Object-Oriented Frameworks. LHCb Computing Home Page, 1994.

Disponivel em: <http://lhcb-comp.web.cern.ch/lhcb-

comp/components/postscript/buildingoo.pdf>. Acesso em: 01 abr. 2013.

TSANG, E. Foundations of Constraint Satisfaction. London: Academic Press, 1993.

TUBINO, D. F. Planejamento e Controle da Produção: Teoria e Prática. São Paulo: Editora

Atlas, 2007.

TURATTI, R.; MARCANTONIO, R. A Importância da Utilização dos Sistemas APS no

Alinhamento de Estratégias Operacionais. XII - Simpósio de Administração da Produção e

Operações Internacionais, São Paulo, p. 1-13, agosto 2009.

VIANNA, D. S.; FRANCO, I. S.; VIANNA, M. D. F. D. Algoritmos genéticos híbridos para o

problema de escalonamento de tarefas job shop flexível. XLII Simpósio Brasileiro de

Pesquisa Operacional, Bento Gonçalves, p. 1-12, agosto 2010.

WEGLAZ, J. et al. Project scheduling with finite or infinite number os activity processing

modes – A survey. European Journal Of Operational Research, p. 177-205, março 2010.

XING, L.-N.; CHEN, Y.-W.; YANG, K.-W. Multi-objective flexible job shop schedule: Design

and evaluation by simulation modeling. Applied Soft Computing, p. 362-376, 2009.

XU, J.; XU, X.; XIE, S. Q. Recent developments in Dual Resource Constrained (DRC) system

research. European Journal Of Operational Research, Março 2011. 309-318.

YOSEF, J. Building a Conceptual Framework: Philosophy, Definitions, and Procedure.

International Journal of Qualitative Methods, Haifa, p. 49-62, 2009.

ZATTAR, I. C. Análise da aplicação dos sistemas baseados no conceito de capacidade finita

nos diversos níveis da administração da manufatura através de estudos de caso. Dissertação

(mestrado) - Universidade Federal de Santa Catarina, Florianópolis, Agosto 2004.

Page 115: framework computacional para programação de produção de ...

99

ZEBALLOS, L. J. A constraint programming approach to tool allocation and production

scheduling in flexible manufacturing systems. Robotics and Computer-Integrated

Manufacturing, p. 725-743, abril 2010.

Page 116: framework computacional para programação de produção de ...

100

7. ANEXO–Publicação XXXI Encontro Nacional de Engenharia de Produção (2011)

Page 117: framework computacional para programação de produção de ...

101

Page 118: framework computacional para programação de produção de ...

102

Page 119: framework computacional para programação de produção de ...

103

Page 120: framework computacional para programação de produção de ...

104

Page 121: framework computacional para programação de produção de ...

105

Page 122: framework computacional para programação de produção de ...

106

Page 123: framework computacional para programação de produção de ...

107

Page 124: framework computacional para programação de produção de ...

108

Page 125: framework computacional para programação de produção de ...

109

Page 126: framework computacional para programação de produção de ...

110