• Nenhum resultado encontrado

3. MODELO FENOMENOLÓGICO

4.2. Algoritmo IDP

4.2.1. Concepção Inicial da Metodologia IDP

A metodologia IDP foi inicialmente desenvolvida e testada por Luus (1989), e posteriormente refinada para reduzir o esforço computacional, tornando-a mais eficiente. Trata-se de um método de programação dinâmica iterativa, utilizado para a resolução de sistemas de equações diferenciais ordinárias. Todas as etapas que envolvem a implementação do algoritmo IDP serão apresentadas de maneira detalhada neste capítulo.

Para a formulação do problema, considere um sistema dinâmico contínuo descrito pelo seguinte vetor composto por equações diferenciais:

(

, t,

)

f dt d u x x = (4.1)

cuja condição inicial é dada pelo vetor de estado x (to), com dimensão vetorial (n X 1), e u é um vetor de controle com dimensão vetorial (m X 1) limitado por:

. m ,..., , i ui i i≤ ≤β =12 α (4.2)

Associado ao sistema há o índice de performance definido por uma função escalar onde o tempo final tf é especificado, representada por:

+ = f t t f f t , ,t dt t , I 0 ) ( )) ( ( ] ) 0 ( [ 0 x ψ x

φ

x u (4.3)

37

I0é o índice de performance.

Ψé uma matriz (n X m) da variável de estado x (pode inclusive ser nula).

φ é o integrando do índice de performance no algoritmo IDP.

Assim, o problema de controle ótimo é encontrar uma política de controle u(t) no intervalo to ≤ t < tf, tal que o índice de performance descrito pela equação (4.3), seja minimizado ou maximizado. Para um melhor entendimento do significado matemático da equação (4.3), observe as equações (5.3) e (5.4) na seção 5.4.1.

4.2.2 Construção dos Estágios de Tempo

Para fixar um problema através de uma sequência de estágios conforme requerido pela programação dinâmica, pode-se aproximar o problema de controle ótimo por implementar uma política de controle constante ao invés de uma política de controle contínua, para cada um dos P estágios de igual comprimento L. Deste modo, tem-se:

P t

L= f (4.4)

O índice de performance passa a ser aproximado por:

∑ ∫

= − + = P k t t f f k k dt t k , t t , I 1 0 1 ) ), 1 ( ( )) ( ( ] (0) [x ψ x

φ

x u (4.5)

cuja variável tk-1 é o tempo no início do estágio k e u(k – 1) é o controle constante no

intervalo de tempo tk-1 ≤ t ≤ tk. Assim, é possível considerar que o sistema está fixo para os pontos de cada grade nestes P estágios. Pode-se também usar uma aproximação linear e definir que os estágios não necessariamente tenham o mesmo comprimento de tempo L.

Uma alternativa bastante interessante para o intervalo de tempo foi proposta por

Bojkov e Luus (1984b), que introduziram uma variável normalizada de tempo τ da forma:

f

t

t

=

τ

(4.6)

com os valores discretizados para cada estágio P, representados por:

)

,...,

1

,

0

(k

P

P

k

k

=

=

τ

(4.7)

38

Desta maneira, todas as etapas possuem igual largura L dentro do domínio do tempo transformado, representada por:

P

L

=

1

(4.8)

Sendo assim, a formulação do problema descrita pela equação (4.1), se desejado, poderá ser reescrita para o intervalo τk ≤ τ ≤ τk+1, na forma de:

(

τ

)

τ f , , d d u x x = (4.9)

permanecendo constante o controle u(τk) dentro de cada intervalo de tempo.

4.2.3 Construção das Grades para a Variável de Estado x

Um exemplo de geração de grade para a variável de estado x com N = 5 trajetórias e P = 10 estágios, é mostrada pela Figura 4.1 (Schröder e Mendes, 1999):

Figura 4.1 Geração de Grades para a Variável de Estado x com N = 5 e P = 10. Para a construção da grade de pontos que formam cinco trajetórias diferentes a

partir de uma condição inicial única (Figura 4.1), é permitido que cada componente xi do

vetor de estado x assuma N valores sobre uma região si para cada estágio de tempo. Isto não se aplica ao primeiro estágio, que assume uma única condição inicial especificada.

Portanto, há Nn grades de pontos x para os estágios 2, 3..., P (ou seja, o número de

39

quais serão utilizadas durante o processo de integração. O ponto central da grade é assumido ser o melhor valor para x, obtido da iteração anterior.

4.2.4 Valores Permitidos para o Controle

É permitido para cada componente uj do vetor de controle u, assumir R valores

sobre uma região rj para cada estágio. Conforme mencionado anteriormente, o ponto

central é assumido ser o melhor valor da iteração anterior.

Se as restrições da equação (4.2) são violadas para o componente uj, a técnica

clipping é utilizada para substituir o valor do limite superior ou inferior de modo a garantir

que as restrições sejam respeitadas. Assim, há Rm valores permitidos para o vetor de

controle u (ou seja, R valores elevado ao número de m variáveis de controle uj), para cada grade de pontos para a variável de estado x. A geração da grade com R = 3 valores permitidos de controle u é ilustrada pela Figura 4.2 (Schröder e Mendes, 1999):

Figura 4.2 – Grade de Controle com R = 3 e Região Inicial da Grade de Estado.

4.2.5 Primeira Iteração

Dadas as condições iniciais x(0) escolhidas como o ponto central da grade x e as restrições especificadas pela equação (4.2), pode-se escolher o ponto central para a grade x e a faixa permitida para o controle, além da região rj.

40

4.2.6 Estágio P

Os cálculos devem começar pelo estágio P, o qual corresponde ao intervalo de tempo tf – L ≤ t ≤ tf (ou τ = 1 - 1/P). Para cada ponto da grade x devem ser avaliados os Rm valores para o índice de performance, como segue:

+

=

f L f t t f f

L),

]

(x(t

))

(

,

(P

),t)dt

t

(

[

I

0

x

1

ψ

φ

x

u

1

(4.10)

em que cada valor de controle permitido Rm é usado em u(P – 1) para a integração do

estágio P. Deve-se comparar os resultados obtidos com os Rm valores do índice de

performance e escolher o valor de u(P – 1) que forneça o maior (ou menor) valor de I0.

Este será o melhor controle a ser usado para aquele ponto da grade x em particular. A integração deste estágio é ilustrada na Figura 4.3 (Schröder e Mendes, 1999), por duas trajetórias (linhas verde e vermelha), que representam dois dos N = 5 pontos da grade de estado x, com Rm = 27 combinações de variáveis de controle.

Figura 4.3 – Integração Parcial no Estágio P (Último Estágio).

4.2.7 Estágio P 1

Deve-se agora retornar ao estágio P – 1 (penúltimo estágio), correspondente ao intervalo de tempo tf – 2L ≤ t ≤ tf – L (ou τ = 1 – 2/P). Para cada ponto da grade x, deve-se considerar Rm valores permitidos para o controle. No entanto, ao se integrar o sistema de equações (4.1) de tf– 2L até tf – L (ou τ = 1 – 2/P), é improvável que as variáveis de estado

41

x(tf – L) (ou τ = 1 – 1/P) sejam exatamente um dos pontos da grade do estágio P. Este problema em não alcançar exatamente o ponto da grade x é superado pela escolha da política de controle ótimo, correspondente ao ponto da grade mais próximo da variável de estado x(tf – L) (ou τ = 1 – 1/P), para a continuação da integração até tf (ou τ = 1). A integração deste estágio é ilustrada na Figura 4.4 (Schröder e Mendes, 1999), por duas trajetórias (linhas verde e vermelha), que representam dois dos N = 5 pontos da grade de estado x, com Rm = 27 combinações de variáveis de controle.

Figura 4.4 – Integração Parcial no Estágio P – 1 (Penúltimo Estágio).

4.2.8 Demais Estágios

Deve-se adotar o mesmo procedimento utilizado para a integração do estágio P – 1 para os estágios P – 2, P – 3, etc., (ou 1 – 2/P, 1 – 3/P, etc.,) até que o estágio inicial correspondente ao intervalo de tempo 0 ≤ t ≤ L (ou τ = 0) seja alcançado, e a grade consista somente da condição inicial x(0).

Devem ser comparados todos os valores obtidos para o índice de performance a

partir dos Rm valores, e escolhida a política de controle ótimo que forneça o maior (ou

menor) índice. A partir deste ponto, a primeira iteração é finalizada, sendo a trajetória ótima ilustrada pela linha verde na Figura 4.5 (Schröder e Mendes, 1999), representando

um dos N = 5 pontos da grade de estado x, com Rm = 27 combinações de variáveis de

42

ainda poderá estar longe do ótimo, havendo a necessidade de novas iterações além da primeira ilustrada pela linha verde.

Figura 4.5 – Escolha da Trajetória Ótima Obtida ao Final da Primeira Iteração.

4.2.9 Iterações com Redução Sistemática no Tamanho da Região

A trajetória obtida pela primeira iteração fornece o ponto central para a grade x e a política de controle ótimo u para cada estágio. As regiões si e rj são contraídas por uma pequena porcentagem para ajustar a resolução dos resultados a cada iteração, até que o ótimo global seja atingido.

4.2.10 Passos do Algoritmo IDP

De modo a facilitar o entendimento dos passos que compõem o algoritmo IDP, será ilustrada a implementação prática da variável de estado x, que representa a reação de polimerização do MMA, objeto de estudo deste trabalho, com os dados reais utilizados durante as corridas de otimização.

O algoritmo IDP é composto pelos seguintes passos descritos a seguir:

Passo 1: Dividir o intervalo de tempo [to, tf] (ou τ = [0, 1]) em P grades de tempo, com igual comprimento L.

43

• Tempo inicial da reação: to = 0 min; • Tempo final da reação: tf = 350 min; • Número de estágios: P = 5;

• Comprimento de cada estágio: L = tf / P = 70 min;

Passo 2: Escolher o número de valores u de forma randômica ou uniforme para a grade de

controle R, uma política de controle inicial u(0), o tamanho da região inicial de controle rin, o fator de contração γ usado após cada iteração e o número N de pontos para a grade x. Condições adotadas no Passo 2 para a otimização da reação de polimerização do MMA:

• Número de valores randômicos a serem gerados: R = 3;

• Condição inicial para a vazão do líquido de resfriamento Fcw: u(0) = 1,45x10-5 m3/s; • Tamanho da região inicial de controle: rin = 0 a 2,9x10-5 m3/s;

• Fator de contração da região de controle a cada passo: γ = 0,9; • Número de pontos para a grade x: N = 2;

Passo 3: Escolher o número total de iterações a ser usado em cada sequência de otimização

e fixar o número de iteração inicial para j = 1.

Condições adotadas no Passo 3 para otimização da reação de polimerização do MMA: • Número total de iterações: j = 5;

Passo 4: Fixar o tamanho do vetor da região de controle para rj = rin.

Condições adotadas no Passo 4 para a otimização da reação de polimerização do MMA: • Tamanho do vetor da região de controle para Fcw: rj =0 a 2,9x10-5 m3/s.

Obs. A potência de aquecimento do reator Q não foi selecionada como variável de controle dentro do algoritmo IDP por funcionar através de um sistema on/off . Portanto, ela só pode assumir dois valores (0.075 e 0.045 kJ/s ) durante a otimização e não faz sentido produzir valores randômicos para Q se não serão utilizados.

Passo 5: A geração das trajetórias tem início neste Passo 5. Pelo uso da melhor política de

controle (usar a política inicial u(0) = 1,45x10-5 m3/s para a primeira iteração), integrar as equações de t = to até t = tf (ou de τ = 0 até τ = 1) N vezes, com diferentes valores de

44

controle u, para gerar N trajetórias de x. Armazenar os valores de x ao final de cada estágio

x(k – 1), de modo que este valor corresponda ao valor de x no início do próximo estágio k, até que o último estágio (P) seja atingido.

Condições adotadas no Passo 5 para a otimização da reação de polimerização do MMA:

• Para a primeira iteração, foi usado u(0) = Fcw =1,45x10-5 m3/s como condição

inicial e realizada a integração das duas grades x de valores randômicos, gerando-se duas trajetórias iniciais, de forma similar às cinco grades ilustradas na Figura 4.1.

• Um exemplo dos valores para a variável de controle u (ou Fcw) escolhidos

randomicamente para a formação da grade de controle (Figura 4.2), utilizados na segunda iteração são mostrados no Quadro 4.1.

• Os valores da variável de estado x escolhidos randomicamente de forma crescente dentro das regiões permitidas para a formação de uma única grade x, de forma similar às cinco grades ilustradas na Figura 4.1, são mostrados no Quadro 4.2. • O método IDP indica que não se deve gerar valores randômicos para o índice de

performance, uma vez que este assume o valor máximo (ou mínimo) após a comparação com o resultado da integração anterior em cada estágio P. Este fato justifica os valores nulos do Quadro 4.2, para x15 = I0 = 0 nos estágios P1 a P5. • Ao final da integração em cada estágio P, os melhores valores da grade x obtidos

pela integração com os diferentes valores de controle uj (Quadro 4.1) são

armazenados, formando o equivalente a dois quadros de resultados similares ao Quadro 4.2 (que mostra os valores randômicos de x), uma vez que N = 2 foi escolhido. Ao final do processo de integração de cada iteração, terão sido formadas duas grades x com R = 3 e P = 5 estágios.

Quadro 4.1 - Matriz de Valores Randômicos de Controle uj para R = 3 e P = 5.

uj (Fcw em m3/s) P1 P2 P3 P4 P5

u1 1,45x10-5 0,45x10-5 1,35x10-5 1,05x10-5 0,05x10-5

u2 1,73x10-5 1,18x10-5 2,05x10-5 2,9x10-5 0,01x10-5

u3 2,15x10-5 2,45x10-5 1,45x10-5 1,75x10-5 0,36x10-5

45

Quadro 4.2 – Valores Randômicos xi para a Formação de uma Grade N com R = 3 e P = 5.

xi (Variável de Estado) P1 P2 P3 P4 P5 x1 (I em kmol/m3) 0,0067 0,0071 0,0102 0,0123 0,0184 x2 (M em kmol/m3) 0,0455 0,2134 0,4305 0,6782 0,7078 x3 (R) 0 0,0001 0,0003 0,0008 0,0013 x4 (S em kmol/m3) 0,2889 0,8965 1,7098 1,9887 2,2760 x50 em kmol/m3) 0 0,0004 0,0007 0,0017 0,0019 x61 em kmol/m3) 0,0002 0,0006 0,0014 0,0017 0,0027 x72 em kmol/m3) 0,0007 0,0019 0,0023 0,0033 0,0038 x80 em kmol/m3) 0,0009 0,0010 0,0021 0,0023 0,0032 x91 em kmol/m3) 0,0016 0,00017 0,0023 0,0033 0,0035 x102 em kmol/m3) 0,0001 0,0005 0,0013 0,0023 0,0018 x11 (ζm em kmol/m3) 0,0117 0,0927 0,1489 0,2517 0,5508 x12m1 em kmol/m3) 0 0,1359 0,4265 0,5567 0,6044 x13 (T em K) 332,2 333,7 334,1 335,6 336,0 x14 (Tj em K) 301,5 302,3 303,2 303,6 304,1 x15 (I0 = Mn, Mw ou Xm) 0 0 0 0 0

Passo 6: Iniciar pelo último estágio chamado P, correspondente ao tempo tf – L (ou τ = 1 –1/P). Para cada valor N armazenado ao final do penúltimo estágio x(P – 1) do

Passo 5, integrar as equações de tf – L até tf (ou de τ = 1 – 1/P até τ = 1), com cada um dos

R valores permitidos para o vetor de controle u, calculados pela equação:

u(P – 1) = u*j(P – 1) + Drj (4.7)

cuja variável u*j(P – 1) é o melhor valor obtido na iteração anterior e D é uma matriz

diagonal de diferentes números randômicos entre –1 e 1 para u. Escolher a melhor política de controle u que maximize (ou minimize) o índice de performance e armazenar esse valor como u(P – 1). Assim, têm-se a melhor política de controle para cada um dos N pontos da grade.

Condições adotadas no Passo 6 para a reação de polimerização do MMA:

• Considerando-se as duas grades armazenadas no final do penúltimo estágio do Passo 5 como valores iniciais de x do último estágio, as equações foram integradas para cada uma das duas grades de t0 = 280 min até tf = 350 min, com os valores ui calculados pela equação (4.7), representando novos valores para a coluna P5 do Quadro 4.2. Ao final de todas as integrações do Passo 6, das seis grades obtidas durante a integração pelas combinações de diferentes valores de x e u, foram

46

armazenadas somente duas grades x e duas variáveis de controle u que forneceram

o máximo valor do índice de performance (x15). Estas duas grades podem ser

representadas de forma similar as duas grades ilustradas na Figura 4.3 (linhas verde e vermelha).

Passo 7: Retornar ao penúltimo estágio P – 1, correspondente ao tempo tf – 2L (ou τ = 1 – 2/P). Para cada N ponto da grade, escolher um grupo de R valores permitidos

para u(P – 2). Como no Passo 6, tomar como estado inicial os valores x(P – 2) armazenados no final do antepenúltimo estágio do Passo 5, e integrar as equações do sistema de tf– 2L até tf– L (ou de τ = 1 – 2/P até τ = 1 – 1/P), uma vez para cada um dos R valores permitidos para o controle. Para continuar a integração do penúltimo até o último estágio, ou seja, de tf– L até to (ou de τ = 1 – 1/P até τ = 1), escolher o controle do Passo 5

que corresponde ao ponto da grade de tempo mais próximo a x para tf - L. Comparar os

diferentes valores do índice de performance I0 e armazenar a política de controle u(P – 2) que fornece o máximo (ou mínimo) valor de I0.

Condições adotadas no Passo 7 para a otimização da reação de polimerização do MMA: • Considerando-se as duas grades armazenadas no final do antepenúltimo estágio do

Passo 5 como valores iniciais de x do penúltimo estágio, o sistema de equações foi integrado de t0 = 210 min até tf = 280 min (início do último estágio) para cada uma

das duas grades com os valores três valores randômicos ui calculados pela equação

(4.7), representando novos valores para a coluna P4 do Quadro 4.2. Ao final de todas as integrações do Passo 7, das seis grades obtidas durante a integração pela combinação de diferentes valores de x e u, foram armazenadas somente as duas grades e as duas variáveis de controle u que forneceram o máximo valor do índice de performance (x15). Para a continuação da integração t0 = 280 min até tf = 350 min (final do último estágio), foi calculado o seguinte erro em relação ao índice de performance, a partir das duas grades armazenadas no Passo 5:

Erro = x15 (final estágio P4) – x15(início do estágio P5) (4.8)

Assim, foi escolhida entre as duas grades, aquela que forneceu o menor valor calculado para o Erro, podendo ser ilustrada pela linha verde da Figura 4.4, que indica uma melhor trajetória do que a linha vermelha.

47

Passo 8: Continuar o procedimento do Passo 7 até que o primeiro estágio correspondente

ao tempo inicial t = to (ou τ = 0), seja alcançado. Este estágio possui somente uma única grade de pontos, desde que as condições iniciais sejam especificadas. Da mesma forma que anteriormente, comparar os R valores do índice de performance e armazenar o controle u(0) que dá o maior (ou menor) índice de performance. Armazenar também a trajetória de x correspondente, a qual completa uma iteração.

Condições adotadas no Passo 8 para a otimização da reação de polimerização do MMA: • A trajetória de x ao final do processo de integração, desde o início do primeiro

estágio P1 até o final do último estágio P5 pode ser ilustrada pela linha verde da Figura 4.5.

Passo 9: Reduzir o tamanho da região permitida para o controle como segue:

r(j+1) =γ.r( j)

(4.9)

cuja variável j é o índice para contabilizar o número de iterações. Use a melhor política de controle do Passo 8 como ponto médio para os valores permitidos para o controle, denotados pelo sobrescrito * na equação (4.7). Quando se deseja adotar uma faixa com amplitude fixa para a variável de controle, o Passo 9 pode ser descartado.

Condições adotadas no Passo 9 para a otimização da reação de polimerização do MMA: • Como a faixa da variável de controle u utilizada durante as corridas experimentais

(Nunes, 2004) possui uma amplitude fixa que varia de 8x10-6 a 26,7x10-5 m3/s, não foi adotado o Passo 9 do algoritmo IDP para a redução da região de controle.

Passo 10: Incrementar o índice de iteração j por 1. Ir ao Passo 5, continuar o procedimento

para um número especificado de iterações e verificar se os resultados obtidos são satisfatórios, ou continuar até que a convergência seja atingida mediante algum critério pré- estabelecido. Para determinados tipos de problemas que requerem alta precisão, pode ser necessária uma ou mais repetições desta sequência de integração, para se obter um melhor refinamento do resultado obtido.

48

Figura 4.6 – Fluxograma de Otimização IDP.

Como ponto de partida para a implementação e otimização desses passos que compõem o algoritmo IDP, as variáveis envolvidas são distribuídas da seguinte maneira:

• Variáveis de entrada: o tempo de reação, a concentração do iniciador, a concentração do solvente, a concentração do monômero, a temperatura inicial do meio reacional, a temperatura da jaqueta, a vazão de entrada e a temperatura do líquido de resfriamento.

(A) Calcule o comprimento de cada estágio: L = tf / P

(B) Escolha o número de estágios P, valores randômicos R para u e grades N para x.

(C) Escolha os valores iniciais: uj , rj, γ e j.

(D) Usando uj inicial, integre as equações do sistema de t=0 a t = tf, para gerar N grades de x.

Armazene os valores de x no início de cada estágio k. Por exemplo, o valor de x no final do penúltimo estágio corresponderá ao valor de x no início do último estágio (Figura 4.1).

(E) Integre as equações do sistema para o último estágio, usando as N grades de x armazenadas no final do penúltimo estágio no item (D), para cada valor de R. Armazene os valores iniciais de u e x do último estágio que resultaram no maior valor de I0 (Figura 4.3).

(F) Integre as equações do sistema para o penúltimo estágio, usando as N grades de x armazenadas no final do antepenúltimo estágio no item (D), para cada valor de R. Armazene os valores iniciais de u e x do penúltimo estágio que resultaram no maior valor de I0 (Figura 4.3). Calcule o erro

(diferença) entre os valores de x do final do penúltimo estágio com os valores de x das grades N armazenadas no início do último estágio. Para continuar a integração do último estágio, use a grade

N do início do último estágio que resultou no maior valor de I0 (Figura 4.4).

(G) Continue o procedimento do item (F) até atingir o primeiro estágio em t = 0. Compare os valores do índice de performance e armazene u(0) e x(0) que resultaram no maior valor de I0

(Figura 4.5), finalizando a primeira iteração.

(H) Reduza a área de busca: ri(j+1) = γ.ri(j) onde j é o índice de iteração. Use o valor u armazenado

no item (G) como ponto médio (u* na equação 4.7) para a determinação de novos valores randômicos em cada estágio, e retorne ao item (D). Repita este procedimento por um determinado número de iterações até que I0 seja satisfatório ou a convergência seja atingida.

49

• Variáveis de saída: massa molar numérica, massa molar média e taxa de conversão

do monômero, que representaram de forma individual o índice de perfomance I0,

dependendo do que se desejava maximizar durante as corridas de otimização.

Os valores iniciais dessas variáveis serão alimentados no algoritmo IDP para o início da otimização e as variáveis de saída, além de serem retro-alimentadas neste algoritmo serão utilizadas como parâmetros de convergência para a otimização.

50

5. IMPLEMENTAÇÃO DA METODOLOGIA IDP

5.1 Introdução

Este capítulo aborda de forma detalhada, as etapas que envolveram o desenvolvimento de um programa em Matlab, para a implementação da metodologia IDP. Descreve a etapa de comparação de resultados do programa por meio da otimização de um exemplo da literatura especializada, e pela otimização do modelo fenomenológico da reação de polimerização do MMA, em comparação com dados experimentais de trabalhos anteriores (Nunes (2004); Antunes et al. (2005)). O capítulo é finalizado pela apresentação dos recursos computacionais necessários à implementação do programa.

5.2 Escolha do Software Matlab

Várias aplicações da metodologia IDP encontradas na literatura se utilizam de tradicionais linguagens computacionais, como por exemplo, o Fortran, desde suas versões iniciais até as mais recentes como o Visual Fortran. Ao contrário das linguagens Fortran, C e C++ dentre outras, determinadas linguagens apresentam problemas de interface ou incompatibilidade de comunicação com os softwares e equipamentos de medição mais modernos, impossibilitando até a sua aplicação on line para a otimização de processos.

Embora o foco inicial deste trabalho seja a otimização off line, futuramente, os novos estudos poderão considerar a otimização on line da reação de polimerização do MMA. Assim, o software escolhido para o desenvolvimento do programa IDP foi o

Matlab. Essa escolha é justificada principalmente pela experiência do autor deste trabalho na manipulação deste software. Além disso, trata-se de uma ferramenta computacional que

Documentos relacionados