Situações de atenção em Controle Estatístico de Processos#

Este notebook apresenta uma introdução ao Controle Estatístico de Processos (CEP) aplicado à construção civil, com exemplos e gráficos ilustrando diferentes situações de pontos de atenção.

Configuração do Processo#

  • Média esperada: 30 MPa

  • Desvio padrão: 2 MPa

  • Número de amostras: 30

  • Situações simuladas:

    1. Ponto fora do limite.

    2. Sequência de sete pontos acima/abaixo da média.

    3. Tendência ascendente.

    4. Alternância de pontos.

    5. Dois pontos consecutivos afastados 2/3 da linha central.

    6. Quinze pontos concentrados em 1/3 da linha central.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Configurações gerais
np.random.seed(42)  # Para reprodutibilidade
media = 30  # Resistência média esperada do concreto (MPa)
desvio_padrao = 2  # Desvio padrão
n_amostras = 30  # 30 dias (uma amostra por dia)

# Limites de controle
LC = media
LCS = media + 3 * desvio_padrao
LCI = media - 3 * desvio_padrao

def plot_grafico(df, titulo, pontos_atencao):
    """Função para plotar o gráfico de controle destacando pontos de atenção."""
    plt.figure(figsize=(12, 6))
    plt.plot(df['Dia'], df['Resistência (MPa)'], marker='o', label='Resistência')
    plt.axhline(LC, color='green', linestyle='--', label='Linha Central (LC)')
    plt.axhline(LCS, color='red', linestyle='--', label='Limite Superior (LCS)')
    plt.axhline(LCI, color='red', linestyle='--', label='Limite Inferior (LCI)')
    
    # Destaque dos pontos de atenção
    plt.scatter(df.loc[pontos_atencao, 'Dia'], df.loc[pontos_atencao, 'Resistência (MPa)'], 
                color='red', label='Pontos de Atenção', zorder=5)
    
    plt.title(titulo)
    plt.xlabel('Dia')
    plt.ylabel('Resistência (MPa)')
    plt.legend()
    plt.grid()
    plt.show()

Análise de Causas e Correções para Situações de Controle Estatístico de Processos#

Situação 1: Um ou mais pontos fora do limite de controle#

  • Causa possível:
    Um erro grave no processo, como falhas na proporção de materiais (exemplo: excesso de cimento ou água) ou problemas na cura do concreto.

  • Correção:

    1. Revisar o lote específico para identificar a causa da anormalidade.

    2. Ajustar os procedimentos de mistura e controle de qualidade.

    3. Verificar a calibração dos equipamentos de medição.


# Situação 1: Um ou mais pontos fora do limite de controle
dados = np.random.normal(media, desvio_padrao, n_amostras)
dados[10] = LCS + 1  # Ponto fora do limite superior
df1 = pd.DataFrame({'Dia': range(1, n_amostras + 1), 'Resistência (MPa)': dados})
pontos_atencao = [10]  # Índice do ponto fora do limite
plot_grafico(df1, 'Situação 1: Ponto fora do limite de controle', pontos_atencao)

# Contexto: Um lote de concreto apresentou resistência anormalmente alta devido a um erro na proporção de cimento.
../../../_images/051d4d9d511025fdf0cadb1cf422e5a71c491b229ca27bab60936d22901315cb.png

Situação 2: Sete ou mais pontos consecutivos acima ou abaixo da média#

  • Causa possível:
    Alterações sistemáticas, como mudanças na qualidade dos materiais (cimento, agregados) ou condições ambientais (temperatura, umidade).

  • Correção:

    1. Inspecionar os materiais e seus fornecedores.

    2. Ajustar as condições ambientais do processo (exemplo: controle da temperatura na cura).

    3. Implementar um plano de amostragem mais rigoroso.


# Situação 2: Sete ou mais pontos consecutivos acima/abaixo da média
dados = np.random.normal(media, desvio_padrao, n_amostras)
dados[15:22] = media + 1  # Sete pontos acima da média
df2 = pd.DataFrame({'Dia': range(1, n_amostras + 1), 'Resistência (MPa)': dados})
pontos_atencao = list(range(15, 22))  # Índices dos sete pontos consecutivos
plot_grafico(df2, 'Situação 2: Sete pontos consecutivos acima da média', pontos_atencao)

# Contexto: Variações sistemáticas no processo de mistura causaram aumento contínuo na resistência.
../../../_images/f1c2cd153fdf8eea31a4c3760d4af887da4e9ce51ffabbf4e553875e3165543a.png

Situação 3: Tendência ascendente#

  • Causa possível:
    Um acúmulo de erros, como excesso de cura, aumento gradativo na temperatura, ou erros na dosagem dos materiais.

  • Correção:

    1. Monitorar as condições do ambiente e do processo ao longo do tempo.

    2. Implementar verificações intermediárias durante a produção.

    3. Ajustar os parâmetros do processo para evitar desvios contínuos.


# Situação 3: Tendência ascendente
dados = np.random.normal(media, desvio_padrao, n_amostras)
dados[20:26] = np.linspace(media - 2, media + 2, 6)  # Tendência ascendente
df3 = pd.DataFrame({'Dia': range(1, n_amostras + 1), 'Resistência (MPa)': dados})
pontos_atencao = list(range(20, 26))  # Índices da tendência
plot_grafico(df3, 'Situação 3: Tendência ascendente', pontos_atencao)

# Contexto: O aumento gradual na resistência pode indicar excesso de cura do concreto.
../../../_images/b5f4e7b903c3992016b03b3320c25ed2d4a04d3ea7049cf1d71b9ae5f924dfe3.png

Situação 4: Alternância de pontos#

  • Causa possível:
    Inconsistências no processo, como variações na proporção dos agregados ou inconsistências na homogeneidade da mistura.

  • Correção:

    1. Padronizar os procedimentos de mistura e dosagem.

    2. Treinar a equipe para evitar erros operacionais.

    3. Revisar os equipamentos de mistura para garantir uniformidade.


# Situação 4: Alternância de pontos
dados = np.random.normal(media, desvio_padrao, n_amostras)
alternancia = [media + (-1)**i * 0.5 for i in range(10)]  # Alternância corrigida para 10 pontos
dados[5:15] = alternancia
df4 = pd.DataFrame({'Dia': range(1, n_amostras + 1), 'Resistência (MPa)': dados})
pontos_atencao = list(range(5, 15))  # Índices dos pontos alternados
plot_grafico(df4, 'Situação 4: Alternância de pontos', pontos_atencao)

# Contexto: Alternância pode ser causada por inconsistências na proporção de agregados.
../../../_images/4198e8a89485cc14f0763251235672abe50e802ec128d768d054d7c8f0eac676.png

Situação 5: Dois pontos consecutivos afastados 2/3 da linha central#

  • Causa possível:
    Problemas pontuais em um lote de concreto, como diferenças na granulometria dos agregados ou variações no teor de umidade.

  • Correção:

    1. Verificar a umidade dos agregados antes do uso.

    2. Ajustar a proporção de água no processo com base na condição dos materiais.

    3. Analisar os dados de controle para evitar repetição da ocorrência.


# Situação 5: Três pontos consecutivos acima e abaixo da linha central
dados = np.random.normal(media, desvio_padrao, n_amostras)

# Definindo os pontos de atenção acima da linha central
dados[10:13] = [LC + (2/3) * desvio_padrao, LC + (1/3) * desvio_padrao, LC + (2/3) * desvio_padrao]

# Definindo os pontos de atenção abaixo da linha central
dados[20:23] = [LC - (2/3) * desvio_padrao, LC - (1/3) * desvio_padrao, LC - (2/3) * desvio_padrao]

# Criando o DataFrame
df5_combinado = pd.DataFrame({'Dia': range(1, n_amostras + 1), 'Resistência (MPa)': dados})

# Índices dos pontos de atenção
pontos_atencao_combinado = list(range(10, 13)) + list(range(20, 23))

# Gerar o gráfico com ambas situações
plot_grafico(df5_combinado, 
             'Situação 5: Pontos consecutivos acima e abaixo da linha central', 
             pontos_atencao_combinado)
../../../_images/5a426faa63864ee4ec2d6a90a601d2d3238eab61dd425514c7ef4a596d9ded2e.png

Situação 6: Quinze ou mais pontos em 1/3 da linha central#

  • Causa possível:
    O processo pode estar preso a uma faixa limitada de variação, indicando restrições nas condições de produção ou um ajuste muito conservador.

  • Correção:

    1. Reavaliar os limites de controle para garantir que são adequados ao processo.

    2. Verificar a capacidade do processo (CPk) para identificar restrições.

    3. Introduzir melhorias contínuas para aumentar a estabilidade e reduzir variações.


# Situação 6: Quinze pontos em 1/3 da linha central
dados = np.random.normal(media, desvio_padrao, n_amostras)
dados[15:30] = LC + (1/3) * desvio_padrao  # Quinze pontos concentrados
df6 = pd.DataFrame({'Dia': range(1, n_amostras + 1), 'Resistência (MPa)': dados})
pontos_atencao = list(range(15, 30))  # Índices dos pontos concentrados
plot_grafico(df6, 'Situação 6: Quinze pontos em 1/3 da linha central', pontos_atencao)

# Contexto: Pode indicar que o processo está preso a uma faixa limitada da variação aceitável.
../../../_images/548f9aef448bb9e33ec7752bb2f8ee86ac2f223b6e918a69af7a13ebe8d48723.png

Conclusão#

Cada gráfico demonstra uma situação específica que requer atenção no Controle Estatístico de Processos. Alterando os dados simulados, você pode testar e visualizar novos cenários. Considerando o exemplo cima, as ações sugeridas permitem investigar, corrigir e prevenir ocorrências semelhantes, melhorando a qualidade e a consistência do produto final.