Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Rodolfo de Mello Pussente
Calibração de Modelos de Malha de Escoamento Utilizando Algoritmos Genéticos
Monografia apresentada ao Departamento de Engenharia Elétrica da PUC/Rio como parte dos requisitos para a obtenção do título de
Especialização em Business Intelligence.
Orientadora:
Marley Maria B. Rebuzzi Vellasco
Rio de Janeiro
10/12/2009
Aos meus pais Luiz e Maria,
a minha esposa Lilian e a minha filha Luiza
AGRADECIMENTOS
A Petrobras pela oportunidade de desenvolver este trabalho.
A minha orientadora Marley, pelo tempo disponibilizado para o
esclarecimento das dúvidas e pelas sugestões que ajudaram a melhorar o
trabalho.
A todos os professores do BI Master pelos conhecimentos transmitidos ao
longo do curso.
A todos os companheiros do curso que também ajudaram no
desenvolvimento deste trabalho.
RESUMO
A produção de petróleo em campos off-shore não deve ser limitada por
restrições da malha de escoamento. Para garantir o escoamento total da
produção são criados modelos de escoamento que são utilizados por
engenheiros em simuladores para prever cenários futuros de escoamento. Estes
cenários ajudam na tomada de decisões no processo de garantia de
escoamento. Os modelos precisam ser calibrados para representar fielmente a
malha de dutos existente, hoje, este processo de calibração é realizado pelos
engenheiros através de um processo de tentativa e erro utilizando dados
históricos. Esta monografia propõe uma solução baseada em algoritmos
genéticos para a calibração dos modelos de malha de escoamento, através da
otimização de um conjunto de variáveis que caracterizam os elementos dos
modelos de escoamento, buscando automatizar a calibração e aumentar a
precisão dos modelos.
ABSTRACT
The off-shore oil production should not be limited by flow mesh restrictions. To
guarantee total production flow, flow mesh models are created and used in
simulators to predict future flow scenarios. Those scenarios help in decision
making during the flow assurance process. The models need to be calibrated to
accurately represent the existent duct mesh, currently, these calibration process
is made by engineers in a trial and error process using historical data. This paper
proposes a genetic algorithm solution to the flow mesh model calibration, by
optimizing a subset of the variables that describes the elements of the flow mesh
model, trying to automate the calibration and to increase the model precision.
SUMÁRIO
1. INTRODUÇÃO.............................................................................................. 6
1.1 MOTIVAÇÃO ................................................................................................ 7
1.2 OBJETIVOS DO TRABALHO ...................................................................... 9
1.3 DESCRIÇÃO DO TRABALHO ..................................................................... 9
2. DESCRIÇÃO DO PROBLEMA .................................................................. 11
3. ESTADO DA ARTE .................................................................................... 15
4. ARQUITETURA DO SISTEMA PROPOSTO............................................. 22
5. RESULTADOS ........................................................................................... 29
6. CONCLUSÕES E TRABALHOS FUTUROS ............................................. 37
REFERÊNCIAS BIBLIOGRÁFICAS...................................................................... 39
1. INTRODUÇÃO
Os modelos de malha de escoamento representam a malha de dutos,
válvulas, plataformas e unidades de processamento existentes na produção de
petróleo em campos off-shore. Estes modelos são utilizados na simulação de
cenários de escoamento com o objetivo de minimizar os problemas da garantia
de escoamento.
A garantia de escoamento engloba o processo de produção de petróleo
desde a sua extração do reservatório até as plantas de processamento e de
armazenamento na superfície, evitando a ocorrência de perdas de produção
causadas pela impossibilidade de transportar todo o óleo através da planta de
produção (MCMULLEN, 2006). Os problemas desta área focam nos aspectos da
mecânica dos fluidos, na transferência de calor que ocorre entre o óleo nos
dutos e a água do mar, nas características químicas do óleo e nos processos de
instrumentação e de controle da planta.
Ainda segundo (MCMULLEN, 2006), é importante que possamos prever,
através de uma função do comportamento do reservatório ao longo do tempo de
vida do campo, a pressão e a temperatura do fluido ao longo da planta de
produção para que seja possível prevenir as perdas por redução de pressão e de
temperatura. Também devemos gerenciar a corrosão, a erosão, o depósito de
cera e a formação de hidratos (sólidos cristalinos formados a base de água que
se parecem com gelo) que podem causar o vazamento dos fluido ou o bloqueio
dos equipamentos, causando perdas de produção em ambos os casos.
Ao longo deste trabalho iremos considerar apenas uma das partes do
problema da garantia de escoamento, esta parte consiste em encontrar uma
configuração ótima de abertura e fechamento de válvulas nos dutos entre as
plataformas e as unidades processadoras, além de verificar a necessidade de
ampliação da malha, de forma a garantir o escoamento total do óleo produzido.
A influência do depósito de cera e de hidratos nas linhas de transmissão são
tratados diretamente pelo simulador e não influenciaram no desenvolvimento do
algoritmo, assim como a corrosão e a erosão dos equipamentos.
O problema que buscamos resolver pode ser dividido nas etapas de
calibração e de simulação. A etapa de calibração consiste em ajustar
determinados parâmetros de operação dos elementos que formam o modelo da
malha de escoamento no simulador PipeSim, de forma que o resultado
apresentado pela simulação esteja o mais próximo possível dos valores reais.
7
Nesta etapa são simulados cenários passados através de dados históricos para
verificar os resultados apresentados pelo simulador.
Após a calibração do modelo de escoamento é possível simular cenários
futuros de escoamento com maior precisão. As entradas para uma simulação
são os estados das válvulas da malha, os valores de vazão, temperatura e BSW
do óleo produzido nas plataformas e os valores de pressão e BSW do óleo que
chega nas unidades de processamento. As saídas de uma simulação são a
vazão e a temperatura do óleo nas unidades de processamento e a pressão do
óleo nas plataformas de produção.
Neste trabalho iremos desenvolver um algoritmo genético para realizar a
calibração das malhas de escoamento, buscando reduzir o trabalho dos
engenheiros que participam do processo de garantia de escoamento. O
algoritmo genético desenvolvido visa minimizar os erros dos valores das
variáveis simuladas através da busca de parâmetros ótimos para a calibração do
modelo da malha de escoamento.
1.1 MOTIVAÇÃO
A garantia de escoamento passou a ter um papel importante na produção
nos projetos de exploração de petróleo a partir de 1987, quando teve início a
exploração em lâminas de água maiores que 200 metros (NOE, NASCIMENTO,
et al., 2008). Atualmente, uma parte significativa das reservas de petróleo
brasileiras estão localizadas em águas ultra profundas, com lâmina de água
maior do que 1500m. Nestas profundidades a garantia de escoamento possui
um papel muito importante devido as altas pressões e baixas temperaturas, que
contribuem para a formação dos compostos químicos que podem bloquear a
passagem dos fluidos (CAMARGO, GONÇALVES, et al., 2004).
As limitações existentes para se acessar os equipamentos instalados no
fundo do mar transformam os problemas operacionais existentes em águas
rasas em problemas que podem inviabilizar o desenvolvimento de um projeto em
águas profundas (BROWN, 2002). Além dos impactos relacionados a
disponibilidade do sistema, os custos relacionados as intervenções causadas por
problemas de garantia de escoamento nos projetos em águas profundas e ultra
profundas possuem custos de intervenção muito elevados (HUDSON, DYKHNO,
et al., 2000).
8
No período entre Dezembro de 2002 e Dezembro de 2007 ocorreu um
grande volume de perdas causadas por problemas de garantia de escoamento
no Campo de Roncador, localizado na Bacia de Campos. Neste período o
percentual das perdas que foram causadas por problemas de garantia de
escoamento variou de 31,2% até 67,1% (NOE, NASCIMENTO, et al., 2008). Um
grande conjunto de fatores contribuiu para a ocorrência desses problemas e
segundo (NOE, NASCIMENTO, et al., 2008) devem ser feitos esforços no
desenvolvimento de modelos computacionais para melhor prever os problemas
da garantia de escoamento e para ajudar na solução desses problemas. Neste
caso, também podemos perceber que uma planta mais complexa aumenta a
flexibilidade para a solução de problemas de garantia de escoamento, mas por
outro lado aumenta a complexidade de operação da planta.
A importância de uma estratégia bem definida para evitar os problemas da
garantia de escoamento foram os desafios encontrados pelo projeto do Campo
Papa-Terra, realizado pela Petrobras na Bacia de Campos, apresentado em
(JUNIOR, PATERNOST e CONDESSA, 2009). Este é um dos projetos
subaquáticos mais complexos desenvolvidos no Brasil, onde as estratégias de
garantia de escoamento são extremamente necessárias, dada a grande
profundidade, a alta viscosidade, o baixo grau API dos fluidos produzidos e a
grande complexidade da planta instalada. O projeto demandou uma nova
abordagem na modelagem do comportamento dos fluidos, o que gerou novo
modelo de fluidos utilizado em simuladores de fluxo que consideram os dados de
viscosidade dos fluidos que são medidos em laboratório.
O projeto para o campo Lobito-Tomboco, realizado pela Chevron no Bloco
14 na Angola, teve como principal desafio o desenvolvimento de um sistema de
produção robusto o suficiente para transportar de maneira eficiente e com pouca
influência dos problemas da garantia de escoamento os fluidos produzidos.
Dessa forma o sistema subaquático foi fortemente impactado pelas estratégias
de garantia de escoamento. Sendo que a aplicação de estratégias de garantia de
escoamento ajudaram na escolha de tecnologias melhores que melhoraram o
retorno econômico do projeto (SONG, 2008).
Além dos exemplos já citados existem diversos outros casos onde a
garantia de escoamento exerce um papel importante na produção de petróleo.
Em (BELTRÃO, SOMBRA, et al., 2009) temos uma breve descrição dos desafios
a serem superados no desenvolvimento do cluster do pré-sal que está sendo
desenvolvido na Bacia de Santos. O Campo de Bonga, o primeiro campo
9
desenvolvido em águas profundas na Nigéria, possui um sistema de
monitoramento do campo apresentado em (SCHOPPA e JAYAWARDENA,
2007). Um histórico dos problemas encontrados nos diversos problemas deste
tema encontrads pela Petrobras ao longo dos anos pode ser encontrado em
(CARDOSO, ALVER, et al., 2003).
Podemos concluir a partir dos exemplos acima que a garantia de
escoamento possui uma grande importância na indústria de petróleo,
principalmente na exploração em águas profundas e ultra profundas. Os
impactos dos problemas apresentados até aqui estão sempre atrelados ao custo
total do projeto, onde existe uma relação entre o custo e o benefício das
despesas de implantação da planta e de operação da mesma. Acreditamos que
existe um grande espaço para minimizar os custos de operação, através de
sistemas computacionais inteligentes, que sejam capazes de prever problemas e
de ajudar na solução de problemas existentes.
1.2 OBJETIVOS DO TRABALHO
O principal objetivo deste trabalho é criar um algoritmo genético capaz de
realizar de forma automática o processo de calibração das malhas de
escoamento, reduzindo o trabalho dos engenheiros que participam do processo
de garantia de escoamento. Buscamos modificar a forma como a calibração dos
modelos de escoamento é feita atualmente, um processo de tentativa e erro
apoiado por uma planilha Excel. Além do algoritmo genético, queremos
desenvolver uma interface amigável, que desperte o interesse dos engenheiros e
facilite o trabalho no projeto das plantas de produção submarina e também na
operação destas.
1.3 DESCRIÇÃO DO TRABALHO
Ao longo deste trabalho desenvolvemos um algoritmo genético utilizando a
biblioteca ECJ (Evolutionary Computing for Java) para calibração de modelos de
escoamento utilizados no simulador de escoamento PipeSim. A biblioteca ECJ é
de código aberto e foi desenvolvida em Java, ela foi desenhada de forma a ser
altamente flexível, com todas as suas configurações determinadas
dinamicamente através de um arquivo de configuração criado pelo usuário e com
grande facilidade para modificar as suas estruturas básicas. Criamos uma
representação genética dos parâmetros de calibração das malhas de
escoamento que pode ser evoluída através do algoritmo genético e avaliada
10
através do simulador. Para a simulação dos indivíduos gerados utilizamos uma
DLL para comunicação com o PipeSim. Baseados em dados históricos
avaliaremos o algoritmo desenvolvido e chegamos aos resultados apresentados
na conclusão do trabalho.
1.4 ORGANIZAÇÃO DA MONOGRAFIA
Esta monografia está dividida em quatro capítulos adicionais, descritos a
seguir:
O capítulo 2 apresenta a descrição do problema, neste capítulo vamos
mostrar em detalhes a fase de calibração dos modelos de escoamento dentro do
processo de garantia de escoamento e vamos apresentar os problemas da forma
como esta calibração é realizada atualmente.
O capítulo 3 apresenta as técnicas utilizadas neste trabalho para resolver o
problema apresentado no capítulo 2. Neste capítulo faremos uma breve
explicação sobre algoritmos genéticos e as suas diversas técnicas de
representação de indivíduos e de evolução das populações.
O capítulo 4 apresenta a arquitetura do sistema proposto, explicaremos a
representação genética utilizada, bem como os operadores utilizados e as
configurações do algoritmo genético criado. Alem disto faremos uma discussão
sobre a arquitetura do sistema proposto.
O capítulo 5 detalha os resultados obtidos com a solução apresentada.
Vamos analisar os resultados de alguns testes realizados com uma malha de
escoamento criada para este trabalho.
Finalmente, o capítulo 6 descreve as conclusões do trabalho e identifica
possíveis trabalhos futuros.
2. DESCRIÇÃO DO PROBLEMA
A garantia de escoamento, como vimos anteriormente, é um grande
desafio da indústria de petróleo no desenvolvimento de projetos em águas
profundas. É um conjunto de operações que geram um fluxo confiável,
gerenciável e lucrativo dos fluidos desde o reservatório até as instalações na
superfície (BROWN, 2002). Dentro deste escopo existem diversos problemas
que podem ocorrer e que devem se prevenidos através das estratégias de
garantia de escoamento. Estas estratégias devem ser criadas durante a fase de
engenharia do projeto e utilizadas durante a operação do mesmo.
Neste escopo, o planejamento da garantia de escoamento é um dos
principais passos na ligação entre o projeto de engenharia e a operação com
sucesso de um campo de petróleo (NG, TADIMETI e LOWRY, 2009). O primeiro
objetivo desse planejamento é desenvolver um modelo preciso da malha de
escoamento e do comportamento do fluído produzido de acordo com as
características da planta submarina e do ambiente onde ela será instalada. Com
um modelo confiável, os engenheiros e os operadores podem realizar
simulações de escoamento, entender melhor os limites reais, identificar e
monitorar os desvios dos alvos de operação, antecipar e prevenir problemas
operacionais, implementar estratégias e procedimentos efetivos, além de
planejar futuras operações e novos desenvolvimentos do campo.
Dada a importância dos modelos de malha de escoamento e a ausência,
até o momento da escrita desse trabalho, de ferramentas que auxiliem nesta
calibração, decidimos atuar no processo de calibração como um primeiro passo
na criação de aplicações que auxiliem no processo de garantia de escoamento.
Desse ponto em diante iremos focar em um dos problemas da garantia de
escoamento: a calibração dos modelos de malha de escoamento.
É importante definir os critérios de aceitação para determinar se as
previsões geradas a partir da simulação de um modelo estão dentro de uma
margem de erro aceitável quando comparadas com os valores medidos. O
critério de aceitação deve ser determinado com base nos objetivos do processo
de avaliação do modelo e são tipicamente limitados pela incerteza intrínseca das
suposições dos usuários e dos equipamentos de medição (NG, TADIMETI e
LOWRY, 2009).
Para termos um modelo de malha de escoamento confiável é necessário
que este modelo esteja devidamente calibrado. Para realizar a calibração de um
12
modelo é necessário executar simulações utilizando cenários e dados históricos
para comparar o resultado obtido através do simulador com os valores
observados na planta. O primeiro passo consiste em formar uma base histórica
de dados de produção que serão utilizados na calibração. Para que estes dados
sejam obtidos devemos ter um sistema de monitoramento do campo assim como
o instalado no Campo de Bonga na Nigéria (SCHOPPA e JAYAWARDENA,
2007).
O modelo do simulador será considerado calibrado quando a diferença
entre o resultado do simulador e o valor lido na planta estiver dentro de um limite
aceitável, conforme discutimos nos parágrafos anteriores. Assim, o objetivo da
calibração dos modelos de escoamento é encontrar os parâmetros de
configuração do modelo que minimizam o erro existente nas simulações de
cenários de escoamento.
Os parâmetros de entrada de uma simulação são os valores de vazão
bruta, temperatura e BSW do óleo produzido nas plataformas, os valores de
pressão e BSW do óleo que chega as unidades de processamento, os estados
das válvulas, que podem estar abertas ou fechadas e um conjunto de outros
parâmetros que representam as características de operação de cada um dos
elementos que compõem o modelo. Estes parâmetros são os que devem ser
otimizados para que o engenheiro encontre a calibração ideal para o modelo.
Uma malha de escoamento é formada por um conjunto de plataformas de
produção, unidades de processamento, válvulas e dutos. Para cada um destes
elementos existe um conjunto de variáveis que representam as suas
características de funcionamento, estas variáveis são as que devem ser
modificadas até que o modelo esteja calibrado,
O resultado de uma simulação é o valor da pressão do óleo nas
plataformas produtoras e os valores de vazão bruta e temperatura do óleo que
chega as unidades de processamento, durante o processo de calibração o
engenheiro deve comparar os resultados da simulação com os valores históricos
destas variáveis para avaliar o estado atual da calibração do modelo.
Atualmente a calibração dos modelos de malha de escoamento é feita
através de um processo de tentativa e erro apoiado por uma planilha Excel. O
engenheiro precisa selecionar um conjunto de dados históricos para gerar os
cenários de escoamento que serão utilizados no processo de calibração. Com os
cenários escolhidos são realizadas rodadas de ajuste dos parâmetros da malha
13
de acordo com o conhecimento do engenheiro e da simulação dos cenários.
Este processo se repete até que os valores simulados estejam dentro de uma
faixa de erro aceitávelEsta tarefa é executada através dos seguintes passos:
1. Obter um conjunto de dados históricos a serem utilizados na
calibração;
2. Executar o simulador PipeSim com os dados de entrada
selecionados;
3. Comparar o resultado do simulador com os dados recuperados;
4. Se a diferença estiver abaixo do limite aceitável, o modelo está
calibrado;
5. Senão, continuar o processo de calibração;
6. Alterar os parâmetros do modelo e voltar ao passo 2 do processo;
O mesmo processo pode ser representado na Figura 1.
Figura 1 - Diagrama do Modelo Atual de Calibração
14
O processo atual de calibração descrito acima requer muito tempo dos
engenheiros por apresentar um grande espaço de busca para a solução. Esta
solução também é muito dependente da experiência do engenheiro com relação
a malha simulada. Dessa forma, um engenheiro com pouca experiência pode
nunca encontrar uma solução que atinja uma margem de erro satisfatória, assim
como, também é possível que uma solução não ótima seja utilizada.
Este é claramente um problema de otimização com um grande espaço de
busca, onde devemos encontrar os melhores valores para os parâmetros do
modelo com o objetivo de minimizar o erro do resultado da simulação. Como
veremos mais adiante, a técnica mais indicada para resolver esse problema são
os algoritmos genéticos, que serão descritos no capítulo a seguir.
3. ESTADO DA ARTE
Os algoritmos genéticos fazem parte de um conjunto de sistemas
computacionais inspirados na natureza. Eles simulam os processos naturais de
evolução das espécies apresentados por Charles Darwin em 1850 para evoluir
as soluções de um determinado problema. Segundo Darwin, durante o curso da
evolução, as populações evoluem conforme os princípios de seleção natural e
sobrevivência através da adaptação, dessa forma, os indivíduos que se adaptam
melhor ao ambiente possuem maiores chances de sobreviver e de reproduzir,
enquanto os indivíduos menos aptos tendem a serem eliminados. Isto significa
que a cada geração os genes dos indivíduos mais aptos irão influenciar um
número cada vez maior de novos indivíduos. Seguindo esta tendência, a espécie
destes indivíduos tende a se tornar cada vez mais apta a sobreviver no ambiente
em que reside.
Os primeiros trabalhos sobre algoritmos genéticos foram realizadas por
John Holland, dedicou-se ao estudo formal do fenômeno da evolução e foi
gradualmente refinando as suas descobertas, até que em 1975 publicou o seu
primeiro livro, intitulado “Adaptation in Natural and Artificial Systems”. Em
(HOLLAND, 1975), os algoritmos genéticos foram apresentados como uma
abstração da evolução biológica, este trabalho foi baseado na teoria da evolução
das espécies (DARWIN, 1859) e na teoria da herança genética (MENDEL,
1865).
Os algoritmos genéticos são indicados para resolver problemas
complexos, com difícil formulação matemática e com grande espaço de busca
por empregarem um processo adaptativo e paralelo de busca de soluções
(PACHECO e VELLASCO, 2007). O espaço de busca é o conjunto de todas as
soluções possíveis de um problema e o paralelismo da busca provém da
capacidade de avaliar múltiplas soluções para o problema de forma simultânea e
a adaptabilidade provém da capacidade de gerar soluções melhores baseadas
nas soluções já encontradas.
Segundo (MICHALEWICZ, 1996) os algoritmos genéticos possuem ampla
aplicação em problemas de otimização como planejamento, controle adaptativo,
jogos, modelagem cognitiva, problemas de transportes, problemas de caixeiro
viajante, entre outros. Ainda segundo (MICHALEWICZ, 1996) eles pertencem a
classe de algoritmos probabilísticos, apesar de serem bem diferentes de
16
algoritmos randômicos, uma vez que eles juntam elementos de busca direta e de
busca estocástica.
Os algoritmos genéticos representam as soluções de um problema através
de um cromossomo, desta forma eles trabalham com uma codificação do
conjunto de parâmetros do problema e não com os parâmetros em si
(PACHECO e VELLASCO, 2007). Os cromossomos são utilizados para codificar
os indivíduos, através dessa codificação é possível criar operadores de
recombinação (crossover) e de mutação, utilizados no processo de evolução dos
indivíduos que ocorre durante a execução de um algoritmo genético. Este
processo de evolução consiste na avaliação, seleção, recombinação e mutação
destes indivíduos. A representação na qual as possíveis soluções aparecem
dentro dos cromossomos deve descrever o espaço de busca do problema,
permitindo que todas as soluções possíveis para o problema possam ser
representadas.
A escolha da codificação mais adequada para o cromossomo que irá
representar as soluções de um determinado problema é um dos principais
fatores que determinam a possibilidade de utilizar um algoritmo genético na
solução deste problema. Uma codificação inadequada pode gerar uma elevada
quantidade de indivíduos inválidos, que não satisfazem as restrições do
problema, durante o processo de recombinação e de mutação. A forma mais
simples de codificação é a binária, onde o cromossomo é formado por uma
cadeia de bits, mas outros tipos de codificação podem ser usados de acordo
com as características do problema. Como outros exemplos de codificação,
temos a representação por números inteiros ou por números com pontos
flutuantes. Durante a etapa de avaliação os indivíduos devem ser decodificados
de acordo com o cromossomo para os parâmetros do problema, de forma a
possibilitar a utilização na função de avaliação.
A simulação do processo de evolução natural realizada por um algoritmo
genético tem início com uma população inicial de indivíduos aleatórios. A cada
iteração do algoritmo estes indivíduos são avaliados e selecionados, de acordo
com uma probabilidade, para sofrerem alterações determinadas por operadores
genéticos de forma a gerar uma nova população de novos indivíduos mais
evoluídos. Como podemos perceber, em um algoritmo genético, uma população
é o conjunto de indivíduos gerados a cada iteração do algoritmo e um indivíduo é
uma solução possível para o problema que buscamos resolver.
17
A qualidade de um indivíduo, o equivalente a sua adaptação ao ambiente
na evolução natural, é medida através de uma função de aptidão, também
chamada de função objetivo. Esta função deve quantificar a adaptação de um
determinado indivíduo ao problema que desejamos resolver, permitindo assim
quantificar as melhores soluções do problema. Ela deve fornecer a medida de
proximidade da solução em relação ao objetivo do problema. Um problema pode
ter múltiplos objetivos, sendo que estes podem ser conflitantes, estas
características devem ser representadas na função de avaliação, permitindo
assim que o algoritmo genético quantifique a qualidade de um indivíduo.
Aos indivíduos mais aptos são aplicadas maiores probabilidades de
reprodução para a geração seguinte, o que permite que as suas características
sejam transmitidas aos novos indivíduos, da mesma forma que ocorre na teoria
da evolução de Darwin. Os indivíduos menos aptos recebem uma menor
probabilidade de reprodução, mas mesmo assim eles possuem chances, isto
ocorre para permitir que o algoritmo percorra uma maior parte do espaço de
busca, evitando que um indivíduo muito apto monopolize a reprodução.
A geração da população seguinte ocorre através da escolha de duplas de
indivíduos de forma aleatória e baseada nas suas probabilidades de reprodução,
a essa dupla de indivíduos será aplicado um operador genético de recombinação
que irá recombinar os cromossomos dos indivíduos pais e gerar um novo
indivíduo que irá possuir características dos dois indivíduos pais. A operação de
recombinação possui a característica de acelerar o processo de busca, uma vez
que ela toma proveito das soluções mais promissoras. Após a recombinação,
pode ser realizada uma operação de mutação que irá mudar uma característica
genética do indivíduo filho de forma aleatória, este processo pode ocorrer de
acordo com uma probabilidade que é um parâmetro de configuração do
algoritmo conhecido como taxa de mutação. A operação de mutação tem um
perfil exploratório, uma vez que pode levar a solução para um local distante do
atual, dispersando assim a população pelo espaço de busca.
O processo de produção de novos indivíduos ocorre até que a população
seguinte esteja completa. Depois de criada a nova população todos os novos
indivíduos são avaliados e o processo de recombinação e mutação ocorre
novamente. Sendo que este ciclo de avaliação, seleção e geração é repetido até
que um critério de parada do algoritmo seja atingido. Podem existir diversos
critérios de parada, como número de iterações do algoritmo, tempo de execução,
valor da aptidão do melhor indivíduo encontrado até o momento e número de
18
iterações sem que haja melhora no melhor indivíduo. O pseudo-algoritmo abaixo
representa a execução de um algoritmo genético.
Pseudo Algoritmo Genético
Início
Gerar população inicial
Avaliar os indivíduos
Repetir
Selecionar um conjunto de indivíduos
pais
Recombinar os pais selecionados
Mutação sobre os filhos gerados
Avaliar os indivíduos
Até satisfazer um critério de parada
Fim
19
A evolução de um algoritmo genético também pode ser representada pela Figura
2.
Figura 2 - Diagrama de Execução de um Algoritmo Genético
Os operadores genéticos são as ferramentas de evolução dos algoritmos
genéticos. São responsáveis por criar novos pontos de busca no espaço da
solução do problema, utilizando como base os pontos de busca da solução atual,
os indivíduos da população atual, para gerar soluções cada vez melhores. Vimos
20
até agora que existem dois tipos de operadores genéticos, os de recombinação
(crossover) e os de mutação.
Os operadores de recombinação produzem novos indivíduos a partir da
combinação dos cromossomos de dois ou mais indivíduos pais, a quantidade de
indivíduos pais pode ser parametrizada de acordo com a necessidade do
problema a ser resolvido. Estes operadores exploram as características
genéticas dos indivíduos pais, levando assim a novos locais de busca próximos
aos dos seus progenitores, temos então uma busca local que vai evoluindo para
resultados cada vez melhores. Esta busca local pode não ser eficiente, uma vez
que o algoritmo pode ficar preso em uma solução ótima local da função de
avaliação. A escolha dos operadores de recombinação a serem utilizados deve
ser baseada no cromossomo utilizado para evitar que soluções inválidas sejam
geradas pela recombinação dos indivíduos pais.
O operador de mutação permite a criação de um novo indivíduo através
da alteração do seu cromossomo de um indivíduo fonte, aumentando assim a
diversidade na população. Consiste na mudança aleatória de um ou mais genes
de um cromossomo, permitindo assim a produção de indivíduos com
características totalmente diferentes dos outros indivíduos da população. Este
operador diminui a possibilidade do algoritmo ficar preso em uma solução ótima
local, uma vez que dispersa os indivíduos pelo espaço de busca do problema.
Podemos citar como exemplos de mutação a seleção aleatória de um novo valor
para um determinado gene do cromossomo ou a troca entre dois genes do
cromossomo. Assim como nos operadores de recombinação, a seleção dos
operadores de mutação deve levar em conta o que cada gene do cromossomo
representa e as restrições do problema com o objetivo de reduzir ao máximo o
número de indivíduos inválidos gerados.
Os algoritmos genéticos utilizam conceitos de probabilidade para
direcionar a busca pela solução ótima de um problema, sendo que a
convergência destes algoritmos é determinada pelos parâmetros de
configuração escolhidos. Deve haver um balanceamento entre a dispersão das
soluções criadas pelo espaço de busca e a velocidade de convergência do
algoritmo, para isto deve existir um equilíbrio entre a diversidade populacional e
a pressão seletiva. A diversidade populacional indica a distância entre os
diversos indivíduos de uma população mostrando a dispersão desta população
no espaço de busca. Enquanto a pressão seletiva representa a direção e a
velocidade de convergência. A pressão seletiva ocorre quando a aptidão de
21
alguns indivíduos se torna muito maior que a de outros, aumentando assim a sua
probabilidade de reprodução. Como falamos anteriormente, a pressão seletiva
pode levar o algoritmo a indicar soluções ótimas locais.
A parametrização mais indicada de um algoritmo genético deve aumentar
a diversidade populacional no início da sua execução, com alta taxa de
recombinação, visando varrer a maior parte do espaço de busca possível. A
medida que as soluções evoluem a pressão seletiva deve ser aumentada para
permitir a convergência do algoritmo, mas devemos aumentar ao mesmo tempo
a taxa de mutação para permitir que o algoritmo saia de soluções ótimas locais.
Uma aplicação de algoritmos genéticos apresentada em (PACHECO e
VELLASCO, 2007) é o Sistema Inteligente de Otimização de Alternativas para
Exploração de Campos de Petróleo Utilizando Computação Evolucionária. Este
sistema busca resolver o problema de seleção de alternativas para o
desenvolvimento de um campo de petróleo. A abordagem consiste em encontrar
a quantidade de poços produtores e injetores e as suas localizações no campo
de forma a maximizar o VPL do projeto.
Concluímos assim uma breve explicação sobre a técnica de algoritmos
genéticos que será utilizada para resolver o problema da calibração de malhas
de escoamento. Abordamos aqui somente os conceitos necessários para o
entendimento deste trabalho. Recomendamos ao leitor que deseja se aprofundar
no assunto que outras publicações com informações mais detalhadas.
4. ARQUITETURA DO SISTEMA PROPOSTO
O sistema de calibração de malhas de escoamento será o responsável
por realizar a calibração do modelo de forma automatizada, ele será integrado a
um sistema já existente de garantia de escoamento e se comunicará com o
simulador PipeSim para realizar a avaliação das soluções obtidas. A proposta é
que esse sistema encontre os parâmetros ótimos do modelo de malha de
escoamento que minimizem a margem de erro do simulador a fim de que o
modelo possa ser utilizado para previsões de cenários com uma baixa taxa de
erro.
O sistema será desenvolvido na linguagem Java, pois esta é a linguagem
utilizada no sistema utilizado atualmente no processo de garantia de
escoamento. A biblioteca ECJ será utilizada para as operações do algoritmo
genético, esta é uma biblioteca de código aberto escrita em Java que foi
desenhada para ser altamente flexível, com todas as classes que representam o
comportamento do algoritmo sendo determinadas em tempo de execução
através de um arquivo de configuração criado pelo usuário. A biblioteca permite
que o usuário crie cromossomos específicos para os seus problemas, bem como
operadores genéticos que atendam as suas necessidades.
A comunicação com o simulador PipeSim é realizada através de um
conjunto de DLLs proprietárias da biblioteca OpenLink. Esta biblioteca provê
funções para obter os resultados das simulações e para consultar um item do
modelo para buscar os valores de suas características atuais. Também existem
funções para salvar os valores das características dos itens que devem ser
usados nas simulações e funções para realizar operações no modelo, como
executar uma simulação.
Um dos problemas da comunicação entre a biblioteca OpenLink e o
sistema desenvolvido em Java é a dificuldade de acessar DLLs utilizando código
Java. Para realizar esta comunicação iremos utilizar uma biblioteca Java
chamada Com4J. Esta biblioteca permite uma fácil intercomunicação entre
aplicativos Java e componentes COM (Microsoft Component Object Model). A
utilização da biblioteca parte da geração de classes Java a partir de uma
biblioteca COM, em tempo de execução a biblioteca irá gerar código de
implementação para as interfaces que foram marcadas durante a geração do
código. Estas implementações, chamadas de proxies, guardam referências para
as interfaces COM conforme ilustrado na Figura 3. Podemos ver que podem
23
existir múltiplos proxies para uma mesma interface COM. A Figura 4 representa
a arquitetura completa de comunicação do sistema de calibração de malhas de
escoamento conforme discutimos anteriormente.
Figura 3 - Comunicação Java - COM com a Biblioteca Com4j
Figura 4 - Arquitetura do Sistema
O processo de calibração deverá ser realizado dentro do módulo de
calibração de modelos de malha de escoamento. O engenheiro responsável
deverá escolher um período passado, no qual existem dados reais de
escoamento. O sistema irá buscar para este período os dados de vazão bruta,
pressão, temperatura e BSW do óleo produzido nas plataformas e do óleo que
chega as unidades de processamento, bem como os estados das válvulas. Estes
dados representam apenas um instante de tempo do processamento, temos
assim uma foto do que estava acontecendo no instante exato no qual os dados
foram coletados. O engenheiro deverá então escolher o conjunto de dados que
será utilizado na calibração, essas informações serão utilizadas na simulação e
na avaliação das soluções geradas através do algoritmo genético.
24
A população inicial do algoritmo genético pode ser totalmente aleatória ou
escolhida pelo engenheiro a partir do seu conhecimento do modelo, a segunda
opção permite que o algoritmo comece de soluções que já são razoavelmente
boas. A partir desta população inicial de soluções o módulo de calibração irá
utilizar o simulador para avaliar cada uma das soluções da população de forma
paralela.
Após o processo de avaliação o algoritmo irá gerar uma nova população
utilizando os operadores genéticos, que serão apresentados mais adiante, e uma
nova etapa de avaliação será realizada. Este processo irá ser repetir até que um
dos critérios de parada seja atingido. Os critérios de parada utilizados neste
trabalho são a quantidade de iterações realizadas, o tempo total de execução, o
nível de aptidão do melhor indivíduo gerado até o momento e o número de
iterações sem que o melhor indivíduo mude. Estes critérios poderão ser
configurados pelo engenheiro para permitir que este faça um balanceamento
entre o tempo de execução do algoritmo e a qualidade da melhor resposta
gerada.
O conjunto de variáveis a serem otimizadas neste problema se referem
as características de operação dos elementos que fazem parte da malha de
escoamento que desejamos calibrar. Este conjunto de características é muito
grande e varia de acordo com o modelo a ser calibrado. Visando simplificar o
problema, escolhemos, com base no conhecimento dos engenheiros de
elevação e escoamento, um subconjunto com as variáveis que mais influenciam
na calibração de um modelo de escoamento. Este subconjunto é formado pela
condutividade dos dutos, a velocidade dos fluidos nos dutos e a relação entre a
temperatura e a viscosidade do óleo produzido nas plataformas.
A condutividade de um duto e a velocidade que um óleo passa por ele
afetam diretamente a vazão de óleo que um determinado duto é capaz de
transportar. Para cada um dos dutos da malha teremos uma dupla de variáveis
reais no cromossomo do problema que representarão estas duas características.
Teremos então a seguinte representação no cromossomo para as variáveis
condutividade e velocidade do óleo em um duto
𝐶1 𝑉1 ... 𝐶𝑖 𝑉𝑖 ... 𝐶𝑑 𝑉𝑑
onde 𝐶𝑖 e 𝑉𝑖 são, respectivamente, a condutividade e a velocidade do fluido no
duto 𝑖 para 1 ≤ 𝑖 ≤ 𝑑, onde 𝑑 é o número total de dutos na malha. O domínio
25
destas variáveis deverá ser informado ao módulo de otimização pelo usuário,
uma vez que o domínio pode mudar de acordo com as características dos dutos
utilizados.
As variáveis restantes dizem respeito as plataformas produtoras que enviam óleo
em direção as unidades processadoras. Para cada uma destas plataformas
teremos duas duplas de valores que relacionam a temperatura com a
viscosidade do óleo produzido nesta plataforma, formando uma reta de
temperatura por viscosidade, na qual o coeficiente angular deve ser negativo.
Isto ocorre porque o valor da viscosidade de um óleo diminui com o aumento da
temperatura. A Tabela 1 contém um conjunto de valores possíveis que
representam esta característica.
Temperatura Viscosidade
20º C 304 cP
40º C 141 cP
Tabela 1 - Valores de viscosidade por temperatura
O domínio de valores possíveis para a variável temperatura será qualquer real
maior do que zero e menor que um valor determinado pelo usuário. O mesmo
ocorre para a viscosidade que também possui valor máximo determinado pelo
usuário.
0 ≤ 𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎 ≤ 𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎𝑚á𝑥𝑖𝑚𝑎
0 ≤ 𝑣𝑖𝑠𝑐𝑜𝑠𝑖𝑑𝑎𝑑𝑒 ≤ 𝑣𝑖𝑠𝑐𝑜𝑠𝑖𝑑𝑎𝑑𝑒𝑚á𝑥𝑖𝑚𝑎
onde 𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎𝑚á𝑥𝑖𝑚𝑎 e 𝑣𝑖𝑠𝑐𝑜𝑠𝑖𝑑𝑎𝑑𝑒𝑚á𝑥𝑖𝑚𝑎 são escolhidos pelo usuário.
Para representar esta relação entre viscosidade e temperatura no cromossomo,
utilizamos dois números reais para os valores de temperatura e dois números
reais para os valores de viscosidade para cada uma das plataformas de
produção de óleo. Teremos então a seguinte representação para a relação entre
temperatura e viscosidade do óleo produzido em uma determinada plataforma
𝑇11 𝑉11 𝑇21 𝑉21 ... 𝑇1𝑖 𝑉1𝑖 𝑇2𝑖 𝑉2𝑖 ... 𝑇1𝑝 𝑉1𝑝 𝑇2𝑝 𝑉2𝑝
onde 𝑇1𝑖 e 𝑇2𝑖 são os dois valores de temperatura e 𝑉1𝑖 e 𝑉2𝑖 são os dois
valores da viscosidade que serão utilizados para representar a relação entre
temperatura e viscosidade do óleo produzido na plataforma 𝑖 para 1 ≤ 𝑖 ≤ 𝑝,
onde 𝑝 é o número total de plataformas na malha.
26
A associação direta entre os valores 𝑇1𝑝 e 𝑉1𝑝 e entre os valores 𝑇2𝑝 e
𝑉2𝑝 para representar a relação entre viscosidade e temperatura pode levar a
criação de indivíduos inválidos, uma vez que devemos garantir que o valor da
viscosidade do óleo diminua com o aumento do valor de temperatura. Para
resolver esse problema criamos uma forma de decodificar este trecho do
cromossomo de maneira que não sejam criados indivíduos inválidos.
A decodificação utilizada para este trecho do cromossomo seleciona o
menor valor de temperatura e o maior valor de viscosidade para formar a
primeira dupla de valores e o maior valor de temperatura e o menor valor de
viscosidade para formar a segunda dupla de valores. Desta forma garantimos
que todos os indivíduos gerados aleatoriamente pela população inicial, gerados
através do operador de crossover e modificados através do operador de
mutação sejam válidos com relação a esta restrição.
Utilizando as representações apresentadas anteriormente chegamos ao
cromossomo completo que irá representar uma solução gerada pelo algoritmo
genético, este cromossomo terá a seguinte forma
𝐶1 𝑉1 ... 𝐶𝑑 𝑉𝑑 𝑇𝑉1 ... 𝑇𝑉𝑝
de acordo com os índices já apresentados anteriormente e onde 𝑇𝑉𝑖 é o conjunto
dos quatro valores de temperatura e viscosidade do óleo produzido na
plataforma 𝑖.
As características do sistema levaram a necessidade de criarmos uma
representação de cromossomo que varia de tamanho de acordo com os
parâmetros escolhidos pelo usuário. Da mesma forma, os domínios de algumas
variáveis são determinados por escolhas do usuário, temos então um espaço de
busca variável. Por estarmos trabalhando somente com variáveis reais não
precisaremos criar novos operadores genéticos para permitir a criação de novos
indivíduos, dessa forma escolhemos utilizar o crossover aritmético e a mutação
CREEP.
O crossover aritmético é uma combinação linear de dois vetores
genitores em uma determinada geração. Após a seleção de dois indivíduos pais
𝑃1 e 𝑃2, aplicamos o crossover aritmético para gerar os indivíduos filhos 𝐹1e 𝐹2
utilizando as seguintes expressões
27
𝐹1 = 𝑎𝑃1 + (1 − 𝑎)𝑃2
e
𝐹2 = 𝑎𝑃2 + (1 − 𝑎)𝑃1
onde
𝑎 = 𝑟𝑎𝑛𝑑 ∈ [0,1]
o que caracteriza um crossover uniforme.
A mutação CREEP implementa uma busca local, tentando achar uma
solução ótima próxima da solução atual através de uma busca no sentido
positivo e no sentido negativo da variável. Após escolhido um determinado
indivíduo para sofrer mutação, para cada um dos genes reais do cromossomo
deste indivíduo realizamos um sorteio para verificar se o valor deste gene irá
aumentar ou diminuir, permitindo assim uma busca aleatória em qualquer
direção. O gene 𝑃 do cromossomo de origem sofrerá mutação de acordo com a
expressão
𝐹 = 𝑃 + ∆ max +𝑃 , 𝑠𝑒 𝑜 𝑣𝑎𝑙𝑜𝑟 𝑑𝑒𝑣𝑒 𝑎𝑢𝑚𝑒𝑛𝑡𝑎𝑟
𝑃 + ∆ P−𝑚𝑖𝑛 , 𝑠𝑒 𝑜 𝑣𝑎𝑙𝑜𝑟 𝑑𝑒𝑣𝑒 𝑑𝑖𝑚𝑖𝑛𝑢𝑖𝑟
e irá gerar um novo gene 𝐹 que fará parte do cromossomo do indivíduo após o
processo de mutação. Onde 𝑚𝑎𝑥 e 𝑚𝑖𝑛 são os limites do domínio de 𝑃 e onde
∆ 𝑥 = 𝑥. 𝑟𝑎𝑛𝑑
onde 𝑟𝑎𝑛𝑑 ∈ [0, 𝑦] e 𝑦 ≤ 1. O valor de 𝑦 é utilizado para determinar o passo
dado pela mutação CREEP. Quanto maior o valor de 𝑦 maior o ajuste e quanto
menor o seu valor, menor o ajuste realizado pela mutação.
O sistema de otimização deve minimizar o erro dos valores de pressão
simulados para cada uma das plataformas e os erros dos valores de vazão e
temperatura simulados para cada uma das unidades de processamento, onde o
erro é calculado pelo módulo da diferença entre o valor simulado e o valor
medido em situações reais. Temos então um problema de múltiplos objetivos
que podem ser agregados através da soma dos erros de todas as variáveis do
problema, uma vez que a fórmula de cálculo do erro garante que o menor valor
possível para este é zero por causa do operador módulo utilizado. Teremos
então a seguinte função de avaliação
28
𝑎𝑣𝑎𝑙𝑖𝑎çã𝑜 = 𝑒𝑟𝑟𝑜𝑝𝑟𝑒𝑠 𝑠ã𝑜 𝑝𝑙𝑎𝑡𝑎𝑓𝑜𝑟𝑚𝑎
𝑝𝑙𝑎𝑡𝑎𝑓𝑜𝑟𝑚𝑎
+ 𝑒𝑟𝑟𝑜𝑣𝑎𝑧ã𝑜 𝑢𝑛𝑖𝑑𝑎𝑑𝑒 + 𝑒𝑟𝑟𝑜𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎 𝑢𝑛𝑖𝑑𝑎𝑑𝑒
𝑢𝑛𝑖𝑑𝑎𝑑𝑒
que será utilizada para avaliar as soluções geradas pelo algoritmo genético. Onde
𝑒𝑟𝑟𝑜𝑝𝑟𝑒𝑠𝑠 ã𝑜 𝑝𝑙𝑎𝑡𝑎𝑓𝑜𝑟𝑚𝑎
= 𝑝𝑟𝑒𝑠𝑠ã𝑜𝑚𝑒𝑑𝑖𝑑𝑎 𝑝𝑙𝑎𝑡𝑎𝑓𝑜𝑟𝑚𝑎 − 𝑝𝑟𝑒𝑠𝑠ã𝑜𝑠𝑖𝑚𝑢𝑙𝑎𝑑𝑎 𝑝𝑙𝑎𝑡𝑎𝑓𝑜𝑟𝑚𝑎
𝑐𝑒𝑛 á𝑟𝑖𝑜𝑠
𝑒𝑟𝑟𝑜𝑣𝑎𝑧ã𝑜 𝑢𝑛𝑖𝑑𝑎𝑑𝑒 = 𝑣𝑎𝑧ã𝑜𝑚𝑒𝑑𝑖𝑑𝑎 𝑢𝑛𝑖𝑑𝑎𝑑𝑒 − 𝑣𝑎𝑧ã𝑜𝑠𝑖𝑚𝑢𝑙𝑎𝑑𝑎 𝑢𝑛𝑖𝑑𝑎𝑑𝑒
𝑐𝑒𝑛 á𝑟𝑖𝑜𝑠
𝑒𝑟𝑟𝑜𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎 𝑢𝑛𝑖𝑑𝑎𝑑𝑒
= 𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎𝑚𝑒𝑑𝑖𝑑𝑎 𝑢𝑛𝑖𝑑𝑎𝑑𝑒 − 𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎𝑠𝑖𝑚𝑢𝑙𝑎𝑑𝑎 𝑢𝑛𝑖𝑑𝑎𝑑𝑒
𝑐𝑒𝑛 á𝑟𝑖𝑜𝑠
onde o somatório sobre os dados de entrada representa cada registro
encontrado na base de dados para o período escolhido pelo engenheiro.
A partir da arquitetura do sistema apresentada acima e do modelo de
cromossomo utilizado para representar as soluções geradas pelo algoritmo
podemos realizar a implementação do módulo de calibração de modelos de
malha de escoamento e realizar os testes para verificar a sua eficácia.
5. RESULTADOS
Os testes do algoritmo implementado foram realizados sobre uma malha
de escoamento simples criada especificamente para estes testes, utilizamos esta
malha somente para provar que o algoritmo criado possui um bom potencial para
ser utilizado em malhas de escoamento reais. A malha de escoamento utilizada
está representada na Figura 5.
Figura 5 - Malha de escoamento de testes
Nesta malha o nó P27 é uma plataforma, uma origem de óleo, e o nó
P32-P27 é uma unidade de processamento, um destino de óleo. Os nós PAV3 e
MIS-P3227 são formados por conjuntos de dutos que levam o óleo produzido na
plataforma P27 até a unidade de processamento P32-P27. O nó PAV3 é
formado pelo duto MIS como podemos ver na Figura 6.
Figura 6 - Dutos de PAV3
O nó MIS-P3227 é formado pelos dutos MIS, F-MIS_P32-20 e R-MIS_P32-20
como podemos ver na Figura 7.
30
Figura 7 - Dutos de MIS-P3227
O cromossomo gerado pelo algoritmo para esta malha será formado por
duas duplas de valores de viscosidade por temperatura para a plataforma de
produção P27 e quatro duplas de condutividade e de velocidade para cada um
dos quatro dutos existentes na malha. O cromossomo gerado vai possuir a
seguinte forma.
𝐶𝑃𝐴𝑉3_𝑀𝐼𝑆 𝑉𝑃𝐴𝑉3_𝑀𝐼𝑆 𝐶𝑀𝐼𝑆_𝑀𝐼𝑆 𝑉𝑀𝐼𝑆_𝑀𝐼𝑆 𝐶𝐹−𝑀𝐼𝑆 𝑉𝐹−𝑀𝐼𝑆 𝐶𝑅−𝑀𝐼𝑆 𝐶𝑅−𝑀𝐼𝑆
𝑇1,𝑃27 𝑉1,𝑃27 𝑇2,𝑃27 𝑉2,𝑃27
Após alguns testes selecionamos as taxas de mutação e de crossover
que resultaram nos melhores resultados. Visando acelerar o processo de
busca nas gerações iniciais e aumentar o espaço de busca nas gerações finais,
utilizamos taxas variáveis para estes dois operadores. A taxa de e crossover irá
diminui ao longo das gerações, enquanto a taxa de mutação possui
comportamento inverso. O algoritmo começa com uma taxa de crossover de 0,8
na primeira geração e que vai diminuindo proporcionalmente a cada geração até
alcançar uma taxa de 0,5 na última geração. De forma análoga a taxa de
mutação começa em 0,05 e termina em 0,4.
Conforme discutimos anteriormente, a saída do simulador fornece uma
variável para cada plataforma de produção e duas variáveis para cada unidade
de processamento. Para as plataformas de produção temos a pressão simulada
do óleo que é produzido e para as unidades de processamento temos a
31
temperatura do óleo que chega e a vazão com a qual esse óleo chega. No caso
da malha escolhida para testes temos apenas a plataforma de produção P27 e a
unidade de processamento P32. Teremos então apenas os valores da pressão
simulada em P27 e da temperatura e da vazão simulada em P32. Ao longo dos
testes verificamos que o erro da vazão simulada em P32 era sempre zero, o que
indica que esta saída não é sensível as variáveis otimizadas pelo algoritmo.
Iremos discutir mais sobre esse assunto no capítulo de conclusão deste trabalho.
Vamos realizar a análise dos resultados para três configurações
diferentes para o número de indivíduos e para o número de gerações para uma
execução do algoritmo, para todos estes testes vamos utilizar os mesmos
valores para as taxas e crossover e mutação apresentados na Tabela 2.
Taxa Inicial Taxa Final
Crossover 0,8 0,5
Mutação 0,05 0,4
Tabela 2 - Configurações do algoritmo
Calculamos o tempo de execução do algoritmo através do número de indivíduos
avaliados através da simulação no PipeSim, verificamos através de um conjunto
de testes que o tempo médio para a simulação da malha utilizada nestes testes
é de três segundos. As três configurações testadas estão apresentadas na
Tabela 3 juntamente com o tempo total para a execução do algoritmo.
Cenário Indivíduos Gerações Elitismo
(Indivíduos)
Tempo
(minutos)
1 40 10 5 20
2 30 30 5 45
3 10 40 2 20
Tabela 3 - Cenários de teste
No primeiro teste a ser analisado rodamos o algoritmo com dez gerações
e com uma população com quarenta indivíduos e utilizamos elitismo com cinco
indivíduos. O tempo total para executar o algoritmo com esta configuração foi de
aproximadamente vinte minutos. O Gráfico 1 mostra a evolução do valor da
avaliação do melhor indivíduo por geração. Podemos verificar que já na quarta
geração temos um erro total abaixo de 0,5 em valores absolutos, e que na última
geração este valor está muito próximo de 0,1. Podemos notar também que já na
primeira população o erro é muito baixo, este resultado pode ser explicado pela
32
simplicidade da malha de escoamento que pode gerar um conjunto grande de
soluções boas.
Gráfico 1 - Melhor Indivíduo por Geração (10 gerações e 40 indivíduos)
Vamos analisar a média das avaliações dos indivíduos por geração
através do Gráfico 2. Podemos perceber que a média cai em conjunto com o
melhor indivíduo, sendo que esta aumenta um pouco na sétima e na nona
geração. Este comportamento pode ser justificado pelo aumento da taxa de
mutação que pode levar a soluções piores dos que as que vinham sendo obtidas
nas gerações anteriores. Verificando o Gráfico 1 podemos perceber que apesar
do aumento na média a avaliação do melhor indivíduo diminui por causa do
elitismo.
Gráfico 2 - Média da Avaliação por Geração (10 gerações e 40 indivíduos)
1 2 3 4 5 6 7 8 9 10
Valor 3,3661 3,3661 3,3661 0,3766 0,3766 0,3539 0,3539 0,1739 0,1285 0,1285
0,00
0,50
1,00
1,50
2,00
2,50
3,00
3,50
4,00
Melhor Indivíduo por Geração
1 2 3 4 5 6 7 8 9 10
Valor 459,1 294,2 111,7 26,60 10,84 5,358 14,10 3,871 92,60 18,20
0,00
50,00
100,00
150,00
200,00
250,00
300,00
350,00
400,00
450,00
500,00
Média da Avaliação por Geração
33
O erro total das três variáveis de saída do simulador não nos fornece uma
idéia ideal sobre o resultado obtido, portanto vamos analisar os erros destas
variáveis separadamente. O Gráfico 3 mostra o erro percentual da pressão
simulada na plataforma P27 para o melhor indivíduo por geração. Podemos
perceber que apesar do erro total diminuir consideravelmente na quarta geração
o mesmo não ocorre para a pressão, mas que mesmo assim nas últimas
gerações o erro desta variável diminui, alcançando valores abaixo de 1%.
Gráfico 3 - Erro (%) da Pressão em P27 (10 gerações e 40 indivíduos)
O erro percentual da temperatura simulada para a unidade de
processamento P32 está representado no Gráfico 4. Ao contrário da pressão em
P27 que se mantém com erro quase constante até a sétima geração, a
temperatura em P32 segue o mesmo padrão do erro total e tem uma grande
redução na quarta geração e continua caindo até a última geração. Este
comportamento era esperado, uma vez que uma das variáveis deveria diminuir
para que o erro total diminuísse.
1 2 3 4 5 6 7 8 9 10
Valor 3,85% 3,85% 3,85% 3,78% 3,78% 3,20% 3,20% 2,34% 0,94% 0,94%
0,00%
0,50%
1,00%
1,50%
2,00%
2,50%
3,00%
3,50%
4,00%
4,50%
Erro (%) da Pressão em P27
34
Gráfico 4 - Erro (%) da Temperatura em P32 (10 gerações e 40 indivíduos)
O segundo teste foi realizado utilizando trinta gerações e uma população
com trinta indivíduos e elitismo com cinco indivíduos. O tempo total para
executar o algoritmo nesta configuração foi de quarenta e cinco minutos. O
Gráfico 5 mostra a evolução do valor da avaliação do melhor indivíduo por
geração. A linha em azul, cujo eixo vertical fica a esquerda, mostra o resultado
como um todo, enquanto a linha em vermelho, cujo eixo fica a direita, mostra o
mesmo gráfico a partir da quinta geração em outro eixo para possibilitar vermos
com detalhes a variação dos valores. O mesmo será feito nos gráficos adiante.
Podemos verificar que já na segunda geração o erro total absoluto é de duas
unidades, e que na quinta geração o erro já está próximo de 0,3 unidades
reduzindo ainda mais até a trigésima geração.
Gráfico 5 - Melhor Indivíduo por Geração (30 gerações e 30 indivíduos)
1 2 3 4 5 6 7 8 9 10
Valor 274,1 274,1 274,1 18,81 18,81 18,93 18,93 6,58% 7,66% 7,66%
0,00%
50,00%
100,00%
150,00%
200,00%
250,00%
300,00%
Erro (%) da Temperatura em P32
0
0,05
0,1
0,15
0,2
0,25
0,3
0,35
0,00
2,00
4,00
6,00
8,00
10,00
12,00
14,00
16,00
18,00
20,00
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Melhor Indivíduo por Geração
35
O erro da pressão simulada em P27 está apresentado no Gráfico 6,
podemos verificar que ele cai de 70% para menos de 10% em cinco gerações.
Este erro continua diminuindo ao longo do tempo, alcançando o valor de 4,59%
no melhor indivíduo da última geração. Mais uma vez criamos uma linha
vermelha que representa o erro da pressão simulada em P27 em detalhes a
partir da quinta geração.
Gráfico 6 - Erro (%) da Pressão em P27 (30 gerações e 30 indivíduos)
O erro da temperatura simulada em P32 é o primeiro resultado
encontrado que é afetado pela função de avaliação. Neste caso o erro cai para
valores menores que 10% a partir da quinta geração, alcança um valor mínimo
na décima quarta geração com 0,3% e depois volta a subir, terminando em 1%
como podemos ver no Gráfico 7. Isto ocorre porque os erros das variáveis de
saída do simulador não são avaliados separadamente, então um indivíduo pode
possuir avaliação melhor do que outro mesmo que leve a erros maiores em uma
das variáveis.
4,00%
4,20%
4,40%
4,60%
4,80%
5,00%
5,20%
5,40%
5,60%
0,00%
10,00%
20,00%
30,00%
40,00%
50,00%
60,00%
70,00%
80,00%
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Erro (%) da Pressão em P27
36
Gráfico 7 - Erro (%) da Temperatura em P32 (30 gerações e 30 indivíduos)
No último caso testado utilizados um total de 40 gerações e uma
população com 10 indivíduos e elitismo com dois indivíduos. O tempo total de
execução do algoritmo para este teste foi de vinte minutos. O Gráfico 8 mostra a
avaliação do melhor indivíduo por geração, podemos perceber que a baixa
quantidade de indivíduos aumenta o tempo necessário para que o algoritmo
encontre soluções melhores. Somente a partir da vigésima terceira geração o
erro começa a cair significativamente. Através deste gráfico percebemos que
esta configuração não é a ideal, pois estamos desperdiçando tempo de
execução sem que as soluções estejam melhorando. Neste caso o mais indicado
seria aumentar o número de indivíduos e diminuir o número de iterações,
conforme foi realizado no primeiro cenário de testes.
Gráfico 8 - Melhor Indivíduo por Geração (40 gerações e 10 indivíduos)
0
0,01
0,02
0,03
0,04
0,05
0,06
0,07
0,08
0,00%
200,00%
400,00%
600,00%
800,00%
1000,00%
1200,00%
1400,00%
1600,00%
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Erro (%) da Temperatura em P32
0,00
20,00
40,00
60,00
80,00
100,00
120,00
140,00
160,00
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
Melhor Indivíduo por Geração
6. CONCLUSÕES E TRABALHOS FUTUROS
Ao longo deste trabalho buscamos desenvolver um algoritmo genético para
resolver o problema da calibração de modelos de malha de escoamento que são
utilizados no aplicativo PipeSim para simular cenários de escoamento no
processo de garantia do escoamento. Conseguimos modelar e desenvolver, na
linguagem de programação Java, um algoritmo capaz de obter bons resultados
em tempo de execução razoável como vimos no capítulo anterior.
A comunicação entre o algoritmo genético e o simulador PipeSim foi feita
através de uma DLL fornecida pelo próprio simulador e por uma biblioteca Java
que facilita a comunicação entre código Java e DLLs. Esta estrutura de
comunicação se mostrou deficiente, uma vez que nem todos os tipos de dados
existentes na DLL de comunicação podem ser trafegados entre esta e a
linguagem Java por não existirem conversores adequados. Desta forma talvez
seja impossível incluir na otimização feita pelo algoritmo uma nova variável que
seja representada na DLL por algum desses tipos de dados.
A biblioteca ECJ, que contém diversas funcionalidades necessárias para a
execução do algoritmo genético, se mostrou bastante flexível, permitindo criar
nossos próprios operadores de crossover e mutação. Por outro lado ela se
mostrou um pouco incompleta por não possuir alguns operadores básicos, como
a mutação CREEP e o crossover uniforme. Esta biblioteca se mostrou ser a
escolha certa para o projeto, por ser desenvolvida na mesma linguagem do
projeto onde o algoritmo vai ser utilizado e por possuir código fonte aberto.
O cromossomo criado para representar os indivíduos do algoritmo e a
forma de decodificação deste cromossomo impossibilita a criação de indivíduos
inválidos, dessa forma minimizamos o tempo de execução do algoritmo. Esta
característica é muito importante, uma vez que o tempo de execução do
simulador é relativamente alto, em torno de três segundos para a malha utilizada
nos testes. Quanto a este ponto, um dos trabalhos futuros a ser realizado é
verificar o tempo médio para simular uma malha de escoamento real e
considerar a necessidade de criarmos um proxy baseado em redes neurais para
substituir o simulador caso o tempo de execução seja muito alto.
A análise dos resultados feita no capítulo anterior mostrou que em alguns
casos o melhor indivíduo da população inicial possui um erro absoluto muito
baixo, ou seja, uma avaliação muito boa. Como estamos trabalhando com uma
população inicial totalmente aleatória, podemos imaginar que existem muitas
38
soluções para as quais o erro é muito baixo, dessa forma um indivíduo aleatório
pode alcançar tais taxas de erro. Além disto, verificamos que a variável vazão da
unidade de processamento P32, que é uma variável de saída do simulador e
participa do cálculo do erro utilizado na avaliação, apresentou sempre erro zero.
Acreditamos que estas características ocorrem porque a malha utilizada
para testes é muito simples, então sugerimos como trabalho futuro realizar testes
com uma malha de escoamento real mais complexa, com o objetivo de avaliar a
sensibilidade dos valores de saída do simulador com relação as variáveis de
calibração das malhas de escoamento que são otimizadas pelo algoritmo
genético. Caso o mesmo resultado ocorra para esta malha complexa deveremos
testar outras variáveis de calibração para verificar a sensibilidade das variáveis
de saída para com estas.
A integração com o módulo de garantia de escoamento é o último trabalho
futuro a ser realizado. Este trabalho consiste na criação de uma interface gráfica
para a entrada de dados e a apresentação dos resultados, bem como a
integração com a base de dados para a busca das informações necessárias a
calibração.
39
REFERÊNCIAS BIBLIOGRÁFICAS
BELTRÃO, R. L. C. et al. Challenges and New Technologies for the Development
of the Pre-Salt Cluster, Santos Basin, Brazil. Offshore Technology
Conference, Texas, USA, 2009.
BROWN, L. D. Flow Asurance: A pi cube Discipline. Offshore Technology
Conference, Texas, USA, 2002.
CAMARGO, R. M. T. et al. A Perspective View of Flow Assurance in Deepwater
Fields in Brazil. Offshore Technology Conference, Texas, USA, 2004.
CARDOSO, C. B. et al. Management of Flow Assurance Constraints. Offshore
Technology Conference, Texas, USA, 2003.
DARWIN, C. The Origin of Species. London: Albermale Street: [s.n.], 1859.
HOLLAND, J. H. Adaptation in Natural and Artificial Systems. Ann Arbor: MI:
The University of Michigan Press, 1975.
HUDSON, J. D. et al. Flow Assurance for Subsea Wells. Offshore Technology
Conference, Texas, USA, 2000.
JUNIOR, J. G. S.; PATERNOST, G. M.; CONDESSA, D. S. Flow Assurance
Challenges in the Papa-Terra Project. Offshore Technology Conference,
Texas, USA, 2009.
MCMULLEN, N. D. Flow-Assurance Field Solutions. Offshore Technology
Conference, Texas, USA, 2006.
MENDEL, G. Ensaio com Plantas Híbridas. [S.l.]: Sociedade de História
Natural de Brno, 1865.
MICHALEWICZ, Z. Genetic Algorithms + Data Structures = Evolution
Programs. 3. ed. [S.l.]: New York: Springer, 1996.
NG, C.; TADIMETI, K.; LOWRY, T. Flow Assurance Benchmarking - Bridging the
Gap Between Initial Design and Ongoing Operations. Offshore
Technology Conference, Texas, USA, 2009.
NOE, G. et al. Challenges of Flow Assurance in the Roncador Field. Offshore
Technology Conference, Texas, USA, 2008.
PACHECO, M. A. C.; VELLASCO, M. M. B. R. Sistemas Inteligentes de Apoio
à Decisão - Análise Econômica de Projetos de Desenvolvimento de
Campos de Petróleo sob Incerteza. Rio de Janeiro: PUC Rio, 2007.
SCHOPPA, W.; JAYAWARDENA, S. Bonga - Flow Assurance Benchmarking via
Field Surveillance. Offshore Technology Conference, Texas, USA, 2007.
SONG, S. Managing Flow Assurance and Operation Risks in Subsea Tie-Back
System. Offshore Technology Conference, Texas, USA, 2008.