Objetivo
Este relatório descreve, em linguagem acessível, o pipeline
de tratamento de dados, cálculo de fouling e construção da coluna de
PONTUAÇÃO para um navio específico da frota – aqui referenciado
como CARLA SILVA. A ideia é documentar de forma clara
como saímos da base bruta (df.xlsx) até chegar em uma série
histórica limpa, consistente e pronta para alimentar modelos preditivos
e dashboards.
## **Navio analisado:** CARLA SILVA
## **Período de dados:** 26/07/2021 a 20/11/2025
## **Número de registros:** 1396
O tratamento de NAs é feito em nível de registro, sem resumir por dia, e procura sempre respeitar a física do problema: posição do navio, consumo de combustível, velocidade mínima e dinâmica de operação.
dec_latitude, dec_longitude), o script:
data_ref), ordenando por
start_gmt_date;gps_flag para marcar possíveis casos
extremos em que ainda restasse alguma lacuna.Essa etapa reconstrói trajetórias contínuas do navio, minimizando buracos de GPS que poderiam atrapalhar a análise de velocidade e de ambiente.
Para trim, deslocamento, Beaufort e condição de mar, a lógica é:
na.approx;sea_condition, quando ela é ausente mas
existe beaufort, usa-se o Beaufort como proxy, reduzindo
perda de informação.A velocidade é tratada com regras físicas antes da interpolação:
speed = 0;speed = 0;A temperatura da água é processada em três etapas:
data_ref) usando
na.approx;temperatura ~ dec_latitude, explorando o gradiente térmico
com a latitude para estimar pontos faltantes;Para o consumo de combustível, o pipeline procura manter coerência física:
consumo == 0 mas
speed > 3 nós (consumo_erro = 1);consumo ~ speed + displacement + beaufortQuando não há dados suficientes para o modelo, o script não força uma correção e apenas registra o fato em mensagem, mantendo os zeros inconsistentes.
A partir das variáveis tratadas, o pipeline define um índice
físico de fouling (fouling_index), usando como
entrada:
consumo / speed);speed < 5 nós), que favorece a bioincrustação;Esses componentes são combinados em um escore bruto
(fouling_index_raw) e reescalados para a faixa
0–4, formando o fouling_index. Em
situações extremas, nas quais a reescala retorne apenas NAs (por
exemplo, pouca variância no índice bruto), o script normaliza
manualmente a faixa mínimo-máximo ou zera o índice, sempre explicitando
a decisão em mensagem.
O fouling_index funciona como um indicador
contínuo de “sujeira de casco”, independente da existência de
inspeções formais.
A PONTUAÇÃO original (0–24) é preservada e usada como âncora. A partir dela, o script reconstrói ciclos de fouling entre limpezas de casco, preenchendo os espaços sem inspeção com valores estimados coerentes com a física e com o padrão de limpeza → sujeira → limpeza.
pontuacao é copiada para
pontuacao_ref e nunca é alterada.PONTUAÇÃO == 0 logo após um valor alto (por
exemplo, ≥ 20);ciclo_fouling (0, 1, 2, …).Dentro de cada ciclo:
na.approx, tomando o tempo (start_gmt_date)
como eixo;cummax para garantir que a
trajetória seja não decrescente (ou seja, não “desce” a
PONTUAÇÃO dentro do mesmo ciclo, o que seria pouco plausível
fisicamente);O resultado é uma PONTUAÇÃO interpolada por ciclo, que representa o crescimento gradual da incrustação entre duas limpezas de casco.
Em alguns ciclos, é possível que quase não existam medições reais de
PONTUAÇÃO. Nesses casos, não há como interpolar adequadamente apenas com
as inspeções. Para esses pontos, o script usa o
fouling_index como plano B:
fouling_index é reescalado para a faixa observada
de PONTUAÇÃO;fouling_index é reescalado diretamente para
0–24.Dessa forma, o modelo sempre consegue fornecer uma estimativa de PONTUAÇÃO, mesmo em períodos longos sem inspeções registradas.
Ao final, o pipeline constrói:
pontuacao_modelada – a PONTUAÇÃO estimada (ciclos +
fouling_index);pontuacao_final – a combinação:
pontuacao_ref não é NA), usa-se o
valor medido;pontuacao_modelada).A coluna oficial de negócio é então criada como
PONTUAÇÃO, recebendo o valor de
pontuacao_final (0–24). Assim:
pontuacao / pontuacao_ref;PONTUAÇÃO.Ao executar o script
01_tratamento_NA_fouling_e_resumo_diario.R para o navio
CARLA SILVA, são gerados dois artefatos principais:
Base detalhada tratada por registro
Arquivo: df_tratado_fouling_<NAVIO>.xlsx (dentro da
pasta data/).
Esta tabela contém, para cada linha original:
gps_flag,
consumo_erro, ciclo_fouling etc.);fouling_index físico (0–4);pontuacao_ref);pontuacao_modelada);PONTUAÇÃO).Resumo diário por navio
Arquivo: df_resumo_diario_<NAVIO>.xlsx (dentro da
pasta data/).
Cada linha corresponde a um dia de operação
(data_ref) e inclui:
ship_name – nome do navio;n_registros – número de registros daquele dia.speed_media – velocidade média no dia (nós);speed_max – velocidade máxima;tempo_low_speed_pct – percentual do tempo em baixa
velocidade (speed < 5 nós).consumo_total – consumo total de combustível no
dia;consumo_medio – consumo médio por registro.temperatura_media – temperatura média da água;beaufort_medio – média da escala Beaufort;sea_condition_media – condição média de mar.fouling_medio – valor médio diário do índice físico de
fouling;fouling_max – valor máximo diário do índice físico de
fouling.pontuacao_media – média diária da PONTUAÇÃO FINAL (real
+ estimada);pontuacao_inspecao_media – média diária apenas da
PONTUAÇÃO de inspeções reais (pontuacao_ref).Esse resumo diário é a entrada natural para:
O pipeline descrito cria uma ponte entre a base bruta de operação do
navio e uma visão consolidada de fouling e eficiência
energética, respeitando as restrições físicas (posição,
consumo, velocidade) e a lógica operacional de limpezas de casco. A
coluna PONTUAÇÃO, construída a partir de
inspeções reais e estimativas consistentes, permite:
Como próximos passos, essa mesma lógica pode ser replicada para outros navios, permitindo: