class: center, middle, inverse, title-slide .title[ # Administração da Produção ] .subtitle[ ## Unidade 07: Programação da produção ] .author[ ### Renata Oliveira ] --- layout: true <div class="my-footer"> <span> Programação da Produção - Aula 07 </span> </div> --- class: middle, center, inverse # O plano só vira produção quando alguém decide a sequência .large[ Ordens aprovadas disputam máquinas, pessoas, ferramentas e tempo. ] --- # Da carteira de pedidos ao chão de fábrica | Informação | Decisão operacional | |---|---| | PMP | quais produtos e quantidades precisam ficar prontos | | MRP | quais materiais e ordens devem estar disponíveis | | roteiro | por quais operações e recursos cada ordem passa | | carregamento | quanto trabalho cada recurso receberá | | sequenciamento | qual ordem entra primeiro em cada recurso | | controle | como reagir a atrasos, falhas e mudanças | .question[Em qual dessas decisões uma máquina pode estar disponível e, ainda assim, a ordem não poder começar?] ??? **Resposta** Programação operacional. Máquina livre não basta: precedência, material, ferramental, operador e qualidade também devem estar liberados. --- # Objetivos da aula .pull-left[ ## Ao final da aula - ✅ interpretar um roteiro de produção; - ✅ calcular carga por ordem e por máquina; - ✅ aplicar FIFO, MTP, MDE e MFE; - ✅ comparar fluxo, atraso e utilização; - ✅ recomendar uma programação coerente com o objetivo. ] .pull-right[ ## Questão orientadora Como transformar uma carteira de ordens em uma sequência executável? .tip[Uma sequência pode reduzir filas e, ao mesmo tempo, prejudicar um pedido urgente. Por isso, a regra precisa refletir o objetivo da operação.] ] ??? **Resposta** Confirmar materiais e roteiros, calcular carga e capacidade, definir prioridades e horários, validar prazos, publicar e acompanhar o programa. --- # Roteiro de produção ## Definição O **roteiro de produção** (ou roteiro de fabricação) é um documento técnico que descreve: .pull-left[ - **Sequência** de operações necessárias - **Máquinas/equipamentos** utilizados - **Tempos padrão** de processamento - **Ferramentas e dispositivos** necessários - **Materiais** consumidos em cada etapa ] .pull-right[ - **Especificações técnicas** de cada operação - **Inspeções** de qualidade - **Movimentações** entre postos - **Precedências** entre operações ] --- # Componentes do roteiro <table class="table table-striped table-hover" style="font-size: 30px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Componente </th> <th style="text-align:left;"> Descrição </th> <th style="text-align:left;"> Exemplo </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Operação </td> <td style="text-align:left;"> Descrição da atividade a ser executada </td> <td style="text-align:left;"> Tornear eixo Ø50mm </td> </tr> <tr> <td style="text-align:left;"> Posto de Trabalho </td> <td style="text-align:left;"> Máquina ou centro de trabalho responsável </td> <td style="text-align:left;"> Torno CNC 01 </td> </tr> <tr> <td style="text-align:left;"> Tempo Setup </td> <td style="text-align:left;"> Tempo de preparação da máquina (min) </td> <td style="text-align:left;"> 15 </td> </tr> <tr> <td style="text-align:left;"> Tempo Unitário </td> <td style="text-align:left;"> Tempo de processamento por unidade (min) </td> <td style="text-align:left;"> 3.5 </td> </tr> <tr> <td style="text-align:left;"> Ferramental </td> <td style="text-align:left;"> Ferramentas e dispositivos </td> <td style="text-align:left;"> Placa 3 castanhas </td> </tr> <tr> <td style="text-align:left;"> Precedência </td> <td style="text-align:left;"> Operações que devem ser concluídas antes </td> <td style="text-align:left;"> OP 010 </td> </tr> </tbody> </table> --- # Exemplo prático · Roteiro de produção **Produto:** Eixo Mecânico **Material:** Aço 1045 **Quantidade:** 100 unidades <table class="table table-striped table-hover" style="font-size: 20px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Op </th> <th style="text-align:left;"> Descrição </th> <th style="text-align:left;"> Máquina </th> <th style="text-align:right;"> Setup (min) </th> <th style="text-align:right;"> Tempo Unit. (min) </th> <th style="text-align:left;"> Precedência </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> 010 </td> <td style="text-align:left;"> Cortar barra </td> <td style="text-align:left;"> Serra </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 2.0 </td> <td style="text-align:left;"> - </td> </tr> <tr> <td style="text-align:left;"> 020 </td> <td style="text-align:left;"> Tornear desbaste </td> <td style="text-align:left;"> Torno CNC-01 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 8.5 </td> <td style="text-align:left;"> 010 </td> </tr> <tr> <td style="text-align:left;"> 030 </td> <td style="text-align:left;"> Tornear acabamento </td> <td style="text-align:left;"> Torno CNC-01 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 4.2 </td> <td style="text-align:left;"> 020 </td> </tr> <tr> <td style="text-align:left;"> 040 </td> <td style="text-align:left;"> Furar centro </td> <td style="text-align:left;"> Furadeira </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 3.0 </td> <td style="text-align:left;"> 030 </td> </tr> <tr> <td style="text-align:left;"> 050 </td> <td style="text-align:left;"> Inspeção dimensional </td> <td style="text-align:left;"> Sala metrologia </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 2.5 </td> <td style="text-align:left;"> 040 </td> </tr> </tbody> </table> --- # Leitura gerencial do roteiro Para o lote de **100 eixos**, a carga do Torno CNC-01 é: <div class="formula-box"> (20 + 8,5 × 100) + (10 + 4,2 × 100) = 1.300 min </div> Isso corresponde a **21 h 40 min** de ocupação do torno. .question[Se o turno disponível tiver 16 horas, o problema deve ser tratado por carregamento, sequenciamento ou aumento de capacidade?] .tip[O roteiro descreve como fabricar. A carga revela quanto recurso o lote exige.] ??? **Resposta** Carga de 21 h 40 min para 16 h disponíveis: déficit de 5 h 40 min. Sequenciar não elimina o déficit; é preciso realocar carga, ampliar capacidade, dividir o lote ou rever o prazo. --- # Quatro decisões complementares | Decisão | Pergunta respondida | Exemplo | |---|---|---| | roteiro | como a ordem será produzida? | cortar, tornear, furar e inspecionar | | carregamento | quanto trabalho vai para cada recurso? | 21 h 40 min no Torno CNC-01 | | sequenciamento | qual ordem será processada primeiro? | B antes de E | | programação | quando cada operação começa e termina? | B inicia às 8h e termina às 11h | .decision-note[Uma boa programação combina as quatro decisões.] --- # Fundamentos do sequenciamento ## O que é? Processo de **determinar a ordem** em que os trabalhos/tarefas serão processados nas máquinas disponíveis. ## Objetivos Principais: .pull-left[ - ⏱️ **Minimizar tempo total** (makespan) - 📅 **Cumprir prazos** de entrega - 💰 **Reduzir custos** de estoque ] .pull-right[ - ⚙️ **Maximizar utilização** de máquinas - 📊 **Balancear carga** de trabalho - 🎯 **Minimizar atrasos** ] --- # Regras de sequenciamento <table class="table table-striped table-hover" style="font-size: 30px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Regra </th> <th style="text-align:left;"> Nome </th> <th style="text-align:left;"> Característica </th> <th style="text-align:left;"> Aplicação </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> FIFO </td> <td style="text-align:left;"> Primeiro a Entrar, Primeiro a Sair </td> <td style="text-align:left;"> Ordem de chegada das tarefas </td> <td style="text-align:left;"> Simples e justo </td> </tr> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> MTP </td> <td style="text-align:left;"> Menor Tempo de Processamento </td> <td style="text-align:left;"> Menor tempo de processamento primeiro </td> <td style="text-align:left;"> ↓ Tempo médio na fila </td> </tr> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> MDE </td> <td style="text-align:left;"> Menor Data de Entrega </td> <td style="text-align:left;"> Menor data de entrega primeiro </td> <td style="text-align:left;"> ↓ Atraso máximo </td> </tr> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> MFE </td> <td style="text-align:left;"> Menor Folga Estática </td> <td style="text-align:left;"> Menor tempo de folga primeiro </td> <td style="text-align:left;"> Urgência baseada em folga </td> </tr> </tbody> </table> A folga estática para um pedido i é calculada no momento inicial (tempo t=0) com a fórmula: `$$\text{Folga Estática}_i = \text{Data de Entrega}_i - \text{Tempo Atual} - \text{Tempo de Processamento}_i$$` .tip[MFE usa a margem disponível depois de descontar o trabalho ainda necessário. Quanto menor a folga, maior a urgência.] --- # Folga estática · conceito <div class="formula-box"> \(F_i = d_i - t - p_i\) </div> .midi[ .pull-left[ **Variáveis** - `\(d_i\)`: prazo do trabalho; - `\(t\)`: tempo atual; - `\(p_i\)`: processamento restante. **Exemplo A:** prazo = 15 h, `\(t = 0\)` e processamento = 8 h. `$$F_A = 15 - 0 - 8 = 7\text{ h}$$` ] .pull-right[ **Interpretação** - `\(F_i > 0\)`: há margem para esperar; - `\(F_i = 0\)`: o trabalho deve começar agora; - `\(F_i < 0\)`: o prazo exige alguma ação corretiva. **Regra MFE:** menor folga significa maior urgência. ] ] <div class="clear-both"></div> .decision-note[**Por que estática?** O valor só muda quando a folga é recalculada.] --- # Folga estática · carteira A–E .small[Em `\(t=0\)`, o prazo corresponde à soma da folga com o processamento restante.] <img src="index_files/figure-html/folga-estatica-grafico-1.png" alt="" width="76%" style="display: block; margin: auto;" /> .tip[A, B e E têm a menor folga: 7 horas. O desempate pode seguir a ordem de chegada.] ??? **Leitura do gráfico** A, B e E têm folga de 7 h; C e D, 13 h. A regra MFE prioriza A, B e E. Em caso de empate, aplica-se o critério de chegada. --- # Carteira comum para comparar as regras Todos os trabalhos estão disponíveis no tempo zero. Tempos e prazos estão em **horas**. | Trabalho | Processamento | Prazo | Chegada | |---|---:|---:|---:| | A | 8 | 15 | 1 | | B | 3 | 10 | 2 | | C | 7 | 20 | 3 | | D | 12 | 25 | 4 | | E | 5 | 12 | 5 | --- # Exemplo prático · Sequenciamento MTP <table class="table table-striped table-hover" style="font-size: 30px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Job </th> <th style="text-align:right;"> Tempo_Proc </th> <th style="text-align:right;"> Data_Entrega </th> <th style="text-align:right;"> Chegada </th> <th style="text-align:right;"> Inicio </th> <th style="text-align:right;"> Fim </th> <th style="text-align:right;"> Atraso </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> B </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> E </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> C </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> A </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 23 </td> <td style="text-align:right;"> 8 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;color: white !important;background-color: rgba(52, 152, 219, 1) !important;"> D </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 25 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 23 </td> <td style="text-align:right;"> 35 </td> <td style="text-align:right;"> 10 </td> </tr> </tbody> </table> --- # Análise do sequenciamento MTP <table class="table table-striped table-hover" style="font-size: 30px; width: auto !important; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Métrica </th> <th style="text-align:right;"> Valor </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Makespan (h) </td> <td style="text-align:right;"> 35.0 </td> </tr> <tr> <td style="text-align:left;"> Fluxo médio (h) </td> <td style="text-align:right;"> 16.8 </td> </tr> <tr> <td style="text-align:left;"> Atraso médio (h) </td> <td style="text-align:right;"> 3.6 </td> </tr> <tr> <td style="text-align:left;"> Trabalhos atrasados </td> <td style="text-align:right;"> 2.0 </td> </tr> <tr> <td style="text-align:left;"> Utilização do recurso (%) </td> <td style="text-align:right;"> 100.0 </td> </tr> </tbody> </table> .small[Como todos os trabalhos chegam no tempo zero, o tempo de fluxo de cada trabalho é igual ao seu instante de conclusão. A utilização resulta em 100% porque o exemplo não inclui ociosidade entre trabalhos.] --- # Comparação das regras na mesma carteira <table class="table table-striped table-hover" style="font-size: 20px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Regra </th> <th style="text-align:left;"> Sequência </th> <th style="text-align:right;"> Fluxo médio (h) </th> <th style="text-align:right;"> Atraso médio (h) </th> <th style="text-align:right;"> Atraso máximo (h) </th> <th style="text-align:right;"> Atrasados </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> FIFO </td> <td style="text-align:left;"> A – B – C – D – E </td> <td style="text-align:right;"> 20.4 </td> <td style="text-align:right;"> 5.8 </td> <td style="text-align:right;"> 23 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:left;"> MTP </td> <td style="text-align:left;"> B – E – C – A – D </td> <td style="text-align:right;"> 16.8 </td> <td style="text-align:right;"> 3.6 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:left;"> MDE </td> <td style="text-align:left;"> B – E – A – C – D </td> <td style="text-align:right;"> 17.0 </td> <td style="text-align:right;"> 2.8 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:left;"> MFE </td> <td style="text-align:left;"> A – B – E – C – D </td> <td style="text-align:right;"> 18.6 </td> <td style="text-align:right;"> 3.6 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 4 </td> </tr> </tbody> </table> .decision-note[MTP produz o menor fluxo médio. MDE produz o menor atraso médio. A escolha depende do objetivo que a programação deve proteger.] --- # Decisão de prioridade em contexto | Situação | Regra inicial plausível | Verificação necessária | |---|---|---| | fila longa e muitos trabalhos curtos | MTP | pedidos longos podem esperar demais | | contratos com datas rígidas | MDE | datas não consideram o esforço restante | | urgência depende de prazo e processamento | MFE | a folga muda conforme o tempo avança | | transparência pela ordem de chegada | FIFO | pedidos urgentes podem atrasar | --- # Gráfico de Gantt · Sequenciamento MTP <img src="index_files/figure-html/gantt-chart-1.png" alt="" width="60%" style="display: block; margin: auto;" /> --- # Carga de máquinas ## Definição **Carga de máquinas** é o processo de: - Alocar ordens de produção aos centros de trabalho - Calcular a **capacidade necessária** vs **capacidade disponível** - Identificar **gargalos** e **ociosidades** - Balancear a distribuição do trabalho --- # Carga finita e carga infinita ## Tipos de Carga: .pull-left[ ### Carga Finita - Respeita capacidade máxima - Considera restrições reais - Mais realista ] .pull-right[ ### Carga Infinita - Ignora restrições - Planejamento inicial - Identifica necessidades ] .tip[Carga infinita expõe a necessidade. Carga finita transforma essa necessidade em um programa que respeita o limite do recurso.] --- # Carga finita e carga infinita no mesmo caso Uma máquina possui **20 horas disponíveis** no horizonte e recebe **24,25 horas** de trabalho. | Abordagem | Resultado | |---|---| | carga infinita | registra 24,25 h e evidencia um déficit de 4,25 h | | carga finita | limita o programa a 20 h e desloca, divide ou renegocia parte da carga | .question[Qual decisão precisa ser tomada antes de publicar o programa: hora extra, recurso alternativo, divisão da ordem ou novo prazo?] ??? **Resposta** Eliminar o déficit de 4,25 h. Priorizar recurso compatível com folga; se inviável, usar hora extra, dividir a ordem ou renegociar o prazo. --- # Cálculo da carga de máquinas ## Fórmula Básica: `$$\text{Carga Total} = \sum_{i=1}^{n} (T_{setup_i} + T_{proc_i} \times Q_i)$$` Onde: - `\(T_{setup_i}\)` = Tempo de setup da ordem `\(i\)` - `\(T_{proc_i}\)` = Tempo de processamento unitário da ordem `\(i\)` - `\(Q_i\)` = Quantidade de peças da ordem `\(i\)` - `\(n\)` = Número de ordens --- # Taxa de utilização ## Taxa de Utilização: `$$\text{Utilização (%)} = \frac{\text{Carga Total}}{\text{Capacidade Disponível}} \times 100$$` --- # Exemplo prático · Carga de máquinas <table class="compact-load-table table table-hover" style="margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Ordem </th> <th style="text-align:left;"> Produto </th> <th style="text-align:left;"> Máquina </th> <th style="text-align:right;"> Setup (h) </th> <th style="text-align:right;"> Tempo unit. (h) </th> <th style="text-align:right;"> Qtd. </th> <th style="text-align:right;"> Carga total (h) </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;width: 11%; font-weight: bold;white-space: nowrap;"> OP-001 </td> <td style="text-align:left;width: 15%; "> Eixo A </td> <td style="text-align:left;width: 16%; white-space: nowrap;"> Torno-01 </td> <td style="text-align:right;width: 12%; "> 0.50 </td> <td style="text-align:right;width: 18%; "> 0.15 </td> <td style="text-align:right;width: 9%; "> 50 </td> <td style="text-align:right;width: 19%; "> 8.00 </td> </tr> <tr> <td style="text-align:left;width: 11%; font-weight: bold;white-space: nowrap;"> OP-002 </td> <td style="text-align:left;width: 15%; "> Polia B </td> <td style="text-align:left;width: 16%; white-space: nowrap;"> Torno-01 </td> <td style="text-align:right;width: 12%; "> 0.75 </td> <td style="text-align:right;width: 18%; "> 0.20 </td> <td style="text-align:right;width: 9%; "> 30 </td> <td style="text-align:right;width: 19%; "> 6.75 </td> </tr> <tr> <td style="text-align:left;width: 11%; font-weight: bold;white-space: nowrap;"> OP-003 </td> <td style="text-align:left;width: 15%; "> Eixo A </td> <td style="text-align:left;width: 16%; white-space: nowrap;"> Torno-02 </td> <td style="text-align:right;width: 12%; "> 0.50 </td> <td style="text-align:right;width: 18%; "> 0.15 </td> <td style="text-align:right;width: 9%; "> 100 </td> <td style="text-align:right;width: 19%; "> 15.50 </td> </tr> <tr> <td style="text-align:left;width: 11%; font-weight: bold;white-space: nowrap;"> OP-004 </td> <td style="text-align:left;width: 15%; "> Flange C </td> <td style="text-align:left;width: 16%; white-space: nowrap;"> Fresa-01 </td> <td style="text-align:right;width: 12%; "> 1.00 </td> <td style="text-align:right;width: 18%; "> 0.30 </td> <td style="text-align:right;width: 9%; "> 20 </td> <td style="text-align:right;width: 19%; "> 7.00 </td> </tr> <tr> <td style="text-align:left;width: 11%; font-weight: bold;white-space: nowrap;"> OP-005 </td> <td style="text-align:left;width: 15%; "> Polia B </td> <td style="text-align:left;width: 16%; white-space: nowrap;"> Torno-02 </td> <td style="text-align:right;width: 12%; "> 0.75 </td> <td style="text-align:right;width: 18%; "> 0.20 </td> <td style="text-align:right;width: 9%; "> 40 </td> <td style="text-align:right;width: 19%; "> 8.75 </td> </tr> </tbody> </table> --- # Análise de carga por máquina <div style="border: 1px solid #cfd8de; padding: 0;overflow-x: scroll; width:100%; "><table class="machine-load-table table table-hover" style="margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Máquina </th> <th style="text-align:right;"> Ordens </th> <th style="text-align:right;"> Setup (h) </th> <th style="text-align:right;"> Proc. (h) </th> <th style="text-align:right;"> Carga (h) </th> <th style="text-align:right;"> Cap. (h) </th> <th style="text-align:right;"> Util. (%) </th> <th style="text-align:left;"> Status </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> Fresa-01 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1.00 </td> <td style="text-align:right;"> 6.00 </td> <td style="text-align:right;"> 7.00 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 35.0 </td> <td style="text-align:left;"> 🟢 Normal </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> Torno-01 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1.25 </td> <td style="text-align:right;"> 13.50 </td> <td style="text-align:right;"> 14.75 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 73.8 </td> <td style="text-align:left;"> 🟢 Normal </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> Torno-02 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1.25 </td> <td style="text-align:right;"> 23.00 </td> <td style="text-align:right;"> 24.25 </td> <td style="text-align:right;"> 20 </td> <td style="text-align:right;"> 121.2 </td> <td style="text-align:left;"> 🔴 Sobrecarga </td> </tr> </tbody> </table></div> --- # Visualização da carga de máquinas <img src="index_files/figure-html/plot-carga-1.png" alt="" width="60%" style="display: block; margin: auto;" /> --- # Diagnóstico da carga - **Torno-02:** 24,25 h de carga para 20 h disponíveis, com déficit de 4,25 h. - **Torno-01:** 14,75 h de carga e 5,25 h de capacidade livre. - **Fresa-01:** 7 h de carga e 13 h de capacidade livre. .question[Alguma operação do Torno-02 pode ser transferida para o Torno-01 sem violar roteiro, ferramental, qualidade ou prazo?] .decision-note[Capacidade livre em outro recurso só resolve o gargalo quando existe compatibilidade técnica.] ??? **Resposta** Possivelmente. Os dois produtos aparecem nos dois tornos. Confirmar programa CNC, ferramental, fixação, tolerâncias, operador e setup. A folga de 5,25 h pode absorver o déficit de 4,25 h. --- # Alternativas para o déficit de 4,25 horas | Ação | Efeito esperado | Risco ou condição | |---|---|---| | hora extra no Torno-02 | mantém o roteiro e o prazo | custo adicional e fadiga | | transferir operação elegível | usa a folga do Torno-01 | exige ferramental e qualificação | | dividir uma ordem | entrega parte no horizonte | aumenta controle e movimentação | | renegociar o prazo | elimina a sobrecarga imediata | afeta o nível de serviço | --- # Composição da carga <img src="index_files/figure-html/carga-composicao-1.png" alt="" width="60%" style="display: block; margin: auto;" /> --- # Balanceamento de carga ## Estratégias para Otimizar: .pull-left[ ### Quando há Sobrecarga: - 🔄 **Realocação** de ordens - ⏰ **Horas extras** programadas - 👥 **Subcontratação** externa - 📅 **Reprogramação** de prazos - 🆕 **Investimento** em capacidade ] .pull-right[ ### Quando há Ociosidade: - 📦 **Antecipação** de produção - 🔧 **Manutenção preventiva** - 📚 **Treinamento** de equipe - 🎯 **Melhorias** de processo - 🔍 **Busca** de novos pedidos ] --- # Análise de gargalos <table class="table table-striped table-hover" style="font-size: 30px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Máquina </th> <th style="text-align:right;"> Utilização (%) </th> <th style="text-align:right;"> Déficit (h) </th> <th style="text-align:left;"> Recomendação </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Torno-02 </td> <td style="text-align:right;"> 121.2 </td> <td style="text-align:right;"> 4.25 </td> <td style="text-align:left;"> Necessário ação imediata </td> </tr> <tr> <td style="text-align:left;"> Torno-01 </td> <td style="text-align:right;"> 73.8 </td> <td style="text-align:right;"> 0.00 </td> <td style="text-align:left;"> Operação normal </td> </tr> <tr> <td style="text-align:left;"> Fresa-01 </td> <td style="text-align:right;"> 35.0 </td> <td style="text-align:right;"> 0.00 </td> <td style="text-align:left;"> Verificar oportunidades </td> </tr> </tbody> </table> --- # Caso completo · Fábrica de componentes Uma fábrica recebeu cinco pedidos urgentes que devem passar por três máquinas. <table class="case-orders-table table table-hover" style="margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Pedido </th> <th style="text-align:left;"> Cliente </th> <th style="text-align:right;"> Prazo (dias) </th> <th style="text-align:right;"> Prioridade </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;font-weight: bold;"> P1 </td> <td style="text-align:left;"> Alpha </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 2 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;"> P2 </td> <td style="text-align:left;"> Beta </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;"> P3 </td> <td style="text-align:left;"> Alpha </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 3 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;"> P4 </td> <td style="text-align:left;"> Gamma </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;"> P5 </td> <td style="text-align:left;"> Delta </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 2 </td> </tr> </tbody> </table> .tip[Prioridade 1 representa a maior urgência. Em caso de empate, o menor prazo vem primeiro.] --- # Roteiro do estudo de caso <div style="border: 1px solid #cfd8de; padding: 0;overflow-y: scroll; height:420px; overflow-x: scroll; width:100%; "><table class="complete-case-table table table-hover" style="margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> Pedido </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Operação </th> <th style="text-align:left;position: sticky; top:0; background-color: #FFFFFF;"> Máquina </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Setup (h) </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> Processamento (h) </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> M1 </td> <td style="text-align:right;"> 0.50 </td> <td style="text-align:right;"> 2.00 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> M2 </td> <td style="text-align:right;"> 0.30 </td> <td style="text-align:right;"> 1.50 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> M3 </td> <td style="text-align:right;"> 0.40 </td> <td style="text-align:right;"> 1.00 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P2 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> M1 </td> <td style="text-align:right;"> 0.50 </td> <td style="text-align:right;"> 1.00 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P2 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> M2 </td> <td style="text-align:right;"> 0.40 </td> <td style="text-align:right;"> 0.80 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P2 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> M3 </td> <td style="text-align:right;"> 0.30 </td> <td style="text-align:right;"> 1.20 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P3 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> M1 </td> <td style="text-align:right;"> 0.30 </td> <td style="text-align:right;"> 1.80 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P3 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> M2 </td> <td style="text-align:right;"> 0.50 </td> <td style="text-align:right;"> 2.20 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> M3 </td> <td style="text-align:right;"> 0.40 </td> <td style="text-align:right;"> 1.50 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P4 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> M1 </td> <td style="text-align:right;"> 0.50 </td> <td style="text-align:right;"> 1.50 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P4 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> M2 </td> <td style="text-align:right;"> 0.30 </td> <td style="text-align:right;"> 1.00 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P4 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> M3 </td> <td style="text-align:right;"> 0.40 </td> <td style="text-align:right;"> 1.30 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P5 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> M1 </td> <td style="text-align:right;"> 0.30 </td> <td style="text-align:right;"> 2.00 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P5 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:left;"> M2 </td> <td style="text-align:right;"> 0.40 </td> <td style="text-align:right;"> 1.50 </td> </tr> <tr> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P5 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> M3 </td> <td style="text-align:right;"> 0.50 </td> <td style="text-align:right;"> 2.50 </td> </tr> </tbody> </table></div> --- # Diagnóstico do caso antes da solução .your-turn[ **Equipes, 12 min** 1. Calculem a duração total de cada pedido. 2. Ordenem por prioridade e, em caso de empate, pelo menor prazo. 3. Calculem início, término e atraso de cada pedido. 4. Somem a carga de M1, M2 e M3. 5. Identifiquem a decisão que exige ação imediata. ] .question[Uma máquina com a maior carga é sempre um gargalo? Justifiquem usando capacidade e prazo.]
??? **Gabarito** - Duração total: P1 = 5,7 h; P2 = 4,2 h; P3 = 6,7 h; P4 = 5,0 h; P5 = 7,2 h. - Sequência por prioridade e prazo: P2 – P4 – P1 – P5 – P3. - Términos: 4,2 h; 9,2 h; 14,9 h; 22,1 h; 28,8 h. Nenhum atraso. - Carga por máquina: M1 = 10,4 h; M2 = 8,9 h; M3 = 9,5 h. - Com 40 h por máquina, não há sobrecarga. Maior carga não significa gargalo; compare carga, capacidade e prazos. --- # Solução · Sequenciamento por prioridade <div style="border: 1px solid #cfd8de; padding: 0;overflow-x: scroll; width:100%; "><table class="priority-sequence-table table table-hover" style="margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:right;"> Ordem </th> <th style="text-align:left;"> Pedido </th> <th style="text-align:left;"> Cliente </th> <th style="text-align:right;"> Prioridade </th> <th style="text-align:right;"> Duração (h) </th> <th style="text-align:right;"> Início (h) </th> <th style="text-align:right;"> Término (h) </th> <th style="text-align:right;"> Prazo (h) </th> <th style="text-align:right;"> Atraso (h) </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 1 </td> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P2 </td> <td style="text-align:left;"> Beta </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4.2 </td> <td style="text-align:right;"> 0.0 </td> <td style="text-align:right;"> 4.2 </td> <td style="text-align:right;"> 24 </td> <td style="text-align:right;"> 0.0 </td> </tr> <tr> <td style="text-align:right;"> 2 </td> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P4 </td> <td style="text-align:left;"> Gamma </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 5.0 </td> <td style="text-align:right;"> 4.2 </td> <td style="text-align:right;"> 9.2 </td> <td style="text-align:right;"> 32 </td> <td style="text-align:right;"> 0.0 </td> </tr> <tr> <td style="text-align:right;"> 3 </td> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P1 </td> <td style="text-align:left;"> Alpha </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 5.7 </td> <td style="text-align:right;"> 9.2 </td> <td style="text-align:right;"> 14.9 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> 0.0 </td> </tr> <tr> <td style="text-align:right;"> 4 </td> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P5 </td> <td style="text-align:left;"> Delta </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 7.2 </td> <td style="text-align:right;"> 14.9 </td> <td style="text-align:right;"> 22.1 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> 0.0 </td> </tr> <tr> <td style="text-align:right;"> 5 </td> <td style="text-align:left;font-weight: bold;white-space: nowrap;"> P3 </td> <td style="text-align:left;"> Alpha </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 6.7 </td> <td style="text-align:right;"> 22.1 </td> <td style="text-align:right;"> 28.8 </td> <td style="text-align:right;"> 48 </td> <td style="text-align:right;"> 0.0 </td> </tr> </tbody> </table></div> --- # Solução · Carga de máquinas <img src="index_files/figure-html/caso-carga-1.png" alt="" width="60%" style="display: block; margin: auto;" /> --- # Resultados e recomendações ## Análise: <table class="table table-striped table-hover" style="font-size: 20px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> Métrica </th> <th style="text-align:left;"> Valor </th> <th style="text-align:left;"> Avaliação </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Makespan total </td> <td style="text-align:left;"> 28.8 horas </td> <td style="text-align:left;"> Ordens cabem no horizonte </td> </tr> <tr> <td style="text-align:left;"> Utilização média </td> <td style="text-align:left;"> 24% </td> <td style="text-align:left;"> Capacidade agregada não restringe </td> </tr> <tr> <td style="text-align:left;"> Pedidos no prazo </td> <td style="text-align:left;"> 5/5 </td> <td style="text-align:left;"> Todos atendidos no modelo </td> </tr> <tr> <td style="text-align:left;"> Atraso médio </td> <td style="text-align:left;"> 0 horas </td> <td style="text-align:left;"> Sem atraso calculado </td> </tr> <tr> <td style="text-align:left;"> Recurso mais carregado </td> <td style="text-align:left;"> M1 </td> <td style="text-align:left;"> Maior carga, sem sobrecarga </td> </tr> </tbody> </table> .midi[ ## Recomendações: - ✅ Reduzir setup em M1 libera margem para novas ordens. - ✅ Hora extra não é necessária pela carga agregada deste caso. - ✅ O programa ainda deve verificar conflitos simultâneos e precedências entre máquinas. ] --- # 🔧 Ferramentas e alcance da programação | Ferramenta | Uso adequado | Limitação principal | |---|---|---| | quadro ou planilha | problema pequeno, regras claras e revisão rápida | controle manual cresce com o número de ordens | | ERP e módulo de produção | ordens, materiais, roteiros e apontamentos | pode não otimizar a sequência detalhada | | APS | sequenciamento com capacidade finita, setups, calendários e alternativas | depende de dados confiáveis e regras bem configuradas | | simulação ou otimização | comparação de cenários e restrições complexas | o modelo precisa representar a operação real | .tip[**APS — Advanced Planning and Scheduling (Planejamento e Programação Avançados):** transforma as ordens planejadas pelo MRP em um programa detalhado e viável, respeitando capacidade real, materiais, setups e calendários.] --- # Princípios para uma boa programação .midi[ .pull-left[ ## Planejamento - ✅ **Dados precisos:** tempos, capacidades e restrições - ✅ **Comunicação:** integração entre PCP, produção e vendas - ✅ **Flexibilidade:** contingências previstas - ✅ **Documentação:** registro de decisões e mudanças ## Execução - ✅ **Monitoramento:** acompanhar o progresso real - ✅ **Agilidade:** reagir a imprevistos - ✅ **Priorização:** concentrar atenção no trabalho crítico ] .pull-right[ ## Análise - ✅ **KPIs claros:** utilização e pontualidade - ✅ **Revisões:** analisar desvios periodicamente - ✅ **Melhoria contínua:** ajustar métodos ## Tecnologia - ✅ **Automatização:** reduzir trabalho manual - ✅ **Integração:** conectar os sistemas envolvidos - ✅ **Visualização:** acompanhar o programa em tempo real - ✅ **Contingência:** manter alternativas preparadas ] ] --- # 📊 Principais KPIs <table class="kpi-table table table-striped table-hover" style="font-size: 27px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> KPI </th> <th style="text-align:left;"> Descrição </th> <th style="text-align:left;"> Meta </th> <th style="text-align:left;"> Impacto </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Makespan </td> <td style="text-align:left;"> Tempo total de produção </td> <td style="text-align:left;"> Minimizar </td> <td style="text-align:left;"> Prazo total </td> </tr> <tr> <td style="text-align:left;"> Utilização </td> <td style="text-align:left;"> % tempo produtivo / tempo disponível </td> <td style="text-align:left;"> Faixa por recurso </td> <td style="text-align:left;"> Capacidade e fluxo </td> </tr> <tr> <td style="text-align:left;"> OTIF </td> <td style="text-align:left;"> On Time In Full - entregas no prazo e completas </td> <td style="text-align:left;"> > 95% </td> <td style="text-align:left;"> Satisfação cliente </td> </tr> <tr> <td style="text-align:left;"> Lead Time </td> <td style="text-align:left;"> Tempo do pedido até entrega </td> <td style="text-align:left;"> Reduzir </td> <td style="text-align:left;"> Agilidade </td> </tr> <tr> <td style="text-align:left;"> WIP </td> <td style="text-align:left;"> Work In Process - estoque em processo </td> <td style="text-align:left;"> Minimizar </td> <td style="text-align:left;"> Capital parado </td> </tr> <tr> <td style="text-align:left;"> Setup Time </td> <td style="text-align:left;"> Tempo médio de preparação de máquinas </td> <td style="text-align:left;"> < 10% do ciclo </td> <td style="text-align:left;"> Flexibilidade </td> </tr> </tbody> </table> .utilization-guidance[**Utilização depende do papel do recurso.** No gargalo, busca-se utilização elevada e protegida. Nos demais recursos, alguma capacidade ociosa pode ser necessária para manter o fluxo e responder a imprevistos.] ??? Uma meta única, como 80%, pode induzir decisões inadequadas. O gargalo determina a saída do sistema e deve permanecer produtivo. Recursos não gargalo precisam de folga para absorver variabilidade sem aumentar filas e estoque em processo. --- # Checklist de Programação .midi[ .pull-left[ ## Antes de Programar: - [ ] Todos os pedidos confirmados estão no sistema? - [ ] Roteiros de produção atualizados? - [ ] Capacidade das máquinas verificada? - [ ] Materiais disponíveis conferidos? - [ ] Ferramental em condições? ] .pull-right[ ## Durante a Programação: - [ ] Prioridades definidas claramente? - [ ] Restrições consideradas (precedências, calendário)? - [ ] Gargalos identificados e tratados? - [ ] Balanceamento de carga verificado? ## Após Programar: - [ ] Programa comunicado à produção? - [ ] Contingências planejadas? - [ ] Sistema de acompanhamento ativo? ]] --- # Conceitos centrais .midi[ .pull-left[ ## 📋 Roteiro de produção - Documento técnico que define **sequência**, **máquinas**, **tempos** e **precedências** - Base para planejamento e controle - Deve ser mantido atualizado ## 🔢 Sequenciamento - Ordem de execução das tarefas - Regras: **MTP**, **FIFO**, **MDE** e **MFE** - Impacto direto em **prazos** e **custos** ] .pull-right[ ## ⚙️ Carga de máquinas - Balanceamento entre **demanda** e **capacidade** - Identificação de **gargalos** e **ociosidades** - Decisões sobre **horas extras**, **subcontratação**, **investimentos** ]] --- # Protocolo para publicar o programa 1. confirmar ordens, materiais e roteiros; 2. calcular a carga por recurso no horizonte; 3. comparar carga com capacidade disponível; 4. escolher a regra de prioridade coerente com o objetivo; 5. calcular início, término, fluxo e atraso; 6. tratar sobrecargas e restrições técnicas; 7. comunicar o programa e acompanhar a execução. .decision-note[Um programa só é executável quando respeita materiais, precedências, capacidade e calendário.] --- # Para saber mais .midi[ .pull-left[ ## 📚 Livros recomendados - **Administração da Produção** - Slack, Chambers & Johnston - **Factory Physics** - Hopp & Spearman - **Theory of Constraints** - Goldratt - **Scheduling** - Pinedo ] .pull-right[ ## 🌐 Recursos online - APICS (Association for Supply Chain Management) - ISE Magazine (Institute of Industrial Engineers) - R for Operations Research - Coursera: Operations Management ## 🎓 Próximos passos - Simulação de eventos discretos - Programação linear e otimização - Teoria das Restrições (TOC) ]] --- class: center, middle # Fechamento .large[ A melhor sequência depende do objetivo, e a melhor regra precisa ser testada com indicadores. ] .question[Qual decisão da aula mudaria primeiro se uma máquina quebrasse durante o turno?] ??? **Resposta** A programação muda primeiro. Atualizar a capacidade, identificar ordens afetadas e resequenciar; depois, revisar prioridades e prazos se necessário.