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
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
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.
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.
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.
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).
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
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
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
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
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
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
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
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
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
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.
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
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.
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.
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.
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.
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.
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.
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).
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.
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
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.
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
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.
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
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
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.
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
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.
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).
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
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).
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.
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
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).
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.
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.
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
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.
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.
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
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;
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.
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
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.
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
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
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.
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.
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
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.
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).
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
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).
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)
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.
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
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.
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
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.
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.
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.
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
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.
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.
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
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.
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
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).
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.
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.
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
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.
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)
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.
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).
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.
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.
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).
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.
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
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
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
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
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
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
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.
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.
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
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.
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
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.
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
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.
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
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
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
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:
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%
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.
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;
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.
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.
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.
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.
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.
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.
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.
100
7. ANEXO–Publicação XXXI Encontro Nacional de Engenharia de Produção (2011)
101
102
103
104
105
106
107
108
109
110