Simulação e Optimização de Sistemas Modelados por Equações ...

92
Adriano da Cruz Dias Simulação e Optimização de Sistemas Modelados por Equações Algébrico-Diferenciais Dissertação de Mestrado Integrado em Engenharia Química, apresentada ao Departamento de Engenharia Química da Faculdade de Ciências e Tecnologia da Universidade de Coimbra Supervisor: Professor Doutor Nuno Manuel Clemente de Oliveira Instituição: Departamento de Engenharia Química Faculdade de Ciências e Tecnologia da Universidade de Coimbra Coimbra 2018

Transcript of Simulação e Optimização de Sistemas Modelados por Equações ...

Adriano da Cruz Dias

Simulação e Optimização de Sistemas Modelados por EquaçõesAlgébrico-Diferenciais

Dissertação de Mestrado Integrado em Engenharia Química,apresentada ao Departamento de Engenharia Química da

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Supervisor:Professor Doutor Nuno Manuel Clemente de Oliveira

Instituição:Departamento de Engenharia Química

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Coimbra 2018

AgradecimentosComo em dinâmica de sistemas, em que resultado final é a soma dos efeitos de todas as variá-veis, e não só da que tem maior contribuição, assim este trabalho, também sofreu influências deum conjunto de pessoas.

Irei aproveitar este pequeno espaço para agradecer às pessoas quem mais me apoiaram nestetrabalho.

Comecerei por agradecer ao Professor Doutor Nuno Oliveira por me ter apoiado ao longo destetrabalho.

Gostaria também deixar um especial obrigado ao Professor Doutor Lino Santos, por estar sem-pre pronto a disponibilizar informações, bem como me ter apoiado no início desta aventura quefoi a escrita em LATEX.

Deixo aqui ainda um grande obrigado à minha colega e amiga Filipa Lopes, por todo o apoioque me deu ao logo desta dissertação, sendo muitas vezes o meu braço direito.

Queria ainda agradecer ao Joel Sansana, Nélson Assunção (Júnior) e a Carolina Curado, peloapoio que me deram durante este tempo.

Quero aproveitar ainda este espaço para deixar um agradecimento a todos aqueles que fizeramparte desta minha jornada de 5 anos, principalmente a Beatriz Banaco, Eugeniu Strelet, InêsInocêncio, Joel Sansana, Júnior, e todos os outros que por motivos de espaço não estão aquireferidos.

Por último, queria deixar um especial agradecimento à minha família, pois sem os sacrifíciosdeles, nada disto seria possível.

iii

ResumoNos últimos anos tem se vindo a assistir a um crescimento das capacidades computacionais,o que abriu a possibilidade de resolução de novos problemas e de problemas mais complexos.Um destes problemas são as Sistema de equações algébrico-diferencias (EADs) (DAES).

Sendo o principal objectivo deste trabalho a simulação e a optimização de problemas que re-corram a DAES, fez-se uma pesquisa sobre as ferramentas com esta capacidade, chegando aferramentas como o Pyomo ou o JuMP, sendo ambas ferramentas suportadas por linguagensopen-source, Python e Julia, respectivamente.

Optou-se por modelar um sistema tipo (Reactor perfeitamente agitado (RPA)) recorrendo aoWolfram Mathematicar e ao Pyomo, percebendo o comportamento destas ferramentas na re-solução de DAES. Na simulação os graus de liberdade do sistema eram zero. Os resultadosobtidos no Pyomo foram comparados com os resultados obtidos do Wolfram Mathematicar ,ferramenta de simulação com algoritmos sofisticados para a resolução deste tipo de problemas.

Para a análise do modelo tipo, foram feitos vários testes dinâmicos ao sistema, sendo posteri-ormente programado um controlador Proporcional, Integral (PI) e incorporado neste sistema.Para este último modelo, foi provocada uma perturbação numa variável de entrada e foi feitauma alteração no set-point.

Após os vários teste, com a comparação dos resultados entre o Pyomo e o Wolfram Mathematicar

, permitiu-se concluir que o Pyomo , mesmo não sendo um programa dedicado à simulação, massim à optimização de sistemas modelados com DAES, permite obter tão bons resultados quantoo Wolfram Mathematicar na parte da simulação. O próximo passo será a optimização destesistema e posteriormente a passagem para sistemas mais complexos e reais como é o caso dacoluna de absorção de NOx.

Palavras-chave: Equações Algébrico-Diferenciais; Métodos Numéricos; Simulação; Optimi-zação; Pyomo.

v

AbstractIn recent years there has been a growth in computing capacity, which has opened up the pos-sibility for solving new problems and more complex ones. A good example is the System ofDifferential Algebraic Equations(DAEs).

Since the main objective of this work is the simulation and optimization of problems usingDAEs, a research was developed on the tools with this capacity, reaching tools like Pyomo orJuMP, both being supported by open-source languages, Python and Julia, respectively.

It was decided to model a type system (Stirred-Tank Reactor (RPA)) using the Pyomo, unders-tanding the behavior of this tool in solving problems of the sort. In the simulation the degreesof freedom of the system were zero. The results obtained from Pyomo were compared with theresults obtained from Wolfram Mathematicar , a simulation tool with sophisticated algorithmsto solve this type of problems.

For the analysis of the type model, several dynamic tests were performed on the system, anda Proportional, Integral (PI) controller was programmed and incorporated into the system. Forthe latter model, a perturbation was caused in an input variable and a change was made in theset-point.

Afterwards, with the comparison of results between Pyomo and Wolfram Mathematicar , itwas concluded that Pyomo, normally used as an optimization program, managed to obtain re-sults just as good as Wolfram Mathematicar ’s regarding simulation. The next step was theoptimization of the system and further transition to more complex and real systems such as theNOx absorption column.

Keywords: Differential Algebraic Equations; Numerical Methods; Simulation; Optimization;Pyomo.

vii

ConteúdoAgradecimentos iii

Resumo v

Abstract vii

Acrónimos xv

Simbologia xvii

1 Introdução 11.1 Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Fundamentos Matemáticos 52.1 DAES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Índice das DAES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.2 Forma Canónicas de Hessenberg . . . . . . . . . . . . . . . . . . . . . 92.1.3 Particularidades na resolução de DAES . . . . . . . . . . . . . . . . . 11

2.2 Estratégias computacionais para a resolução de DAES . . . . . . . . . . . . . . 14

3 Ferramentas Computacionais 173.1 Bibliotecas Numéricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.1.1 DASPK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.1.2 SUNDIALS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 Linguagens Avançadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2.1 Wolfram Mathematicar . . . . . . . . . . . . . . . . . . . . . . . . . 203.2.2 MATLABr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2.3 GNU Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2.4 gPROMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2.5 Modelação por Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.3 Linguagens de modelação de Sistemas Algébricos . . . . . . . . . . . . . . . . 273.3.1 GAMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3.2 AMPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

ix

3.4 Novas linguagens de optimização . . . . . . . . . . . . . . . . . . . . . . . . . 283.4.1 Pyomo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.4.2 JuMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.4.3 CasADi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.5 Estratégias de optimização de DAES . . . . . . . . . . . . . . . . . . . . . . . 32

4 Casos de Estudo 354.1 Reactor Perfeitamente Agitado . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.1.1 Balanços Mássicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.1.2 Equilíbrio Químico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.1.3 Modelo Completo do Sistema . . . . . . . . . . . . . . . . . . . . . . 414.1.4 Caracterização do Sistema . . . . . . . . . . . . . . . . . . . . . . . . 434.1.5 Simulação Dinâmicos . . . . . . . . . . . . . . . . . . . . . . . . . . 454.1.6 Sistema de controlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.2 Coluna de Absorção de NOx . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5 Conclusões e Trabalhos Futuros 61

A Desenvolvimento dos Índices de Hessenberg 67A.1 Forma de Hessenberg - Índice 1 . . . . . . . . . . . . . . . . . . . . . . . . . 67A.2 Forma de Hessenberg - Índice 2 . . . . . . . . . . . . . . . . . . . . . . . . . 68A.3 Forma de Hessenberg - Índice 3 . . . . . . . . . . . . . . . . . . . . . . . . . 69

B Entradas para as diferentes classes no Pyomo 71B.1 Var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71B.2 Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72B.3 Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72B.4 Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73B.5 Param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

x

Lista de Figuras2.1 Esquema de um pêndulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Resultados do problema do pêndulo, com redução de índice . . . . . . . . . . . 122.3 Resultados do problema do pêndulo, sem redução de índice . . . . . . . . . . . 132.4 Erro absoluto entre o comprimento da corda dado pelo problema (calculado) e

o comprimento real(imposto pela restrição linear), com redução de índice . . . 132.5 Diagrama de fluxo lógico para a resolução de DAES, recorrendo a métodos

numéricos (Wolfram 2018a, Ascher & Petzold 1994, Bendtsen & Thomsen 1999). 15

3.1 Esquema do funcionamento de uma biblioteca . . . . . . . . . . . . . . . . . . 183.2 Diagrama de fluxo lógico representativo do algoritmo para a resolução numérica

de DAES para o Wolfram Mathematicar (Wolfram 2018a). . . . . . . . . . . . 213.3 Diagrama de fluxo lógico representativo do algoritmo para a resolução numérica

de DAES para o MATLABr (The MathWorks 2018c). . . . . . . . . . . . . . . 233.4 Diagrama representativo da modelação por blocos. . . . . . . . . . . . . . . . 263.5 Diagrama de fluxo lógico para a optimização de DAES recorrendo a diferentes

estratégias (Biegler 2000). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.1 Esquema do RPA em estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.2 Diagrama para o sistema em estudo. . . . . . . . . . . . . . . . . . . . . . . . 424.3 Sensibilidade do sistema às variáveis de entrada . . . . . . . . . . . . . . . . . 444.4 Variação da concentração deCA,CB,CC eCD ao longo do tempo, para diferentes

ferramentas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.5 Variação da concentração de CA, CB, CC e CD ao longo do tempo, quando apli-

cada uma perturbação em F1 aos 100 min, para diferentes ferramentas compu-tacionais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.6 Variação do volume de líquido no sistema ao longo do tempo, quando aplicadauma perturbação em F1 aos 100min, para diferentes ferramentas computacionais 48

4.7 Variação dos caudais F1, F2 e F3 ao longo do tempo, quando aplicada uma per-turbação em F1 aos 100min, para diferentes ferramentas computacionais . . . . 49

4.8 Variação da concentração de CA, CB, CC e CD ao longo do tempo, quando apli-cada uma perturbação em CA0, para diferentes ferramentas computacionais. . . 50

xi

4.9 Esquema do RPA em estudo, com o controlo do volume recorrendo à correntede entrada F1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.10 Efeito da perturbação em degrau em F2 . . . . . . . . . . . . . . . . . . . . . . 554.11 Variação das concentrações ao longo do tempo, perante uma perturbação em

degrau em F2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.12 Efeito da mudança de set-point. . . . . . . . . . . . . . . . . . . . . . . . . . . 574.13 Variação das concentrações ao longo do tempo, para uma mudança de set-point. 574.14 Esquema da Coluna de Absorção de NOx adaptado de Vilarinho et al. (2016) . 584.15 Esquema dos Mecanismos de transferência de massa num andar da Absorção

de NOx adaptado de Vilarinho et al. (2016) . . . . . . . . . . . . . . . . . . . 59

xii

Lista de Tabelas3.1 Tabela resumo de interpretadores compatíveis da linguagem MATLABr (The MathWorks

2018a, Eaton 2018a, FreeMat 2018, ESI 2017) . . . . . . . . . . . . . . . . . 22

4.1 Parâmetros do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.2 Valores de referência das Variáveis de Entrada . . . . . . . . . . . . . . . . . . 434.3 Valores das variáveis de estado, para o Estado Estacionário, do sistema, tendo

em conta os valores de referÊncia apresentados na Tabela 4.2. . . . . . . . . . 444.4 Condições Iniciais das Variáveis de Estado . . . . . . . . . . . . . . . . . . . . 454.5 Resultados de simulação para as condições apresentadas nas Tabelas 4.2 e 4.4. . 454.6 Resultados de simulação para as condições inicais apresentadas na Tabela 4.4 e

para a perturbação no caudal F1. . . . . . . . . . . . . . . . . . . . . . . . . . 474.7 Resultados de simulação para as condições inicias apresentadas na Tabela 4.4 e

para a perturbação na concentração CA0. . . . . . . . . . . . . . . . . . . . . . 49

B.1 Declarações comuns para os componente Var (Hart et al. 2017). . . . . . . . . 71B.2 Declarações comuns para os componente Objective (Hart et al. 2017). . . . . 72B.3 Declarações comuns para os componente Constraint (Hart et al. 2017). . . . 72B.4 Declarações comuns para os componente Set (Hart et al. 2017). . . . . . . . . 73B.5 Declarações comuns para os componente Param (Hart et al. 2017). . . . . . . . 74

xiii

AcrónimosAMPL A Mathematical Programming Language. 27, 28

BLT Block Lower Triangular. 15, 20, 22

CBC COIN-OR Branch and Cut. 28

COIN-OR Computational Infrastructure for Operations Research. 28

DAES Sistema de equações algébrico-diferencias (EADs). iii, 1–3, 5–9, 11–15, 17–20, 22–26,28, 30, 32, 33, 41, 43, 53, 61, 62

DFC Diferenças Finitas Centradas. 31

DFP Diferenças Finitas Progressivas. 31

DFR Diferenças Finitas Regressivas. 18, 30, 31

GAMS General Algebraic Modeling System. 27, 61

GLPK GNU Linear Programming Kit. 28

IMC Internal Model Control. 51, 52

IPOPT Interior Point OPTimizer. 28, 32

LP Problemas Lineares. 31

MILP Mixed-Integer Linear Problems. 31

MIMO Multiple-input, Multiple-output. 1

MINLP Mixed-Integer NonLinear Problems. 32

MIQP Mixed-Integer Quadratic Programs. 32

NEOS Network-Enabled Optimization System. 28

xv

NLP Problemas Não Lineares. 31–33

ODE Equações Diferencial Ordinária (EDO). 5, 7, 8, 11, 12, 15, 24, 43, 68–70

PI Proporcional, Integral. iii, 51, 52, 54

PID Proporcional, Integral e Diferencial. 1, 50–52

PVI Problema de Valor Inicial. 9–11, 18

QP Quadratic Programs. 32

RPA Reactor perfeitamente agitado. iii, 3, 35, 37, 61

SQP Sequential Quadratic Programming. 32

SUNDIALS SUite of Nonlinear and Differential/ALgebraic Equation Solvers. 18–20, 22, 32

xvi

SimbologiaA Área da secção recta do reactor prependicular ao escoamento [m2]. 38

CA Concentração do composto A no reactor [mol/m3]. ix, 36, 39, 41–46, 49, 55

CB Concentração molar do composto B no reactor [mol/m3]. ix, 36, 41–46, 49, 55

CC Concentração molar do composto C no reactor [mol/m3]. ix, 36, 42–46, 49, 55

CD Concentração molar do composto D no reactor [mol/m3]. ix, 36, 42–47, 49, 55, 56

CA0 Concentração molar do composto A à entrada [mol/m3]. ix, xi, 36, 39, 42, 44, 45, 48, 49

CB0 Concentração molar do composto B à entrada [mol/m3]. 36, 42, 44

CC0 Concentração molar do composto C à entrada [mol/m3]. 36, 42, 44

CD01 Concentração molar do composto D à entrada na corrente 1 [mol/m3]. 40, 44

CD02 Concentração molar do composto D à entrada na corrente 2 [mol/m3]. 40, 44

F1SS Caudal volumétrico de 1 em estádo estacionário [m3/min]. 53

F1 Caudal volumétrico de entrada 1 [m3/min]. ix–xi, 36, 37, 42, 44–49, 51, 54, 55

F2 Caudal volumétrico de entrada 2 [m3/min]. ix, x, 36, 37, 42, 44, 48, 51, 53, 55

F3 Caudal volumétrico de saída 3 [m3/min]. ix, 36–38, 42, 44, 45, 47, 48, 53, 55

Kc Ganho Proporcional[min−1]. 51

KF1,V Ganho do Processo [min]. 51

Keq constante de equilíbrio entre a espécie B e a espécie A [−]. 41, 42

V Volume de líquido no reactor [m3]. 39, 42–44, 47, 48, 51

VSP Set-point do volume de líquido no reactor [m3]. 52

β1 coeficiente de descarga do reactor quando F3 e escrito em função de h. 38

β2 coeficiente de descarga do reactor quando F3 e escrito em função deV [m2/min]. 38, 42, 44

Ûm1A Caudal mássico de A em 1 [kд/min]. 38

xvii

Ûm1D Caudal mássico de D em 1 [kд/min]. 40

Ûm1 Caudal mássico de 1 [kд/min]. 37

Ûm2C Caudal mássico de C em 2 [kд/min]. 39

Ûm2D Caudal mássico de D em 2 [kд/min]. 40

Ûm2 Caudal mássico de 2 [kд/min]. 37

Ûm3A Caudal mássico de A em 3 [kд/min]. 38

Ûm3C Caudal mássico de C em 3 [kд/min]. 39

Ûm3D Caudal mássico de D em 3 [kд/min]. 40

Ûm3 Caudal mássico de 3 [kд/min]. 37

ρ1 Densidade da corrente 1 [kд/m3]. 37

ρ2 Densidade da corrente 2 [kд/m3]. 37

ρ3 Densidade da corrente 3 [kд/m3]. 37

ρдlobal Densidade global do sistema [kд/m3]. 37

τ Constante de tempo [min]. 51

τc Constante de tempo em ciclo fechado [min]. 51

τI Constante de tempo integral [min]. 51

θ Atraso do sistema [min]. 51

d(CAV )/dt Variação da quantidade química A ao longo do tempo [mol/min]. 39

dCC/dt Variação da concentração do composto C ao longo do tempo [mol/m3.min]. 40

dCD/dt Variação da concentração do composto D ao longo do tempo [mol/m3.min]. 40

dV /dt Variação da volume ao longo do tempo [m3/min]. 37

dm/dt Variação da massa ao longo do tempo [kд/min]. 37

dmA/dt Variação da mássica do composto A ao longo do tempo [kд/min]. 38

dmC/dt Variação da massa do composto C ao longo do tempo [kд/min]. 39

dmD/dt Variação da massa do composto D ao longo do tempo [kд/min]. 40

h Altura de fluido no reactor [m]. 37

k1 velocidade de reacção [m3/(mol .min)]. 42

NOx Óxidos de Azoto. iii, v, x, 2, 3, 35, 57, 58, 65

xviii

Capítulo 1IntroduçãoNos últimos anos tem-se assistido a um aumento dos recursos computacionais, tendo impactonão só no nosso quotidiano, mas principalmente na pesquisa cientifica e na parte industrial.Uma das principais áreas onde a evolução tecnológica tem um efeito mais acentuado, dentroda área da Engenharia Química, é na área de projecto do processo, do produto e na área damonitorização e controlo de processos.

Se nos dois primeiros tópicos já é comum o recurso a computação avançada, quer no projectosistemático de um processo, como nas simulações computacionais de moléculas, para o caso doprojecto de produto, no controlo de processos ainda existe uma grande resistência por grandeparte da indústria. Esta atitude por parte da indústria deve-se à complexidade matemática destessistemas, e por estes sistemas de controlo não substituírem por completo a necessidade de sis-temas mais simples, como o caso de controladores Proporcional, Integral e Diferencial (PID),principalmente por questões de segurança (Aspuru-Guzik et al. 2018).

Apesar da resistência à sua utilização, os sistemas avançados de controlo apresentam vantagens,podendo trabalhar em Multiple-input, Multiple-output (MIMO), promovendo melhores condi-ções de operação e melhorar a resposta às perturbações. Estas possibilidades permitem obtermais produto dentro das especificações e equipamentos mais saudáveis.

No entanto, a grande desvantagem destes sistemas consiste, como já referido, na complexidadematemática dos modelos, contendo muitas vezes sistemas de equações diferenciais, e em algunsdos casos DAES.

As DAES aparecem da conjugação da parte dinâmica dos sistemas, representados por equaçõesdiferenciais, com a existência de equilíbrios ou restrições de processos, sendo estes representa-dos recorrendo a equações algébricas, como referido no Capítulo 2 (Geletu 2011).

Apesar de todas as resistências oferecidas, cada vez mais assiste-se a uma lógica de informa-tização e automatização dos processos, tendo por este motivo cada vez mais interesse o apare-cimento de métodos e ferramentas informáticas que simplifiquem a resolução de sistemas, mas

1

2 Introdução

que mantenha a eficácia e rapidez pretendida para as operações de controlo.

Um exemplo onde esta tecnologia de controlo pode ser aplicada é no controlo de emissões deNOx.

Este problema atinge as fábricas de Ácido Nítrico, onde apesar de existir sistemas de tratamentopara esta família de compostos, estes só funcionam convenientemente quando a instalação está aoperar em "velocidade cruzeiro". Nas fases de arranque e de paragem, estes sistemas, derivadoàs grandes variações de concentrações de NOx e às condições de operação, não respondemcorrectamente, sendo por este motivo emitidas grandes concentrações de NOx para a atmosfera.Uma alternativa para adaptar estes sistemas de tratamento às situações "anormais", mas comuns,seria aplicar uma estratégia de controlo avançado.

Estas emissões para além de todo o prejuízo ambiental, como chuvas ácidas, ainda acarretamprejuízos para a indústria, pois a emissão destes compostos é controlada, e caso se ultrapasseo limite máximo de emissões atribuído à empresa esta será penalizada economicamente. Estasemissões também implicam uma perda de reagentes, que poderiam ser integrados na produçãode ácido nítrico. É ainda importante salientar que a reputação da indústria também sai prejudi-cada, pois estas são caracterizadas por nuvens de um tom acastanhado.

Derivado à complexidade do sistema e por sua vez do modelo correspondente e como parte doobjectivo deste trabalho serão testadas novas ferramentas para aplicar a estratégias de controloavançado, recorrendo-se a um sistema tipo.

Neste caso será um reactor perfeitamente agitado, como uma reacção genérica de B mais C adar D, estando B em equilíbrio com A, como representado pela equações (1.1) e (1.2).

A B (1.1)

B +C → D (1.2)

Este sistema irá originar um sistema de DAES, uma vez que será constituído por uma equa-ção linear, que representa o equilíbrio químico (1.1), e equações diferenciais, que traduzem osfenómenos dinâmicos, neste caso a dinâmica reaccional.

Este sistema será apresentado de uma forma mais detalhada na secção 4.1.

1.1 EstruturaNo Capítulo 2 são apresentados os fundamentos matemáticos das DAES, ou seja, paticularida-des, formas canónicas e problemas mais comuns neste tipo de sistemas.

1.1 Estrutura 3

No Capítulo 3, serão apresentadas tanto as ferramentas computacionais com capacidade deresolver DAES como as ferramentas dedicadas à optimização de sistemas.

Serão então apresentados os sistemas em estudo, no Capítulo 4, nomeadamente o caso do RPA(secção 4.1) e o caso da coluna de absorção de NOx(secção 4.2). Neste capítulo serão aindaapresentados os resultados obtidos para o caso da simulação do RPA.

Por fim, no Capítulo 5 são apresentadas as conclusões retiradas deste estudo, e propostas detrabalhos futuros.

Capítulo 2Fundamentos MatemáticosNeste capítulo, seram apresentadass as principais características dos problemas descritos recor-rendo a DAES, assim como as suas particularidades. Começa-se por avaliar o motivo do seurecurso para simular em sistemas reais (2.1), explicando a teoria de um índice de um DAES(2.1.1), e apresentando algumas estratégias de resolução.

Os sistemas com DAES requerem algumas atenções relativamente aos sistemas com EquaçõesDiferencial Ordinária (EDO) (ODE), pois estes são mais sensíveis ao passo de integração as-sim como às condições iniciais, que as ODEs, sendo, por este motivo, necessário ter cuidadosespeciais na formulação e resolução. Sendo assim a resolução destes tipos de problemas recor-rem a métodos numéricos específicos, assim como a softwares especializados. Para além destascaracterísticas, as DAES ainda apresentam outros problemas como os apresentados em 2.1.3.

2.1 DAESUm DAES, como o próprio nome indica, é composto por equações diferencias e por equaçõesalgébricas.

Este sistema de equações são muito comuns para modelar sistemas em Engenharia de Processo,Engenharia Mecânica, Engenharia Electrotécnica, sistemas termodinâmicos, entre outros.

Nestes sistemas, as equações diferenciais costumam estar associadas à dinâmica de sistemas.Já as equações algébricas estão associadas a leis da Física e da Termodinâmica, como a lei daconservação de massa e energia, leis de equilíbrio de compostos e a balanços mássicos, molaresou entálpicos. Outra utilização das equações algébricas é em restrições ao processo, uma vezque estas podem ter uma origem termodinâmica, ou física, como é o caso da solubilidade de umcomposto, ou ainda, do processo, como é o caso de uma capacidade máxima que um tanque oureactor têm (Geletu 2011).

5

6 Fundamentos Matemáticos

A Forma Geral das DAES (General Form of DAES) (Ascher & Petzold 1994, Wolfram 2018a,Hairer & Wanner 1996) encontra-se apresentada em seguida:

F(t,y, y′) = 0 (2.1)

Na equação (2.1), F representa o sistema de equações, sendo t a variável independente, y ovector de variáveis dependente de t e y’ a primeira derivada de y (Ascher & Petzold 1994).

Contudo, muitas vezes esta não é a forma mais comum de apresentar DAES, existindo outrasformas de as representar, adequando-se melhor, tanto aos problemas como os métodos de reso-lução, sendo um exemplo a forma de Hessenberg.

Exemplo de aplicação - Caso do PênduloA análise do comportamento de um pêndulo ao longo do tempo, é um dos casos mais comunsda literatura estando presente em Ascher & Petzold (1994), Wolfram (2018a), The MathWorks(2018c).

Ir-se-à recorrer a este caso de estudo, de modo a facilitar a compreensão dos diferentes concei-tos.

Na Figura 2.1 está apresentado o esquema representativo do sistema.

yx

Figura 2.1 Esquema de um pêndulo

Em seguida, será apresentado o conjunto de equações necessárias para a modelação do pêndulo.

x′(t) = vx (t) (2.2)

2.1 DAES 7

, sendo x(t) uma função que representa a variação da posição ao longo do tempo relativamenteà coordenada x , a sua primeira derivada x′(t), representará a variação ao longo do tempo davelocidade, segundo a componente x , sendo representada por vx (t) (Ascher & Petzold 1994).

y′(t) = vy(t) (2.3)

De forma análoga ao que acontece em (2.2), em (2.3), a velocidade segundo a componente y(vy(t)) é igual à primeira derivada da função y(t), função que representa a variação da posiçãoao longo do tempo segundo a coordenada y (Ascher & Petzold 1994).

v′x (t) = −λ(t)x(t) (2.4)

A equação (2.4), representa a aceleração do pêndulo segundo a componente x , sendo esta a deri-vada da velocidade na mesma componente (v′x (t)), ou seja, variação da posição (x) multiplicadopela tensão no cabo (λ(t)) (Brenan et al. 1996, Ascher & Petzold 1994).

v′y(t) = −λ(t)y(t) − д (2.5)

Em (2.5), é apresentada a equação que permite obter a variação da aceleração segundo a com-ponente y (v′y(t)), tendo novamente a tensão no cabo λ(t), é ainda acrescentada a aceleraçãogravítica д (Brenan et al. 1996, Ascher & Petzold 1994).

0 = x(t) + y(t) − l (2.6)

Nesta última equação é apresentada uma restrição linear, garantindo que a distancia (l) entre ocentro de massa do pêndulo e o ponto fixo se mantém constante (Ascher & Petzold 1994).

2.1.1 Índice das DAESNa resolução de DAES, um dos pontos importantes é saber a complexidade destes sistemas, e oquão longe estão das ODEs. Para tal, os DAES, são classificadas pelo número de diferenciaçõesnecessárias para as transformar em ODEs. A este índice é chamado de Índice de Diferenciação(Differentiation Index) (Hairer & Wanner 1996).

Por exemplo, um DAES que se tenha de diferenciar uma vez terá um Índice 1, uma DAES emque se diferencia duas vezes terá um Índice 2, e assim consecutivamente.

No entanto existem variações na classificação recorrendo ao Índice, como é o caso do Índicena Forma de Hessenberg. a metodologia aplicada é idêntica, mas como as equações foramreestruturadas para ficarem na forma de Hessenberg, muitas vezes obtém-se índices inferioresaos que eram calculados na forma geral (Ascher & Petzold 1994, Guzel & Bayram 2006).

8 Fundamentos Matemáticos

Caso do Pêndulo - Índice de DiferenciaçãoPara melhor compreender o funcionamento das classificação ir-se-á pegar no exemplo do pên-dulo ((2.2)-(2.6)).

Derivando a equação (2.6) obtém-se:

x(t)x(t)′ + y(t)y(t)′ = 0 (2.7)

Substituindo as equações (2.2) e (2.3) em (2.7) obtém-se:

x(t)vx (t) + y(t)vy(t) = 0 (2.8)

No próximo passo ir-se-á diferenciar a equação (2.8), obtendo:

x(t)vx (t)′ + y(t)vy(t)′ +vx (t) +vy(t) = 0 (2.9)

Substituindo e simplificando (2.4) e (2.5) em (2.9) fica-se com:

− λ(t) − y(t)д +vx (t) +vy(t) = 0 (2.10)

Da equação (2.10), pode-se evidenciar o λ(t), substituindo em (2.4) e (2.5), obtendo:

vx (t)′ = (y(t)д −vx (t) −vy(t))x(t) (2.11)

e

vy(t)′ = (y(t)д −vx (t) −vy(t))y(t) − д (2.12)

Derivando a equação (2.10) obtém-se assim uma equação diferencial em ordem a λ, tendo assimum sistema de ODEs.

λ(t)′ = vy(t)д −vx (t)vx (t)′ −vy(t)vy(t)′ (2.13)

Para atingir este ponto, foi necessário diferenciar três vezes, sendo por isto um problema deÍndice 3 (Ascher & Petzold 1994).

2.1 DAES 9

2.1.2 Forma Canónicas de HessenbergA maioria dos DAES, podem ser representados por um grupo mais restrito de ODEs e equaçõesalgébricas. Este formato é chamado de Hessenberg (Guzel & Bayram 2006).

Esta é uma forma canónica, mais comum e útil, principalmente para sistemas semi-explícitos,pois estes sistemas de DAES, são condensados, traduzindo-se muitas vezes numa simplificaçãodos mesmos.

Esta simplificação deu origem a um novo sistema de DAES, e como tal, este pode ser derivadoe classificado de forma idêntica, sendo posteriormente classificados como Índice da Forma deHessenberg (Ascher & Petzold 1994).

Forma Cónica de Hessenberg - Índice 1Consideremos o sistema com a segunte forma,

dxdt= f (t , x,z) (2.14)

0 = д(t , x, z) (2.15)

, contendo as seguintes condições iniciais:

0 = f (t0, x0, z0) (2.16)

0 = д(t0, x0, z0) (2.17)

onde estas, têm de ser consistentes com o sistema.

Ao longo desta redução de índice, presente no Anexo A.1 recorreu-se uma vez a diferenciação, logo tratamdo-se por este de um sistema de índice 1, para além desta informação, ainda épossível afirmar, que para Problema de Valor Inicial (PVI), o valor que normalmente é adoptado,por ser comum a ambas as equações será [∂д/∂z]−1 (Hairer et al. 1989, Ascher & Petzold 1994).

Forma Cónica de Hessenberg - Índice 2Podemos fazer uma análise idêntica para quando um DAES na forma de Hessenberg apresentao seguinte formato:

10 Fundamentos Matemáticos

dxdt= f (t , x, z) (2.18)

0 = д(t , x) (2.19)

, e com as seguintes as condições inicias:

0 = f (t0, x0, z0) (2.20)

0 = д(t0, x0) (2.21)

onde estas, têm de ser consistentes com o sistema.

O objectivo do processo de diferenciação é, para além de eliminar as equações algébricas, étambém obter as derivadas das variáveis dependentes do tempo que estão em falta.

No sistema apresentado pelas equações (A.7 - A.8), a derivada de z em ordem ao tempo éinexistente, logo o objectivo na redução de índice é obter esta derivada.

Na equação algébrica (A.8), a variável z não está presente, ao contrário do que acontecia naequação (A.2).

Este facto será um princípio de que a derivação terá de ser feita mais do que uma vez, neste caso2 vezes.

Durante o processo de redução de índice, teve de se derivar duas vezes, tratando-se por isso deum problema de Índice na Forma de Hessenberg 2. Sendo para um PVI escolhidos, normal-mente, para valores iniciais [∂д/∂x]−1 e [∂ f /∂z]−1, pelo motivo já apresentado (Hairer et al.1989, Ascher & Petzold 1994).

A dedução está feita no Anexo A.2.

Forma Cónica de Hessenberg - Índice 3Um sistema com a seguinte estrutura:

dxdt= f (t , x, y, z) (2.22)

dydt= д(t , x, y) (2.23)

0 = h(t , y) (2.24)

contendo como condições iniciais,

2.1 DAES 11

0 = f (t0, x0, y0, z0) (2.25)

0 = д(t0, x0, y0) (2.26)

0 = h(t0, y0) (2.27)

onde estas, têm de ser consistentes com o sistema.

Como já referido em 2.1.2, o principal objectivo deste método é encontrar as derivadas em falta,no sistema.

Como a equação algébrica (A.18) é escrita em função de y, derivando em ordem ao tempo,obtém-se dy/dt , podendo esta ser substituída por д(t , x, y), da equação (A.17), mas esta aindanão depende de z. Como tal, terá de ser derivada, novamente, produzindo a derivada de x emfunção do tempo, sendo depois substituída por f (t , x, y, z), pela equação (A.16). Como esta jádependente de z, derivando novamente aemordem a t , obter-se-á a derivada dz/dt .

Durante este processo de manipulação presente em A.3, recorreu-se três vezes à derivação,como tal, o DAES é de Índice na Forma de Hessenberg 3. Para um PVI, como já referido, epara minimizar problemas que surgem da resolução dos DAES, costuma-se a usar [∂ f /∂z]−1,[∂h/∂y]−1 e [∂д/∂x]−1, como condições iniciais (Hairer et al. 1989, Ascher & Petzold 1994).

Índice quando a Forma de Hessenberg é superior a 3Para calcular índices de ordem n na forma de Hessenberg, segue-se uma estratégia semelhante,à apresentada anteriormente, não sendo aqui apresentado, pois os índices mais comuns nestaforma são os índices na forma de Hessenberg 1, 2 e 3.

2.1.3 Particularidades na resolução de DAESComo já referido, a resolução de DAES, requer uma atenção especial relativamente às ODE,existindo varias estratégias de cálculo de modo ao resultado ser o mais fidedigno possível.

Uma destas estratégias será aproximar as DAES a ODEs, transformando a equação algébricanuma ODE, com a derivada em falta. sendo esta derivada multiplicada por uma constante (ε),como um valor que tende para zero (Ascher & Petzold 1994).

De modo a exemplificar, ir-se-á recorrer às equações (A.1) e (A.2).

dxdt= f (t , x,z)

0 = д(t , x, z)

12 Fundamentos Matemáticos

Seguindo a adaptação apresentada anteriormente obtém-se:

dxdt= f (t ,x,z) (2.28)

εdzdt= д(t , x, z), (2.29)

com ε → 0

Esta estratégia de resolução cria um problema stiff, derivado ao factos de a constante de tempo(τ1) associada à função (2.28) ser muito superior à constante de tempo (τ2) associada à função(2.29).

Sendo assim, quando é feita esta aproximação, deve-se ter em conta este problema, e escolherestratégias de resolução de problemas stiff (Ascher & Petzold 1994).

Por outro lado, quando recorremos a algoritmos próprios para a resolução de DAES, é frequenteque perante um índice superior a 1 apresentem alguns problemas na sua resolução, quando estassão directamente discretizadas. Por este motivo, existe a necessidade de estabilizar as DAES(Ascher & Petzold 1994).

A forma mais comum de estabilizar os DAES, passa por converter estas equações em ODEs,desta vez recorrendo a derivações das equações algébricas (Ascher & Petzold 1994). Esta es-tratégia é apelidada de redução de índice.

Os gráficos 2.2 e 2.3 são uma representação dos resultados do problema do pêndulo (2.2-2.6).

O gráfico 2.2 apresenta os resultados obtidos para quando existe redução de índice do DAES,enquanto o gráfico 2.3, traduz os resultados obtidos sem redução do índice (Wolfram 2018a,Ascher & Petzold 1994).

Figura 2.2 Resultados do problema do pêndulo, com redução de índice

Nestes gráficos, está presente um dos problemas comuns à utilização de DAES. Estes sistemassão muito sensíveis às condições iniciais, tornado-se instáveis facilmente, quando estas são mal

2.1 DAES 13

Figura 2.3 Resultados do problema do pêndulo, sem redução de índice

escolhidas. Outros problemas levantados por DAES de índice elevado são as descontinuidadese os "saltos"(Ascher & Petzold 1994, Harney et al. 2013).

Algo que também é comum é o fenómeno do drift-off, que é uma consequência da redução deíndice e é causado, derivado à acumulação de erros durante a utilização de métodos numéricos(Bendtsen & Thomsen 1999). Este fenómeno é caracterizado por um desvio de valores emrelação à realidade, não satisfazendo muitas das restrições lineares inicialmente impostas pelosDAES.

20 40 60 80 100

5.×10-7

1.×10-6

5.×10-6

1.×10-5

5.×10-5

1.×10-4

5.×10-4

Figura 2.4 Erro absoluto entre o comprimento da corda dado pelo problema (calculado) e ocomprimento real(imposto pela restrição linear), com redução de índice

Na Figura 2.4 está presente um caso do fenómeno de drift-off para o problema do pêndulo,havendo uma violação da restrição linear, atingindo a ordem de grandeza 10−4 (Bendtsen &Thomsen 1999, Wolfram 2018a).

14 Fundamentos Matemáticos

2.2 Estratégias computacionais para a resolução deDAESEm resolução computacional, pode-se seguir duas estratégias distintas de resolução destes pro-blemas, uma estratégia simbólica ou uma estratégia numérica.

Quando optamos pela estratégia simbólica, as equações diferenciais são integradas analitica-mente, podendo recorrer a softwares com algoritmos sofisticados, como é o caso do WolframMathematicar .

Esta estratégia permite a resolução dos problemas com grande rigor, obtendo a solução analítica.No entanto, torna-se ineficaz para a resolução de certos tipos de problemas, sendo comumrecorrer a estratégias numéricas, abrindo a porta para um conjunto de métodos de resolução epor sua vez ferramentas de resolução como os referidos no Capítulo 3.

Por sua vez, a estratégia baseada em métodos numéricos permite obter uma solução, mais oumenos aproximada, de sistemas com soluções analíticas complexas e muitas vezes impossíveis.

Na resolução dos DAES, estes métodos consistem em averiguar o índice DAES e caso esteseja superior a 1, aplicar uma redução de índice. Posteriormente é aplicado um algoritmo dediscretização, seguido de um solver.

A Figura 2.5 representa as etapas que um DAES passa até ser resolvido numericamente. Oprimeiro passo é a determinação do índice do DAES. Caso o índice seja 1, irá passar para opasso da Metodos de Inicialização dos DAES ou é logo aplicado o Solver. Caso o índice sejasuperior a 1, são aplicadas estratégias de Redução de Índice, podendo ser utilizadas técnicasbaseadas no Algoritmo de Pantelides, técnicas baseadas na Estrutura da Matriz que representao DAES, entre outras, dependendo das ferramentas de cálculo utilizadas (Wolfram 2018a).

Associado ao passo de redução de índice, costuma também haver uma "limpeza" de modo aeliminar possíveis variáveis redundantes originárias da redução de índice.

Após a eliminação das variáveis redundantes, existe a possibilidade de produzir condições ini-ciais ou adaptar o problema de modo a garantir que a solução irá ser o mais correcta possível,não existindo singularidades, como as apresentadas na secção 2.1.3. Aqui podemos aplicar es-tratégias como os métodos QR, que fazem a decomposição da matriz proveniente do sistema deDAES, permitindo calcular as condições iniciais. No entanto métodos como Block Lower Tri-angular (BLT) e a colocação fazem uma adaptação do problema, permitindo uma maior eficáciaaquando da aplicação dos solvers (Wolfram 2018a).

Finalmente, após ter um DAES de índice 1 ou um sistema de ODEs equivalente ao problemainicial, pode-se aplicar os solvers

2.2 Estratégias computacionais para a resolução de DAES 15

Índice 1?

Redução de Índice

Métodos de Inicialização

de DAEs

Solver

Não

Sim

DAE

Solução

ou

ou

Figura 2.5 Diagrama de fluxo lógico para a resolução de DAES, recorrendo a métodos nu-méricos (Wolfram 2018a, Ascher & Petzold 1994, Bendtsen & Thomsen 1999).

Capítulo 3Ferramentas ComputacionaisTendo em conta as questões levantadas no Capítulo 2, têm-se desenvolvido bibliotecas numé-ricas, com algoritmos sofisticados, com capacidade de resolver DAES, sendo apresentadas asmais comuns em 3.1.

Em paralelo a este desenvolvimento, também as linguagens de programação avançadas se têmadaptado para poderem resolver de uma forma rápida, fácil e eficaz estes problemas. Na sec-ção 3.2, são tratadas duas linguagens comuns em Engenharia, o Wolfram Mathematicar e oMATLABr .

Não esquecendo que o principal objectivo deste estudo é poder aplicar este modelos em es-tratégias de controlo, nomeadamente controlo óptimo também existe interesse no estudo delinguagens de modelação de sistemas algébricos, presentes na secção 3.3, pois estes têm incor-porados optimizadores rápidos e precisos, para vários tipos de equações. No entanto, este tipode linguagens não têm capacidade de resolução de equações diferenciais.

Com o crescimento de linguagens de código aberto como é o caso do Python ou o Julia, apre-sentadas em 3.4, e graças à facilidade de integrar outros tipos de linguagens, tem aparecido umanova estratégia para a resolução de problemas de simulação e optimização para problemas comequações diferenciais. Estas linguagens permitem fazer o cálculo, em simultâneo, de derivadase do parâmetro optimizado, como será melhor abordado em 3.5.

3.1 Bibliotecas NuméricasUma Biblioteca, no contexto informático, é um conjunto de informação ou módulos, (como porexemplo códigos ou rotinas de cálculo), que ajudam o operador/programador a cumprir umatarefa. (Python 2018)

17

18 Ferramentas Computacionais

Programa

Dados

Biblioteca

Resultados

Figura 3.1 Esquema do funcionamento de uma biblioteca

No caso da resolução de DAES, as Bibliotecas, são integradores complexos e robustos quesão chamados nas ferramentas computacionais de simulação, o que permite uma resolução doproblema com algum grau de precisão.

As duas bibliotecas mais comuns para a resolução deste tipo de problemas, são o DASPK e oSUite of Nonlinear and Differential/ALgebraic Equation Solvers (SUNDIALS).

3.1.1 DASPKO DASPK é uma extensão do DASSL, que foi construído para resolver DAES de PVI, escritaem Fortran (Hindmarsh et al. 2005).

A biblioteca DASSL, já apresentava capacidades de resolver DAES, recorrendo para isso aométodo das Diferenças Finitas Regressivas (DFR).

O DASPK1.0 apareceu com a necessidade da resolução de problemas de grande escala. O quedistingue esta biblioteca, da DASSL, é o facto de recorrer ao Generalized Minimal ResidualMethod (GMRES), em que é feito um conjunto de interacções para resolver um sistema linear,em cada interacção do método de Newton (StochSS 2018, Petzold et al. n.d., Hindmarsh et al.2005).

No entanto, no DASPK1.0, assim como no DASSL, é necessário atribuir valores iniciais tantopara todas as variáveis dependentes como para as suas derivadas. No DASPK2.0, já não énecessita da atribuição valores iniciais para as derivadas das variáveis dependentes, uma vezestas são calculadas a partir das condições iniciais, recorrendo ao método de Euler (StochSS2018, Petzold et al. n.d., Hindmarsh et al. 2005).

3.2 Linguagens Avançadas 19

Apesar das vantagens, todas a bibliotecas apresentadas anteriormente, só resolviam o problemapara DAES de índice 1. Neste sentido, na última versão, o DASPK3.0, o algoritmo já apresentacapacidade para resolver problemas de índice 2 (StochSS 2018, Petzold et al. n.d., Hindmarshet al. 2005).

Um exemplo de um programa que usa estas bibliotecas é o GNU Octave. (Eaton 2018b)

3.1.2 SUNDIALSO SUNDIALS é um conjunto de bibliotecas, escritas em C, que incluem métodos de resoluçãopara sistemas não lineares de grande escala (large-scale) e problemas lineares de passo múltiplodependente do tempo, entre outros.

Para o caso em apreço, a biblioteca que se destaca é a IDA, uma vez que foi construída com opropósito de resolver DAES.

A IDA é uma implementação em C da biblioteca DASPK sendo também baseada em resoluçãode problemas de valor inicial (Hindmarsh et al. 2005, Lawrence Livermore 2018).

A garantia de integração, só é verificada quando existe um vector de condições iniciais paratodas as variáveis dependentes do sistema, e as respectivas derivadas. Outra situação em queexiste garantia de integração, é a caso de problemas em estado quasi-estacionário (Lawrence Li-vermore 2018).

Para outros casos, cabe ao utilizador atribuir valores coerentes, não existindo garantias de inte-gração numérica (Lawrence Livermore 2018).

3.2 Linguagens AvançadasNesta secção serão apresentadas diferentes linguagens que podem ser aplicadas para a simula-ção de sistemas.

Apesar destas linguagens não serem aplicadas para a optimização, estão desenhadas para obteruma solução credível para um determinado modelo (Kallrath 2004). Dentro das linguagens demodelação aqui abordadas, iremos ter linguagens que se baseiam em matemática simbólica,como o caso do Wolfram Mathematicar (Wolfram 2017), e linguagens que se baseiam emmatemática numérica, como o caso da linguagem .m, linguagem usada pelo MATLABr ou oGNU Octave.

20 Ferramentas Computacionais

3.2.1 Wolfram MathematicarO Wolfram Mathematicar é uma linguagem e um software dedicado a resolver problemasmatemáticos recorrendo à linguagem simbólica. Sendo um linguagem comercial, compatívelcom as plataformas Linux, macOS e Windows (Wikipedia 2018d).

Esta ferramenta, mostra uma grande utilidade na resolução de DAES devido ao facto de poderresolver estes sistemas, quando possível, de uma fora analítica. Para além da resolução analítica,o Wolfram Mathematicar ainda tem a possibilidade de resolver DAES com recurso a métodosnuméricos.

Para a resolução destes sistemas, o Wolfram Mathematicar , recorre tanto a bibliotecas propri-etárias, como a bibliotecas partilhadas, como é o caso do IDAS, uma biblioteca do SUNDIALS.Mas antes de ser aplicada a biblioteca do solver, os DAES passam por um conjunto de passosanteriores de modo a reduzir a probabilidade de aparecimento dos problemas característicos dasDAES (secção 2.1.3).

Na Figura 3.2, está o diagrama de fluxo lógico, que esquematiza o algoritmo por detrás daresolução numérica de DAES.

O algoritmo começa por calcular o índice dos DAES, se o índice do sistema for 1, caso necessá-rio, este aplica uma estratégia para o cálculo das condições iniciais óptimas, e após o problemapossuir todas as condições para a resolução, é aplicado um solver.

Caso o índice do DAES seja superior a 1, é aplicada uma estratégia de redução de índice. Estaestratégia pode recorrer a um algoritmo baseado no Algoritmo de Pantelides ou um algoritmobaseado na matriz estrutural.

Por vezes existe necessidade de acrescentar variáveis algébricas e de modo a que o problemanão fique sobre-determinado, sendo o caso das Dummy Derivatives. Uma alternativa às DummyDerivatives é a Projecção. Neste método, o índice dos DAES é reduzido até 1, sendo usada aprojecção de modo a garantir as restrições originais.

Outro passo importante para garantir o sucesso desta resolução é escolher as condições iniciaisapropriadas. Este é o objectivo do próximo passo.

O Wolfram Mathematicar pode recorrer a três métodos para o cálculo das condições de inicia-ção, sendo elas o método QR, o método BLT e o método da Colocação.

Os métodos de BLT e os métodos QR são construídos para resolverem de índice 1 e 0.

O método QR baseia-se na decomposição da matriz dos jacobianos do sistema no produto deduas matrizes, uma matriz ortogonal (Q) e numa matriz triangular superior (R). Este processopermite calcular as condições iniciais de uma forma iterativa, o que torna este método bastanteeficiente e robusto (Wolfram 2018a).

3.2 Linguagens Avançadas 21

Índice 1?

Redução de índice

Não

Algoritmo de Pantelides

Matriz Estrutural

DummyDerivatives

Projeção

Collocation BLTQR

Sim

IDAS Espaço-estadoProjeção

DAE

Solução

Figura 3.2 Diagrama de fluxo lógico representativo do algoritmo para a resolução numéricade DAES para o Wolfram Mathematicar (Wolfram 2018a).

22 Ferramentas Computacionais

Já no caso do método BLT divide-se o sistema de DAES em vários subsistemas menores. Estadivisão permite que os problemas sejam resolvidos de uma forma mais eficiente. Este métodoé recomendado para sistemas de grande dimensão (Wolfram 2018a).

O método de Colocação, trata o DAES, como se fosse um sistema de caixa preta residual, ten-tando satisfazer o residual, num intervalo pequeno junto ao ponto de iniciação. Pelo facto destemétodo tratar o sistema como sendo uma caixa preta, permite manipular o valor de iniciaçãopara DAES de alto índice. No entanto esta estratégia de cálculo, não explora a estrutura dosistema, sendo por isso mais lenta que os métodos supra citados (Wolfram 2018a).

Tendo todas as condições reunidas, é aplicado o solver. Neste ponto, pode-se optar por umadestas técnicas(Wolfram 2018a):

→ Pacote IDA, do SUNDIALS, (secção 3.1.2);

→ Integração temporal "StateSpace";

7→ É um método iterativo, que recorre ao método de Newton para o calculo de deriva-das.

→ Projecção;

7→ O software recorre a métodos numéricos para a resolução do problema, projectandoa solução obtida na formulação inicial do problema.

3.2.2 MATLABr

O MATLABr é um software caracterizado por recorrer a uma linguagem matricial, com omesmo nome. Sendo assim, toda a informação é armazenada, sobre a forma de vectores ematrizes (Oliveira 2006).

Sendo o MATLABr um software proprietário, apesar da linguagem não o ser, existem alter-nativas como o GNU Octave, o FreeMat ou o scilab, de código aberto, destacando-se o GNUOctave, pois este trata a incompatibilidade com o interpretador MATLABr como um erro, to-rando mais fácil adaptar o código entre estas ferramentas (Oliveira 2006, Wikipedia 2018a,Eaton 2018a, FreeMat 2018, ESI 2017).

Tabela 3.1 Tabela resumo de interpretadores compatíveis da linguagem MATLABr

(The MathWorks 2018a, Eaton 2018a, FreeMat 2018, ESI 2017)

Software Licença Windows Linux macOSMATLABr Proprietária X X X

GNU Octave Open-Source X X XFreeMat Open-Source X X X

scilab Open-Source X X X

3.2 Linguagens Avançadas 23

A Tabela 3.1 faz um resumo dos softwares apresentados, a compatibilidade com as diferentesplataformas, assim como o tipo de licenças.

Apesar do MATLABr ser um software caracterizado pela linguagem matricial, também é capazde resolver problemas recorrendo a linguagem simbólica.

DAE

Formulação

Redução daOrdem Diferencial

Conversão da linguagem simbólica para

linguagem numérica

Condições iniciais

Solver

Redução doÍndice

Solução

Figura 3.3 Diagrama de fluxo lógico representativo do algoritmo para a resolução numéricade DAES para o MATLABr (The MathWorks 2018c).

No caso da resolução das DAES, a estratégia proposta pela documentação do MATLABr , pre-sente na Figura 3.3, passa por enunciar o problema recorrendo a variáveis e parâmetros simbó-licos, sendo este o primeiro passo (The MathWorks 2018c).

Após este passo, poderá-se aplicar uma estratégia de Redução da Ordem Diferencial. Este passopermite eliminar variáveis definidas mas que não estejam presentes no problema formulado(The MathWorks 2018c).

24 Ferramentas Computacionais

Neste passo, é analisada a presença de cada variável na equação, sendo atribuído um 1, para aexistência da variável na equação, e um 0, para a ausência da variável na equação. Para estaavaliação recorre-se a uma biblioteca pré-definida do MATLABr chamadareduceDifferentialOrder (The MathWorks 2018c).

No passo 3, é avaliado o índice das DAES, recorrendo à biblioteca MATLABr isLowIndexDAE.Esta biblioteca é um avaliador lógico, devolvendo 1 caso que o índice do DAES seja igual ouinferior a 1, ou seja, um DAES de índice 1 ou um sistema de ODEs, e devolve 0 caso que oíndice do sistema seja superior a 1.

Em seguida, o DAES é transformado num sistema de ODEs. Para esta função recorre-se a umabiblioteca do MATLABr chamada reduceDAEIndex.

Neste processo é comum que se formem variáveis e equações redundantes. Como tal o últimoprocesso do passo 3 é a eliminação de variáveis e equações redundantes. Para este fim é usadaa biblioteca reduceRedundances (The MathWorks 2018c).

Neste ponto temos um sistema de ODE, equivalente ao DAES inicial, que se encontra em lin-guagem simbólica. No entanto os solvers do MATLABr são baseados em métodos numéricos ecomo tal existe necessidade de converter as variáveis e parâmetros simbolicos do sistema paravariáveis e parâmetros numéricos. Esta transformação é realizada no passo 4. Para este pro-cesso recorre-se à biblioteca MATLABr symvar, para converter as variáveis e as equações, e abiblioteca setdiff para obter os parâmetros (The MathWorks 2018c).

Após esta transformação existe necessidade de criar a função MATLABr que agrupe as va-riáveis, equações e parâmetros de modo a que estes possam ser resolvidos, usando a biblio-teca MATLABr daeFunction, sendo também definido os valores dos parâmetros neste ponto(The MathWorks 2018c).

Para se poder aplicar o solver terá de existir condições iniciais tanto para as variáveis como paraas derivadas das variáveis, estando-se assim no passo 5.

Para este cálculo recorre-se a uma função MATLABr chamada decic. Esta função recorre a ummétodo interactivo para o cálculo das condições iniciais. Como tal é atribuída uma estimativainicial tanto para o valor inicial das variáveis assim como para o valor inicial das derivadasdessas variáveis.

É ainda possível definir parâmetros como a tolerância absoluta e relativa, que pretendemos paraos valores iniciais.

Tendo as condições iniciais, é agora possível aplicar o solver. Este solver é a função MATLABr

ode15i (The MathWorks 2018c).

3.2 Linguagens Avançadas 25

3.2.3 GNU OctaveApesar do GNU Octave ser compatível com o MATLABr em muitas coisas, para casos maisespecíficos existe diferenças.

O caso dos DAES é um exemplo. O GNU Octave para resolver estes problemas recorre àbiblioteca DASPK, (secção 3.1.1).

O funcionamento do DASPK é idêntico aos dos outros solvers utilizados pelo GNU Octave.Aqui os DAES, são definidos como uma variável ou função GNU Octave, sendo depois cha-mado no solver, com uma estrutura idêntica à a seguir representada.

[x,xdot] = daspk(fcn, x_0, xdot_0, t)

Onde, x é o vector com os valores das variáveis calculadas para um determinado t, xdot ovector com o valor das derivadas calculadas para um determinado t. Estes são os valoresproduzidos pelo solver.

As condições de entrada da função GNU Octave são a função(fnc), seguida das condiçõesiniciais (x_0, xdot_0), de acordo com a ordem com que aparece no vector de saída, sendoseguida pelo intervalo temporal(t), num vector horizontal de dois elementos o tempo inicial(ti)e o tempo final(tf) ficando da seguinte forma [ti tf].

3.2.4 gPROMSO gPROMS é um software que permite a criação de modelos de processo a partir de diagramasde correntes. Estes modelos são baseados nos Primeiros Princípios. O gPROMS funcionanuma teoria de modelação por blocos em que o modelo do processo é a soma dos vários blocos,estando o utilizador limitado aos modelos presentes nos blocos.

Dentro do gPROMS existe o gPROMS ModelBuilder, que permite a construção de modelos e avalidação dos mesmos, assim como fazer optimização dos sistemas (Process Systems Enterprise2018).

3.2.5 Modelação por BlocosO sistema ou processo é modelado por um conjunto de blocos. Cada um destes blocos repre-sentam equipamentos, sub-processos, ou subsistemas que se relacionam entre si formando oprocesso. Em cada bloco existe um conjunto de equações, podendo estas ser definidas pelousuário ou já estarem prédefinidas no sistema.

Temos como exemplo deste tipo de modelação, softwares como o Simulink, pertencente aoMATLABr , o SystemModeler, pertencente ao Wolfram Mathematicar , e a sua alternativa decódigo aberto, o OpenModelica.

26 Ferramentas Computacionais

Na Figura 3.4 está exemplificada a modelação por blocos.

ProcessoBloco1

Bloco2

Bloco3

Bloco4

Bloco5

Bloco6

dVdt

=...

dC A

dt=...

Figura 3.4 Diagrama representativo da modelação por blocos.

Por norma estes softwares vêem equipados com solvers para DAES, pois é comum apareceresta classe de equações diferenciais quando fazemos este tipo de modelação, muito relacionadacom as interacções entre blocos, ou mesmos aos modelos de certos blocos.

SimulinkO Simulink, é uma ferramenta computacional pertencente ao MATLABr , que permite a criaçãode modelos de processo a partir de blocos. Esta ferramenta oferece uma alta integrabilidade como MATLABr , o que lhe oferece uma grande capacidade de resolver problemas (The MathWorks2018b, Wikipedia 2018c).

O Simulink é utilizado para simular problemas de controlo, processamento de sinais, redes decomunicação via Wireless, robótica, entre outros (The MathWorks 2018b).

Modelicar (SystemModeler e OpenModelica)O Modelicar é uma linguagem de modelação por blocos, não-proprietária construída para aresolução de sistemas físicos complexo (Modelica 2018).

No entanto esta linguagem está implementada noutros softwares como é o caso do OpenMode-lica, um programa de código-aberto, e do SystemModeler, pertencente ao Wolfram Mathematicar

(Wikipedia 2018b, Wolfram 2018b, OpenModelica 2018).

3.3 Linguagens de modelação de Sistemas Algébricos 27

3.3 Linguagens de modelação de Sistemas AlgébricosAs Linguagens de Modelação de Sistemas Algébricos são uma classe especial de linguagensespecificas para a modelação de sistemas algébricos. No entanto, a sua principal característicaé a capacidade de resolver problemas de optimização, para este tipo de sistemas.

Este tipo de linguagem não está construída para a resolução de sistemas com equações diferen-ciais, no entanto, constituem o estado da arte quando se fala de optimização de sistemas.

Normalmente, este tipo de linguagens, apresentam capacidade de resolver problemas com oseguinte formato:

min f (x) (3.1)

s .t F (x) = 0 (3.2)

G(x) = 0 (3.3)

x ∈ Rn

Tipicamente, estes problemas costumam a recorrer a sets (conjuntos), índices, parâmetros evariáveis.

Estas linguagens costumam agrupar entidades(variáveis, parâmetros, restrições) semelhantesem sets que depois são devidamente indexadas. Estas entidades podem então ser representadasde forma compacta por expressões algébricas.

Um exemplo de dois programas que recorrem a este tipo de linguagem é o General AlgebraicModeling System (GAMS) e o A Mathematical Programming Language (AMPL), sendo estesconsiderados o estado da arte nesta área (Kallrath 2004).

3.3.1 GAMSO GAMS apareceu para resolver problemas de optimização da vida real no âmbito da ciência eda engenharia, no entanto tem-se desenvolvido mais para a parte da economia mundial, finançase engenharia química(Kallrath 2004).

Esta linguagem está afastada da linguagem de máquina, permitindo um uso mais amigável aoutilizador.

Outra característica positiva do GAMS é a sua capacidade de cria inputs para outras linguagenscomo o Pyomo (secção 3.4.1) ou o AMPL (secção 3.3.2) (GAMS 2018a).

Para além desta versatilidade, que permite recorrer a outras plataformas de optimização, oGAMS ainda tem um largo leque de optimizadores (GAMS 2018b).

28 Ferramentas Computacionais

3.3.2 AMPLInicialmente, o AMPL foi construído para resolver problemas lineares, sendo posteriormenteexpandido para a resolução de problemas não-lineares. Este software foi criado na década de80 do século passado pelo Computing Science Research Center of Bell Laboratories (Kallrath2004).

O AMPL recorre a vários tipos de solvers, estando divididos em dois grupos, os open-source,ou código aberto, e os solvers comerciais.

Dentro dos solvers de código aberto temos para problemas lineares o COIN-OR Branch andCut (CBC), desenvolvida pelo Computational Infrastructure for Operations Research (COIN-OR), o GNU Linear Programming Kit (GLPK), um solver pertencente à Fundação GNU, eo lp_solve, pertencente ao SourceForge. Para problemas não lineares temos o Interior PointOPTimizer (IPOPT), o Bonmin e o Couenne, todos eles solvers do projecto COIN-OR (AMPL2018a),

Estes solvers, para além de poderem ser usados pelo AMPL, ainda podem ser integrados noutrasferramentas, tal como o Pyomo (secção 3.4.1).

Como solvers comerciais, para o caso dos problemas lineares, tem-se o CPLEX, um solver daIBM Corporation, o Gurobi, um solver da Gurobi Optimization, o Xpress, um solver da FICO.Para o caso de problemas não lineares, tem-se solvers como o CONOPT da ARKI Consulting& Development, o KNITRO da Ziena Optimization, o LOQO da Princeton University e osMINOS e SOPT da Stanford University (AMPL 2018b).

Uma das vantagens do AMPL, para além da linguagem ter um interpretador de código offline,é a possibilidade de recorrer aos servidores do projecto para a resolução de problemas, atravésdo projecto Network-Enabled Optimization System (NEOS), dando uma resolução mais rápidapara problemas mais complexos.

3.4 Novas linguagens de optimizaçãoEm paralelo com o desenvolvimento das linguagens de modelação de sistemas algébricos, tam-bém tem havido um crescimento acentuado nas linguagem de alto nível, tais como as referen-ciadas na secção 3.2, que permitem fazer simulações de problemas complexos, como é o casode problemas com DAES, mesmo que algumas vezes com algum grau de dificuldade.

Também se tem assistido a um crescimento dos pacotes dedicados a optimização para este tipode linguagens avançadas, como é o caso do Pyomo (secção 3.4.1) (Hart et al. 2017), um dospacotes mais utilizados para Python, existindo ainda o PuLP, para problemas lineares. O JuMP(secção 3.4.2) é uma linguagem de modelação que recorre à linguagem Julia. (Dunning et al.2017)

3.4 Novas linguagens de optimização 29

Estes pacotes permitem criar uma alternativa às técnicas de optimização de equações diferen-ciais que são usadas convencionalmente, os métodos de optimização sequenciais, recorrendo amétodos de optimização simultânea, que será explicado na secção 3.5 (Hart et al. 2017, Biegler2000).

Uma característica comum destas duas linguagens, é o facto de serem open-source(Hart et al.2017)(Dunning et al. 2017), tendo por este motivo uma comunidade que vai desenvolvendoestas ferramentas de acordo com as necessidades de cada desenvolvedor. Deste modo, estasferramentas cobrem um grande leque de problemas, tendo como aspecto negativo, o facto denem sempre os pacotes acompanharem as mudanças nas linguagens.

Existem também frameworks, como é o caso do CasADi, que permitem uma interacção entreplataformas como MATLABr , Python ou linguagem C++ e diferentes solvers.

3.4.1 PyomoO Pyomo (Python Optimization Modeling Objects) é uma biblioteca Python, tendo como prin-cipal objectivo aproximar o Python das linguagens de modelação de sistemas algébricos, man-tendo uma proximidade às linguagens mais comuns na resolução deste tipo de problemas (Hartet al. 2017).

Para a resolução de problemas de optimização, o Pyomo recorre a solvers,podendo ser proprie-tários ou de código aberto.

A grande vantagem do Pyomo , relativamente às linguagens convencionais de optimização éo facto de estes poderem discretizar derivadas recorrendo a algoritmos próprios, facilitandoassim a optimização de problemas onde ocorrem derivadas, como é o caso dos problemas desimulação de sistemas dinâmicos (Hart et al. 2017), o que se traduz numa poupança de tempo eesforço investido no código.

Na formulação de um problema de optimização em Pyomo , podemos optar por criar um modeloconcreto, onde todo o problema está especificado no script, ou por criar um problema abstracto,estando presente no script todas as restrições e objectivos do problema, sendo depois chamadoum ficheiro de dados, independente do ficheiros de optimização, para a resolução do problema.

De modo a fazer a distinção, quando se cria a classe onde irá estar armazenado todo o modelo(m), recorre-se a:

m = ConcreteModel() ,

para formular um modelo concreto, ou a:

m = AbstractModel() ,

para criar um modelo abstracto (Hart et al. 2017).

30 Ferramentas Computacionais

O pyomo distribui a informação em 5 classes, sendo elas:

Var Variáveis de optimização do modelo;Objective Expressão que se pretende maximizar ou minimizar no modelo;Constraint Restrições do modelo;Set Conjunto de valores usados para definir um instante do modelo;Param Parâmetro usado para definir o modelo num determinado instante.

Outro aspecto importante é o facto de se poder usar o Pyomo para optimizar, construindo ummodelo e correndo-o com o Pyomo , ou então também é possível criar um script em Python,onde são chamados os pacotes do Pyomo, correndo com o Python.

Nesta última hipótese, terá de ser definido o solver no próprio script, sendo para isso usadoo seguinte comando SolverFactory(‘nome do solver‘). Caso que se trate de um modeloabstracto, será ainda preciso chamar o ficheiros de dados, sendo para isso usado o seguintecomando m.create_instance("ficheiro_de_dados.dat") (Hart et al. 2017).

Cada uma das classes apresenta declarações comuns que ajudam a definir a natureza da infor-mação, que serão especificadas no anexo B.

Como já referido anteriormente, uma das grandes vantagens da utilização do Pyomo é o factode este ser capaz de discretizar derivadas. Isto é possível graças ao pacote DAE, um pacotededicado à resolução de DAES.

Neste pacote existem duas novas atribuições, o ContinuousSet e o DerivativeVar. O ContinuousSet,serve para identificar a(a) variável(ies) independente(s), ou seja, a(s) variável(ies) pelas quaisas outras vão ser derivadas (Hart et al. 2017). ex.:

m.t = ContinousSet(bounds = (0, 1)) ,

Já o DerivativeVar, serve para identificar a(s) derivada(s) da(s) variável(ies) dependente(s)que será(ão) derivada(s).

m.x1 = Var(m.t) variável

m.dx1dt = DerivativeVar(m.x1, wrt=m.t) 1ª derivada

m.dx1dt2 = DerivativeVar(m.x1, wrt=(m.t,m.t)) 2ª derivada

As equações diferenciais costumam a ser definidas recorrendo a funções Python, sendo decla-rada recorrendo ao comando Constraint.

Para a resolução das equações diferenciais nestes problemas de optimização, costuma-se a re-correr a técnicas de discretização, nomeadamente as DFR ou a colocação ortogonal.

No Pyomo a estratégia discretização é gerada automaticamente recorrendo ao comando PyomoTransformationFactory. Neste comando, é especificada qual a estratégia utilizada, recor-

3.4 Novas linguagens de optimização 31

rendo a expressão dae.finite_difference, para as diferenças finitas, ou dae.collocation,para a colocação ortogonal.

No caso das diferenças finitas é necessário definir o modelo onde vai ser aplicado, o númerode elementos finitos (nfe), a variável que irá ser discretizada (wrt) e o tipo de diferenças fini-tas(scheme), podendo estas ser DFR, sendo definida como BACKWARD, Diferenças Finitas Cen-tradas (DFC), sendo definida como CENTRAL, ou Diferenças Finitas Progressivas (DFP), sendodefinidas com o comando FORWARD(Hart et al. 2017).

Segue em seguida um exemplo de aplicação para as diferenças finitas.

TransformationFactory(’dae.finite_difference’)discretizer.apply_to(m, nfe=20, wrt=m.t, scheme=’BACKWARD’)

Para o caso da colocação ortogonal é necessário definir o número de elementos finitos (nfe), onúmero de pontos de colocação em cada elemento(ncp), e o tipo de estratégia aplicada(scheme),podendo ser usada uma recolocação de raízes Gauss-Radau (LAGRANGE-RADAU), ou Gauss-Legendre (LAGRANGE-LEGENDRE)(Hart et al. 2017).

Em seguida segue um exemplo da aplicação da colocação ortogonal em Pyomo .

TransformationFactory(’dae.collocation’)discretizer.apply_to(m, nfe=7, ncp=6, scheme=’LAGRANGE-RADAU’)

3.4.2 JuMPO JuMP é uma linguagem de modelação dedicada a optimização incorporada em Julia. Estatem uma capacidade de recorrer a diferentes solvers, tanto comerciais como de código aberto.

Estes software permite resolver Problemas Lineares (LP), Mixed-Integer Linear Problems (MILP),quadráticos, conic-quadratic, semi-definidos e Problemas Não Lineares (NLP) (Dunning et al.2017).

O JuMP, tal como o Pyomo, tem capacidade de discretizar derivadas, sendo uma mais valiaquando se trata de sistemas como os que estão em estudo.

Para além deste aspecto, segundo Dunning et al. (2017), o JuMP é capaz de competir comsoftwares comerciais no que se refere ao tempo de cálculo, o que é possível graças ao factode o JuMP comunicar com os solver na memória, não necessitando de gravar em arquivosintermédios.

3.4.3 CasADiO CasADi é um framework simbólico, de código aberto, que tem capacidade de interagir complataformas como MATLABr , GNU Octave ou linguagens como o Python e o C++.

32 Ferramentas Computacionais

Desenhado para poder resolver problemas de optimização não-linear, tem a capacidade de re-solver problemas com equações diferenciais, calculando as derivadas pelos métodos de Range-Kutta Implicitos ou Explicitos ou recorrendo a bibliotecas do SUNDIALS (CasADi 2018a,Andersson et al. In Press, 2018).

No que se refere aos optimizadores e aos tipos de problemas que pode resolver, este tem a capa-cidade de resolver NLP, Mixed-Integer NonLinear Problems (MINLP), podendo ainda usar umaestrutura em bloco (block structure) ou esparsidade geral (general sparsity) que é explorada emSequential Quadratic Programming (SQP), recorrendo a bibliotecas como IPOPT/BONMIN,BlockSQP, WORHP, KNITRO e SNOPT (CasADi 2018a, Andersson et al. In Press, 2018).

Este apresenta ainda a capacidade de resolver Quadratic Programs (QP) e Mixed-Integer Qua-dratic Programs (MIQP), recorrendo a solvers como CPLEX, GUROBI, HPMPC, OOQP ouqpOASES (CasADi 2018a, Andersson et al. In Press, 2018).

Dentro do CasADi, existe o DaeBuilderclass dedicada à resolução de DAES. Esta class per-mite construir os modelos passo a passo, ou exportar directamente do Modelica. Como járeferido tem a capacidade de resolver simbolicamente estes problemas. Outra grande vantagemé a capacidade de gerar código em C (CasADi 2018b).

3.5 Estratégias de optimização de DAESNa optimização de DAES, pode-se recorrer a duas estratégias distintas, a estratégias sequenciaise as estratégias simultâneas (Biegler 2000).

Na Figura 3.5, estão os diagramas de fluxo lógicos associados a cada um dos métodos.

Numa Estratégia Sequencial, ou Métodos de Parametrização Vectorial de Controlo (Biegler2007), as variáveis de controlo são representadas como polinómios, sendo a optimização feitaem relação aos coeficientes do polinómio (Biegler 2007).

Esta optimização é incorporada num ciclo, juntamente com um solver para DAES, como repre-sentado pela Figura 3.5a. Este ciclo é quebrado, quando se atinge o valor de coeficientes quesatisfaça de uma maneira óptima o modelo (Biegler 2007, Vasantharajan & Biegler 1990).

Este tipo de estratégias apresentam uma grande vantagem, pois para além de serem fáceis deconstruir e de aplicar, ainda são bastante fidedignas, uma vez que poderemos optar por utilizarsolvers de DAES e optimizadores robustos. No entanto, estas estratégias são demoradas, nãotendo muito interesse para aplicação on-line (Biegler 2007).

Por outro lado, temos as Estratégias Simultâneas, ou Transcrição Directa (Direct Transcrip-tion) (Biegler 2007), que discretiza os perfis das variáveis de estado e de controlo recorrendo àcolocação de elementos finitos (Biegler 2007).

3.5 Estratégias de optimização de DAES 33

DAE

Solver

Optimo

Solução

OptimizadorNão

Sim

(a) Estratégia Sequencial

DAE

Modelo / Optimizador

Solução

(b) Estratégia Simultânea

Figura 3.5 Diagrama de fluxo lógico para a optimização de DAES recorrendo a diferentesestratégias (Biegler 2000).

Para problemas com valores de fronteira ou problemas de controlo, esta última técnica acabapor ser uma estratégia menos dispendiosa de obter soluções. Este tipo de abordagem acaba porcriar problemas NLP de grande escala, exigindo estratégias de optimização eficientes (Biegler2007).

Este tipo de estratégia liga directamente a solução das DAES ao problema de optimização, ouseja, o sistema é resolvido uma única vez no ponto inicial, evitando soluções intermediárias,que exigem um esforço computacional maior (Biegler 2007, Diehl et al. 2002, Vasantharajan &Biegler 1990).

Capítulo 4Casos de EstudoNeste capítulo ir-se-á apresentar os sistemas em estudo.

Optou-se por fazer um sistema tipo, de poucas variáveis, permitindo assim explorar num pontoinicial as diferentes ferramentas de computação usadas. Para tal optou-se por modelar um RPA.

Também será apresentado o caso real da Coluna de Absorção de NOx, apesar de nesta fase estesistema ainda não ser explorado.

4.1 Reactor Perfeitamente AgitadoO RPA é uma aproximação da realidade em que se considera que todos os pontos do reactorestão nas mesmas condições, sendo estas as condições de saída (Froment & Bischoff 1990). Poroutras palavras, o modelo do sistema é de parâmetros agrupados, sendo a variável independentedo sistema o tempo (Bequette 1998).

Optou-se por uma reacção genérica, de segunda ordem, não estando associados nenhuns com-postos químicos em especifico. Para além desta característica, um dos reagentes está em equi-líbrio com outro composto. As reacções do sistema estão apresentadas em (4.1) e em (4.2).

A equação (4.1) representa o equilíbrio entre a presença da espécie A e da espécie B.

A B (4.1)

A equação (4.2) representa a reacção de B e C a dar o produto D.

B +C → D (4.2)

35

36 Casos de Estudo

Na Figura 4.1 está o esquema do reactor.

Figura 4.1 Esquema do RPA em estudo

Este reactor é composto por duas alimentações (corrente 1 e 2). A corrente 1, com um caudalde alimentação F1, introduz no reactor o composto B com uma concentração CB0 e, derivadoao equilíbrio, o composto A numa concentração CA0. A segunda corrente de alimentação é acorrente 2, esta alimenta o reactor com um caudal F2 e uma concentração CC0.

O reactor tem ainda uma saída, a corrente 3. Esta corrente tem um caudal F3 e uma concentraçãode A CA, de B CB, de C CC e de D CD .

Para se poder simular o reactor é necessário criar o modelo matemático e, para tal. recorreu-seaos balanços mássicos do sistema.

4.1.1 Balanços MássicosA equação (4.4) traduz a realização de um balanço, sendo este mássico, energético, ou de qual-quer outra natureza (Bequette 1998).

[acumulação] = [entrada(s)] − [saída(s)] + [produzido] − [consumido] (4.3)

Tendo em contaque neste sistema a variação foi despresada, não irão ser feitos balanços ener-géticos ao sistema.

4.1 Reactor Perfeitamente Agitado 37

Balanço Global ao ReactorO objectivo deste ponto é seguir a variação do volume no sistema. Como tal ir-se-á recorrer àequação (4.4) para fazer o balanço mássico global do reactor.

Segundo o Princípio de Lavoisier, quando olhamos num ponto de vista global para o sistema,mesmo quando ocorre reacção química, existe conservação de massa, não havendo consumonem produção de matéria.

Como tal os termos [produzido] e [consumido] da equação (4.4) não são considerados, ficando:

[acumulação] = [entrada(s)] − [saída(s)] (4.4)

ou seja,

dm

dt= Ûm1 + Ûm2 − Ûm3 (4.5)

sendo dm/dt a acumulação mássica e Ûm1, Ûm2 e Ûm3 os caudais mássicos das respectivas corren-tes.

Tendo em conta que, por norma, na indústria existe um maior interesse em seguir o volume,ir-se-á converter este balanço para um balanço volumétrico, ficando

ρдlobaldV

dt= ρ1F1 + ρ2F2 − ρ3F3 (4.6)

sendo dV /dt a acumulação volumétrica, F1, F2, F3, como já referido, os caudais volumétricosdas respectivas correntes, ρдlobal a densidade global do sistema e ρ1, ρ2 e ρ3 as densidades dasrespectivas correntes.

De acordo com os princípios adjacentes à teoria do modelo do RPA, sabe-se que ρ3 será igual aρдlobal , pois as condições no interior do reactor são iguais às condições de saída.

Para além deste pressuposto relacionado com o tipo de modelo utilizado, recorreu-se a outropressuposto que defende que ρ1 e ρ2, são iguais ao do sistema. Sendo assim, podemos simpli-ficar obtendo:

dV

dt= F1 + F2 − F3 (4.7)

Considerando que o reactor se comporta como um tanque em descarga livre, o F3 irá ser depen-dente da altura de líquido no reactor (h), ficando:

F3 ∝ Aβ1√h (4.8)

38 Casos de Estudo

, onde β1 é o coeficiente de descarga do reactor e A a área de secção recta perpendicular aosentido do escoamento.

Neste caso, o reactor irá ser aproximado a um cilindro e, como tal, A irá ser constante ao longodo tempo.

No nosso sistema existe interesse em acompanhar o volume de líquido no reactor ao invés daaltura.

Como tal, a equação (4.8) pode ser adaptada, de modo a que o caudal F3 seja calculado a partirdo volume, ao invés da área, obtendo:

F3 = β2√V (4.9)

, onde β2 é um parâmetro que engloba o coeficiente de descarga, mais as constantes que surgi-ram da transformação da equação (4.8) para a equação (4.9).

Substituindo a equação (4.9) em (4.7), obtém-se:

dV

dt= F1 + F2 − β2

√V (4.10)

Balanço parcial ao composto A no reactorPara fazer o balanço parcial de A ir-se-á recorrer à equação (4.4).

Uma vez que o composto A não está envolvido directamente na reacção, os termos [produzido]e [consumido] da equação (4.4) serão desprezados.

Fazendo o balanço molar ao sistema, obtém-se:

dmA

dt= Ûm1A − Ûm3A (4.11)

, sendo dmA/dt a variação mássica do composto A, Ûm1A a massa de composto A presente nacorrente 1 e Ûm3A a massa de composto A presente na corrente 3.

Manipulando a equação (4.11) de modo a obter a variação da concentração ao longo do tempo,obtém-se:

d(VCA)dt

= (CA0)F1 − (CA)F3 (4.12)

4.1 Reactor Perfeitamente Agitado 39

, sendo CA0 a concentração de entrada do composto A e CA a concentração de A. Tendo emconta que V pode não ser constante ao longo do tempo, d(CAV )/dt pode ser decomposta em

CAdV

dt+V

dCA

dt

, ficando a equação (4.12), na seguinte forma:

VdCA

dt+CA

dV

dt= (CA0)F1 − (CA)F3 (4.13)

Substituindo a equação (4.10) e (4.9) em (4.13) obtém-se:

VdCA

dt+CA

(F1 + F2 − β2

√V

)= (CA0)F1 − (CA)β2

√V (4.14)

, manipulando a equação (4.14):

VdCA

dt= CA0F1 −CAβ2

√V −CA

(F1 + F2 − β2

√V

)⇔

VdCA

dt= CA0F1 −CA

(F1 + F2 − β2

√V + β2

√V

)⇔

VdCA

dt= CA0F1 −CA (F1 + F2) ⇔

VdCA

dt= F1 (CA0 −CA) + F2CA

, se isolarmos o termo dCAdt obtém-se:

dCA

dt=

F1 (CA0 −CA) − F2CA

V(4.15)

Balanço parcial ao composto C do reactorO composto C é outro reagente na reacção (4.2). Tal como quando aplicámos a equação (4.4),o termo [produzido] é desprezado, ficando:

dmc

dt= Ûm2C − Ûm3C − k1

CBCC

MBMC(4.16)

Sendo dmC/dt a acumulação mássica de C ao longo do tempo, Ûm2C a massa de C que entra noreactor pela corrente 2, Ûm3C a massa de C que sai pela corrente 3.

40 Casos de Estudo

Manipulando a reacção (4.16) de modo a obter a variação da concentração de C ao longo dotempo (dCC/dt),

d(CCV )dt

= CC0F2 −CCF3 − k1CBCCV (4.17)

, de forma a isolar o termo dCC/dt , ir-se-à decompor d(CCV )/dt tendo:

Vd(CC)dt+CA

d(V )dt= CC0F2 −CCF3 − k1CBCC (4.18)

Aplicando à equação (4.18), uma manipulação idêntica à aplicada à equação (4.14), obtém-se:

dCC

dt=

F2 (CC0 −CC) − F1CC − k1CBCCV

V(4.19)

Balanço parcial ao composto D do reactorO composto D é um produto da reacção (4.2). Como tal , este será produzido e, segundo asequações químicas (4.1) e (4.2), não será consumido. Ao aplicar-se a equação (4.4), o termo[consumido] é desprezado, ficando apenas o termo [produzido].

Outro ponto a ter em conta é que, apesar de no sistema não se considerar a entrada de D, estepode ser introduzido em qualquer alimentação. Assim obtém-se:

dmD

dt= Ûm1D + Ûm2D − Ûm3D + k1

CBCC

MBMC(4.20)

, sendo dmD/dt a acumulação mássica de D ao longo do tempo, Ûm1D a massa de D que entra nacorrente 1, Ûm2D a massa de D que entra na corrente 2 e Ûm3D a massa de D que sai pela corrente3.

Manipulando a reacção (4.20) de modo a obter a variação da concentração de D ao longo dotempo(dCD/dt), ondeCD01 é a concentração D que entra no caudal 1 eCD02 é a concentração Dque entra no caudal 2:

d(CDV )dt

= CD01F1 +CD02F2 −CdF3 + k1CBCCV (4.21)

De forma a isolar o termo dCC/dt , ir-se-á decompor d(CCV )/dt , ficando:

Vd(CC)dt+CA

d(V )dt= CD01F1 +CD02F2 −CdF3 + k1CBCCV (4.22)

4.1 Reactor Perfeitamente Agitado 41

Aplicando à equação (4.22), uma manipulação identica à aplicada à equação (4.14), obtém-se:

dCC

dt=

F1 (CD01 −CD) − F2 (CD02 −CD) + k1CBCCV

V(4.23)

4.1.2 Equilíbrio QuímicoComo já referido anteriormente, neste sistema, a espécie A e a espécie B estão em equilíbrioquímico, sendo representado em (4.1).

O equilíbrio químico pode ser traduzido pela equação (4.24).

CA =CB

Keq(4.24)

CA eCB, como já referido, são as concentrações dos respectivos compostos e Keq a constante deequilíbrio.

4.1.3 Modelo Completo do SistemaPara poder simular o sistema terá que se agrupar as diferentes equações vindas dos balanços eda lei de equilíbrio.

Agrupando a equação (4.10) às equações (4.15), (4.19) e (4.23) provenientes dos balanços par-ciais e a equação (4.24), proveniente do equilíbrio, obtém-se o sistema com as equações (4.25)

dV

dt= F1 + F2 − β2

√V (4.25a)

dCA

dt=

F1 (CA0 −CA) − F2CA

V(4.25b)

dCC

dt=

F2 (CC0 −CC) − F1CC − k1CBCCV

V(4.25c)

dCC

dt=

F1 (CD01 −CD) − F2 (CD02 −CD) + k1CBCCV

V(4.25d)

CA =CB

Keq(4.25e)

Este modelo é composto por quarto equações diferenciais ((4.25a), (4.25b), (4.25c) e (4.25d)) euma equação algébrica (4.25e), tornando-o um DAES.

Este sistema de equações é não-linear, uma vez que a equação (4.25a) é não linear. Estascaracterísticas podem trazer alguns problemas na integração analítica do sistema, sendo, por

42 Casos de Estudo

este motivo, muito comum a linearização do sistema, ou seja, a aproximação da equação não-linear a uma equação linear, tendo uma boa aproximação nas redondezas do ponto no qual sebaseou a linearização, mas perdendo exactidão à medida que se afasta deste ponto.

Variáveis e Parâmetros

Num modelo existem variáveis, podendo estas ser de estado, de entrada e de saída, e parâmetros.

No sistema apresentado, as varáveis de entrada (u(t)) são o caudais F1, F2, F3, as concentraçõesCA0, CB0 e CC0 e o coeficiente de descarga β2. Sendo as variáveis de estado (x(t)) o V , CA, CB,CC e CD , sendo as concentrações dos compostos também variáveis de saída do modelo (y(t)).

Quanto aos parâmetros (θ ), o sistema tem o k1 e o Keq.

Na Figura 4.2, estão distribuídas as variáveis e parâmetros de acordo com a sua categoria, sendoapresentados na Tabela 4.1 os valores dos parâmetros assim como as suas unidades e referências.

Sistema

F2(t)

CA(t)

k1

F1(t)

CA0(t)

CB0(t)

CC0(t)

CB(t) C

D(t)C

C(t) V(t) C

D(t)

CC(t)

CB(t)

CA(t)K

eq

β2(t)

F3(t)

CD01(t)

CD02(t)

Figura 4.2 Diagrama para o sistema em estudo.

Tabela 4.1 Parâmetros do sistemaValor Unidades

k1 1.4 × 10−2 m3/mol .min

Keq 3.0 -

4.1 Reactor Perfeitamente Agitado 43

Índice do ModeloCom o objectivo de perceber a complexidade do modelo, ir-se-á calcular o índice do DAES,procedendo à derivação do sistema em ordem ao tempo. Este processo está explicado em 2.1.1.

Deste modo, começou-se por derivar a equação (4.25e) em função do tempo:

dCA

dt=

1Keq

dCB

dt(4.26)

Este processo permitiu-nos obter o seguinte sistema equivalente de ODEs

dV

dt= F1 + F2 − β2

√V (4.27a)

dCA

dt=

F1 (CA0 −CA) − F2CA

V(4.27b)

dCC

dt=

F2 (CC0 −CC) − F1CC − k1CBCCV

V(4.27c)

dCC

dt=

F1 (CD01 −CD) − F2 (CD02 −CD) + k1CBCCV

V(4.27d)

dCA

dt=

1Keq

dCB

dt(4.27e)

, como ao longo deste processo, as equações do sistema foram derivadas uma vez, trata-se deum sistema de índice 1.

4.1.4 Caracterização do SistemaCom o objectivo de conhecer melhor o sistema, procedeu-se à caracterização do mesmo, tendocomo ponto de referência para as variáveis entrada os valores apresentado na Tabela .

Tabela 4.2 Valores de referência das Variáveis de EntradaValor Unidades

CA0 1.0 mol/m3

CB0 3.0 mol/m3

CC0 1 mol/m3

CD01 0 mol/m3

CD02 0 mol/m3

F1 0.05 m3/min

F2 0.05 m3/min

β2 0.031623 m2/min

44 Casos de Estudo

Procedeu-se a um estudo de modo a conhecer os números de estados estacionários assim comoos valores que as variáveis nestes mesmos estados.

Recorrendo ao Wolfram Mathematicar , concluiu-se que o sistema têm um único estado esta-cionário, tendo os valores apresentados na Tabela

Tabela 4.3 Valores das variáveis de estado, para o Estado Estacionário, do sistema, tendo emconta os valores de referÊncia apresentados na Tabela 4.2.

Wolfram Mathematicar UnidadesCA 0.5 mol/m3

CB 1.5 mol/m3

CC 0.161292 mol/m3

CD 0.338708 mol/m3

V 9.99986 m3

É de salientar que este sistema só apresenta um estado estacionário, porque conciderou-se atemperatura constante. caso que a temperatura também fosse uma variável, este teria multipli-cidade de estados estacionários.

Todas as equações exepto a equação (4.25a), a equação que permite calcular a variação devolume, são lineares.

Sabendo o Estado Estacionário do sistema, foi feito aum estudo da sensibilidade deste a varia-ções das condições de referência. Tendo em conta que a concentração de B está em equilibriocom a concentração de A, não se fez um estudo de sensibilidade a CB.

Para o estudo de sensibilidade foi feita uma variação de +/−50 % para todas as variáveis deentrada em estudo excepto CD , pois o valor de referência é 0, e não existindo concentraçõesnegativas mão faria sentido fazer uma variação de −50 %, sendo so feita um variação de +50 %.

Este estudo permitiu obter os perfis obtidos na Figura 4.3.

Figura 4.3 Sensibilidade do sistema às variáveis de entrada

4.1 Reactor Perfeitamente Agitado 45

Dos perfis apresentados em 4.3, podemos observar a não linearidade do sistema causada pelaequação (4.25a), contudo para uma grande parte dos casos, a linearização do sistema não iráintroduzir um grande desvio, sendo a excepção as variações de β2.

4.1.5 Simulação DinâmicosEstando o sistema caracterizado, foi feito testes dinâmico de modo estudar o comportamentodo sistema, assim como comparar as ferramentas escolhidas para este estudo.

Começou-se por fazer um teste dinâmico, em que as condições iniciais atribuidas às Variáveisde Estado são iguais são iguais às concetrações de entrada, para o caso das concentrações, sendoatribuido um valor para o volume e para F2, valores arbitarios. Estes valores estão apresentadosna Tabela 4.4.

Tabela 4.4 Condições Iniciais das Variáveis de EstadoValor Unidades

CA 1 mol/m3

CB 3 mol/m3

CC 1 mol/m3

CD 0 mol/m3

F3 0.1 m3/min

V 10 m3

Foi feita a simulação recorrendo ao Wolfram Mathematicar e ao Pyomo , obtendo os resultadosapresentados na Tabela 4.5. Para ambos os casos a integração ocorreu num tempo inferior a1min, não existindo grande diferença a nivel de tempo para as duas ferrametas utilizadas.

Tabela 4.5 Resultados de simulação para as condições apresentadas nas Tabelas 4.2 e 4.4.Wolfram Mathematicar Pyomo Unidades

CA 0.5 0.499999 mol/m3

CB 1.5 1.499999 mol/m3

CC 0.161292 0.161291 mol/m3

CD 0.338708 0.338708 mol/m3

V 9.99986 9.99985 m3

Comparando os resultados das Tabelas 4.3 e 4.5, verifica-se que o reactor estabilizou nos valoresdo estado estacionário.

No entanto existe uma pequena diferença entre os valores obtidos pelo Wolfram Mathematicar

e os valores obtidos pelo Pyomo . Tendo em conta que em ambas as ferramentas se recorreua métodos numérios para a resolução dos problemas, e sabendo que a tolerância do métodoinfluência os resultados, e ainda que o Wolfram Mathematicar recorre uma tolerância de 0.5 ×

46 Casos de Estudo

10−17, segundo Wolfram (2017) e o Pyomo recorre a uma tolerância de 1×10−8, segundo Sandia(2014), justifica a diferença entre as duas ferramentas.

Destas simulações foram ainda retirados os perfis das concentrações dos diferentes compostos,apresentado na Figuras 4.4.

0 200 400 600 800 1000

0.0

0.5

1.0

1.5

2.0

2.5

3.0

t(min)

Concentração(mol/m³)

C_A(t)

C_B(t)

C_C(t)

C_D(t)

(a) Wolfram Mathematicar

0 200 400 600 800 1000Tempo (min)

0.0

0.5

1.0

1.5

2.0

2.5

3.0

Conc

entra

ção

(mol

/m3 )

CA

CB

CC

CD

(b) Pyomo

Figura 4.4 Variação da concentração de CA, CB, CC e CD ao longo do tempo, para diferentesferramentas computacionais

Quando comparado os perfis da Figura 4.4a como os perfis da Figura 4.4b, pode-se verificarque os perfis coincidem, começando a estabilizar por volta dos 500min.

Não se verificou uma grande variação no volume de líquido no reactor pois o valor de volumeem estado estacionário e a condição inicial atribuida a esta variável eram muito próximas.

Tendo em conta que F3 é dependente do volume de liquído no reactor, e como este não sofreuvariação significativa, F3 tambem não irá sofrer.

Tanto pela observação dos perfis obtidos, em que os perfis estão muito próximos, como pelos osresultados em estados estacionários obtidos para as condições apresentadas, é possível concluir,que para o caso em que não são provcadas variações das condições de entrada, o Pyomo temuma resposta proxima do Wolfram Mathematicar . Sendo o Wolfram Mathematicar concide-rada uma ferramenta computacional de referência, estes resultados permitem validar o Pyomopara este tipo de simulações.

Com o objectivo de analisar o comportamento do sistema a perturbações na variáveis de entrada,procedeu-se a um conjunto de testes dinâmicos.

As variáveis de entrada manipuladas foram o caudal de entrada (F1) e a concentração de entradado composto A (CA0).

Perturbação no Caudal de entrada 1 (F1)De modo a perceber a influência da variação do caudal no sistema e como iria ser a sua resposta,optou-se por fazer um perturbação em degrau no caudal de entrada 1.

4.1 Reactor Perfeitamente Agitado 47

Esta perturbação ocorreu ao minuto 100, onde F1 passou de 0.05m3/min para 0.1m3/min.

Recorreu-se novamente ao Wolfram Mathematicar e ao Pyomo para fazer a simulação numé-rica do sistema. Esta simulação permitiu obter os resultados apresentados na Tabela 4.6.

Tabela 4.6 Resultados de simulação para as condições inicais apresentadas na Tabela 4.4 epara a perturbação no caudal F1.

Wolfram Mathematicar Pyomo UnidadesCA 0.666666 0.666667 mol/m3

CB 1.999999 2.000001 mol/m3

CC 0.064103 0.064103 mol/m3

CD 0.269230 0.269228 mol/m3

V 22.499682 22.499680 m3

Mais uma vez verifica-se que os resultados estão muito próximos, apresentando variações nasúltimas casas decimais, estando associadas às tolerâncias das ferramnetas computacionais.

Nas Figuras 4.7 estão presentes os perfis das concentrações dos diferentes compostos, para osresultados do Wolfram Mathematicar e do Pyomo .

0 1000 2000 3000 4000

0.0

0.5

1.0

1.5

2.0

t(min)

Concentração(mol/m³)

C_A(t)

C_B(t)

C_C(t)

C_D(t)

(a) Wolfram Mathematicar

0 500 1000 1500 2000 2500 3000 3500 4000Tempo (min)

0.00

0.25

0.50

0.75

1.00

1.25

1.50

1.75

2.00

Conc

entra

ção

(mol

/m3 )

CA

CB

CC

CD

(b) Pyomo

Figura 4.5 Variação da concentração deCA,CB,CC eCD ao longo do tempo, quando aplicadauma perturbação em F1 aos 100min, para diferentes ferramentas computacionais.

É possível verificar que um aumento do caudal F1, provoca um aumento em CA e CB. Estefenómeno pode ser justificado pelo facto de o caudal F1, ser o caudal de alimentação do com-posto A e B, sendo assim, um aumento desta alimentação irá provocar tambem um aumento daquantidade química destes compostos no sistema, levando ao aumento de CA e CB.

Por outro lado, CC e CD diminui. Um aumento de F1 influencia de duas formas a concentraçãode C. Ao aumentar F1, está-se a introduzir uma maior quantidade do composto B no sistema, esendo este juntamente com o composto C reagentes, a reacção será mais extensa, diminuindoa concentração de C. Mas um aumento de F1, tambem implica um aumento de solvente nosistema, provocando tambem uma diminuição da concentração de C.

48 Casos de Estudo

Relativamente a CD , apesar de existir uuma maior quantidade deste composto, pois como jareferido anteriormente a reação tornou-se mais extensa, o aumento do volume do sistema, comoé visível pela Figura 4.6, assim como uma mior quantidade de solvente, levou a uma diminuiçãoda concentração.

A resposta das variáveis à perturbação em F1, pode ser aproximada a um comportamento de 1ªordem sem atraso.

Quanto à dinâmica, estes sistema, para estas variáveis apresenta ter um comportamento aparentede 1ª ordem.

Quando comparados os perfis obtidos pelo Wolfram Mathematicar e pelo Pyomo , precebe-sea proximidade destes, tendo respondido bem a uma variação do caudal de entrada 1.

Em seguida, foi estudado o efeito da variação de F1 no volume do sistema.

Na Figura 4.6 está presente a resposta do volume à perturbação em degrau em F1 anteriormenteapresentada.

0 1000 2000 3000 40000

5

10

15

20

t(min)

Volume(m³)

(a) Wolfram Mathematicar

0 500 1000 1500 2000 2500 3000 3500 4000Tempo (min)

0

5

10

15

20

Volu

me

(V)

V

(b) Pyomo

Figura 4.6 Variação do volume de líquido no sistema ao longo do tempo, quando aplicadauma perturbação em F1 aos 100min, para diferentes ferramentas computacionais

Mais uma vez não é possível distinguir diferenças entre os resultados obtidos pelo WolframMathematicar , Figura 4.6a, e os resultados obtidos pelo Pyomo , Figura 4.6b.

Quanto à influência da variação de F1 no volume de fluido no reactor, verifica-se, como seria deesperar, que um aumento de F1 provoca um aumento de V .

O volume do líquido, quando o sistema sofre uma perturbação no caudal F1, tem um comporta-mento aparente de 1ª ordem.

Tendo em conta que o caudal F3 é dependente de V , como representado pela equação (4.9),decidiu-se acompanhar a influência da variação de F1, nos diferentes caudais. Esta informaçãoestá presente nas Figuras 4.7b.

Novamente os perfis obtidos pelo Wolfram Mathematicar , Figura 4.7a, e os perfis obtidos peloPyomo , Figura 4.7b, são coincidentes.

4.1 Reactor Perfeitamente Agitado 49

0 1000 2000 3000 4000

0.06

0.08

0.10

0.12

0.14

t(min)

Caudal(m³/min)

F_1

F_2

F_3

(a) Wolfram Mathematicar

0 500 1000 1500 2000 2500 3000 3500 4000Tempo (min)

0.06

0.08

0.10

0.12

0.14

Caud

ais d

o sis

tem

a (m

3 /min

)

F1F2F3

(b) Pyomo

Figura 4.7 Variação dos caudais F1, F2 e F3 ao longo do tempo, quando aplicada uma pertur-bação em F1 aos 100min, para diferentes ferramentas computacionais

O caudal F2 não apresenta qualquer variação uma vez que este é completamente independentedo sistema. Quanto ao caudal F1 é possível ver a perturbação em degrau provocada neste testedinâmico

Em relação ao caudal F3, este teve uma resposta aparente de 1ª ordem, à perturbação ocorrida nosistema, tendo passando de 0.10 m3/min para 0.15 m3/min. Esta resposta pode ser justificadapelo facto de F3 ser dependente de V , como demosntrado pela equação 4.9.

Perturbação na Concentração de entrada de A (CA0))A perturbação em CA0 tem como principal objectivo, ver como uma variação na concentraçãodo composto A na alimentação irá afectar o resto do sistema.

Para tal fez-se uma perturbação em degrau em CA0, ao minuto 100. A alimentação passou deuma concentração de alimentação de A de 1mol/m3, para uma concentração de 1.5mol/m3.

Para as simulações recorreu-se ao Wolfram Mathematicar e ao Pyomo , obtendo os resultadosapresentados na Tabela 4.7.

Tabela 4.7 Resultados de simulação para as condições inicias apresentadas na Tabela 4.4 epara a perturbação na concentração CA0.

Wolfram Mathematicar Pyomo UnidadesCA 0.749969 0.750000 mol/m3

CB 2.249969 2.250000 mol/m3

CC 0.120488 0.120483 mol/m3

CD 0.379511 0.379516 mol/m3

V 9.99985 9.99985 m3

Também os resultados obtidos para esta simulação são idênticos para as duas ferramentas com-putacionais usadas, o Wolfram Mathematicar e o Pyomo .

50 Casos de Estudo

Na Figura 4.8, estão presentes os perfis das concentrações de saída dos diferentes compostos.

0 200 400 600 800 1000

0.0

0.5

1.0

1.5

2.0

t(min)

Concentração(mol/m³)

C_A(t)

C_B(t)

C_C(t)

C_D(t)

(a) Wolfram Mathematicar

0 200 400 600 800 1000Tempo (min)

0.5

1.0

1.5

2.0

Conc

entra

ção

(mol

/m3 )

CA

CB

CC

CD

(b) Pyomo

Figura 4.8 Variação da concentração deCA,CB,CC eCD ao longo do tempo, quando aplicadauma perturbação em CA0, para diferentes ferramentas computacionais.

Os perfis obtidos pelo Wolfram Mathematicar , Figura 4.8a, e pelo o Pyomo , Figura 4.8b, sãocoincidentes.

A perturbação em degrau de CA0 provoca um aumento de CA, uma vez que se está a introduzirmais composto A no sistema. Estando o composto B em equilíbrio com A, um aumento de Aprovoca também um aumento de B, sendo assim CB também aumenta.

O aumento de CB provocou, por sua vez um maior consumo do composto C, uma vez que estesdois elementos são reagentes da reacção. Este consumo provocou uma diminuição de CC .

Contudo, a reacção química foi mais extensa, o que provocou um aumento de CD .

Pela análise dos perfis dos gráficos presentes na Figura 4.8, pode-se afirmar que perante umaperturbação em CA0, CA apresenta uma resposta típica de um sistema de 1ª ordem, assim comoCB. Por outro lado,CC eCD , apresentam um comportamento aparente de segunda ordem sobre-amortecido, este comportamento pode ser justificado pelo facto do consumo de C e a produçãode D estárem dependentes de CB.

Em relação ao volume e ao caudal de saída não foram detectadas variações, uma vez que aperturbação foi ao nível da concentração de entrada, mantendo os caudais de entrada constantes.

Após a análise tanto dos perfis obtidos para o caso da perturbação em F1, como para a perturba-ção em CA0, assim como os resuldados dos novos estados estacionários, e conciderando que oWolfram Mathematicar uma ferramenta de referência, pode-se concluir que o Pyomo conseguesimular bem perturbações no sistema.

4.1.6 Sistema de controloUma das aplicações da simulação e dos modelos é a capacidade de, a partir destas, poder-seprojectar sistemas de controlo, para os casos dos controladores mais simples, como é o caso

4.1 Reactor Perfeitamente Agitado 51

do PID ou mesmo incorporar o código de controladores mais complexos, com os Feedforward(Stephanopoulos 1984).

Os controladores Feedback, apesar de não representarem o estado da arte neste campo, estãomuito presentes em controlo, pois, para além de serem de baixo custo, são usados para sistemade redundância e para estabilizar sistemas instáveis quando se recorre a estratégias avançadasde controlo, como é o caso do controlo óptimo.

Neste último exemplo, o modelo que será utilizado para fazer a previsão irá incluir também asequações dos controlador PID.

Com o objectivo de perceber como estas equações influenciariam a simulação do sistema,projectou-se um controlador PID, tendo como objectivo garantir que o volume de líquido noreactor se mantém no valor pretendido e o mais constante possível, mesmo existindo perturba-ções nas variáveis de entrada.

Projecto do ControladorCom o objectivo de perceber qual seria a melhor variável manipulada para controlar o nível,optou-se por proceder ao cálculo da Matriz Relative Gain Array Method (RGA), sendop ne-cessário primeiro calcular a Matriz dos Ganhos Estacionários, Esta matriz armazena os ganhosestacionários entre uma variável de entrada e uma variável de estado, ou seja

K =

K11 . . . K1j . . . K1n.... . .

.... . .

...

Ki1 . . . Kij . . . Kin.... . .

.... . .

...

Km1 . . . Kmj . . . Kmn

(4.28)

sendo para o caso do sistema em estudo, i ∈ [CA0 CC0 CD0 F1 F2 β2] e j ∈ [V CA CB CC CD].

Aplicando a matriz (4.28), para o nosso sistema, obtém-se a Matriz dos Ganhos Estacionários(4.29).

0 0 0 199.997 199.997 −632.4420.5 0 0 5 −5 01.5 0 0 15 −15 0−0.109262 0.161292 0 −3.79815 1.61262 6.91027

0.109262 0.338708 0.5 −1.20185 3.38708 −6.91027

(4.29)

Observando a matriz (4.29), é possível verifocar que a linha correspondente a CA e a linhacorrespondente a CB, são linearamente dependentes, o que pode ser justificado pelas relação

52 Casos de Estudo

de equilibrio entre A e B. Como tal, para efeito de calculos fucturos irá-se eliminar a linhacorrenpondente a CB.

Para calcular a matriz RGA recorreu-se ao método de Bristol discrito em Seborg et al. (2004),tendo sido os cálculos feitos no Wolfram Mathematicar , obtendo assim a matriz (4.30), repre-sentando as colunas [CA0 CC0 CD0 F1 F2 β2] respetivamente, e as linhas [V CA CC CD].

0 0 0 0.989411 0.994759 −0.9841710.336979 0 0 0.574609 0.088412 00 0.111104 0 −0.870946 0.203154 1.556690 0.224228 0.339638 0.29924 −0.28915 0.426044

(4.30)

Pela análise da matriz 4.30, pode-se averiguar que as melhores variáveis manipuladas paracontrolar o volume do tanque são o F1, o F2, optando-se por emparelhar F1 com V , mesmo nãosendo a primeira escolha a fazer pela estratégia apresentada por Seborg et al. (2004).

Na Figura 4.9 está esquematizada a configuração de controlo proposta.

F1

CA,

CB,

CC,

CD

F2

CC0

F3

CA0

CB0

LT

FC

Figura 4.9 Esquema do RPA em estudo, com o controlo do volume recorrendo à corrente deentrada F1

Como já referido em 4.1.5, a resposta do volume a uma perturbação no caudal F1 aparentaum comportamento de 1ª ordem, contudo a função de transferência proposta pelo WolframMathematicar é de uma ordem superior. Para o cálculo do PID decidiu-se então aproximara uma função de transferência de 1ª ordem. Para este cálculo recorreu-se ao teste dinâmico,obtendo um ganho (KF1,V ) de 199.997 min, vindo da Matriz dos Ganhos Estacionários e umaconstante de tempo (τ ) de 240min, sendo esta o tempo em que o sistema atinge 63.2 % (Seborget al. 2004).

4.1 Reactor Perfeitamente Agitado 53

Com estes valores, recorrendo às formulas do método Internal Model Control (IMC) e tendo emconta que se aproximou a um sistema de 1ª ordem, fez-se os cálculos do Ganho Proporcional(Kc) e da constante de tempo integral (τI ), obtendo um controlador PI.

Para o cálculo dos parâmetros do controlador é necessário prever a constante de tempo em ciclofechado desejada (τc). Como este valor não é conhecido foi feita uma estimativa recorrendo àestratégia proposta em Chen & Fruehauf (1990), onde propõe que τ > τC > θ , onde θ é o atrasodo sistema. Como se aproximou o sistema, a um sistema de 1ª ordem sem atraso, θ = 0, logo τcterá de ter um valor entre 0 min e 240 min. Optou-se por atribuir um valor de τc de metade deτ , ficando τc = 120min.

Segundo o método IMC apresentado por Chen & Fruehauf (1990), para o caso de um sistemade 1ª ordem sem atraso,

KcK =τ

τc⇔ Kc =

τ

τcK(4.31)

, e τI = τ . Sendo assim ficamos com Kc = 0.010min−1, e τI = 240min.

Implementação do controladorTendo os parâmetros dos controladores definidos, ter-se-á agora que incorporar o modelo docontrolador no modelo do sistema.

Tipicamente o modelo associado aos controladores PID no domínio tempo tem a estrutura apre-sentada pela equação (4.32) (Stephanopoulos 1984).

u′(t) = Kc

[e′(t) + 1

τI

∫ t

0e′(τ )dτ + τD

de′(t)dt

](4.32)

Tendo em conta que no caso de controlo desejado ir-se-á ter um controlador PI, a equação (4.32)fica:

u′(t) = Kc

[e′(t) + 1

τI

∫ t

0e′(τ )dτ

](4.33)

Aplicando a equação (4.33) para o caso concreto do modelo, obtém-se

F ′1(t) = Kc

[e′(t) + 1

τI

∫ t

0e′(τ )dτ

](4.34)

, onde e′(t) = VSP −V (t), sendo VSP o set-point de volume de líquido no reactor.

Na equação (4.34) foi feita uma substituição de variáveis de modo a eliminar o integral da

54 Casos de Estudo

equação, sendo este substituído por ϑ (t), ficando com:

ϑ (t) =∫ t

0e′(τ )dτ

, ou seja,

F ′1(t) = Kc

[e′(t) + 1

τIϑ (t)

](4.35a)

dt= e′(t) (4.35b)

e′(0) = 0 (4.35c)

Sendo F ′1(t) uma variável de desvio, ou seja, F ′1(t) = F1(t) − F1SS (t), sendo F1SS , o caudal 1 emestado estacionário, logo F1(t) = F1SS (t) + F ′1(t), ficando:

F1(t) = F1SS + Kc

[e′(t) + 1

τIϑ (t)

](4.36a)

dt= e′(t) (4.36b)

As equações (4.36) formam um conjunto de DAES de índice 1, pois a equação (4.36a) é umaequação algébrica, e a equação (4.36b) diferencial.

Introduzindo as equações (4.36), no modelo do já apresentado pelas equações (4.25), poderemossimular o comportamento do controlador a perturbações no sistema.

Resultados do Sistema com ControladorForam introduzidas algumas perturbações no controlador de modo a perceber como este intera-gia com o modelo, bem como o sistema Pyomo se comportava quando aumentada a complexi-dade do sistema simulado.

Com o objectivo de saber como o sistema com controlo se comportava quando aplicada uma va-riação na alimentação, foi feita uma perturbação em degrau a F2, passando este de 0.05m3/min

para 0.04m3/min.

Esta perturbação permitiu obter as Figuras 4.10 e 4.11.

Na Figura 4.10a está representada a variação dos caudais ao longo do tempo.

É visível o degrau efectuado em F2, que provocou uma diminuição do volume como é visívelna Figura 4.10b. Esta diminuição do volume justifica a diminuição de F3.

4.1 Reactor Perfeitamente Agitado 55

0 200 400 600 800 1000Tempo (min)

0.04

0.05

0.06

0.07

0.08

0.09

0.10

Caud

ais d

o sis

tem

a (m

3 /min

)

F1F2F3

(a) Variação dos caudais ao longo do tempo.

0 200 400 600 800 1000Tempo (min)

0

2

4

6

8

10

Volu

me

(V)

V

(b) Variação dos volumes ao longo do tempo

Figura 4.10 Efeito da perturbação em degrau em F2

É possível ver que o controlador está a funcionar, pois o volume tem uma tendência crescente,tendendo para 9.99986m3, valor de set-point. Esta subida ocorre graças à acção do controladorPI, que manipula o caudal F1, levando este a atingir o valor de 0.06m3/min.

56 Casos de Estudo

Contudo, ainda demora algum tempo para que o volume volte a atinjir o set-point, o que podeser justificado pelos parâmetros do controlador, pois os valores obtidos pela estratégia acimaapresentada, servem para fazer uma estimativa inicial dos parâmetros dos controladores, po-dendo estes ser ajustados à posteriori.

Na Figura 4.11, está representada a variação da concentração dos diferentes compostos.

0 200 400 600 800 1000Tempo (min)

0.25

0.50

0.75

1.00

1.25

1.50

1.75

Conc

entra

ção

(mol

/m3 )

CA

CB

CC

CD

Figura 4.11 Variação das concentrações ao longo do tempo, perante uma perturbação emdegrau em F2.

Como era previsível, ao fazer-se esta perturbação em ciclo fechado, CC diminui, uma vez queestá a ser introduzido em menos quantidade, ao ser alimentado pelo caudal F2. Por outro lado,existe um aumento de CA e de CB, pois estes são alimentados por F1, caudal que compensou aredução de F2. Quanto à concentração de CD , este sofreu uma redução causada pela redução deCC , um reagente da reacção.

Tendo em conta que o controlador tem de ter a capacidade de levar o sistema a convergir paraum novo ponto de operação, fez-se uma variação do set-point do volume de líquido no reactorde 9.99986m3 para 15m3, de forma a ver como o sistema evoluía.

As Figuras 4.12 e 4.13 têm representados os efeitos da variação do set-point.

Como é visível pela Figura 4.12b, o sistema respondeu positivamente à mudança de set-point,passando de 10 m3 para 15 m3. Esta subida provoca um aumento do F3, pelo facto de este serdependente do volume de líquido no sistema. O aumento do volume é provocado pelo caudalde entrada F1 (variável manipulada), que sofre um aumento na fase inicial, de modo a permitiruma resposta mais rápida, estabilizando posteriormente com um caudal de 0.074m3/min.

Quanto ao caudal F2 não sofre qualquer alteração.

Esta variação do set-point, também teve consequências em relação às concentrações dos com-postos. Novamente se regista um aumento das concentraçõesCA eCB, estando este relacionadoscom o aumento de F1.

Por outro lado existe uma diminuição de CC , pois a quantidade de C que está a ser alimentadaao sistema mantém-se, no entanto o volume de líquido aumenta, o que leva à diminuição de CC

4.2 Coluna de Absorção de NOx 57

0 200 400 600 800 1000Tempo (min)

0.05

0.06

0.07

0.08

0.09

0.10

0.11

0.12Ca

udai

s do

siste

ma

(m3 /m

in)

F1F2F3

(a) Variação dos caudais ao longo do tempo

0 200 400 600 800 1000Tempo (min)

0

2

4

6

8

10

12

14

16

Volu

me

(V)

V

(b) Variação do volume ao longo do tempo

Figura 4.12 Efeito da mudança de set-point.

0 200 400 600 800 1000Tempo (min)

0.25

0.50

0.75

1.00

1.25

1.50

1.75

Conc

entra

ção

(mol

/m3 )

CA

CB

CC

CD

Figura 4.13 Variação das concentrações ao longo do tempo, para uma mudança de set-point.

no sistema.

A diminuição de CD também está associada ao aumento do volume do sistema.

Tendo em conta o comportamento do Pyomo para este sistema mais simples, tendo apresen-tado um bom desempenho nas várias fases, o próximo ponto seria aplica-lo a um sistema maiscomposto como é o caso da Coluna de Absorção de NOx, apresentado na secção 4.2.

4.2 Coluna de Absorção de NOxUma coluna de absorção pode ser constituída por vários andares. Teoricamente em cada umdestes andares atinge-se um equilíbrio entre as composições do composto absorvido na fasegasosa e na fase líquida (Azevedo & Alves 2009).

A absorção dos compostos ocorrem na interface entre o líquido e o gás, sendo por este motivo,as concentrações nas camadas filme, tanto no gás, como no líquido importantes.

58 Casos de Estudo

No caso da Coluna de Absorção de NOx, em paralelo com o processo de absorção tambémocorrem reacções, tanto na fase gasosa como na fase líquida (Vilarinho et al. 2016).

Na Figura 4.14, está esquematizado um andar genérico (n) da Coluna de Absorção de NOx.

1

N

n

Andar n...

...

G, Yjn

Ln+1, xjn+1

G, Yjn-1

Ln, xjn

Ll, x

j,l

Figura 4.14 Esquema da Coluna de Absorção de NOx adaptado de Vilarinho et al. (2016)

Cada andar (n) é alimentado por uma corrente de gás de transporte com um caudal G, sendoesta constante ao longo da coluna, e com uma fracção molar Y do composto j, proveniente doandar anterior (n − 1).

Este andar é ainda alimentado por uma corrente de líquido de transporte, com um caudal L,proveniente do andar seguinte (n+1). Esta corrente possui uma fracção molar x do composto j.

Neste caso a corrente de líquido de transporte pode variar de andar para andar, pois pode existira introdução de uma corrente líquida ao andar, representada na Figura 4.14 com a entrada atracejado. Esta corrente terá um caudal Ll , tendo uma fracção molar xl do composto j.

Do andar n sai uma corrente gasosa e o caudal de transporte G, com uma fracção molar Y docomposto j, para o andar n + 1. Sai ainda uma corrente líquida, com um caudal L, sendo esteigual ao caudal de alimentação do andar anterior, mais a corrente líquida introduzida na coluna,caso exista, ou seja, Ln = Ln+1 + Ln

l. A saída terá uma fracção molar x do composto j, para o

andar n.

Na Figura 4.15, estão esquematizados os mecanismos de transferência de massa que ocorremna coluna.

4.2 Coluna de Absorção de NOx 59

Meio Gasoso

Filme do Gás

Filme doLíquido

Meio Líquido

Área doGás

Interface

Figura 4.15 Esquema dos Mecanismos de transferência de massa num andar da Absorção deNOx adaptado de Vilarinho et al. (2016)

Em Vilarinho et al. (2016), considerou-se duas zonas distintas: a área de gás (Gas Area), repre-sentada na Figura 4.15 pelo bloco com o mesmo nome, e a área de espuma (Froth Area).

A área de gás corresponde ao espaço livre entre pratos consecutivos e é onde ocorrem reacçõesde oxidação (Vilarinho et al. 2016).

Já a área de espuma corresponde à zona onde ocorre o contacto entre a fase gasosa e a faselíquida (Vilarinho et al. 2016).

A transferência de massa, como é visível pela Figura 4.15, ocorre do meio gasoso para o meiolíquido. Como tal o compostos irão passar do meio gasoso, meio em que se pode considerarmistura perfeita derivado à agitação do meio, para a camada filme de gás junto à interface. Nestacamada filme, a agitação é reduzida sendo causado um gradiente de concentração entre o meiogasoso e a interface.

Na interface, o composto é transferido para o líquido, mais propriamente para a camada filmedo líquido. Esta transferência está dependente das leis de equilíbrio gás-líquido, solubilidade docomposto no líquido e no gás, entre outros, sendo representado por equações de estado como alei de Henry ou a Lei de Raoult.

Tal como na camada filme do gás, a camada filme do líquido apresenta pouca agitação, provo-cando um gradiente de concentrações ao longo desta camada. Por fim, os composto atingemmeio líquido, local onde se pode voltar a considerar agitação perfeita.

Como já referido anteriormente, na coluna de absorção de NOx, para além do fenómeno deabsorção ocorrem em paralelo reacções químicas (Vilarinho et al. 2016).

As equações (4.37), representam as reacções que ocorrem no meio gasoso (Vilarinho et al.

60 Casos de Estudo

2016).

2NO(д) +O2(д) → 2NO2(д) (4.37a)

2NO2(д) N2O4(д) (4.37b)

3NO2(д) + H2O 2HNO3(д) + NO(д) (4.37c)

NO(д) + NO2(д) NO3(д) (4.37d)

NO(д) + NO2(д) + H2O 2HNO2(д) (4.37e)

As equações (4.38), representam as reacções que ocorrem no meio líquido (Vilarinho et al.2016).

N2O4(l) + H2O(l) → HNO2(l) + HNO3(l) (4.38a)

N2O3(l) + H2O(l) → HNO2(l) (4.38b)

2NO2(l) + H2O(l) → HNO3(l) + HNO2(l) (4.38c)

3HNO2(l) → HNO3(l) + H2O(l) + 2NO2(д) (4.38d)

Já a equação (4.39), representa o equilíbrio de fases (Vilarinho et al. 2016).

3NO2(д) + H2O(l) 2HNO3(l) + NO(д) (4.39)

Tendo em conta as reacções apresentadas e a informação presente em Vilarinho et al. (2016)prevê-se que este sistema tenha um total de 637 equações tendo em conta o número de equaçõesem cada andar, e que estas se repetem ao longo dos andares da coluna de absorção.

O próximo passo seria fazer a modelação e a simulação do sistema, recorrendo ao Pyomo numaprimenira fase para fazer a simulação do sistema e depois comparado com resultados vindode outras plataformas, ou com dados reais, de modo a validar o modelo. Pós o modelo estravalidado, poderia-se fazer optimização recorrendo a este. Nesta optimizaçaõ seria possível, porexemplo, calcular o melhor caudal de alimentação da corrente gasosa e/ou líquida, de modo aoptimizar o processo de tratamento.

Capítulo 5Conclusões e Trabalhos FuturosA resolução de sistemas modelados por DAES apresenta um ponto de interesse devido nãosó aos modelos que envolvem à partida DAES, mas também para os restantes modelos, umavez que quando se está a modelar e a resolver problemas usando uma metodologia de blocos,estratégia cada vez mais comum, este tipo de equações costumam a aparecer, como foi o casode quando foi acrescentado o bloco do controlador ao bloco do modelo.

Nesta dissertação foi possível comparar o desempenho de duas ferramentas computacionaisdestintas, o Pyomo e o Wolfram Mathematicar , recorrendo a um modelo tipo de um RPA,contendo dois compostos em equilibrio químico.

Quando comparado o Pyomo, uma das ferramentas open-source, que permite a resolução eoptimização de problemas modelados por DAES, com o Wolfram Mathematicar , ferramentade simulação com capacidade de resolver DAES, viu-se que os resultados eram idênticos paraambas as ferramentas, apesar de o Pyomo ser construído para problemas de optimização.

Não foi feita uma comparação de tempos computacionais, pois apesar de neste estudo termosrecorrido a ambas as ferramentas para fazer simulação, o verdadeiro objectivo do Pyomo seriaa optimização, não mostrando grande diferença neste ponto, demorando ambos alguns segundoa correr o código. Contudo é de prever quando se recorrer ao Pyomo para optimizar, uma oumais, variáveis do processo, este seja mais rápido que o optimizador do Wolfram Mathematicar

, pois o Pyomo resolve problemas de optimização recorrendo a métodos simultâneos, enquantoque o Wolfram Mathematicar recorre a métodos sequênciais.

Uma das maiores dificuldades do recurso do Pyomo foi o facto de o desenvolvimento deste serfeito de uma forma independente do Python, não sendo a última versão dop Pyomo completa-mente compativel com a última versão do Python.

Por outro lado, o facto de ser open-source, tráz vantagens, como a capacidade de traduzir ocódigo de optimização do Pyomo para GAMS, discretizando as equações diferenciais, e permi-tindo assim recorrer ao gams para optimizar, bem como recorrer aos seus solvers, mais sufesti-

61

62 Conclusões e Trabalhos Futuros

cados e eficazes que os utilizados pelo Pyomo .

Conhecendo a capacidade do Pyomo para simular DAES, o próximo passo seria optimizar omodelo do reactor recorrendo a esta ferramenta, de forma a testar a capacidade de optimiza-ção. Neste ponto poderia-se explorar também a capacide de transcrever o código para outraslinguagens, comparando tempos de optimização e resultados.

Poderia-se ainda aplicar uma estratégia de controlo optimo ao sistema

Após explorar de uma forma mais intensa o Pyomo , iria-se passar para a simulação e a optimi-zação de sistemas mais complexos, como o caso do sistema da coluna de absorção de NOx.

BibliografiaAMPL, O. i. (2018a), ‘Open source solvers’, https://ampl.com/products/solvers/

open-source/.

AMPL, O. i. (2018b), ‘Solvers we sell’, https://ampl.com/products/solvers/

solvers-we-sell/.

Andersson, J. A. E., Gillis, J., Horn, G., Rawlings, J. B. & Diehl, M. (In Press, 2018), ‘CasADi– A software framework for nonlinear optimization and optimal control’, Mathematical Pro-gramming Computation .

Ascher, U. M. & Petzold, L. R. (1994), Computer for Ordinary Differential Equantions andDifferential-Algebraic Equations, SIAM, Filadélfia.

Aspuru-Guzik, A., Lindh, R. & Reiher, M. (2018), ‘The matter simulation (r)evolution’, ACSCentral Science 4(2), 144–152.

Azevedo, E. G. d. & Alves, A. M. (2009), Engenharia de Processos de Separação, 1st edn, ISTPress.

Bendtsen, C. & Thomsen, P. G. (1999), Numerical solution of differential algebraic equations,Technical report, IMM.

Bequette, B. W. (1998), Process Dynamics - Modeling, Analysis, and Simulation, Prentice-HallInc.

Biegler, L. T. (2000), ‘Optimization of differential- algebraic equation systems’, https://www.lehigh.edu/~wes1/apci/26may00.pdf.

Biegler, L. T. (2007), ‘An overview of simultaneous strategies for dynamic optimization’, Che-mical Engineering and Processing pp. 1043–1053.

Brenan, K. E., Campbell, S. L. & Petzold, L. R. (1996), Numerical Solution of Initial-ValueProblems in Differential-Algebraic Equation, SIAM.

CasADi (2018a), ‘CasADi’, https://web.casadi.org/.

CasADi (2018b), ‘Welcome to CasADi’s documentation!’, https://web.casadi.org/docs/#document-daebuilder.

Chen, I.-L. & Fruehauf, P. S. (1990), ‘Consider imc tuning to improve controller performace’,Chem. Eng. Progress 86(10), 33.

63

64 Bibliografia

Diehl, M., Bock, H. G., Schlöder, J. P., Findeisen, R., Nagy, Z. & Allgöwer, F. (2002),‘Real-time optimization and nonlinear model predictive control of processes governed bydifferential-algebraic equations’, Journal of Process Control 12, 577–585.

Dunning, I., Huchette, J. & Lubin, M. (2017), ‘JuMP: A Modeling Language for MathematicalOptimization’, SIAM Review 59(2), 295–320.

Eaton, J. W. (2018a), ‘About (GNU Octave)’, https://www.gnu.org/software/octave/about.html.

Eaton, J. W. (2018b), ‘Differential-algebraic equations’, https://octave.org/doc/

interpreter/Differential_002dAlgebraic-Equations.html.

ESI, G. (2017), ‘scilab’, http://www.scilab.org/.

FreeMat (2018), ‘Freemat’, http://freemat.sourceforge.net/.

Froment, G. F. & Bischoff, K. B. (1990), Chemical Reactor Analysis and Design, second edn,John Wiley & Sons.

GAMS, D. C. (2018a), ‘Convert’, https://www.gams.com/latest/docs/S_CONVERT.html.

GAMS, D. C. (2018b), ‘Solver manuals’, https://www.gams.com/latest/docs/S_MAIN.html.

Geletu, A. (2011), ‘Introduction to differential algebraic equantion’, Ilmenau University of Te-chnology.

Guzel, N. & Bayram, M. (2006), ‘Numerical solution of differential-algebraic equations whitindex-2’, Applied Mathematics and Computation 174, 1279–1289.

Hairer, E., Lubich, C. & Roche, M. (1989), The Numerical Solution of Differential-AlgebraicSystems by Runge-Kutta Methods, Springer-Verlag.

Hairer, E. & Wanner, G. (1996), Solving Ordinary Differential Equations II, second edn, Sprin-ger.

Harney, D., Mills, T. & Book, N. (2013), ‘Numerical evaluation of the stability of stationarypoints of index-2 differential-algebraic equations: Applications to reactive flash and reactivedistillation systems’, Computers & Chemical Engineering 46, 61–69.

Hart, W. E., Laird, C. D., Watson, J.-P., Woodruff, D. L., Hackebeil, G. A., Nicholson, B. L. &Siirola, J. D. (2017), Pyomo–optimization modeling in python, Vol. 67, second edn, SpringerScience & Business Media.

Hindmarsh, A. C., Brown, P. N., Grant, K. E., Lee, S. L., Serban, R., Shumaker, D. E. & Wo-odward, C. S. (2005), ‘Sundials’, ACM Transactions on Mathematical Software 31(3), 363–396.

Kallrath, J. (2004), Modeling Languages in Mathematical Optimization, Kluwer Academic Pu-blishers.

Lawrence Livermore, N. L. (2018), ‘Sundials: Suite of nonlinear and differential/algebraicequation solvers’, https://computation.llnl.gov/projects/sundials.

Bibliografia 65

Modelica, A. (2018), ‘Modelica and the modelica association’, https://www.modelica.

org/.

Oliveira, N. M. C. d. (2006), Práticas de Computação, Imprensa da Universidade de Coimbra.

OpenModelica (2018), ‘OpenModelica’, https://www.openmodelica.org/.

Petzold, L., Krintz, C., Lotstedt, P. & Hellander, A. (n.d.), ‘Software - stochss’.

Process Systems Enterprise, L. (2018), ‘gPROMS’, https://www.psenterprise.com/

products/gproms.

Python, S. F. (2018), ‘The python standard library’, https://docs.python.org/2/library/index.html.

Sandia, N. L. L. (2014), ‘Pyomo online documentation 3.5’, software.sandia.gov/

downloads/pub/coopr/CooprGettingStarted.html.

Seborg, D. E., Edgar, T. F. & Mellichamp, D. A. (2004), Process Dynamics and Control, 2ndedn, John Wiley & Sons, Inc.

Stephanopoulos, G. (1984), Chemical Process Control - An Introduction to Theory and Prac-tice, Prentice-Hall International.

StochSS (2018), ‘Stochss - stochastic simulation service’, http://www.stochss.org/.

The MathWorks, I. (2018a), ‘Add-on product requirements & platform availability for R2018a’,https://www.mathworks.com/products/availability.html#ML.

The MathWorks, I. (2018b), ‘Simulink’, https://www.mathworks.com/products/

simulink.html.

The MathWorks, I. (2018c), Solve Differential Algebraic Equations (DAEs).

Vasantharajan, S. & Biegler, L. T. (1990), ‘Simultaneous strategies for optimization ofdifferential-algebraic systems with enforcement of error criteria’, Computers Chem. Engng.14(10), 1083–1100.

Vilarinho, I. L., Oliveira, N. M., Duarte, B. P. & Pereira, S. E. (2016), ‘Equation-based rigorousmodelling of the NOx absorption process: Model development and process optimization’,Computer Aided Chemical Engineering 38, 1479–1484.

Wikipedia (2018a), ‘Matlab’, https://en.wikipedia.org/wiki/MATLAB.

Wikipedia (2018b), ‘Modelica’, https://en.wikipedia.org/wiki/Modelica.

Wikipedia (2018c), ‘Simulink’, https://en.wikipedia.org/wiki/Simulink.

Wikipedia (2018d), ‘Wolfram mathematica’, https://en.wikipedia.org/wiki/Wolfram_

Mathematica.

Wolfram (2017), Wolfram Mathematica 11 Documetation.

Wolfram (2018a), ‘Numerical Solution of Differential-Algebraic Equations’, https://

reference.wolfram.com/language/tutorial/NDSolveDAE.html.

Wolfram (2018b), ‘Wolfram SystemModeler’, http://reference.wolfram.com/

Anexo ADesenvolvimento dos Índices deHessen-berg

A.1 Forma de Hessenberg - Índice 1Concideremos os sistema seguinte:

dxdt= f (t , x,z) (A.1)

0 = д(t , x, z) (A.2)

Com as seguintes condições iniciais:

0 = f (t0, x0, z0) (A.3)

0 = д(t0, x0, z0) (A.4)

Diferenciando a equação (A.2) em ordem ao tempo, obtem-se:

d

dt(0) = ∂д

∂xdxdt+∂д

∂zdzdt⇔ ∂д∂z

dzdt= −∂д∂x

dxdt

(A.5)

Caso que a matriz ∂д∂z seja invertivel, então:

dzdt= −

[∂д

∂z

]−1∂д

∂xdxdt

(A.6)

67

68 Desenvolvimento dos Índices de Hessenberg

Das equações (A.1) e (A.6), obteremos o sistema equivalente de ODEs:

dxdt= f (t ,x,z)

dzdt= −

[∂д

∂z

]−1∂д

∂xdxdt

A.2 Forma de Hessenberg - Índice 2Conciderando o seguinte sistema:

dxdt= f (t , x, z) (A.7)

0 = д(t , x) (A.8)

Com as condições inicias:

0 = f (t0, x0, z0) (A.9)

0 = д(t0, x0) (A.10)

Diferenciando a equação (A.8), em ordem ao tempo, fica-se:

d

dt(0) = ∂д

∂xdxdt

(A.11)

Substituindo, (A.7) em (A.11) obtem-se:

0 =∂д

∂xf (t ,x, z) (A.12)

Diferenciando a equação (A.12) em ordem ao tempo, obtem-se:

d

dt(0) = ∂д

∂x∂ f

∂xdxdt+∂д

∂x∂ f

∂zdxdt

(A.13)

Manipulando a equação (A.13), tem-se:

A.3 Forma de Hessenberg - Índice 3 69

∂д

∂x∂ f

∂zdxdt= −∂д∂x∂ f

∂xdxdt

(A.14)

Caso que as matrizes ∂д∂x e ∂ f∂z sejam invertiveis, pode-se isolar dxdt , ficando:

dxdt= −

[∂д

∂x

]−1 [∂ f

∂z

]−1∂д

∂x∂ f

∂xdxdt

(A.15)

Tendo em conta a equação (A.7) e a equação (A.15), obtemos um sistema equivalente de ODEs.

dxdt= f (t , x, z)

dzdt= −

[∂д

∂x

]−1 [∂ f

∂z

]−1∂д

∂x∂ f

∂xdxdt

A.3 Forma de Hessenberg - Índice 3Partindo do seguinte sistema:

dxdt= f (t , x, y, z) (A.16)

dydt= д(t , x, y) (A.17)

0 = h(t , y) (A.18)

Com as seguintes condições iniciais.

0 = f (t0, x0, y0, z0) (A.19)

0 = д(t0, x0, y0) (A.20)

0 = h(t0, y0) (A.21)

onde estas, têm de ser consistentes com o sistema.

Derivando a equação (A.18) em ordem do tempo, obtem-se:

d

dt(0) = ∂h

∂ydydt

(A.22)

70 Desenvolvimento dos Índices de Hessenberg

Substituindo a equação (A.17) em (A.22) fica-se com:

0 =∂h

∂y(д (t , x, y)) (A.23)

Diferenciando a equação (A.23) em ordem ao tempo, tem-se:

d

dt(0) = ∂h

∂y∂д

∂xdxdt+∂h

∂y∂д

∂ydydt

(A.24)

Substituindo a equação (A.16) em (A.24), fica-se:

0 =∂h

∂y∂д

∂x(f (t , x, y, z)) + ∂h

∂y∂д

∂ydydt

(A.25)

Derivando a equação (A.25) em ordem ao tempo, obtem-se:

d

dt(0) = ∂h

∂y∂д

∂x∂ f

∂xdxdt+∂h

∂y∂д

∂x∂ f

∂ydydt+∂h

∂y∂д

∂x∂ f

∂zdzdt

(A.26)

Manipulando a equação (A.26), fica-se:

∂h

∂y∂д

∂x∂ f

∂zdzdt= −

(∂h

∂y∂д

∂x∂ f

∂xdxdt+∂h

∂y∂д

∂x∂ f

∂ydydt

)(A.27)

Caso que as matrizes ∂h/∂y, ∂д/∂x e ∂ f/∂z sejam invertiveis, podemos isolar dz/dt . tendo:

dzdt= −

[∂h

∂y

]−1 [∂д

∂x

]−1 [∂ f

∂z

]−1 (∂h

∂y∂д

∂x∂ f

∂xdxdt+∂h

∂y∂д

∂x∂ f

∂ydydt

)(A.28)

Assim obtem-se o seguinte sistema equivalente de ODEs:

dxdt= f (t , x, y, z)

dydt= д(t , x, y)

dzdt= −

[∂h

∂y

]−1 [∂д

∂x

]−1 [∂ f

∂z

]−1 (∂h

∂y∂д

∂x∂ f

∂xdxdt+∂h

∂y∂д

∂x∂ f

∂ydydt

)

Anexo BEntradas para as diferentes classes noPyomo

B.1 Var

Na tabela B.1 está representada as declarações para a classe Var, assim como as circunstanciasonde se aplicam.

Tabela B.1 Declarações comuns para os componente Var (Hart et al. 2017).Palavra-Chave Descrição Valores aceites

reservado para especificar conjuntocom índices

qualquer conjunto de dados doPyomo ou listas do Python

within oudomain

especifica um domínio especificopara uma variável

qualquer conjunto de dados doPyomo , listas do Python ou função

bounds fornece a fronteira superior inferiora uma variável

um 2-tuple ou função

initialize fornece o valor inicial da variável valor escalar ou função

Estes declarações, são muitas vezes conjugadas (Hart et al. 2017).

71

72 Entradas para as diferentes classes no Pyomo

B.2 Objective

A tabela B.2 representa as declarações para a classe Objective.

Tabela B.2 Declarações comuns para os componente Objective (Hart et al. 2017).Palavra-Chave Descrição Valores aceites

reservado para especificar conjuntocom índices

qualquer conjunto de dados doPyomo ou listas do Python

expr fornece uma função objectivo qualquer expressão valida noPyomo

rule fornece uma função com regra paradefinir o objectivo

uma função que retorna do Pyomoou Objective.Skip

sense determina se o objectivo e maximi-zar ou minimizar (por default mini-miza)

minimize ou maximize

B.3 Constraint

A tabela B.3 representa as declarações para a classe Constraint.

Tabela B.3 Declarações comuns para os componente Constraint (Hart et al. 2017).Palavra-Chave Descrição Valores aceites

reservado para especificar conjuntocom índices

qualquer conjunto de dados doPyomo ou listas do Python

expr fornece uma função objectivo qualquer expressão com operadoreslógicos, um 2-tuple, 3-tuple

rule fornece uma função com regra paradefinir uma restrição

qualquer expressão com operado-res lógicos, um 2-tuple, 3-tuple, ouConstraint.Skip

B.4 Set 73

B.4 Set

A tabela B.4 representa as declarações para a classe Set.

Tabela B.4 Declarações comuns para os componente Set (Hart et al. 2017).Palavra-Chave Descrição Valores aceites

reservado para especificar conjuntocom índices

qualquer conjunto de dados doPyomo ou listas do Python

initialize fornece valores iniciais para as va-riáveis

Valor escalar ou função

withindomain

especifica o domínio ou valorespara uma variável

Pyomo set, listas Python função

ordered especifica se a ordem do sistemadeve ser preservada ou não

True/False

virtual especifica se o Set tem dados explí-citos

True/False

bounds fornece um limite superior e infe-rior ao conjunto de dados

2-tuple ou função

74 Entradas para as diferentes classes no Pyomo

B.5 Param

A tabela B.5 representa as declarações para a classe Param.

Tabela B.5 Declarações comuns para os componente Param (Hart et al. 2017).Palavra-Chave Descrição Valores aceites

reservado para especificar conjuntocom índices

qualquer conjunto de dados doPyomo ou listas do Python

initialize fornece valores iniciais para as va-riáveis

Valor escalar ou função

default fornece um valor caso que nenhumtenha sido atribuído

Valor escalar ou função

validate especifica uma função que é cha-mada para verificar se o valor é va-lido para o parâmetro

um função que retorne verdadeiroou falso dando um valor particular

mutable especifica se o parâmetro pode seralterado pós ter sido corrido o sol-ver

True/False