Escolar Documentos
Profissional Documentos
Cultura Documentos
CAMPINAS
2019
MAURICIO BARRIOS CASTELLANOS
CAMPINAS
2019
Ficha catalográfica
Universidade Estadual de Campinas
Biblioteca da Área de Engenharia e Arquitetura
Luciana Pietrosanto Milla - CRB 8/8129
A ata da defesa com as respectivas assinaturas dos membros encontra-se no processo de vida
acadêmica do aluno.
Dedico este trabajo a mi esposa Edna, a mis padres Romelia y Hernan, a mis hermanos
Carlos y Diego, quienes me dieran la fuerza, la perspectiva y la confianza para continuar.
Agradecimentos
Eu gostaria de expressar meus agradecimentos a meu orientador Prof. Dr. Alberto Luiz Serpa
pelo apoio contínuo, paciência, conhecimento e motivação. Pela confiança e a oportunidade de
trabalhar com ele no desenvolvimento deste mestrado.
Aos membros das bancas de qualificação e de defesa, Prof. Dr. Valdir Estevam, Prof. Dr. Hélio
Fiori de Castro e Prof. Dr. Daniel Augusto Pereira pelas sugestões realizadas a esse trabalho.
Aos companheiros de laboratório Luis Ruiz, Camilo Ariza, Felipe Barrera, Felipe de Castro,
Mauricio de Melo, Carolina Corredor e Giovanna Zanoni, por seu conhecimento, apoio e ami-
zade.
A todos os companheiros e amigos que conheci no Brasil, aqueles que me acolheram nessas
terras, Ao Lucho, Caro, Mafe, Cami, Pipe, Juli, Diego, Laura, Marce, German, Cata e Lucho
Izquierdo.
The monitoring of centrifugal pumps is essential for the suitable operation of several industrial ap-
plications. The reliability of the petroleum artificial lifting systems depends substantially on the perfor-
mance of electrical submersible centrifugal pumps (ESP). These pumps can operate subjected to severe
operating conditions like viscous and multi-phase flow. In recent years, real-time technologies based on
machine learning algorithms have gained visibility due to the capability to take advantage of the machi-
nery historical data for future event predictions. Many kinds of incipient faults are related to changes in
the fluid or external machinery associated with the process. This document proposes the use of decision
trees (AD) and a particular decision tree structure named here as a decision tree chain (CAD) for the
detection and classification of failures. The methodology proposed in the CAD intends to improve the
classification distribution maintaining simplified relationships between monitored variables and failures.
Operational failures are simulated, monitored and labeled in a multistage centrifugal pump operating in
two different scenarios, in one-phase petroleum regime and with a mixture of petroleum and nitrogen,
considering as faults the abruptly close of choke valve (CV), the decreasing of input pressure (DIP), the
increasing of fluid viscosity (VI) one-phase flow, and for two-phase case including the increasing of gas
flow rate (GI). Experiments were performed to label and to select the features that strongly represent the
faults. The features and its time variations were used as inputs to the supervised classifiers. The results
obtained using AD and CAD are compared in terms of accuracy and misclassification error getting bet-
ter results in determining the fault kind for the CAD structure. The implemented algorithms correctly
detected 80 to 90% of the faults. The classification was measured using the confusion matrix metrics,
obtaining an accuracy between 75 and 82%. The decision trees evaluated have potencial to detect faults
in the BCS applications due to its detection, classification and interpretability capability.
Keywords: Electrical submersible pump, Machine learning, Two-phase flow, Decision Tree.
Lista de Figuras
Letras Romanas
l Vetor de rótulos
ṁ vazão mássica
h̄ Amostras no nó
p Pressão
s Variância remanescente
sw Variância média
T Temperatura
q Vazão volumétrica
W Potência
Letras Gregas
= Critério de impureza
λ Vetor de pesos por falha
Φ Nó da árvore
φ Ponto de divisão do nó
η Eficiência
Ω Velocidade específica
ω Velocidade angular
τ Torque
Superescritos
Subescritos
AD Árvore de Decisão
1 INTRODUÇÃO 18
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3 Organização do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 REVISÃO DA LITERATURA 23
2.1 Monitoramento da condição de operação em BCS . . . . . . . . . . . . . . . . . . . . . 23
2.2 Aprendizado automático na detecção de falhas . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Monitoramento da condição de operação em BCS com aprendizado automático . . . . . 25
4 ÁRVORES DE DECISÃO 40
4.1 Construção das Árvores de Decisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2 Critérios de divisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.1 Índice Gini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.2 Entropia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Critérios de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5 DESENVOLVIMENTO EXPERIMENTAL 48
5.1 Circuito de testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2 Procedimento experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2.1 Fechamento da válvula choke (CV) . . . . . . . . . . . . . . . . . . . . . . . . 54
5.2.2 Diminuição da pressão de entrada (DIP) . . . . . . . . . . . . . . . . . . . . . . 55
5.2.3 Aumento da viscosidade do fluido (VI) . . . . . . . . . . . . . . . . . . . . . . 55
5.2.4 Aumento da fracção de gás (GI) . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8 RESULTADOS E DISCUSSÕES 68
8.1 Escoamento monofásico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.1.1 Árvore de Decisão AD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.1.2 Cadeia de Árvores de Decisão CAD . . . . . . . . . . . . . . . . . . . . . . . . 71
8.1.3 Comparação AD e CAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.2 Escoamento bifásico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.2.1 Árvore de Decisão AD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.2.2 Cadeia de Árvores de Decisão CAD . . . . . . . . . . . . . . . . . . . . . . . . 79
8.2.3 Comparação AD e CAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9 CONCLUSÕES 84
Bibliografia 87
1 INTRODUÇÃO
fásico, abrasão, fluidos de alta viscosidade, erosão, etc.) que variam dependendo da instalação do equi-
pamento. Estas variações dificultam o estabelecimento de um procedimento geral de monitoramento [1,
4]. Recentemente, a indústria petrolífera tem aumentado seu interesse na implementação de soluções
de mineração de dados para análise preditiva em tempo real [5], aplicações offshore [6] e previsão de
falhas [7].
Um dos métodos de mineração de dados amplamente usado é o classificador de Árvore de Decisão
(AD). As Árvores de Decisão são algoritmos que aprendem uma hierarquia de questões do tipo se /
senão levando à classificação requerida [8]. Sua compreensibilidade, baseada em uma série de regras,
permite estabelecer uma relação entre as variáveis monitoradas em tempo real (por exemplo pressão,
vazão, corrente elétrica e torque) e mudanças prematuras de comportamento ou falhas, no caso deste
trabalho CV, DIP, GI e VI.
As Árvores de Decisão com sinais de vibração mecânica como entradas foram aplicadas com sucesso
na detecção de falhas (cavitação, falha no mancal, falha no impulsor e falha na vedação) de bombas
centrífugas convencionais (bombas de voluta de um estágio trabalhando sob escoamentos monofásicos
de baixa viscosidade), como classificadores [9–11], ferramentas de extração de características [12] e
metodologias de montagem de Árvore de Decisão [13]. No entanto, o uso de classificadores de Árvore
de Decisão para monitoramento de condições em bombas centrífugas multiestágio de difusores sob alta
viscosidade em escoamento bifásico não tem sido estudado ainda na literatura recente.
Esta pesquisa apresenta uma metodologia para prever comportamentos atípicos das condições de
operação (CV, DIP, GI e VI) usando Árvores de Decisão e uma Cadeia de Árvores de Decisão (CAD).
A abordagem CAD reduz o erro de classificação para essa aplicação em comparação com uma AD,
preservando a compreensão dos resultados.
1.1 Motivação
BCS
Bombas Jet
Profundidade, ft
Mudanças na
Pressão (DIP)
O histórico de falhas apresentadas pelo sistema, bem como o comportamento das variáveis do mesmo
são informações que normalmente estão disponíveis para a análise nos sistemas de bombeamento. Mo-
delos reativos para identificar a causa da falha são implementados com frequência. Portanto, um dos
grandes desafios é passar de uma abordagem reativa para uma abordagem preditiva, que permita que
decisões sejam tomadas antes que novas falhas ocorram.
Esse cenário é muito favorável para a implementação de métodos de aprendizado de máquina, uma
vez que um grande volume de informações está disponível e os sistemas podem ser muito diferentes.
21
Esses métodos permitem treinar algoritmos baseados em dados, que seriam capazes de prever compor-
tamentos futuros (no caso com falhas operacionais), independentemente de que os sistemas a serem
analisadas sejam muito diferentes.
Uma das principais desvantagens dos métodos de aprendizado de máquinas é sua estrutura de caixa
preta. Ou seja, a dificuldade em entender como o algoritmo desenvolvido faz as previsões. Não obstante,
há um método que permite uma compreensão razoável do processo, que é chamado na literatura de
Árvore de Decisão.
As árvores de decisão são métodos de aprendizado de máquina que, além de permitir a previsão de
comportamentos, também permitem entender as relações entre falhas e variáveis de processo. Esta é a
principal motivação para implementá-las na detecção de falhas, além de sua simplicidade, baixo custo
de computação, tolerância ao ruído e capacidade de lidar com dados redundantes.
1.2 Objetivos
O alvo principal do presente trabalho é propor, implementar e testar uma ferramenta computacio-
nal, que seja capaz de detectar e classificar falhas operacionais em uma bomba centrífuga de múltiplos
estágios, usando as variáveis monitoradas para tal proposito, como é esquematizado na Figura 1.3.
Variáveis GI
monitoradas
VI
Não
Se apresenta uma
DIP
falha operacional?
A ferramenta selecionada é a das Árvores de Decisão. Portanto, torna-se o objetivo principal deste
trabalho a implementação de Árvores de Decisão que sejam capazes de determinar se a bomba tem
alguma anomalia ou está em boas condições. Por sua vez, como mostrado na Figura 1.3, se o sistema
não estiver em boas condições, determinar se corresponde a um fechamento abrupto da válvula choke
(CV), um aumento na pressão de entrada da bomba (DIP), um aumento na viscosidade (VI) no caso
monofásico ou para escoamento bifásico adicionando-se o aumento na fração de gás (GI).
Os seguintes objetivos específicos são então propostos para atingir o alvo principal:
• Realizar experimentos de simulação de condições normais e anormais (CV, DIP, VI e GI) de uma
bomba centrífuga submersa, monitorando variáveis do processo.
• Projetar e implementar Árvores de Decisão para detecção de falhas na BCS, escolhendo os cri-
térios de impureza e de parada do algoritmo, evitando soluções pouco generalistas, as quais são
boas só para um conjunto reduzido de dados.
• Testar e comparar os algoritmos projetados, usando dados que não tenham sido considerados no
processo de treinamento e validação.
Inicialmente, são realizados experimentos, onde condições normais e as falhas CV, DIP, VI e GI
são simuladas, monitorando as variáveis operacionais. Seguidamente, as variáveis usadas na detecção
de falhas são selecionadas e os respectivos sinais tratados. As estruturas para a classificação de falhas
baseadas em árvores de decisão são projetadas, selecionando os parâmetros necessários. Finalmente, os
algoritmos são testados.
A estrutura desta dissertação é a seguinte: a revisão da literatura é apresentada no Capítulo 2. Con-
ceitos básicos das bombas centrífugas submersíveis, as Árvores de Decisão e sua aplicação na detecção
de falhas são apresentados nos capítulos 3 e 4 respectivamente. A descrição da bancada de testes e o pro-
cedimento experimental estão descritos no Capítulo 5. O Capítulo 6 descreve a identificação de falhas
usando as variáveis monitoradas. No Capítulo 7 descreve-se o projeto, treinamento, validação e teste das
Árvores de Decisão. Posteriormente, os resultados dos experimentos e a discussão são apresentados no
Capítulo 8. Finalmente, as conclusões são apresentadas no Capítulo 9.
23
2 REVISÃO DA LITERATURA
Nesta seção, é apresentada uma revisão da literatura, começando com o monitoramento de bombas
centrífugas submersíveis, depois com o uso de técnicas de aprendizado automático para detecção e iden-
tificação de falhas em bombas convencionais, e finalizando com a implementação dessas técnicas em
BCS.
Os sistemas de monitoramento de poços em tempo real começaram a ser usados em bombas cen-
trífugas submersíveis devido à necessidade de controle sobre a produção. Inicialmente, sistemas de
monitoramento de fundo de poço foram implementados. Nesses sistemas, a vigilância das pressões de
entrada, separação e descarga da bomba em tempo real permitiram tomar decisões sobre a operação e a
detecção de possíveis falhas eléctricas ou mecânicas [14]. Depois disso, a instalação de sensores de tem-
peratura, de vazão e sísmicos proporcionou o controle em tempo real da velocidade de rotação, melhor
gerenciamento da produção e previsão de falhas [15].
Diferentes métodos têm sido propostos e aplicados para a detecção e identificação de falhas em
bombas centrífugas submersíveis. Durante décadas, a supervisão de condições operacionais das BCS
baseou-se apenas na interpretação da corrente elétrica através de cartas amperimétricas [1]. Recente-
mente, o uso de técnicas do tipo soft computing começou a ser considerado como uma alternativa para o
monitoramento de falhas nos chamados poços inteligentes (smart-wells), com a lógica difusa sendo uma
das técnicas mais reportadas. No entanto, diversas tecnologias baseadas em algoritmos de aprendizado
têm ganhado importância nos últimos anos.
Thornhill et al. [16] apresentaram uma metodologia de lógica difusa para a identificação de falhas em
BCS baseada em medições de pressão, vazão, corrente do motor elétrico e temperatura do motor. Este
trabalho considerou o uso dessa técnica para detecção e classificação de falhas baseada nas variáveis
monitoradas em tempo real no poço. As variações da válvula choke, variações de velocidade angular,
desligamentos da bomba, bloqueio da bomba por gás, desgaste e entupimento da bomba foram as falhas
monitoradas.
Um sistema especializado baseado em outra técnica baseada em dados foi usado para identificar
falhas de bombas em sistemas de elevação artificial por Blanckaert et al. [17], onde uma rede bayesiana
com sua capacidade de raciocínio probabilístico foi usada para representar o conhecimento físico da
bomba. O sistema foi testado em um campo com aproximadamente vinte bombas durante um mês e meio.
As falhas detectadas e classificadas foram baixa vazão, o deadhead (restrição na descarga da bomba),
injeção de gás, paradas da bomba e falha mecânica no poço (desgaste da bomba ou eixo quebrado). Dos
24
O diagnóstico de falhas pode ser visto como a determinação do estado do equipamento (mau ou bom
estado), a detecção das falhas incipientes, a determinação da causa dessas falhas e previsão de novas
falhas. Portanto, o diagnóstico de falhas pode ser interpretado como um problema de reconhecimento de
padrões. Os classificadores e abordagens de aprendizagem estatística têm sido extensamente empregados
no diagnóstico de falhas de máquinas rotativas [20]. A identificação de falhas usando técnicas de apren-
dizado automático com sinais de vibração no domínio da frequência tem sido amplamente estudada em
bombas centrífugas de um estágio operando com água. As falhas analisadas usualmente são cavitação,
falhas no mancal, falha do impulsor e falha no elemento vedante.
Sakthivel et al. [9] realizaram a identificação de falhas em uma bomba centrífuga utilizando um
classificador de Árvore de Decisão. A precisão da classificação obtida para cada falha isolada foi boa. O
algoritmo apresentou um desempenho notável na classificação de falhas e na redução de características,
ou seja, na seleção das variáveis relevantes que permitem identificar as perturbações.
Sakthivel et al. [10] compararam o método de Árvore de Decisão-difusa e o método de configuração
difusa rough set-fuzzy na classificação de falhas, mostrando um melhor desempenho para o método de
árvore decisão-difusa na exatidão geral e nas métricas da matriz de confusão.
Muralidharan et al. [11] apresentaram outra implementação do classificador de Árvore de Decisão
com extração de características usando o método nomeado na literatura como wavelets e determinando
a wavelet que levou à melhor precisão.
O classificador de redes Bayesianas e o classificador de máquinas de suporte vetorial (SVM) também
foram implementados na segregação de falhas com bons resultados em [21] e, [22] respectivamente.
25
As técnicas de aprendizado automático permitem o uso dos dados monitorados para implementar um
sistema de identificação com a vantagem de mudar de uma abordagem reativa, onde os eventos de falha
são analisados após já terem ocorrido, para uma abordagem proativa, onde tais eventos são previstos
com antecedência [5, 23]. As metodologias analíticas convencionais para monitoramento da condição
de operação e detecção de falhas na indústria de petróleo podem ser melhoradas mediante a implemen-
tação de tecnologias de aprendizado de máquina, uma vez que existe disponível um amplo histórico
das variáveis de controle e de processo, obtendo como resultado uma redução dos custos de inspeção,
evitando manutenções desnecessárias, identificando fraquezas de projeto e melhorando a produção [6].
Devido ao considerável potencial dessas técnicas e à implementação de novas tecnologias nas atividades
de produção de petróleo, a indústria aumentou o uso desses métodos na detecção de falhas nos últimos
anos. Atualmente, alguns trabalhos de detecção de falhas baseados em algoritmos de aprendizado foram
reportados com resultados significativos.
Patri et al. [24] apresentaram um método referenciado como shapelets de séries temporais, que foi
aplicado a um conjunto de dados de sensores de bombas de um campo de petróleo terrestre executando
uma detecção de falhas (ou falha ou normal). Esta metodóloga foi comparada com vários classificadores,
obtendo uma exatidão geral de 78 % para shapelets, 80 % para random forest e 75 % para a Árvore de
Decisão.
Procedimentos de classificação normal-anormal baseados no algoritmo não-supervisionado PCA
(Principal Component Analysis) foram apresentados em [5, 7]. Nestas estruturas propostas, os dados
históricos obtidos a partir de sensores de superfície e de fundo do poço foram usados para avaliar as
variáveis de desempenho usando o PCA para a redução dimensional e os conjuntos de dados históricos
para a separação das regiões estáveis das instáveis.
Sistemas de suporte às decisões (Decision Support Systems) para detecção e identificação de falhas
baseadas em lógica difusa foram propostos em [23, 25]. A redução dimensional de características e
a regressão foram realizadas nestes trabalhos com técnicas de mineração de dados (PCA e regressão
linear). Primeiro, calculou-se a média temporal dos dados para algumas amostras, e um algoritmo de
regressão linear previu a saída de determinado conjunto de dados. Em seguida, uma cadeia baseada em
regras difusas executa a classificação de falhas e, finalmente, o sistema gera um alarme se ocorrer uma
falha.
26
Neste capítulo, a descrição das leis físicas que governam o desempenho da bomba em escoamento
monofásico e bifásico é apresentada. Em seguida, as condições de operação das bombas multiestágio nas
aplicações de elevação artificial de petróleo são descritas. Finalmente, são expostos os desafios, falhas
típicas e prováveis causas de falha na operação das bombas.
As bombas são turbomáquinas hidráulicas, cuja função principal é fornecer energia mecânica a um
fluido compressível. De acordo com seu princípio de funcionamento, elas podem ser classificadas em
bombas centrífugas e bombas de deslocamento positivo.
As bombas de deslocamento positivo transportam pequenos volumes de fluido isolados uns dos ou-
tros. Cada pacote de fluido é transportado da zona de baixa pressão para a zona de alta pressão. Portanto,
seu correto funcionamento depende da capacidade volumétrica da bomba e de uma vedação adequada.
Se o volume interno da bomba e a velocidade de rotação forem mantidos constantes, a vazão será apro-
ximadamente constante, independentemente das variações de pressão. Este princípio físico as torna
adequadas para aplicações de alta pressão e baixa vazão.
Por outro lado, as bombas centrífugas utilizam a força centrípeta gerada por um rotor para transportar
o fluido do centro do rotor até a periferia. A pressão desenvolvida pela bomba está altamente correlacio-
nada com o volume de líquido transportado, fazendo esses equipamentos apropriados para aplicações de
alta vazão e baixa pressão.
As bombas centrífugas estão compostas principalmente de um rotor e uma carcaça. O rotor aumenta
a velocidade do fluido por meio da força centrípeta, enquanto a carcaça transforma essa energia cinética
do fluido em energia potencial de pressão. Nas configurações convencionais, a força centrípeta tem uma
direção radial ao eixo, e a carcaça tem forma de espiral e é conhecida como voluta [26].
No entanto, nas aplicações de elevação artificial, as bombas têm um arranjo diferente. Estão compos-
tas por múltiplos estágios posicionados em série para incrementar a pressão do fluido. Cada estágio tem
um rotor que gera forças nas direções radial ou axial, e um difusor que transforma a energia em pressão
levando o fluido ao estágio seguinte. Esses dispositivos, quando usados submersos, são chamados de
bombas centrífugas submersíveis (BCS). Segundo a direção de saída do fluido do rotor, as BCS podem
se classificar em: radiais, usadas para baixas vazões de produção até 4000 bpd (barris por dia); e mistas,
usadas para produções de óleo acima dos 4000 bpd.
A Figura 3.1 apresenta esquematicamente um estágio de uma BCS do tipo radial. Inicialmente,
o fluido entra pela parte central do rotor que gira a altas velocidades, e através da força centrífuga é
27
direcionado para a parte mais externa. Depois, no difusor o líquido é transportado de novo para o centro,
onde passa para o próximo estágio. O rotor fornece energia cinética ao escoamento, enquanto que o
difusor a transforma em energia potencial na forma de pressão.
O estágio da Figura 3.1 mostra uma versão em que são perfurados orifícios na cobertura superior
do impulsor e na cobertura inferior do difusor. Os orifícios fornecem um caminho para o fluido voltar
do difusor para o impulsor. Esse projeto reduz os efeitos do escoamento bifásico em aplicações com
alta presença de gás [1]. Embora se apresente uma diminuição da pressão gerada pelo estágio devido
à recirculação parcial da descarga do rotor para a admissão, a eficiência da bomba pode ser maior nos
casos de escoamento bifásico gás-líquido.
Inicialmente, as bombas foram projetadas idealmente para o transporte de líquidos de baixa visco-
sidade. Portanto, é estabelecido que sua operação ideal ocorre quando o equipamento está trabalhando
com água.
As condições de operação das BCS são determinadas por curvas de operação. Essas curvas são obti-
das experimentalmente pelo fabricante usando aguá como fluido de trabalho, para condições constantes
de velocidade angular e temperatura do fluido. A Figura 3.2 esboça as principais curvas operacionais
descritas como:
A vazão volumétrica ql , o ganho de pressão ∆p, o torque mecânico do eixo da bomba τ , e a veloci-
dade angular são medidos experimentalmente. Essas variáveis são então usadas para calcular a potência
28
Wh = ∆p ql
Wm = ω τ (3.1)
Wh
η=
Wm
O ponto de máxima eficiência, BEP (Best Efficiency Point), é determinado junto com as curvas de
eficiência.
ω2
ql2 = ql1 (3.2)
ω1
• A potência requerida pela bomba varia proporcionalmente com o cubo da velocidade angular
3
ω2
W2 = W1 (3.4)
ω1
Estas leis funcionam bem para fluidos de baixa viscosidade. A Figura 3.3 apresenta esquematica-
mente as curvas de operação determinadas pelas leis de afinidade para as velocidade de rotação de ω1
até ω5 . As linhas tracejadas representam os pontos achados pelas leis de afinidade onde a eficiência é
constante.
ω1
ω2
Ganho de Pressão (∆p)
ω3
ω4
ω5
Vazão (q)
Embora as bombas centrífugas sejam máquinas projetadas para trabalhar com líquidos de baixa vis-
cosidade, em aplicações de elevação artificial isso nem sempre é cumprido. Enquanto a viscosidade da
água é aproximadamente 1 cP em condições normais, as bombas centrífugas submersíveis podem operar
com óleos pesados com viscosidades entre 200 e 1000 cP. Além disso, o petróleo não é uma substância
pura monofásica. O fluido extraído do poço é uma mistura não homogênea de óleo, água, gás, areia e
sedimentos.
Um caso bastante comum ocorre quando há duas fases predominantes, um líquido constituído prin-
cipalmente por petróleo e uma fase gasosa. Estas condições operacionais produzem baixa eficiência,
gerando assim uma maior necessidade de energia. Isso acontece porque a bomba usa uma parte da
energia cinética fornecida pelo rotor para comprimir o volume de gás presente no escoamento [26].
30
Para o caso bifásico gás-líquido, a fração de vazio α é definida como a razão entre a vazão volumé-
trica de gás qg e a vazão total q, ou seja,
qg
α= (3.5)
q
O desempenho da bomba em escoamento bifásico associa-se diretamente à separação das fases pre-
sentes no escoamento. Se as fases tiverem um baixo grau de segregação, então a bomba tem um bom
desempenho, próximo ao comportamento monofásico. Alguns dos fatores que mais influenciam a sepa-
ração das fases são [26]:
• Diâmetro das bolhas de gás. Quanto maior o diâmetro das bolhas, maior será a separação das
fases;
• Massa específica das fases. Se as massas específicas das fases têm valores semelhantes, a mistura
bifásica terá menor tendência de separação;
• Rotação. Uma maior velocidade angular produzirá mais turbulência, diminuindo o diâmetro das
bolhas de gás. No entanto, o campo centrífugo no rotor também é aumentado, favorecendo a
segregação das fases.
Outro fator que influencia o comportamento da bomba é a geometria de seus componentes. Se-
gundo [26] e [27], o desempenho bifásico é afetado por:
• A velocidade especifica das bombas (Ωs ). Quanto maior a velocidade específica, melhor será
o desempenho do equipamento. No entanto, a capacidade de gerar pressão pode ser menor. A
Figura 3.4 mostra a variação da geometria do impulsor em função da velocidade especifica;
• O diâmetro nominal do rotor da bomba. Quanto maior o diâmetro, maior é a vazão de gás para a
qual o surging ocorre na operação da bomba;
• O ângulo de saída do rotor. o qual está diretamente relacionado à força centrífuga gerada pelo
rotor.
• Bolhas dispersas. São pequenas bolhas de gás presentes na entrada do impulsor. O diâmetro
dessas bolhas aumenta quando a fração do gás aumenta e diminui quando a vazão do líquido, a
pressão de entrada ou a velocidade angular aumentam.
• Surging. Desenvolve-se uma bolha alongada estacionária de grande diâmetro na entrada do rotor,
devido ao aumento da fração de gás até um ponto em que as pequenas bolhas anteriormente
formadas na entrada do rotor coalescem formando a bolha maior.
• Gas-locking. Quando a bolha estacionária ocupa mais de do 80% do canal do rotor, o líquido
deixa de escoar, produzindo um bloqueio por gás.
A Figura 3.5 mostra os limites das três regiões obtidos nos experimentos desenvolvidos por Este-
vam [29]. A linha vermelha tracejada representa a transição da região de bolhas dispersas para a região
de surging, enquanto que a linha azul tracejada representa o início do bloqueio por gás. Nesta figura, H
é a altura normalizada da coluna de gás e q l é a vazão volumétrica de líquido normalizada.
⍺ 2,7 %
⍺ 4,7 %
⍺ 7,7 % Surging
⍺ 10,3 %
⍺ 15,3 %
Inicio Surging
Inicio Gas-Locking
Gás Locking
ql
∆P
H= (3.6)
ρg
A altura normalizada H é definida como a razão entre H e a altura máxima da coluna de líquido que
32
H
H= (3.7)
Hmax
Similarmente, a vazão normalizada q l é definida como a razão entre a vazão de líquido transportada
qL e a vazão máxima que pode ser transportada pela bomba qmax , que seria determinado pela condição
monofásica,
ql
ql = (3.8)
qmax
• Apenas líquido entra na bomba centrífuga, proporcionando condições ideais para a bomba. O
poço deve produzir apenas uma pequena quantidade de gás na sucção da bomba, que pode ser
facilmente removida pelo separador de gás;
• O motor é suprido com uma corrente alternada de frequência constante e assim sua velocidade, e
consequentemente a da bomba centrífuga são constantes.
33
Quadro de
Distribuição.
Cabeça Caixa de
de poço. Junction.
Coluna de Produção.
Bomba.
Admissão ou
Separador de gás.
Protetor.
Motor
Embora as condições mencionadas anteriormente não sejam sempre cumpridas, a instalação conven-
cional de BCS pode ser aplicada em uma grande variedade de condições de campo. Condições incomuns
(como maior produção de gás, petróleo mais viscoso etc.) requerem o uso de equipamentos especiais [1].
Δp [kPa]
ql [m3/h]
Para uma velocidade angular constante, os fabricantes de bombas centrífugas submersíveis recomen-
dam trabalhar dentro de uma faixa de vazão recomendada . Esse intervalo geralmente varia entre ± 20%
do BEP. Fora da faixa de operação, as bombas apresentam uma operação mais ineficiente, ou seja, maior
consumo energético por unidade de líquido produzido.
Como as leis de afinidade estabelecem que ao mudar a velocidade da bomba a eficiência é mantida
constante, os variadores de frequência são amplamente utilizados para manter um bom desempenho do
equipamento.
A Figura 3.8 mostra as curvas de desempenho de uma bomba SN3600 em diferentes rotações. As
três linhas tracejadas representam [1]:
Note-se que que um aumento da rotação da bomba de até 70 Hz permite vazões acima de 5000 barris
por dia (bdp), mantendo um bom desempenho do equipamento.
35
Nos experimentos realizados por Monte Verde [31] para o caso de escoamento monofásico e para
baixas frações de gás no fluido (α), o efeito da pressão de entrada no desempenho da bomba foi consi-
derado desprezível. Por outro lado, quando estão presentes altas frações de gás no escoamento (α > 2),
um aumento na pressão de entrada permite melhorar o desempenho do equipamento.
Um aumento na pressão gera uma compressão dos gases que circulam dentro da bomba, diminuindo
a diferença entre as massas específicas das fases líquida e gasosa. Isso permite melhorar a qualidade
do escoamento, diminuindo a segregação das fases [31]. Embora um aumento na pressão de entrada
melhore o desempenho da bomba, não é um fator que pode ser controlado na maioria dos casos. Pelo
contrário, a pressão de sucção é determinada pelas pressões do reservatório, e pelo tipo de completação,
entre outras condições da instalação.
A Figura 3.9 mostra o desempenho de uma bomba GN5200 nos experimentos monofásicos reali-
zados por Monte Verde [31]. A capacidade de produção de líquidos é eficientemente diminuída com o
aumento da viscosidade. Enquanto o BEP para 76 cP de viscosidade é de cerca de 10 m3 /h, para 465 cP
é de cerca de 5 m3 /h. A vazão máxima que pode ser gerado também é afetado por esse comportamento.
36
Hl
ql
Para obter o maior tempo de duração possível de uma unidade de BCS é necessário monitorar re-
gularmente a operação da bomba e solucionar os problemas apresentados. Embora o monitoramento
adequado possa adiar danos ao sistema, estes acabam acontecendo. Estas podem estar relacionadas a
muitas possíveis causas. Nesta seção são descritos os problemas típicos que acontecem nas BCS, assim
como as possíveis causas deles de acordo com Tackacs et al. [1].
Assumindo que um projeto adequado do sistema foi feito, bem como uma instalação sem problemas,
o desempenho do sistema BCS e a vida útil dependem em grande parte do operador. A fim de garantir
uma operação rentável, alguns parâmetros chave devem ser continuamente monitorados e analisados para
avaliar as condições reais dos equipamentos e antecipar possíveis problemas.
Os três parâmetros operacionais mais importantes que devem ser monitorados regularmente, junta-
mente com seus possíveis diagnósticos, são os seguintes:
As bombas submersíveis operam sob condições adversas e estão sujeitas aos efeitos prejudiciais do
fluido do poço. Seus rolamentos, em contraste com os rolamentos do motor submersível que funcionam
com óleo de alta qualidade, são lubrificados pelo fluido bombeado e portanto podem falhar muito mais
cedo do que os do motor. Problemas típicos que podem gerar a parada da bomba são listados a seguir:
• O desgaste por compressão ocorre quando a bomba é operada em vazões superiores à taxa de
bombeamento máxima recomendada. Em bombas do tipo flutuante, os impulsores são forçados
contra os difusores, as arruelas de descarga ficam sobrecarregadas e o estágio eventualmente se
destrói, e se há materiais abrasivos no fluido do poço esse processo é acelerado.
• O desgaste radial causado por fluidos do poço carregados com abrasivos aumenta as folgas nos
mancais das bombas. Isso geralmente leva ao aumento das vibrações do eixo e a um maior des-
gaste dos rolamentos.
O dimensionamento inicial adequado é o principal requisito para uma vida útil longa do equipamento.
A unidade deve operar dentro da faixa de vazão de líquido recomendada da bomba; o desgaste da bomba
38
é acelerado, levando a falhas prematuras da bomba e do motor, se a unidade for operada fora dessa faixa.
O projeto adequado requer dados confiáveis sobre a produtividade do poço e informações precisas sobre
as propriedades do fluido. No entanto, as imprecisões de projeto podem ser corrigidas usando unidades
de velocidade variável (VSD).
Equipamentos defeituosos
Equipamentos defeituosos ou instalações trabalhando com equipamentos que não foram devidamente
verificados para a operação antes da instalação pode levar a uma falha prematura devido a defeitos de fa-
bricação. Portanto, os componentes da BCS devem ser testados antes de serem instalados no poço. Além
disso, a instalação correta de todos os componentes (motor, bomba, cabo, etc.) seguindo o adequado
procedimento é importante.
Condições do poço
Existem várias condições de poço que podem ter um efeito primordial na longevidade do equipa-
mento BCS, incluindo:
1. A corrosão pode afetar todas as partes do sistema, mas a corrosão do motor e carcaças da bomba
é a mais prejudicial para o sistema. A escolha adequada do material da carcaça ou a aplicação de
um revestimento adequado em superfícies externas pode adiar ou impedir esse tipo de falha.
3. A presença de areia ou abrasivos é o que mais prejudica a bomba afetando também os separado-
res rotativos de gás. Areia ou partículas abrasivas transportadas pelo líquido bombeado causam
abrasão e erosão nas partes onde altas velocidades de líquido estão presentes, que não são apenas
os estágios da bomba, mas rolamentos radiais e axiais. O dano nessas partes eventualmente leva
à perda total na capacidade de bombeamento. A escolha adequada do tipo de bomba e materiais
pode reduzir ou eliminar estes efeitos negativos.
4. As altas temperaturas do poço afetam principalmente o motor, o qual está sob condições desfavo-
ráveis, conduzindo inclusive à queima dele devido ao aumento de sua temperatura interna acima
da temperatura nominal.
5. A formação de gás causa problemas na bomba e no cabo elétrico do fundo do poço. A operação
da bomba pode se tornar instável levando finalmente a um bloqueio causado pela alta quantidade
de gás. A aplicação de separadores rotativos de gás, empaquetadores (packers) ou outros meios
de remoção de gás livre antes de entrar na bomba são as soluções mais comuns. No caso do cabo
elétrico, o gás pode atravessar o isolamento deste e a escolha adequada do material do cabo pode
resolver este problema.
39
6. Fluidos de alta viscosidade do poço, como regra, têm maior gravidade específica, portanto uma
maior potência da bomba é requerida para seu transporte. Além disso, a eficiência da bomba
centrífuga diminui devido ao aumento das perdas por atrito. Ambos efeitos resultam em maior
necessidade de potência no motor.
40
4 ÁRVORES DE DECISÃO
As Árvores de Decisão são modelos de inteligência artificial amplamente utilizados. Mesmo quando
outros algoritmos fornecem modelos mais precisos, estes algoritmos são frequentemente considerados
atraentes. Uma das razões mais importantes é sua compreensibilidade. As Árvores de Decisão podem ser
facilmente expressas na forma de um conjunto de regras lógicas fornecendo explicações simples sobre
decisões específicas, geralmente tendo uma regra para cada decisão, construindo assim uma conjunção
de várias premissas legíveis [32].
Supondo que temos que distinguir entre os seguintes quatro animais: ursos, falcões, pinguins e
golfinhos, fazendo a menor quantidade de perguntas. Pode-se começar perguntando se o animal tem
penas, uma questão que restringe as opções a dois animais. Se a resposta for "sim", então se pode fazer
outra pergunta que ajudaria a distinguir entre falcões e pinguins. Por exemplo, perguntar se o animal
pode voar. Se o animal não tiver penas, são possíveis duas escolhas, golfinhos e ursos, precisando
então de mais uma pergunta para distinguir entre esses dois animais, a qual poderia ser se o animal
tem barbatanas [8]. Esta série de questões pode ser expressa como a Árvore de Decisão mostrada na
Figura 4.1.
Tem Penas?
sim não
Logo, esse mesmo processo pode ser desenvolvido em qualquer contexto de classificação. A Fi-
gura 4.2 apresenta duas variáveis medidas em um experimento dado, X1 e X2 . De acordo com os
valores dessas variáveis, é possível classificar os dados em quatro classes diferentes (1, 2, 3 e 4). Se o
valor de X2 for maior que 4,1, os experimentos serão classificados em apenas duas classes possíveis (3
e 4). Se além disso, X1 for maior que 3,4, todos os dados seriam da mesma classe. A Árvore de Decisão
obtida nesta classificação é mostrada na Figura 4.3.
41
10
6
X2
0
0 2 4 6 8 10
X1
X2 > 4, 1
não sim
X1 > 7, 5 X1 > 3, 4
• O nó raiz Φ0 onde a divisão dos dados começa, o qual não tem linhas de entrada.
• Nós Φi , onde os dados são divididos sequencialmente. Cada nó tem uma linha de entrada e duas
linhas de saída.
• Os nós finais, os quais não têm ramificações e são conhecidos como Folhas.
Algoritmo CART
Árvores de Classificação e Regressão (CART) são um dos métodos mais populares e bem sucedidos
para a construção de Árvores de Decisão. Esses métodos foram desenvolvidos inicialmente por Breiman
et al. [34] em 1984, sendo depois melhorados e usados em múltiplas aplicações.
42
O algoritmo CART é não paramétrico e cria árvores binárias a partir de dados descritos por variáveis
contínuas ou discretas. Para variáveis contínuas, consideram-se todas as possíveis divisões binárias em
intervalos (−∞, a) e (a, ∞). Para as discretas são consideradas todas as possíveis divisões do conjunto
de variáveis, dividindo os dados em dois subconjuntos complementares [32].
Para um determinado conjunto de dados, a impureza é definida como uma medida da quantidade de
informação que eles possuem. Se os dados têm características semelhantes (homogêneos), são conside-
rados como dados puros. Caso contrário, quando os dados são muito heterogêneos, diz-se que eles têm
alta impureza.
O objetivo geral de uma classificação é obter conjuntos de dados homogêneos. Portanto, a melhor di-
visão dos dados ocorre quando é obtida a maior redução da impureza. Essa redução é realizada mediante
uma busca exaustiva, usando métodos de otimização.
Existem vários critérios para quantificar a impureza dos dados. Os algoritmos CART usam princi-
palmente dois, Gini e Entropia, os quais são abordados na Seção 4.2.
O processo Indução-AD para a construção de uma Árvore de Decisão pode ser descrito pelo Al-
goritmo 1. A melhor divisão possível φ do conjunto inicial de dados D é encontrada. O método
M elhorDivisão é usado para encontrá-la, procurando dentro de todas as possíveis divisões aquela que
gere a maior redução da impureza.
Em árvores tipo CART, um nó Φ tem apenas dois conjuntos de dados, D1 e D2 . Para cada conjunto
de dados, o processo de indução é repetido, mantendo sempre a relação entre o nó raiz Φi e o subconjunto
de nós.
Na maioria dos casos, as funções de divisão discretas têm só uma variação, ou seja, que um nó
interno é dividido de acordo com o valor de uma única variável. Consequentemente, o indutor procura
a melhor variável para dividir. Existem vários critérios, os quais podem ser caracterizados de diferentes
maneiras de acordo com [35]:
Para o caso dos algoritmos implementados, as regras usadas na divisão dos dados são baseadas em
impurezas. Essas regras são apresentadas na sequência.
O índice de Gini é um critério que mede a divergência entre as distribuições de probabilidade dos
valores da classe objetivo [35]. Dada a probabilidade θj de que a classe j aconteça em um conjunto de `
classes, o índice Gini é definido como
`
X
Gi = 1 − θj 2 (4.1)
j=1
Se θj é a probabilidade de que a classe j seja classificada corretamente no nó, então o índice Gini
pode ser interpretado como uma medida do erro na classificação. O processo de diminuição da impureza
usando o critério Gini não está baseado no critério de pluralidade, ou seja, não maximiza os acertos, e
sim diminui o erro [34].
4.2.2 Entropia
Na teoria da informação, a Entropia ou Entropia de Shannon [36] mede a incerteza de uma fonte de
informação.
A Entropia é considerada como a quantidade de informação média contida em um conjunto de sím-
bolos. Os símbolos com menor probabilidade são aqueles que fornecem mais informações. No caso
de um texto, por exemplo, palavras frequentes como os conectores "o", "à" ou "e" fornecem pouca
informação, enquanto palavras menos frequentes como verbos, adjetivos e substantivos fornecem mais
informações. Se excluirmos um artigo de um determinado texto, isso certamente não afetará a compre-
ensão. Entretanto, se são excluídas palavras como "ouvir", "carro"ou "branco", será difícil entender o
44
texto. Quando todos os símbolos são igualmente prováveis (todos fornecem informações relevantes) a
Entropia é máxima. Considerando θj a probabilidade de obter a característica j em um conjunto com `
símbolos, a Entropia do conjunto é definida por
`
X
Entropia = − θj log2 (θj ) (4.2)
j=1
Nos problemas de classificação pode-se dizer que uma amostra que contém muitas classes diferentes
possuem muita informação, ou seja, tem alta Entropia. Em contrapartida, se a amostra tem só uma classe,
ela terá pouca informação. Portanto, para garantir a uma boa classificação deve-se reduzir a informação
das amostras, isto é diminuir a Entropia dos dados.
Os critérios de divisão, que para o caso dos algoritmos do tipo CART são baseados na redução de
impureza, permitem a criação subsequente de nós, construindo o diagrama de fluxo conhecido como
Árvore de Decisão. Porém, essas regras não permitem estabelecer quanto deveria crescer a Árvore de
Decisão. Por exemplo, a Figura 4.2 apresenta um conjunto de dados com quarenta amostras, dez de cada
classe. A Árvore de Decisão apresentada na Figura 4.3 mostra uma classificação razoavelmente boa para
este conjunto de dados. No entanto, nem todas as amostras classificadas nas classes 2 e 3 pertencem ao
grupo correto. Em outras palavras, as classes 2 e 3 possuem algum grau de impureza, como é mostrado
na Tabela 4.1. Para cada um dos nós da árvore pode se observar o cálculo dos dois critérios de impureza,
baseado na probabilidade de que cada uma das classes aconteça ([Classe 1, Classe 2, Classe 3, Classe
4]).
Quantidade Probabilidade %
Nó Gini Entropia
de Amostras
(1) X2 > 4, 1
não sim
não sim
Classe 2 Classe 3
A árvore poderia crescer até ter somente uma amostra por folha, ou seja, no caso descrito acima
a árvore poderia ter até 40 folhas. O critério de parada mais simples a ser considerado é dado pela
impureza, e consiste em acrescentar a estrutura da árvore até ter uma impureza igual a zero em todos os
nós. Seguindo essa dinâmica, os resultados mostrados na Figura 4.4 e na Tabela 4.2 são obtidos.
Os nós são rotulados de acordo com a ordem em que foram se formando, obtendo finalmente de-
zesseis nós, dos quais nove seriam folhas. Os dois critérios de impureza são zero para as folhas. Para a
maioria dos problemas de classificação essa metodologia não é recomendada, dado que leva a um fenô-
meno conhecido como sobre-treinamento, o qual é um fenômeno que acontece quando o classificador
aprende todas as peculiaridades dos dados incluindo ruído potencial e padrões espúrios, que são espe-
cíficos para o conjunto de treinamento, e não conseguem generalizar bem para o conjunto de dados de
teste [33].
A Figura 4.5 exemplifica bem uma condição de sobre-treinamento. As amostras são divididas em
nove regiões diferentes. Como esperado, cada seção tem a máxima pureza, já que apenas amostras da
mesma classe existem em cada região. Contudo, se a árvore apresentada na Figura 4.4 for usada para
classificar outro conjunto de dados, não usado na respectiva construção, é altamente provável que os
dados sejam erroneamente classificados, especialmente nas regiões que possuem apenas uma amostra.
Portanto, a solução obtida é apenas uma solução particular do sistema, que não pode ser aplicada em
outros casos.
46
Quantidade Probabilidade %
Nó Gini Entropia
de Amostras
10
6
X2
0
0 2 4 6 8 10
X1
Alguns outros critérios podem ser selecionados para evitar o excesso de treinamento, nos quais es-
tão [33]:
3. Atingindo uma profundidade máxima da árvore: definida previamente como a máxima quantidade
de hierarquias da árvore;
5. Falha ao exceder um critério de divisão: um valor máximo para os critérios de divisão de parâme-
tros pode ser especificado para evitar divisões fracas.
5 DESENVOLVIMENTO EXPERIMENTAL
O alvo principal deste trabalho é identificar se a bomba multiestágio está funcionando adequada-
mente ou não. Se a bomba não estiver funcionando corretamente, o objetivo é estabelecer se a falha
corresponde a CV, DIP, VI ou GI. O primeiro passo para conseguir atingir este processo é a simulação
das falhas em uma bancada experimental. Neste capítulo, as instalações experimentais e o processo
realizado na indução de cada falha são apresentados.
As instalações experimentais são compostas pelo circuito de testes e o sistema de injeção de gás
apresentados nas figuras 5.1 e 5.2. O circuito de testes está composto principalmente pelos seguintes
equipamentos principais: o tanque, a bomba de dois parafusos (bomba booster), o trocador de calor, o
resfriador, a bomba centrífuga de múltiplos estágios (BCS), os variadores de velocidade (VSD), a válvula
choke, o gerador de energia, a instrumentação e as válvulas auxiliares. O sistema de injeção de gás é
composto por um compressor, válvulas de regulagem e mangueiras.
Inicialmente, a bomba booster fornece a energia necessária para bombear o fluido do tanque ao
sistema, passando inicialmente pelo sistema de controle de temperatura composto por um resfriador, um
trocador de calor e uma resistência elétrica. Depois, o fluido atravessa um medidor de vazão mássica.
Subsequentemente, o líquido passa pela BCS e pela válvula choke e finalmente, retorna ao tanque.
Quando é considerado escoamento bifásico, nitrogênio obtido mediante separação mecânica do ár é
injetado na entrada da bomba centrífuga. Depois, a mistura bifásica é introduzida na BCS e na válvula
choke, retornando ao tanque de armazenamento, onde o nitrogênio é separado do óleo por gravidade.
O VSD-2 permite simular as mudanças de pressão do reservatório através das variações da velocidade
da bomba booster, e o VSD-1 permite alterar a velocidade de rotação da BCS. O circuito experimental é
ilustrado nas figuras 5.1 e 5.2. As principais especificações dos equipamentos e sensores são apresentadas
nas tabelas 5.1 e 5.2, respectivamente.
49
Nitrogênio
Óleo Nitrogeno Água Control
-Óleo
Tanque de
água fria
Painel de
Controle Inte-
VSD-1 & Aquisi- VSD-2 rruptor
ção Tanque de
combus-
VSD-3 tível
Válvula Aquece-
Válvula de VSD-3
de segu- dor
By-Pass rança
Trocador
de Calor
Tanque
de Óleo VSD-2 Gerador
Bomba Booster de
potência
M
Coriolis
NI-DAQ NI-DAQ Injeção
Caixa de de Gás
instrumentação
Pout DP 10 DP
9 DP
8 DP
7 DP
6 DP
5 DP4 DP
3 DP
2 DP
1 Pin T Chiller
BCS
NI-DAQ
Torque
Válvula Tout T T T T Tin
VSD-1
Choke
8 6 4 2
Mgas
Tanque de
água fria
Bomba
Booster
Tanque
de Óleo
Trocador
Injeção
de Calor
de Gás
BCS Chiller
Válvula
Choke
Equipamento Especificações
HC20000L - series 675,
Bomba 10 estágios,
Pressão máxima 30 bar
BCS Motor eléctrico 3 fases, 2 pólos, 150 kW / 380V
3 fases, 329 A / 50-60 Hz,
VSD-1
Tensão nominal: 380-480V/206-260 KVA
Bomba Vazão Nominal: 200 m3 /h,
Max.Pressão: 25 bar
Bomba booster Motor eléctrico 3 fases, 8 pólos, 220 kW / 380V
3 fases, 477 A / 50-60 Hz,
VSD-2
Tensão nominal: 380-480V
Tanque estacionário horizontal,
Tanque de óleo -
Capacidade 6,7 m3 /h
Temperatura Trocador de calor Capacidade 267,5 kW
Sistema de controle Chiller Capacidade 241,9 kW
Motor eléctrico 50 Hp, 1750 rpm
Compressor Vazão Nominal: 5,7 m3 /min
Compressor HP50SE
Pressão máxima: 10,3 bar
A instalação experimental foi projetada para ter o monitoramento preciso do ganho de pressão, da
vazão, da temperatura na entrada, da fração mássica, da pressão de sucção, da abertura da válvula choke,
da velocidade da bomba booster e da vazão mássica de gás.
Em todos os experimentos, a frequência de amostragem de dados foi de 33 Hz, e as variáveis moni-
toradas foram:
A bomba se encontra em regime estacionário quando as variáveis do processo não mudam com o
tempo. Neste trabalho, quando não há variações significativas na vazão mássica de líquido (menos de
±0, 1 kg/s), na pressão de entrada (menos de ±0, 05 Bar), na temperatura (menos de ±0, 5◦ C) e na
vazão mássica do gás (menos de ±0, 5 kg/h), a situação é considerada como Operação Normal. Foram
realizados 580 experimentos em operação normal, 392 experimentos em escoamento bifásico e 188
experimentos em escoamento monofásico, cada um deles com uma duração aproximada de 10 segundos.
Nas falhas CV, DIP, VI e GI, as medições foram feitas em intervalos de tempo de entre 20 e 30 segundos
tanto para escoamento monofásico, como para escoamento bifásico.
A distribuição dos experimentos foi realizada entre os limites operacionais da bomba, os quais cor-
respondem a velocidades entre 1800 e 3600 rpm, viscosidades abaixo de 10000 cP (temperaturas acima
de 30 ◦ C) e ganhos de pressão abaixo de 20 bar. Para o caso do escoamento bifásico, a operação da
bomba está limitada a vazões de gás abaixo de 5 kg/h devido ao aumento do volume da mistura bifásica.
Tanto para escoamento monofásico como para escoamento bifásico, a quantidade de experimentos é
escolhida aleatoriamente para testar a capacidade do método de classificação (AD ou CAD) de lidar com
bancos de dados assimétricos. Ou seja, determinar se os classificadores usados priorizam as falhas que
tem maior quantidade de experimentos sobre aquelas que apresentam menos eventos. Menciona-se aqui
que os algoritmos de aprendizado automático apresentam melhor desempenho quando existe a mesma
quantidade de amostras por classe (no caso desse trabalho, classes Normal, CV, DIP, VI e GI). Além
disso, como cada experimento tem uma duração maior de 10 segundos e a frequência de amostragem foi
de 33 Hz, tem-se mais de 3300 amostras por experimento, garantindo a quantidade suficiente de amostras
para treinar os algoritmos baseados em Árvores de Decisão).
A Figura 5.3 e a Tabela 5.3 apresentam um resumo da distribuição dos experimentos em escoamento
monofásico. Os testes realizados para a simulação da falha VI foram feitos a 1800 rpm, enquanto que
para as falhas CV e DIP, os experimentos foram realizados em duas condições de operação da bomba:
3000 rpm e 3500 rpm.
52
Um total de 68 experimentos foi realizado para a simulação das falhas na bancada experimental em
escoamento monofásico: 26 experimentos para CV, 32 para DIP, e 10 para VI.
O fechamento da válvula de estrangulamento foi feito com um modelo de válvula globo proporcional
NT 1000 L mostrada na Figura 5.5, alterando sua abertura de 40 para 4%, em passos de 1, 2, 3, 4, 5 e
10%.
Para o caso do escoamento monofásico, as condições nas quais as falhas foram simuladas foram
apresentadas previamente. Enquanto que para escoamento bifásico, foram levadas em consideração as
55
seguintes condições de velocidade, temperatura e vazão mássica de gás: 3500 rpm - 40 ◦ C - 5 kg/h; 2400
rpm - 50 ◦ C - 4 kg/h; e 3500 rpm - 50 ◦ C - 2 kg/h.
A variação da pressão de entrada foi simulada mudando a velocidade da bomba booster de 715 para
100 rpm, em passos de 10, 15, 20 e 30 rpm para as mesmas condições da válvula choke, tanto para
escoamento monofásico como para bifásico.
O fluido utilizado é uma mistura de petróleo e diesel, cuja viscosidade dinâmica µ é afetada pela
temperatura T . Quanto maior a temperatura, menor é a viscosidade. Portanto, as variações da viscosidade
foram obtidas variando a temperatura do fluido através do sistema de aquecimento.
O ponto de máxima eficiência (BEP) é a condição operacional (vazão e ganho de pressão) onde é
obtida a máxima eficiência mecânica, η, dada por
q ∆p
η= (5.1)
τω
Há um BEP para cada temperatura e velocidade angular no escoamento monofásico. Para cada con-
dição operacional (velocidade angular e temperatura) os dados experimentais permitiram a determinação
do BEP. A vazão mássica de gás foi aumentada mantendo constante a vazão mássica de liquido em incre-
mentos entre 0,5 e 2 kg/h. Assim, a fração mássica foi alterada da condição sem gás até a bomba perder
toda a capacidade de transformar energia em pressão.
56
O sucesso na detecção e classificação de falhas não depende apenas do algoritmo usado. O pré-
processamento, e seleção de características desempenham um papel fundamental para obter os resultados
esperados. Neste capítulo, o tratamento, rotulação e a seleção dos sinais são apresentados.
Cada uma das variáveis monitoradas sem fazer nenhum tratamento é chamada de x{raw}. Para
todos os testes realizados, os sinais adquiridos (Seção 5.2) foram tratados usando uma média móvel
simples dada por
i
1 X
xj = x{raw}j onde : j = 1, 2, 3, ... , m (6.1)
k
j=i−k
sendo j uma amostra do total m de amostras realizadas em um experimento, x cada variável tratada
representada (chamada aqui de característica), e k o número de amostras usadas para implementar a
média móvel. Como a frequência de amostragem é de 33 Hz, optou-se por utilizar a mesma quantidade
de amostras por segundo para o cálculo da média móvel (k = 33).
A ocorrência de qualquer uma das falhas simuladas provoca variações no tempo das variáveis moni-
toradas. No entanto, o comportamento dessas variáveis não é igual para todos os experimentos de uma
falha determinada. A Tabela 6.1 apresenta um resumo da resposta dessas características ao longo do
tempo para os experimentos bifásicos realizados. Um aumento na pressão é esperado quando ocorre um
fechamento abrupto da válvula de choke (CV). No entanto, para escoamento bifásico, isso nem sempre
é verificado. Para alguns experimentos, a pressão teve um aumento drástico (⇑), enquanto para outros
permaneceu constante (−→).
Considerando que existem variações ao longo do tempo quando qualquer uma das falhas acontece,
é possível calcular a derivada discreta {δx/δt}i para cada uma das características, definida para cada
amostra i como:
i
( ) !
δx 1 X xj − xj−1 xj+1 − xj
= + (6.2)
δt 2w tj − tj−1 tj+1 − tj
i j=i−k
57
CV ⇑ ⇑ ⇑ ⇓ ⇑ ↑↓ ⇑ ⇑
→
− →
− →
− →
− →
− →
−
DIP ⇓ ⇓ ⇓⇑ ⇓ ⇓ ↑↓ ⇓ ⇓
→
− −
→ →
− →
− →
− →
−
VI ↑ −→ ↓ −→ −→ ⇓ ↓ ↓
→
−
GI ⇑ ⇓ ⇓ ⇓ ⇓ ↑↓ ⇓ ⇓
→
− →
− →
− →
− →
− →
− →
−
(−→) Constante no tempo, (↓↑) Mudanças leves no tempo,
(⇓⇑) Mudanças fortes no tempo.
∆p = pout − pin
5. O torque τ ;
ṁl ∆p
W =
ρ
ṁl ∆p
η= (6.3)
ρT ω
58
Considere uma variável monitorada em um experimento como xtj , com um número total de amostras
m e com k amostras para calcular a média móvel. A variância média swi e a variância remanescente si
para uma amostra i são respectivamente definidas como
i+k i+k
1 X 2 1X
swi (xtj ) = xi − x̄i onde : x̄i = xi (6.5)
k k
i=i i=i
m n
1 X 2 1X
si (xtj ) = xi − x̄i onde : x̄i = xi (6.6)
k k
i=i i=i
59
O tempo ti1 em que a falha começa é definido quando swi ≥ max(sw1 , ..., swc ), sendo swc a
variância média no tempo tc . O tempo ti2 , onde a janela de previsão termina é determinado quando
si ∼
= 0.
Os tempos ti1 e ti2 são calculados para as variáveis pin , pout e ṁl , selecionando o mínimo ti1 e o
máximo ti2 de acordo com a Janela de Predição.
As figuras 6.1, 6.2 e 6.3 exemplificam a rotulação de um fechamento da válvula choke para um dos
experimentos. A abertura da válvula mudou de 12% para 10% aos 2 segundos de operação (tc = 2 s), e
a Janela de Predição é definida aproximadamente entre 6 e 27 segundos (ti1 = 6 s e ti2 = 27 s).
A falha DIP foi rotulada da mesma forma que o fechamento da válvula de estrangulamento (CV)
descrita anteriormente.
Para o aumento da fração de gás, ti1 é o tempo em que ti < tmax e swi ∼
= 0, e ti2 é o tempo em que
∼ 0; sw é o a variância média definida na Equação 6.5, e tmax é o tempo em que swi
ti > tmax e swi =
atinge o valor máximo.
Os tempos ti1 e ti2 são calculados para pin , pout , ṁ e ṁg , selecionando o mínimo ti1 e o máximo
ti2 . As Figura 6.4 e 6.5 mostram a rotulação de um aumento de gás de aproximadamente 0,5 kg/h.
61
1. Os experimentos das falhas simuladas (CV, DIP, IV, IG) e os testes no estado considerado sem
falha (Normal) foram aleatoriamente organizados como é apresentado na secção 5.2. Essas condi-
ções do sistema são chamadas de rótulos. Os pontos dentro da Janela de Predição foram rotulados
com o valor correspondente do vetor de rótulos l (tamanho `), i.e.,
h i
l = Normal, CV, DIP, VI, GI onde : `=5 (7.1)
63
Amostra 1 GI
X y
Amostra 2 GI
=>
Experimento 1 Falha 1 Amostra i GI
.... ....
Experimento 2 Falha 2
=>
Amostra 1 CV
Experimento i Falha i
Amostra 2 CV
=>
... Amostra i CV
...
.... ....
2. Para a construção da matriz de dados X, os dados dos experimentos foram organizados como
mostra a Figura 7.1. O vetor objetivo y é definido considerando que cada linha da matriz X
corresponde a uma amostra de algum experimento e possui o estado correspondente yi , que só
pode ter um rótulo discreto do vetor l, ou seja,
x1,1 x1,2 x1,j ··· x1,n y1
x2,1
x2,2 x2,j ··· x2,n
y2
x3,1 x3,2 x3,j · · · x3,n y3
X= ; y= (7.2)
xi,1
xi,2 xi,j · · · xi,n
yi
. .. .. .. .. .
.. . . . . ..
xm,1 xm,2 xm,j · · · xm,n ym
3. O vetor de pesos λ é calculado para compensar o desequilíbrio no número de amostras por classe.
Cada rótulo tem um peso correspondente denotado por λj com base no número de rótulos `, no
número total de amostras m e no número total de amostras por classe mj , de acordo com:
h i m
λ = λN ormal , λCV , λDIP , λV I , λGI onde : λj = (7.3)
` mj
4. Para o conjunto de dados de treinamento (X, y), a Árvore de Decisão divide os dados em parti-
ções. Os dados são divididos a partir do nó raiz Φ0 , considerando cada candidato φ para dividir
a árvore como (xtj , γ), onde xtj é cada um dos vetores de variáveis que compõem a matriz X, e
γ é um número entre x1,j e xm,j . Cada nó Φ é dividido em dois nós subsequentes Φlef t e Φright
como mostrado a seguir.
!
h̄lef t h̄right
φ = min =(Φlef t ) + =(Φright ) (7.5)
h̄ h̄
6. Dois critérios de impureza são levados em consideração. Os cálculos dos critérios Gini e Entropia
são:
`
X
=Gini (Φ) = 1 − θj 2 onde : θj = λj sj (7.6)
j=1
`
X
=entropy (Φ) = − θj onde : θj = λj sj (7.7)
j=1
A Cadeia de Árvores de Decisão é definida aqui como o uso sequencial de duas Árvores de Decisão.
A primeira realiza a classificação dos estados e a outra um refinamento dessa classificação. A Figura 7.2
mostra a estrutura da CAD, e o processo de desenvolvimento é descrito como:
Árvore de Refinamento: A construção da árvore é executada da mesma forma que a árvore de classifi-
cação. Contudo, o conjunto de dados X é reduzido, selecionando apenas aqueles que apresentam
falha (excluindo a condição Normal). Portanto, o vetor de rótulos l é [CV, DIP, V I, GI] para
escoamento bifásico e [CV, DIP, V I] para escoamento monofásico.
65
Dados de Entrada X
Árvore de
Classificação
y1 X
não sim
Está em estado de falha
(CV, DIP, IV, GI) ?
Normal Melhorar
CLassificação
CV
X
Tipo
Árvore de
DIP de
Refinamento
Falha?
y2
GI
VI
Normal 31 31 32 31 31 32 188
CV 4 4 5 4 4 5 26
DIP 5 5 6 5 5 6 32
VI 1 2 2 1 2 2 10
Total 41 42 45 41 42 45 256
Normal 65 65 66 65 65 66 392
CV 6 6 6 6 6 7 37
DIP 7 8 7 8 7 8 45
VI 7 7 7 7 7 7 42
GI 48 48 49 48 48 49 290
Total 133 134 135 134 133 137 806
fj X) = train X K−j
train , y K−j
train , z (7.8)
2. Cada uma das funções de previsão é usada para prever os resultados do grupo que não foi utilizado
no procedimento de treinamento, de acordo com
y jpred = fj X jval
(7.9)
67
T otal de acertos
sts =
T otal de amostras
(b) A média aritmética da diagonal principal da matriz de confusão cmmean . A matriz de con-
fusão é um layout de tabela específica que permite a visualização do desempenho de um
algoritmo. Cada linha da matriz representa os experimentos de uma classe, enquanto cada
coluna representa as previsões de uma classe. O nome deriva do fato de que fica mais fácil
ver se o sistema está confundindo duas classes. Um exemplo de uma matriz de confusão é
apresentado na Figura 7.3.
(c) O mínimo da diagonal principal da matriz de confusão cmmin .
C1 C2 C3 C4
Valores previstos
4. O processo de validação (val) é realizado comparando os dados previstos (ypred ) com os dados
esperados (yval ) através do critério selecionado. Então, a função g(z) é encontrada como a média
dos critérios de validação da seguinte maneira:
K
1 X j
g(z) = val y pred , y jval (7.10)
K
j=1
O teste é realizado com o critério de parada mln selecionado, os cinco primeiros grupos como
conjunto de dados de treinamento e o grupo restante para avaliação.
68
8 RESULTADOS E DISCUSSÕES
Neste trabalho, o objetivo principal é determinar se a bomba está operando em condições normais ou
não. Se a bomba estiver em situação de falha, o alvo é descobrir o respectivo tipo da falha. Experimentos
foram realizados na bancada experimental para atingir esse objetivo. Falhas e condições estáveis foram
simuladas em diferentes condições para uma ampla faixa de operação conforme descrito na Seção 5.
Em seguida, os experimentos foram cuidadosamente rotulados e as variáveis de entrada selecionadas
como é apresentado na Seção 6. Finalmente, o algoritmo apresentado na Seção 7 foi implementado nas
condições de escoamento monofásico e bifásico.
Para obter uma melhor detecção e segregação de falhas, deve-se evitar o sobre-treinamento do al-
goritmo e as soluções particulares. A seleção de um número máximo de folhas mln permite evitar o
sobre-treinamento. Não obstante, a escolha de um mln arbitrário pode levar a uma solução boa ape-
nas para o conjunto de dados testado. Para evitar essas soluções particulares, um processo de validação
cruzada é usado. O número total de experimentos é dividido em dois grupos: um grupo com aproxima-
damente 83,33% dos dados usado na seleção do número máximo de folhas (Treinamento-Validação), e
outro grupo com 16,67% reservados para testar o algoritmo proposto com o mln selecionado. A distri-
buição dos experimentos realizada é apresentada na Tabela 8.1, tendo 211 experimentos para a seleção
do mln mediante o processo de validação cruzada proposto e 45 experimentos para o teste do algoritmo.
Dos enfoques são levados em consideração para a classificação de falhas, um baseado no uso de uma
Árvore de Decisão tipo CART proposto na Seção 7.1 e outro na Cadeia de Árvores de Decisão descrita
na Seção 7.2.
Para obter uma boa classificação das falhas é necessário maximizar a exatidão geral sts, a média
da diagonal principal da matriz de confusão cmmean e o mínimo da matriz de confusão cmmin . Esses
três critérios de parada são testados tanto para o critério de impureza Gini como para o de Entropia no
processo de validação cruzada. Na Tabela 8.1 são apresentados os valores de mln correspondentes aos
melhores resultados para esses três critérios de parada na validação.
69
Tabela 8.1: Máximos de sts, cmmean e cmmin para a AD na validação em escoamento monofásico.
Critério de parada
sts cmmean cmmin
Note-se que para o critério Gini, a máxima exatidão geral é obtida com 5 folhas (mln), no entanto
os máximos de cmmean e cmmin são obtidos com 8 folhas. Por outro lado para o critério de Entropia,
para os três casos testados, o melhor resultado corresponde a 5 folhas.
Nesse caso, o critério de Gini teve um melhor desempenho na classificação por falha (cmmean e
cmmin ) para 8 folhas. Portanto, para a árvore de classificação foi escolhido o critério de impureza
Gini com mln=8. A exatidão geral sts para 8 folhas é 86,93% somante 0,43% abaixo do melhor valor
(87,36%) apresentado com 5 folhas.
Teste
Depois da seleção do número de folhas mln feita mediante o processo de validação cruzada, é
necessário verificar se esse parâmetro escolhido leva a uma boa generalização do algoritmo. Para essa
finalidade, uma nova árvore com a totalidade dos dados usados na validação cruzada e com os parâmetros
escolhidos (Gini e mln=8) foi treinada, para posteriormente ser testada com os dados restantes que não
foram usados em nenhuma parte do processo de seleção dos parâmetros.
0.85
0.80
sts
0.75
0.70
0.65
4 6 8 10 12 14 16 18 20
Folhas
Figura 8.1: Tendência de sts para a AD em escoamento monofásico.
70
0.850
0.825
0.800
0.775
0.750
4 6 8 10 12 14 16 18 20
Folhas
Figura 8.2: Tendência de cmmean para a AD em escoamento monofásico.
0.8
0.7
cmmin
0.6
0.5
4 6 8 10 12 14 16 18 20
Folhas
Figura 8.3: Tendência de cmmin para a AD em escoamento monofásico.
As figuras 8.1, 8.2 e 8.3 apresentam uma comparação das tendências para os três critérios de parada
com Gini como critério de impureza. Para o treinamento e validação, os valores correspondem à média
aritmética dos resultados obtidos a partir da validação cruzada, enquanto que para os dados do teste, o
valor foi encontrado usando o sexto grupo de dados, e 83,3% restantes dos dados para treinamento.
Na Figura 8.1 observa-se que o valor máximo de exatidão geral para os dados de teste é atingido com
13 folhas e corresponde a 82,67%, enquanto que para o valor selecionado de 8 folhas a exatidão geral
fica em 80,46%.
Nas figuras 8.2 e 8.3, observa-se que para os dados de teste os máximos de cmmean e cmmin são
alcançados para 11 folhas, e são de 83,63% e 66,98% respectivamente, enquanto que para o valor seleci-
onado de 8 folhas, os valores de cmmean e cmmin são de 81,92% e 61,29% respectivamente.
71
Com 11 folhas é obtida a melhor exatidão geral para os dados de teste, enquanto que com 13 folhas a
cmmean e cmmin são maximizados. Embora esses resultados sejam melhores do que a solução escolhida,
estas são soluções particulares, que são boas apenas para o conjunto de dados de teste, e não representam
um comportamento geral do algoritmo.
A Cadeia de Árvores de Decisão consta de duas Árvores de Decisão organizadas em série: uma
árvore de classificação, onde se classifica um evento em qualquer um dos estados estabelecidos, seja
normal ou falha (CV, DIP ou VI); e outra árvore de refinamento usada no pós-processamento dos dados,
fazendo a classificação no caso de haver falha. Nas duas árvores, o número máximo de folhas mln é
selecionado como aquele que apresenta o melhor resultado na validação.
Para a árvore de classificação os parâmetros de construção (a impureza e o critério de parada) são
Gini e 8 folhas iguais aos da AD. Enquanto que para a árvore de refinamento a seleção dos parâmetros é
apresentada no restante da presente Seção.
Da mesma maneira que para a AD, para a árvore de refinamento é desejado maximizar sts , cmmean
e cmmin , avaliando-se os dois critérios de impureza Gini e Entropia mediante a validação cruzada. Na
Tabela 8.2 é apresentada a quantidade de folhas, onde são obtidos os valores máximos para cada um dos
três critérios de parada usando o conjunto de dados de validação.
Tabela 8.2: Máximos de sts, cmmean e cmmin para a árvore de refinamento da CAD em escoamento
monofásico.
Critério de parada
sts cmmean cmmin
Pode-se observar na Tabela 8.2 que os dados obtidos com o critério Gini apresentam melhores resul-
tados do que os dados obtidos com o critério de Entropia. Além disso, tanto para a exatidão geral como
para cmmean e cmmin , os máximos são atingidos para 6 folhas. Portanto, os parâmetros escolhidos para
a árvore de classificação são Gini e 6 folhas.
72
Teste
0.95
0.90
sts
0.85
0.80
0.75
4 6 8 10 12 14 16 18 20
Folhas
Figura 8.4: Tendência de sts para a árvore de refinamento da CAD em escoamento monofásico.
73
0.95
0.90
cmmean
0.85
0.80
4 6 8 10 12 14 16 18 20
Folhas
Figura 8.5: Tendência de cmmean para a árvore de refinamento da CAD em escoamento monofásico.
0.9
0.8
cmmin
0.7
0.6
0.5
4 6 8 10 12 14 16 18 20
Folhas
Figura 8.6: Tendência de cmmin para a árvore de refinamento da CAD em escoamento monofásico.
74
Dois conceitos diferentes foram levados em conta no algoritmo: Detecção, como a capacidade de
determinar se o sistema está em falha, e Classificação para determinar o tipo de falha. A exatidão geral
sts apresenta limitações para avaliar esses dois critérios, principalmente em cenários onde não se tem a
mesma quantidade de dados de cada classe.
Um método amplamente utilizado para avaliar o erro na classificação em problemas de segregação
é a matriz de confusão, uma matriz quadrada, em que os dados da diagonal principal representam a
porcentagem de sucesso na classificação para cada falha individual, e os demais valores da cada linha
correspondem àquelas que foram classificadas incorretamente. A soma dos dados de cada linha é igual a
um e corresponde à quantidade total de dados testados por falha.
Quando há apenas duas classes, a matriz de confusão é conhecida como tabela de confusão, e esta
composta de verdadeiros positivos, falsos positivos, verdadeiros negativos e falsos negativos, lendo-os
da esquerda para a direita, de cima para baixo.
A Figura 8.7 apresenta a tabela de confusão obtida para a AD. Os resultados mostram que 85%
dos dados de testes considerados normais foram corretamente identificados, enquanto que 15% foram
incorretamente reconhecidos. 80% das falhas simuladas foram reconhecidas com sucesso também.
Valor Real
DIP 0,17 0,01 0,82 0,00
Normal CV DIP VI
Predição
Normal CV DIP VI
Predição
A Figura 8.8 apresenta a matriz de confusão para a AD. Como era esperado, a percentagem de
sucesso para a classe Normal é a mesma que a apresentada na Figura 8.7. Com relação aos demais
estados tem-se que:
• O fechamento da válvula choke CV teve a maior porcentagem de falhas não detectadas (32%), e
6% restantes foram classificados como aumento na pressão de entrada;
• 17% dos experimentos simulados para a diminuição da pressão de entrada não foram detectados
como falhas, e só um 1% foi classificado erroneamente como CV.
76
A tabela de confusão e a matriz de confusão das figuras 8.7 e 8.8 mostram um bom resultado na
segregação das classes para a AD. A Figura 8.9 apresenta uma matriz de confusão do conjunto de dados
de teste para a Cadeia de Árvores de Decisão (CAD). Nesse caso, tem-se que:
A Tabela 8.4 apresenta uma comparação dos resultados obtidos com a Árvore de Decisão e a Cadeia
de Árvores de Decisão. Pode-se observar que para as três métricas analisadas, a metodologia proposta
(CAD) melhora o resultado obtido com uma Árvore de Decisão.
A Figura 8.10 apresenta a árvore de refinamento do algoritmo CAD. Observa-se que uma série de
cinco perguntas sucessivas são suficientes para fazer a classificação das falhas. Estas perguntas podem
ser interpretadas como:
A divisão dos dados da árvore foi feita minimizando a heterogeneidade mediante a diminuição do
critério de impureza Gini. A árvore de classificação apresentada na Figura 8.10 começa no nó #0 com
a divisão de 34251 amostras usadas no treinamento, com um Gini de 0,667. Nos nós #1 e #2, o Gini
diminui para 0,5 e 0,0 respectivamente. Levando em conta o número de amostras, a média ponderada do
Gini desses valores seria então 0,39. Pode-se observar, na respectiva ordem, que cada um dos nós tem:
node #0
Tin [ oC] ≤ 40.626
gini = 0.667
samples = 34251
value = [11417.0, 11417.0, 11417.0]
class = VI
True
False
node #1
node #2
dPout /dt ≤ 239.315 gini = 0.0
gini = 0.5 samples = 7750
samples = 26501 value = [0.0, 0.0, 11417.0]
value = [11417.0, 11417.0, 0.0]
class = DIP class = VI
node #3 node #4
M [kg/s] ≤ 29.87 dPin /dt ≤ -126.147
gini = 0.122 gini = 0.153
samples = 12496 samples = 14005
value = [727.83, 10444.977, 0.0] value = [10689.17, 972.023, 0.0]
class = DIP class = CV
node #7
node #5 node #6 node #8
M [kg/s] ≤ 29.36
gini = 0.073 gini = -0.0 gini = 0.066
gini = 0.498
samples = 12111 samples = 385 samples = 12464
samples = 1541
value = [409.404, 10444.977, 0.0] value = [318.425, 0.0, 0.0] value = [9983.672, 353.381, 0.0]
value = [705.498, 618.642, 0.0]
class = DIP class = CV class = CV class = CV
node #9 node #10
gini = 0.124 gini = 0.0
samples = 741 samples = 800
value = [43.835, 618.642, 0.0] value = [661.663, 0.0, 0.0]
class = DIP class = CV
Figura 8.10: Árvore de refinamento da CAD em escoamento monofásico.
/ t
W/ t
Tout/ t
Tin/ t
/ t
m/ t
p/ t
Característica
pout/ t
pin/ t
W
Tout
Tin
m
p
pout
pin
0 10 20 30 40 50
Importância %
Figura 8.11: Importância das variáveis da árvore de refinamento da CAD em escoamento monofásico.
Somente 4 das variáveis monitoradas foram necessárias para a construção da árvore de refinamento.
Nesse processo de treinamento é possível determinar quais variáveis permitiram classificar mais dados,
78
obtendo-se o gráfico apresentado na Figura 8.11. As variáveis preponderantes são ṁ, Tin , δpout δt e
δpin δt.
Para os testes bifásicos foi implementado um procedimento semelhante ao caso monofásico, levando
em consideração uma falha adicional GI, tendo-se cinco possíveis estados: Normal, CV, DIP, VI e GI.
Uma validação cruzada foi implementada na seleção do máximo número de folhas. Seguidamente, o
mln que tenha o melhor comportamento com os dados de validação é selecionado para avaliar a estru-
tura obtida com o conjunto de dados de teste, corroborando assim que a solução escolhida é uma boa
generalização para o problema.
Para a AD, sts é selecionado como um critério de parada para maximizar a eficiência na classificação,
embora algumas classes sejam melhor segregadas do que outras. Os dois critérios de impureza foram
testados com o conjunto de dados de validação, obtendo uma precisão de 75,98% para Gini e 76,27%
para Entropia. Por causa disso, a Entropia foi selecionada como critério de impureza.
0.750
0.725
0.700
0.675
10 20 30 40 50 60
Max. Nós de Folha mln
Figura 8.12: Tendência de sts para a árvore de classificação da CAD em escoamento bifásico.
Inicialmente, a estrutura do algoritmo foi determinada. A Figura 8.12 apresenta a seleção das fo-
lhas máximas mln para a árvore de classificação usando Entropia como critério de impureza. Para o
treinamento e validação, os valores correspondem à média aritmética dos resultados obtidos a partir da
79
validação cruzada, enquanto que para os dados do teste o valor foi encontrado com o grupo separado para
essa finalidade, empregando 83,3% restantes dos dados para treinamento. O desvio padrão acompanha
os resultados da validação.
O conjunto de dados de teste alcançou o melhor sts para 50 folhas, enquanto o conjunto de validação
atingiu esse critério para 55 folhas. De acordo com a metodologia proposta, o valor de mln selecionado
é 55.
0.80
0.75
0.70
0.65
0.60
10 20 30 40 50 60
Max. Nós de Folha mln
Figura 8.13: Tendência de cmmean para a árvore de refinamento da CAD em escoamento bifásico.
O critério cmmean foi selecionado como o critério de parada para a árvore de refinamento. A Fi-
gura 8.13 apresenta o cmmean como uma função do mln usando o Gini como um critério de impureza.
A validação e o conjunto de dados de teste alcançaram o máximo de cmmean para mln=18, sendo este
valor escolhido.
Um resumo dos parâmetros escolhidos para construir o classificador é apresentado na Tabela 8.5.
80
Pin , Pout , ∆P , M, τ,
Árvore de [Normal,
Entropia 55 Tin , Tout , Π, η, δPin /δt,
Classificação CV, DIP, VI, GI]
δPout /δt, δ∆P/δt,
δM/δt, δτ /δt,
Árvore de δTin /δt, δTout /δt,
Gini 18 [CV, DIP, VI, GI]
Refinamento δΠ/δt, δη/δt
A tabela de confusão obtida para a AD é mostrada na Figura 8.14. Os resultados mostram que
86% dos dados de teste considerados normais foram corretamente identificados, enquanto que 14% fo-
ram incorretamente reconhecidos. 89% das falhas simuladas foram reconhecidas com sucesso também
apresentando um bom resultado na detecção de falhas.
A Figura 8.15 mostra a matriz de confusão para a AD definida. O estado com melhor classificação é
o VI. O GI exibiu 72% de sucesso e a maioria das confusões foi identificada como estado normal (23%).
Ou seja, embora a falha não seja detectada, ela não é confundida com outro tipo de falha. CV e DIP
apresentaram os piores resultados de classificação, confundindo com outros tipos de falha.
A tabela de confusão e a matriz de confusão (figuras 8.14 e 8.15) para uma AD mostram que a
segregação de classes requer uma melhoria na estrutura do algoritmo. Como 89% das amostras estão
corretamente agrupados no estado de falha, é possível redistribuir as amostras em um estado correto
(CV, DIP, VI, ou GI). A distribuição sugerida para essas amostras foi feita com a árvore de refinamento.
A Figura 8.16 apresenta a matriz de confusão do conjunto de dados de teste para a estrutura projetada
(CAD). A classificação da falha CV apresenta um aprimoramento significativo, enquanto que a clas-
81
sificação da falha DIP permanece igual. No entanto, as classes VI e GI apresentam maiores erros de
classificação.
As principais métricas dos dois métodos são apresentadas na Tabela 8.6. Os resultados mostram que
a metodologia proposta CAD apresenta uma diminuição na exatidão geral sts com relação à técnica AD.
Porém, a média da diagonal principal cmmean e o mínimo da diagonal principal cmmin da matriz de
confusão são melhores para a Cadeia de Árvores de Decisão. Isso indica que a estrutura de classificação
sugerida é melhor para categorizar as falhas do que a AD.
82
A Figura 8.17 apresenta uma Árvore de Decisão para o procedimento de refinamento, disponível para
analisar as mudanças das variáveis operacionais que podem dar uma indicação do surgimento de falhas.
Em comparação com a AD que possui 55 folhas, este fluxograma tem apenas 19 folhas, melhorando a
interpretabilidade.
Tout ≤ 40,18
Verd Falso
VI δη/δt ≤ 0,00
Verd Falso
DIP δTout /δt ≤ -0,01 Tout ≤ 51,74 pin ≤ 86,90 pin ≤ 149,30 δPin /δt ≤ -0,04
Verd Falso Verd Falso Verd Falso Verd Falso Verd Falso
η ≤ 0,11 GI pout [kPa], pin [kPa], ṁ [kg/s], Tout [◦ c], t [s] DIP CV
Verd Falso
CV DIP
Os valores limites onde são feitas as divisões são escolhidos mediante uma otimização do critério de
impureza, levando a uma certa divisão conforme a característica de cada algoritmo de árvore de decisão.
A Figura 8.18 apresenta a importância das variáveis de entrada na construção da árvore de refina-
mento. Diferentemente do escoamento monofásico, a maioria das variáveis estabelecidas são usadas na
construção da árvore, descartando a potência W , o torque τ , o delta de pressão ∆p e a temperatura de
entrada Tin .
Embora a falha predominante nos experimentos tinha sido GI, os melhores resultados foram na
identificação de VI. A Figura 8.18 mostra uma grande importância da Tout , o que acontece devido à
grande relação da falha VI com as variações de temperatura no sistema. No entanto, a temperatura de
entrada Tin não foi utilizada na classificação, já que o algoritmo conseguiu fazer as divisões só com uma
variável de temperatura.
83
/ t
W/ t
Tout/ t
Tin/ t
/ t
m/ t
p/ t
Característica pout/ t
pin/ t
W
Tout
Tin
m
p
pout
pin
0 10 20 30 40
Importância %
Figura 8.18: Importância das variáveis na árvore de refinamento da CAD para escoamento bifásico.
As variáveis usadas para a construção da Árvore de Refinamento não são necessariamente as mais
importantes na análise das falhas. As variáveis não usadas podem ser importantes em outro tipo de
análise. Porém, o algoritmo interpreta melhor o fenômeno com as variáveis selecionadas.
84
9 CONCLUSÕES
de Árvores de Decisão: uma árvore chamada de classificação, que é igual a uma Árvore de Decisão AD,
e outra de refinamento, treinada somente com os dados de falha (excluindo os experimentos da condição
Normal). O comportamento dessas duas estruturas propostas (AD e CAD) foi testado para escoamento
bifásico e monofásico, e comparado em cada um dos dois casos.
Foi proposto um problema de detecção de falha em escoamento monofásico, onde o sistema de
bombeio poderia apresentar quatro possíveis estados (CV, DIP, VI, ou Normal). Uma Árvore de Decisão
AD com 8 folhas foi construída com o critério de impureza Gini para realizar a classificação de falhas
nesse contexto. A CAD foi definida usando essa Árvore de Decisão na classificação, e projetando outra
estrutura de refinamento com 6 folhas construída com o critério Gini. As duas árvores foram projetadas
usando 211 experimentos mediante o processo de validação cruzada descrito anteriormente.
Os 45 experimentos restantes foram usados no teste das estruturas projetadas. A AD apresentou bons
resultados na detecção e classificação de falhas. Oitenta e cinco porcento dos testes do estado normal e
80% dos experimentos considerados como falha foram classificados corretamente, a exatidão geral foi
de 80,46%, a média aritmética na classificação foi de 81,92%, e a classe com a exatidão na classificação
mais baixa foi o fechamento da válvula choke com 61,29%. Para a estrutura CAD apresentou-se uma leve
melhora em todos os critérios de avaliação com relação à AD. A sts passou de 80,46% para 81,69%,
cmmean passou de 81,92% para 83,15% e a falha com a exatidão na classificação mais baixa foi o
fechamento da válvula choke com 67,66%.
Para o caso de escoamento bifásico, o problema foi tratado com os mesmos estados do caso mono-
fásico, adicionando o tipo de falha de aumento da vazão de gás (GI). Foram projetadas também duas
estruturas de classificação de falhas mediante o processo de validação cruzada com 669 experimentos
selecionados aleatoriamente. A AD apresentou uma estrutura mais complexa do que para o caso bifásico
com 55 folhas e com o critério de diminuição da impureza de Entropia. A estrutura de refinamento da
CAD foi projetada com 18 folhas e o critério Gini.
As duas estruturas propostas, AD e CAD, foram também testadas usando os 137 experimentos res-
tantes. Em geral, essas estruturas exibiram cerca de 90% de sucesso na detecção de alguma anomalia,
e cerca de 75% na capacidade de segregação dessas falhas (cmmean ) para um conjunto de dados não
usado na construção e validação do algoritmo. A comparação da AD e CAD exibiu mudanças mais sig-
nificativas nos resultados que para o caso monofásico. A exatidão geral diminuiu de 78,28% na AD para
77,80% em CAD. Porém cmmean e cmmin aumentaram. A classe com a porcentagem de acerto mais
baixa para a Árvore de Decisão foi CV com 51,26%, enquanto que para a Cadeia de Árvores de Decisão
foi DIP com 61,55%.
As variáveis monitoradas apresentaram comportamento menos estável no caso bifásico. Para o
mesmo tipo de falha, uma certa variável permanecia constante, aumentava, diminuía ou apresentava
oscilação. Este fato refletiu-se nas estruturas de classificação de falhas, uma vez que as árvores projeta-
das no caso bifásico necessitaram de mais folhas. Tanto no escoamento monofásico quanto no bifásico,
a classificação de falhas foi melhor para a estrutura projetada (CAD), apresentando uma melhora maior
no caso bifásico.
Devido ao fato de que é difícil implementar um método padrão de detecção e classificação de falhas
em bombas centrífugas submersíveis, uma vez que cada sistema de bombeio possui diferentes condições
de operação, os métodos de mineração de dados apresentam-se como possíveis soluções capazes de
86
se adaptar a cada sistema particular. No presente trabalho, as Árvores de Decisão treinadas com as
variáveis monitoradas permitiram uma boa compreensão do fenômeno físico com base em padrões de
variáveis monitoradas. A partir dos resultados e discussão analisados anteriormente, pode-se afirmar que
o algoritmo, assim como as características selecionadas, são bons candidatos para aplicações práticas de
diagnóstico de falhas em bombas centrífugas multiestágio.
Trabalhos Futuros
Levando em consideração os resultados obtidos em este trabalho, algumas considerações para próxi-
mos trabalhos são:
• Estudar o efeito das variações da velocidade nas variáveis do processo como uma falha operacio-
nal, assim como a detecção de falhas permanentes tais como o bloqueio dos estágios, falhas nos
elementos de vedação, desgaste e quebra do eixo ou dos estágios.
• Testar o comportamento das Árvores de Decisão com dados obtidos na operação de BCS em poços
com dados reais se possível.
• Verificar o comportamento dos algoritmos no caso de falhas simultâneas. Esse e o item anterior,
visam a futura implementação do método para aplicações industriais.
87
Bibliografia
1 #%% ########################################################################
2 # Import libraries
3 ############################################################################
4 import numpy as np
5 import Functions as fn
6 import random as rd
7
8 #%% ########################################################################
9 # Load Data
10 ############################################################################
11 Data = np.load(’1_Results/01_SelectedSamples.npy’)
12 print("\n%s Experiments to Evaluate"%(len(Data)))
13 folderload = ’0_Data/1_Python/’
14 foldersave = ’0_Data/2_Samples/’
15
16 #%% ########################################################################
17 # Construct States
18 ############################################################################
19 New_Data = []; k = 1 # List of Samples
20 for i in Data: # for i in list of Data
21 print(’Sample = %s/%s \n %s’%(k,len(Data),i[0]))
22 sample_a = np.load(folderload + i[0]+’.npy’) # Import Sample as Array
23 print(’ Before Add State Shape = %s’%format(sample_a.shape))
24 sample_o = fn.Sample_lvm(sample_a) # Sample as Object
25 MB = [’Bi2’ if sample_o.Mgas.max()*3600 > 0.5
26 else ’Mo2’] # Monophasic or Bhifasic
27 sample_o.Construct_State() # Construct Sample State
28 s = sample_o.State # Sample State
29 sample_a = np.c_[sample_a, s] # Add State to Saple Array
30 if s.max() != 5: # if fault is not Temperature
31 np.save(foldersave + i[0] ,sample_a) # Save Array
32 print(’ After Add State Shape = %s\n’%format(sample_a.shape))
33 New_Data.append( # Add Sample to New List
34 np.r_[i, MB, s.max(), sample_o.tch])
35 else: # if fault is Temperature
36 i1 = np.where(sample_o.t>=sample_o.tch[0])[0][0] # Fault Begin
37 i2 = np.where(sample_o.t<=sample_o.tch[1])[0][-1] # Fault End
38 cut = np.arange(i1,i2,1025) # Cut every 30 [s]
39 stringj = i[0] # Name of sample performed
40 for j in range(0,len(cut)-1): # Cut Faults
41 j1 = cut[j]; # New Sample Begin
42 j2 = cut[j+1] if (i2-cut[j+1])>1025 \
43 else i2 + 1 # New Sample End
44 sample_aj = sample_a[j1:j2] # New Sample Array
45 tj = sample_aj[:,0] # New time vector
46 sample_aj[:,0] = tj - tj[0] # Replace Vector Time in Array
92
1 #%%#########################################################################
2 # Import libraries
3 ############################################################################
4 import numpy as np
5 import Functions as fn
6 import matplotlib.pyplot as plt
7 from sklearn.tree import DecisionTreeClassifier
8 from sklearn.tree import export_graphviz
9 from sklearn.metrics import confusion_matrix
10 import sys
11 import graphviz
12 from pathlib import Path
13
14 #%%#########################################################################
15 # Functions
16 ############################################################################
17 Estimator = lambda mln,cr: DecisionTreeClassifier(
18 random_state=0,
19 max_leaf_nodes=mln,
20 criterion=cr,
21 class_weight=’balanced’
22 )
23 HealthFault = lambda y: np.array( [1 if i != 0 else 0 for i in y] )
24
93
25 #%%#########################################################################
26 # Load List Data and Initial Data
27 ############################################################################
28 print(’Estimator are:\n dt = DecisionTree or First Step of CDT\
29 \n cdt = Second Step of CDT’)
30 est = str(input(’Select Estimator:’)); print(’ ’)
31 CreateXy = str(input(
32 "Create Matrix X and target vector y:\n \’yes\’ or \’not\’? "))
33 print(’ ’)
34 CreateMLN = str(input(
35 "Calculate data of Max Leaf Nodes: \n \’yes\’ or \’not\’? "))
36 print(’ ’)
37 cr = str(input("Criterion: \n \’gini\’ or \’entropy\’? "))
38 print(’ ’)
39 #___________________________________________________________________________
40 folder = ’1_Results/’ + est + ’/’
41 List = np.load(folder + ’02_SelectedSamples.npy’) # List of Data
42 I = np.load(folder + ’02_FaultIndex.npy’).item() # Index by fault in data
43 folderload = ’0_Data/2_Samples/’ # Where Load Global Data
44
45 #___________________________________________________________________________
46 SaveData = folder
47 SaveResult = SaveData + cr + ’/’
48 #___________________________________________________________________________
49 Var = [’P1’,’P2’,’DP’,’M’,’T’,’Tin’,’Tout’,’Pow’,’Eff’] # Features
50 #Var = [’P1’,’P2’,’M’,’Tout’,’Eff’] # Features
51 G = 6 # Number of Group to divide the original dataset
52 Gr = [’X’, ’Xd’]; # Make with only Gradient ’Xd’, only data ’X’ or both ’’
53 W = 33; # Window for Filter Gradient every 33 samples 1 [s]
54 BF = ’Bi2’; # Biphasic ’Bi2’ or Monophasic ’Mo2’
55 F = [0,1,3,5,7] # Biphasic, FaultSel, Groups _______________________________
56 #’\n 0 = Static\n 1 = Close Valve\n 2 = Open Valve\
57 # \n 3 = P Inlet Decrease\n 4 = P Inlet Increase\
58 # \n 5 = Viscosity Increase\
59 # \n 6 = Mgas Decrease\n 7 = Mgas Increase\
60 # \n 8 = RPM Increase\n 9 = RPM Decrease’
61 Vtr = [i for i in range(0,len(Gr)*len(Var))]
62 #for i in [11,13,14]: Vtr.pop(i)
63 MLN = [i for i in range(4,101)] # Max Leaf Number
64
65 #%%#########################################################################
66 # Construct five sets of Data
67 ############################################################################
68 if CreateXy == ’yes’:
69 # Initialize ___________________________________________________________
70 G_Index = {} # Index for every Group
71 for g in range(G): # First Value in G Groups Empty
72 G_Index[g] = np.empty([0,]) # Index in every Group g
73 # Construct "G" and "G_Index" for Cross Validation _____________________
74 for f in F: # Get index for selected Faults
75 F_i = I[BF][f]; l = len(F_i) # Index and len
76 c = [int(l/G*i) for i in range(G)] # Where Cut every group F_i
77 F_split = np.split(F_i,c) # Fault Splited in G G_Index
78 for g in range(G): # Append Every Group of Fault
79 G_Index[g] = np.r_[G_Index[g], F_split[g+1]]
80 # Get X, Y in every Cross Calidation Group _____________________________
81 G_Data = {} # Data for every Group
82 for i in G_Index: # Construct Data based in Index
83 G_Data[i] = fn.Construct(G_Index[i],folderload,List,W,Var,Gr,F)
94
1 ############################################################################
2 # Import libraries #########################################################
3 ############################################################################
4 import numpy as np
5 import matplotlib.pyplot as plt
6 import math
7 from sklearn.metrics import confusion_matrix
8 import itertools
9 from matplotlib.offsetbox import TextArea
10 import sys
11 import matplotlib.ticker as mtick
12 import matplotlib.ticker as ticker
13
14 ############################################################################
15 # Create Class from Every Sampe ############################################
16 ############################################################################
17 class Sample_lvm(object):
18 ########################################################################
19 def __init__(self, Frame):
20 # Get Variables ####################################################
21 self.Frame = Frame
22 self.t = Frame[:,0]; self.t_s = ’t [s]’
23 self.P1 = Frame[:,1]*1E5; self.P1_s = ’$P_{in}\ [Pa]$’
24 self.DP1 = Frame[:,2]*1E5; self.DP1_s = ’$\Delta P_{1}\ [Pa]$’
25 self.DP2 = Frame[:,3]*1E5; self.DP2_s = ’$\Delta P_{2}\ [Pa]$’
26 self.DP3 = Frame[:,4]*1E5; self.DP3_s = ’$\Delta P_{3}\ [Pa]$’
27 self.DP4 = Frame[:,5]*1E5; self.DP4_s = ’$\Delta P_{4}\ [Pa]$’
28 self.DP5 = Frame[:,6]*1E5; self.DP5_s = ’$\Delta P_{5}\ [Pa]$’
29 self.DP6 = Frame[:,7]*1E5; self.DP6_s = ’$\Delta P_{6}\ [Pa]$’
30 self.DP7 = Frame[:,8]*1E5; self.DP7_s = ’$\Delta P_{7}\ [Pa]$’
31 self.DP8 = Frame[:,9]*1E5; self.DP8_s = ’$\Delta P_{8}\ [Pa]$’
98
386 """ This function prints and plots the confusion matrix. Normalization
387 can be applied by setting ‘normalize=True‘."""
388 if normalize:
389 cm = cm.astype(’float’) / cm.sum(axis=1)[:, np.newaxis]
390 #print("Normalized confusion matrix")
391 else:
392 print(’Confusion matrix, without normalization’)
393
394 #print(cm)
395
396 plt.imshow(cm, interpolation=’nearest’, cmap=cmap)
397 plt.title(title,fontsize=fontsize)
398 #plt.colorbar()
399 tick_marks = np.arange(len(classes))
400 plt.xticks(tick_marks, classes)
401 plt.yticks(tick_marks, classes)
402
403 fmt = ’.2f’ if normalize else ’d’
404 thresh = cm.max() / 2.
405 for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
406 plt.text(j, i, format(cm[i, j], fmt),
407 horizontalalignment="center",
408 color="white" if cm[i, j] > thresh else "black",
409 fontsize=fontsize)
410
411 plt.tight_layout()
412 plt.ylabel(’True label’,fontsize=fontsize)
413 plt.xlabel(’Predicted label’,fontsize=fontsize)
414 ############################################################################
415 def MetricS(tree,X,y):
416 y_pred = tree.predict(X) # Prediction Values
417 cm = confusion_matrix(y,y_pred) # Confusion Matrix
418 cm = cm.astype(’float’) / cm.sum(axis=1)[:, np.newaxis]
419 cm_mean = cm.diagonal().mean() # Mean Failure detected
420 cm_min = cm.diagonal().min() # Worst Failure detected
421 sts = tree.score(X, y) # Accuracy
422 return sts, cm_mean, cm_min, cm
423 ############################################################################
424 def TrainValTest(Data,i_v,i_t):
425 X_va = Data[i_v][’data’]; y_va = Data[i_v][’target’]
426 X_te = Data[i_t][’data’]; y_te = Data[i_t][’target’]
427 l = Data[i_t][’data’].shape[1]
428 I = list(Data.keys()); I.remove(i_t); I.remove(i_v)
429 X_tr = np.empty([0,l]); y_tr = np.empty([0,])
430 for i in I:
431 X_tr = np.r_[X_tr,Data[i][’data’]]
432 y_tr = np.r_[y_tr,Data[i][’target’]]
433 X = {’Train’: X_tr, ’Val’:X_va, ’Test’:X_te}
434 y = {’Train’: y_tr, ’Val’:y_va, ’Test’:y_te}
435 return X, y
436
437 ############################################################################
438 # Functions to Filter ######################################################
439 ############################################################################
440 def mean_movil(Vector,Window): # Mean Movil Filter ########
441 Vector_new = []
442 for i in range(len(Vector)):
443 if i<Window:
444 m = np.mean(Vector[:Window])
105
445 else:
446 m = np.mean(Vector[i-Window:i])
447 Vector_new.append(m)
448 Vector_new = np.array(Vector_new)
449 return Vector_new
450 ############################################################################
451 def gradient_movil(Vector,t,Window): # Mean Movil Gradient ######
452 grad = []
453 for i in range(len(Vector)):
454 if i<Window:
455 m = np.mean(np.gradient(Vector[:Window],t[:Window]))
456 else:
457 m = np.mean(np.gradient(Vector[i-Window:i],t[i-Window:i]))
458 grad.append(m)
459 grad = np.array(grad)
460 return grad
461 ############################################################################
462 def integer_movil(Vector,t,Window): # Mean Movil Gradient ######
463 integer = lambda V,t: np.array([0.5*(V[i]+V[i-1])*(t[i]-t[i-1])
464 if i!= 0 else 0 for i in range(len(V))])
465 inte = []
466 for i in range(len(Vector)):
467 if i<Window:
468 m = integer(Vector[:Window],t[:Window]).sum() \
469 - Vector[i]*(t[i]-t[i-Window])
470 else:
471 m = integer(Vector[i-Window:i],t[i-Window:i]).sum() \
472 - Vector[i]*(t[i]-t[i-Window])
473 inte.append(m)
474 inte = np.array(inte)
475 return inte
476 ############################################################################
477 def index_data(Samples,MonBif,m,Fault,f): # filter data in list ######
478 ’’’Samples = List where have to be search the coincidences.
479 MonBif = \"Mon\" or \"Bif\" m = 1
480 MonBif = \"Mo2\" or \"Bi2\" m = 3
481 Fault = \’GasCha\’, \’ChoClo\’, \’ChoOpe\’, \’GasCha\’, \’PreDec\’,
482 \’PreInc’, ’RpmCha’, \’Static\’, \’Unclasf\’ or \’VisInc\’
483 f = 2
484 Fault = \’0.0\’, \’1.0\’, \’2.0\’, \’3.0\’, \’4.0\’, \’5.0\’, \’6.0\’,
485 \’7.0\’, \’8.0\’ or \’9.0\’
486 f = 4’’’
487 if MonBif == "": # Samples Index where MonBif is anyone
488 if Fault == "": # Samp. Ind. Where MonBif and Fault is anyone
489 Index = np.arange(0,Samples.shape[0])
490 else: # Samp. Ind. where have Fault and MonBif is anyone
491 Index = np.where(Samples[:,f] == Fault)[0]
492 else: # Samples Index where Fault is anyone
493 Index_MB = np.where(Samples[:,m] == MonBif)[0]
494 if Fault == "": # Samp. Ind. where have MonBif and Fault is anyone
495 Index = Index_MB
496 else: # Samp. Ind. where have MonBif and Fault both
497 Samples_MB = Samples[Index_MB]
498 Index_F = np.where(Samples_MB[:,f] == Fault)[0]
499 Index = Index_MB[Index_F]
500 return Index
501
502 ############################################################################
503 # Plots ####################################################################
106
504 ############################################################################
505 def Plot(t,t_s,x,x_s,x_c,x_t,sec,sec_s,sec_c,Axes,Yticks,Ylim,
506 fontsize=’xx-large’, labelsize=’large’,labelrotation=0., markersize=10,
507 markerevery=0, linewidth=1):
508 ’’’t = numpy vector of time, t_s = str to t (horizontal axis)
509 x = list of numpy arrays in left vertical axis,
510 x_s = list str or x
511 x_c = list of color for x, x_t = list of styles of x.
512 Sec = list of numpy arrays in right vertical axis,
513 sec_s = list strings or x, sec_c = list of styles of sec.
514 Axes = could be "Equal" to the same scale of x variables or "Diff"
515 to different scale to x variables.
516 Yticks= ticks to right axis if Yticks == 0 ticks default.
517 Ylim = limits to right axis if Ylim == 0 ticks default.’’’
518 fig, ax = plt.subplots(1,1, figsize=(15,7.5))
519 me = (int(len(t)/20) if len(t)>=20 else 1) \
520 if markerevery==0 else markerevery
521 ms = markersize; lw=linewidth
522 # Mean #################################################################
523 ax.minorticks_on() # Major and Minor Ticks
524 ax.grid(which=’major’, linestyle=’-’, linewidth=0.5, color=(0.8,0.8,0.8))
525 ax.grid(which=’minor’, linestyle=’:’, linewidth=0.5, color=(0.9,0.9,0.9))
526 ax.set_xlabel(t_s, fontsize=fontsize)
527 if Axes == "Equal": # Same Scales
528 for i in range(0,len(x)): # Plot Every Variable
529 ax.plot(t, x[i], x_t[i], color=x_c[i], label=x_s[i], \
530 markersize=ms, markevery=me, linewidth=lw, markeredgewidth=lw
531 )# Mean Axes Plot
532 ax.legend(loc=(0.0,1.0), fontsize=fontsize, ncol=5)
533 xmax = np.max(x); xmin = np.min(x)
534 dx = xmax - xmin # Limits Y Axis
535 ax.set_ylim( (xmin - 0.05*dx, xmax + 0.05*dx) )
536 ax.tick_params(axis=’both’,labelsize=labelsize)
537 ax.tick_params(axis=’y’,labelrotation=labelrotation)
538 else: # Diferent Scales
539 lns = ax.plot(t,x[0], x_t[0], color=x_c[0], label=x_s[0],
540 markevery=me, markersize=ms, linewidth=lw,
541 markeredgewidth=lw)
542 ax.set_ylabel(x_s[0], fontsize=fontsize)#, color=x_c[0])
543 #ax.tick_params(’y’, colors=x_c[0]) # Mean Axis Plot firs Variable
544 xmax = np.max(x[0]); xmin = np.min(x[0]);
545 dx = xmax - xmin # Limits Y Axis
546 ax.set_ylim( (xmin - 0.05*dx, xmax + 0.05*dx) )
547 ax.tick_params(axis=’both’,labelsize=labelsize)
548 ax.tick_params(axis=’y’,labelrotation=labelrotation)
549 #ax.yaxis.set_major_formatter(mtick.FormatStrFormatter(’%.1e’))
550 #ax.yaxis.set_major_locator(ticker.AutoLocator())
551 #ax.yaxis.set_minor_locator(ticker.AutoMinorLocator())
552 #ax.yaxis.set_major_formatter(
553 # ticker.ScalarFormatter(useMathText=True))
554 ax1 = [plt.plot(0,0)]*(len(x)-1); lnm = [plt.plot(0,0)]*(len(x)-1)
555 k = 0 # Initial Value Legend & Axis
556 for i in range(0,len(ax1)): # Plot Every Other Variable
557 k -= 0.09 # Space Between Axis
558 ax1[i], lnm[i] = plot_secondary(ax,t,x[i+1],x_s[i+1],x_c[i+1], \
559 x_t[i+1] ,0,0,"left",me,ms,k,
560 fontsize,lw) # Get Axis and Legend
561 lns = lns + lnm[i] # Concatenate Legend
562 xmax = np.max(x[i+1]); xmin = np.min(x[i+1]);
107
621 axs.yaxis.set_label_position(Loc)
622 axs.yaxis.tick_left()
623 return axs, lns
624
625 ############################################################################
626 # Propierties of Liquid ####################################################
627 ############################################################################
628 def Mul(T):
629 a = 14.06646543; b = -586161.2888; c = 491531.6781
630 d = -170278.8512; e = 31562.04855; f = -3391.691042
631 g = 214.5231787; h = -102.6877725
632 mu = a*(math.e**((b + (c*T) + d*(T**2) + e*(T**3) + f*(T**4) \
633 + g*(T**5))/(T**6)))+ h
634 return mu #[Cp]
635
636 def Mug(T):
637 a = 14.06646543; b = -586161.2888; c = 491531.6781
638 d = -170278.8512; e = 31562.04855; f = -3391.691042
639 g = 214.5231787; h = -102.6877725
640 mu = a*(math.e**((b + (c*T) + d*(T**2) + e*(T**3) + f*(T**4) \
641 + g*(T**5))/(T**6)))+ h
642 return mu #[Cp]
643
644 def Rhol(T):
645 rho = -0.637*T + 961.95
646 return rho # [kg/m^3]
647
648 def Rhog(T,P):
649 R_n2 = 2968 # R (N_2) [J/Kg-C]
650 rho = P / (R_n2*(T + 273.15))
651 return rho # [kg/m^3]