A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Universidade Federal do Rio de Janeiro

Apresentações semelhantes


Apresentação em tema: "Universidade Federal do Rio de Janeiro"— Transcrição da apresentação:

1 Universidade Federal do Rio de Janeiro
COPPE – Programa de Engenharia Química OTIMIZAÇÃO DE PROCESSOS  Prof. Argimiro R. Secchi  AULA 4: - Otimização com restrição 2019

2 Otimização com restrição
min S(x) sujeito a: hj(x) = 0 , j = 1, 2, ..., m gj(x)  0 , j = 1, 2, ..., p x  X  n KKT 1ª ordem: xL(x*, *, *) = S(x*) + (*)T h(x*) + (*)T g(x*) = 0 h(x*) = g(x*)  0 *  j* gj(x*) = 0 , j = 1, 2, ..., p KKT 2ª ordem: dT L(x*, *, *) d  0 Thi(x*) d = 0 , i = 1, 2, ..., m Tgj(x*) d = 0 para as gj(x*) ativas {gj(x*) = 0 e j* > 0} Tgj(x*) d  0 para as gj(x*) ativas {gj(x*) = 0 e j* = 0}

3 Programação linear: min S(x) = cT x sujeito a: A x  b x  0 Programação quadrática: min S(x) = cT x + ½ xT Q x Programação não-linear: min S(x) sujeito a: hj(x) = 0 , j = 1, 2, ..., m gj(x)  0 , j = 1, 2, ..., p

4 Formulação PRIMAL Formulação DUAL Função Dual

5 Espaço Primal Espaço Dual

6 Determinação da direção de busca: dk
Métodos de Otimização xk+1 = xk + xk xk+1 = xk + k dk Determinação da direção de busca: dk Caminho viável (feasible path): xk+1  K = {x  X  n / h(x) = 0, g(x)  0} Caminho inviável (unfeasible path): xk+1  X  n Direção d promissora: TS(xk) d < 0  S(xk +  d) < S(xk),  > 0 S’(xk,d) = TS(xk) d (derivada direcional) Busca em linha (linesearch): min S(xk +  dk)  k  Otimização monovariável

7 Otimização com Simuladores de Processo
min S(x,u) sujeito a: hj(x,u) = 0 , j = 1, 2, ..., m gj(x,u)  0 , j = 1, 2, ..., p x  X  m u: variáveis especificadas (condições operacionais ou parâmetros de projeto) Caminho viável min S[x(u),u] sujeito a: gj(x(u),u)  0 , j = 1, 2, ..., p x(u)  {x  X  m / h(x,u) = 0} ux = uh [xh] JT(x,u) = xh Otimizador x(u) ux u Simulador

8 Programação Linear min S(x) = cT x sujeito a: A x  b x  0
Região de busca: formada por interseções de hiperplanos, dados pelas restrições lineares, A x  b e x  0, gerando um poliedro convexo, isto é, um conjunto P = {x / A x  b e x  0} de vetores no n. 2 x1 + x2  8 4 x1 + x2  10 x1  0 e x2  0 e

9 Programação Linear “O ótimo de uma função linear em um poliedro convexo P  n é obtido em no mínimo um vértice. Se ele é obtido em mais de um vértice, então ele é obtido em todos os pontos pertencentes a combinação convexa destes vértices”. prova: sejam x1, x2, ..., xp, os vértices do poliedro P, então, fazendo: e sabendo que  x  P pode ser obtido pela combinação convexa:

10 Programação Linear Exemplo 4.1: min S(x1, x2) = 6 x1  2 x2
sujeito a 2 x1 + x2  8 4 x1 + x2  10 x1  0 e x2  0 Métodos Conjuntos Ativos (Active Sets) Ponto Interior

11 Método Simplex (active sets)
Programação Linear Método Simplex (active sets) min S(x) = cT x sujeito a: A x  b x  0 Inclusão de variáveis de folga, fi  0 (i = 1, 2, ..., m, restrições de desigualdade): A x  b  A x + f = b, b  0 A x  b  A x  f = b, b  0 gerando um sistema subdeterminado de m equações com p = n+m variáveis. Necessário especificar n variáveis (não básicas) para obter as demais (variáveis básicas) em função dessas (GL = n). Vértice viável: variáveis não básicas = 0  variáveis básicas  0 Vértice inviável: variáveis não básicas = 0  variáveis básicas < 0

12 Método Simplex (active sets)
Programação Linear Método Simplex (active sets) Sistema de equações lineares: B y = d Algoritmo SIMPLEX (xo = 0) 1) Se ci  0  i = 1,2,...,n, então a solução ótima foi encontrada, bastando igualar a zero as variáveis não básicas e resolver o sistema B y = d. FIM. 2) Pivotamento: identificar o k-ésimo elemento da linha m+1 da matriz B com o menor valor (corresponde ao índice da variável que causa a maior redução da função objetivo). A k-ésima variável será incluída na base. Identificar o s-ésimo elemento do vetor bi / ai,k com menor valor positivo (corresponde à restrição mais próxima, e valores negativos não violam a restrição com o aumento da k- ésima variável). A s-ésima variável de folga será removida da base. 3) Eliminação de Gauss-Jordan: executar as operações elementares na matriz B (para levar de uma solução básica para outra), tomando como elemento pivô: as,k e (ir para 1).

13 Programação Linear Resolvendo o Exemplo 4.1 pelo Método Simplex:
min S(x1, x2) = 6 x1  2 x2 sujeito a 2 x1 + x2  8 4 x1 + x2  10 x1  0 e x2  0 Variáveis não básicas finais: f1 = 0 e f2 = 0  x1 = 1 , x2 = 6 e S(x) = 18 Multiplicadores de Lagrange

14 Método Simplex: Primal (m < n) e Dual (m > n)
Programação Linear Função de Lagrange para o problema de programação linear: L(x,,) = cT x + T (A x  b)  T x = (cT + T A  T) x  T b xL(x*,*,*) = c + AT *  * =   0 e   0 L(x*,*,*) = (*)T b = (*) = S(x*) = cT x* bS(x*) = * (shadow prices) c(*) = x* Primal Dual min S(x) = cT x sujeito a: A x  b x  0 max () = bT  sujeito a: AT   c   0 Usando o conceito de variável de folga: f = b  A x  0 e  = c + AT   0 Método Simplex: Primal (m < n) e Dual (m > n)

15 Programação Linear Exercício 26: Utilização dos softwares OCTAVE e MATLAB para aplicação do algoritmo Simplex para Programação Linear. MATLAB: A = [2 1; 4 1]; b = [8; 10]; c = [-6; -2]; lb = [0;0]; ub = []; op=optimset('linprog'); op=optimset(op,'LargeScale','off'); [x,S,eflagx,outpx,mx]=linprog(c,A,b,[],[],lb,ub,[],op) % PRIMAL [u,FI,eflagu,outpu,mu]=linprog(b,-A',c,[],[],lb,ub,[],op) % DUAL OCTAVE: ( < 0 na minimização) ctype="UU"; % A x <= b vtype="CC"; % continuous variables xtype=1; % minimization utype=-1; % maximization param.lpsolver = 1; % active set: simplex [x,S,eflagx,outx]=glpk(c,A,b,lb,ub,ctype,vtype,xtype,param) % PRIMAL [u,FI,eflagu,outu]=glpk(-b,-A',c,lb,ub,ctype,vtype,utype,param) % DUAL

16 Programação Linear Subject to: (A) (B) (C)

17 Programação Linear Exercício 27: Utilização dos softwares OCTAVE e MATLAB para resolução do problema de otimização da refinaria pelo algoritmo Simplex. MATLAB: c=[8.1; 10.8]; A=[ ; ; ]; b=[24000; 2000; 6000]; lb=[0;0]; ub=[]; x0=[0; 0]; op=optimset('linprog'); op=optimset(op,'LargeScale','off'); [x,S,eflag,outx,mx]=linprog(-c,A,b,[],[],lb,ub,x0,op) OCTAVE: ( < 0 na minimização) lb=[0;0]; ub=[]; ctype="UUU"; % A x <= b vtype="CC"; % continuous variables ptype=-1; % maximization param.lpsolver = 1; [x,S,eflag,outx]=glpk(c,A,b,lb,ub,ctype,vtype,ptype,param)

18 Aumento de capacidade +10% na produção de gasolina b1 = 26400
S = b1 1 = 2400  4,6552 = 11172,41 +10% na produção de querosene b2 = 2200 S = b2 2 = 200  87,5172 = 17503,45

19 Limite no aumento de capacidade
+20% na produção de querosene b2 = 2400 S = b2 2 = 400  87,5172 = 35006,90 S = 18651,22 (valor correto) 2 = 0 (restrição inativa) b2,max = 18651,22 / 87,5172 = 213,11 (10,66%)

20 Programação Linear Exercício 28: Utilização dos softwares OCTAVE e MATLAB para resolução do problema de otimização de um cracker pelo algoritmo Simplex (Edgar & Himmelblau, p. 484). MATLAB e OCTAVE: cracker.m

21 Programação Linear (conceito de custo reduzido)
min S(x) = sujeito a: B xB + N xN = b xB  0, xN  0, b  0 xT = [xB ¦ xN] , xB  m (vetor básico) e xN  n (vetor não básico) A = [B ¦ N] , B  mm (matriz base) e N  nn (matriz não básica) cT = [cB ¦ cN] , cB  m e cN  n são os coeficientes da função objetivo xB = B1 b  B1 N xN custo ou gradiente reduzido Usado para determinar qual a variável não básica se tornará básica (coluna pivô).

22 Método do Ponto Interior
Programação Linear Método do Ponto Interior min S(x) = cT x sujeito a: A x = b x  0 (incluindo var. folga) d = S(x) = c = dp + dr  = {dp  n | A dp = 0} (espaço nulo) R = {dr  n | dr = AT ,   m} =  (dr)T dp = e dp = d  dr = d  AT  T A (d  AT ) = 0  = (A AT)1 A d dp = d  AT (A AT)1 A d = P d P = I  AT (A AT)1 A (matriz de projeção)

23 Método do Ponto Interior
Programação Linear Método do Ponto Interior min S(x) = cT x sujeito a: A x = b x  0 xk+1 = xk + k dk A xk = b (ponto viável) A xk+1 = b (ponto viável) A (xk+1  xk ) = 0 = k A dk  A dk = 0  dk = dp Método de Dikin (1987) ou Karmarkar (1984) ou Mehrotra (1992): Transforma-se o espaço para levar xk para o centróide do poliedro y = D-1 x D = diag(xk)

24 Método do Ponto Interior
Programação Linear Método do Ponto Interior A x = b = A DD1 x = A D y S(y) = cT DD1 x = cT D y min S(y) = cT D y sujeito a: A D y = b y  0 O tamanho do passo na direção dp é obtido de modo a obter o maior avanço sem tornar a solução inviável, isto é: * =   max { > 0 | xk +  dp  0} =   min { | dpi < 0, i = 1,..., n} 0 <  < 1 é um fator de segurança para que os pontos permaneçam no interior da região viável (usualmente   [0,9 0,9999]).

25 Método do Ponto Interior
Programação Linear Método do Ponto Interior Exemplo 4.2: considere o problema min S(x) = x1 + 2 x2 + 3 x3 sujeito a x1 + x2 + x3 = 1 x  0 com xo = [1/3 1/3 1/3]T e x* = [1 0 0]T. A = [ ] b = 1 c = [ ]T P = I  AT (A AT)1 A = dp = P d = P c = [1 0 1]T

26 Método do Ponto Interior
Programação Linear Método do Ponto Interior 0 =   min { | dpi < 0, i = 1,..., n} =   1/3 Usando um valor  = 0,98, tem-se o ponto x1 = [1,98/3 1/3 0,02/3]T, ilustrado na figura pelo ponto da fronteira [2/3 1/3 0]T. Assim, na próxima iteração a matriz de escalonamento é dada por D = diag(1,98/3, 1/3, 0,02/3). Exercício 29: Utilização dos softwares OCTAVE e MATLAB para aplicação do algoritmo de Karmarkar para Programação Linear. MATLAB e OCTAVE: c=[1; 2; 3]; A=[ ]; b=1; x0=[1/3; 1/3; 1/3]; plot3([1;0;0;1],[0;1;0;0],[0;0;1;0],'-b'); hold on [xo,Ot,nS,lambda]=karmarkar(c,x0,A,b,[],[],1,0.98)

27 Método do Ponto Interior
Programação Linear Método do Ponto Interior Exercício 30: Utilização dos softwares OCTAVE e MATLAB para resolução do problema de otimização da refinaria pelo algoritmo de Mehrotra. MATLAB: c=[8.1; 10.8]; A=[ ; ; ]; b=[24000; 2000; 6000]; lb=[0;0]; ub=[]; x0=[0; 0]; op=optimset('LargeScale','on','Display','iter','MaxIter',100,'TolFun',1e-4); [xi,Si,eflagi,outi,mxi]=linprog(-c,A,b,[],[],lb,ub,[],op) OCTAVE: ( < 0 na minimização) lb=[0;0]; ub=[]; ctype="UUU"; % A x <= b vtype="CC"; % continuous variables ptype=-1; % maximization param.lpsolver = 2; [xi,Si,eflagi,outi]=glpk(c,A,b,lb,ub,ctype,vtype,ptype,param)

28 Método do Ponto Interior
Programação Linear Método do Ponto Interior Exercício 31: Utilização do software EMSO para resolução de um problema de otimização de um turbo-gerador pelo método do ponto interior (Edgar & Himmelblau, p. 435, exemplo 11.4). Arquivo power_system.mso.

29 Programação Quadrática
min S(x) = cT x + ½ xT Q x sujeito a: A x  b x  0 Lembrando que: xT M x é um escalar  xT M x = [xT M x]T = xT MT x xT M x = xT Q x

30 Programação Quadrática
Função de Lagrange L(x, , ) = cT x + ½ xT Q x + T (A x  b)  T x xL(x, , ) = c + Q x + AT    KKT de 1ª ordem com a inclusão das variáveis de folga: A x + f  b = 0 c + Q x + AT    = 0 T f = 0, T x = 0 (ou T f + T x = 0) x  0, f  0,   0,   0 Multiplicando a segunda equação por x/2: (c + Q x + AT   )T  x/2 = 0  ½ xT Q x = ½ (T x  T A x  cT x) Substituindo as demais condições: A x = b  f , T x = 0 e T f = 0 ½ xT Q x =  ½ (T b + cT x)

31 Programação Quadrática
Substituindo na função objetivo: S(x) = cT x + ½ xT Q x minmax S(x, f, , ) = ½ (cT x  T b) sujeito a: A x + f  b = 0 c + Q x + AT    = 0 x  0, f  0,   0,   0 (min x e f, max  e ) Que pode ser reorganizado na forma: min S(x) = cT x sujeito a: A x = b x  0 com cT = ½ [cT ¦ 0m ¦ bT ¦ 0n] xT = [xT ¦ fT ¦ T ¦ T]  2p bT = [bT ¦ cT]

32 Programação Quadrática
Substituindo ½ xT Q x na função de Lagrange, resulta: L(x, f, , ) = ½ (cT x  T b)  ½ (T f + T x) Observa-se que o gap dual é dado por: ½ (T f + T x) Exemplo 4.2: min sujeito a 2 x1 + x2  8 4 x1 + x2  10 x1  0 e x2  0

33 Programação Quadrática
MATLAB: Q1=[8 0;0 16]; c=[-6; -2]; A=[2 1;4 1]; b=[8; 10]; lb=[0; 0]; ub=[]; op=optimset('LargeScale','off'); [x1,s1,ex,out,lambda1]=quadprog(Q1,c,A,b,[],[],lb,ub,[],op) Q2=[2 0;0 4]; c=[-6; -2]; A=[2 1;4 1]; b=[8; 10]; lb=[0; 0]; ub=[]; [x2,s2,ex,out,lambda2]=quadprog(Q2,c,A,b,[],[],lb,ub,[],op)

34 Programação Quadrática
Método do Ponto Interior min S(x) = cT x + ½ xT Q x sujeito a: A x = b x  0 (incluindo var. folga) d = S(x) = c  Q x = dp + dr  = {dp  n | A dp = 0} (espaço nulo) R = {dr  n | dr = AT ,   m} =  (dr)T dp = e dp = d  dr = Q-1d  Q-1AT  T A (Q-1 d  Q-1AT ) = 0  = (A Q-1AT)1 A Q-1 d dp = Q-1 d  Q-1 AT (A Q-1 AT)1 A Q-1 d = P d P = Q-1  Q-1AT (A Q-1AT)1 A Q-1 (matriz de projeção)

35 Reconciliação de Dados
Dados medidos em plantas químicas são, inevitavelmente, corrompidas por erros durante a aquisição, o processamento e a transmissão do sinal. O erro total presente em uma medida pode ser convenientemente representado como a soma das contribuições de dois tipos de erros: os erros aleatórios e os erros grosseiros.

36 Reconciliação de Dados
A reconciliação de dados é uma técnica usada para reduzir o efeito dos erros aleatórios e aumentar a precisão das medidas do processo. Basicamente, consiste em ajustar as medidas originais de modo que as relações existentes entre variáveis, tais como balanços de massa e energia, sejam respeitadas. É fundamental que as medidas originais a serem ajustadas estejam livres de erros grosseiros  detecção de erros grosseiros

37 Reconciliação de Dados
Exemplo: trocador de calor com by-pass Modelo: x1 – x2 – x3 = 0 x2 – x4 = 0 x3 – x5 = 0 x4 + x5 – x6 = 0 Medidas: yi = xi + ei, i = 1, 2, ..., 6 em que ei é o erro aleatório na medida yi. 37

38 Reconciliação de Dados
Caso 1: Sistema redundante e observável Apenas as variáveis 1, 2, 5 e 6 são medidas. min (y1 – x1)² + (y2 – x2)² + (y5 – x5)² + (y6 – x6)² x1, x2, x5, x6 A função objetivo deve ser escrita da seguinte maneira: As variáveis não medidas foram eliminadas das equações por substituição direta, sendo calculadas após a reconciliação das variáveis medidas. sujeito a: x1 – x2 – x5 = 0 x2 + x5 – x6 = 0 38

39 Reconciliação de Dados
Caso 2: Sistema não redundante e observável Apenas as variáveis 1 e 2 são medidas. A função objetivo é: min (y1 – x1)² + (y2 – x2)² x1, x2 Neste caso não é possível eliminar as variáveis não medidas das equações e, portanto, o problema se reduz à minimização da função objetivo sem restrições, levando aos próprios valores medidos. As variáveis não medidas são obtidas através das restrições originais (x6 = x1, x4 = x2, x3 = x5 = x1 – x2). 39

40 Reconciliação de Dados
Caso 3: Sistema redundante e não observável Apenas as variáveis 1 e 6 são medidas. min (y1 – x1)² + (y6 – x6)² x1, x6 A função objetivo deve ser escrita da seguinte maneira: Neste caso não há informação suficiente para estimarmos os valores das variáveis não medidas x2, x3, x4 e x5. sujeito a: x1 – x6 = 0 40

41 Reconciliação de Dados
heatEx.mso

42 Programação Não Linear
min S(x) sujeito a: hj(x) = 0 , j = 1, 2, ..., m gj(x)  0 , j = 1, 2, ..., p Funções Penalidades (externas) P(x, r)  0  x P(x, r) = 0 para todo x viável r  0 (fator de escala) S(x) + P(x, r) Penalidade exata: Quando existe um valor finito de r, rmin, tal que x* é um mínimo local de {S(x) + P(x, r)} quando r > rmin

43 Programação Não Linear
Penalidade quadrática: Penalidade do módulo (exata): Funções barreira (penalidades internas):

44 Programação Não Linear
restrição: y = g(x)  0

45 Programação Não Linear

46 Programação Não Linear
Lagrangeano aumentado (penalidade exata) LA(x,,;r) = S(x) + T h(x) + T f(x) + P(x, r) em que fj(x) = gj(x) + (vj)2 , j = 1,2,...,p P(x, r) = ½ r {hT(x) h(x) + fT(x) f(x)} Exemplo 4.3: min S(x) = x3 sujeito a h(x) = x + 1 = 0 x* = 1 LA(x,;r) = S(x) +  h(x) + ½ r [h(x)]2 L(x,) = S(x) +  h(x) = x3 +  (x + 1) xL(x,) = 3 x2 +  = 0  * = 3 (x*)2 = 3 xLA(x*,*;r) = 3 (x*)2 + * + r (x* + 1) = 0  r > 6

47 Programação Não Linear
Lagrangeano aumentado (penalidade exata)

48 Programação Não Linear
Programação Linear Sequencial (SLP) 1) Escolher um ponto inicial xo viável e seus limites Lo e Uo, k = 0 2) Linearizar a função objetivo e as restrições em torno do ponto xk 3) Resolver o problema de programação linear resultante 4) Se xk+1 (solução do LP) não for viável para o NLP, então reduzir o intervalo [Lk, Uk] para [Lk+1, Uk+1] e ir para (3) 5) Se o critério de convergência não foi satisfeito, então k  k + 1 (ir para 2) 6) FIM.

49 Programação Não Linear
Gradiente Reduzido Generalizado (GRG) min S(x) sujeito a: hj(x) = 0 , j = 1, 2, ..., m Li  x  Ui, i = 1, 2, ..., n hj(x) = gj(x) + (vj)2 ,   vj   ou hj(x) = gj(x) + vj , 0  vj L(x,) = S(x) + T h(x)

50 Programação Não Linear
Gradiente Reduzido Generalizado (GRG)

51 Programação Não Linear
Gradiente Reduzido Generalizado (GRG)

52 Programação Não Linear
Gradiente Reduzido Generalizado (GRG)

53 Programação Não Linear
Programação Quadrática Sequencial (SQP) min S(x) sujeito a: hj(x) = 0 , j = 1, 2, ..., m gj(x)  0 , j = 1, 2, ..., p min q(d) = TS(xk) d + ½ dT H(xk,k,k) d sujeito a: h(xk) + Th(xk) d = 0 g(xk) + Tg(xk) d  0 Line search xk+1 = xk + k dk Trust region

54 Programação Não Linear
Programação Quadrática Sequencial (SQP) Exemplo 4.4:

55 Programação Não Linear
benzeno BTX QN1 QN2 tolueno xileno min S(x) = QN1 + QN2 sujeito a: h(x) = 0 , (modelo) benzeno  0,94 tolueno  0,76 xileno  0,93

56 Programação Não Linear
flash_opt.mso sample_optimize.mso

57 Programação Não Linear
Produção de Amônia ammonia_opt.mso 57


Carregar ppt "Universidade Federal do Rio de Janeiro"

Apresentações semelhantes


Anúncios Google