57
O M´ etodo Adjunto Dalia Melissa Bonilla Correa IMPA 11 de Novembro de 2009 Dalia Melissa Bonilla Correa IMPA () O M´ etodo Adjunto 11 de Novembro de 2009 1 / 56

O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

O Metodo Adjunto

Dalia Melissa Bonilla CorreaIMPA

11 de Novembro de 2009

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 1 / 56

Page 2: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Simulacoes

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 2 / 56

Page 3: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Simulacoes

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 3 / 56

Page 4: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Simulacoes e Controle

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 4 / 56

Page 5: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Uma simulacao deve

ser rapida ( Real time)

ter um codigo simples

ser facil de controlar

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 5 / 56

Page 6: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Simulacao

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 6 / 56

Page 7: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Otimizacao

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 7 / 56

Page 8: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Otimizacao

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 8 / 56

Page 9: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

1 Modelos Adjuntos

2 O Modo Reverso

3 Metodo Adjunto

4 Codigo Adjunto

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 9 / 56

Page 10: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Modelos Adjuntos

Modelos adjuntos sao ferramentas desenvolvidas para modelagem reversade um sistema fısico.

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 10 / 56

Page 11: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Modelos Adjuntos

Sistema fısico – modelo F

Conjunto de observacoes D ⊂ Rm, tal que D ∈ D

O modelo calcula Y

J :=12

(Y −D,Y −D) producto interno ( . , . )

F : Rn → Rm

X → Y

J : Rn → R

X → 12

(F (X)−D,F (X)−D)

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 11 / 56

Page 12: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Modelos Adjuntos

Por serie de Taylor temos

J(X) = J(X0) + (OxJ(X0) , X −X0) + o(|X −X0|)

Escrevendo

δJ = (OxJ(X0) , δX)

A e o Jacobiano de F em X0, entao

δY = A(X0)δX δY = F (X)− F (X0)δX = X −X0

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 12 / 56

Page 13: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Metodos Adjuntos

Derivando a funacao objetivo temos

δJ =12(A(X0)δX , F (X0)−D) +

12(F (X0)−D , A(X0)δX)

=(F (X0)−D , A(X0)δX)

Usando a definicao de operador adjunto

(v , Aw) = (A∗v , w)

Gradiente

δJ = (A∗(X0) (F (X0)−D) , δX)

OxJ(X0) = A∗(X0) (F (X0)−D)

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 13 / 56

Page 14: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Modelo Adjunto

A(X0) representa o modelo tangente linear

O operador A∗(X0) representa o modelo adjunto

Calculo de OxJ(X0) por diferencias finitas—n+ 1 calculos da funcaoobjetivo.

Usando o modelo adjunto leva de 2− 5 calculos da funcao objetivo

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 14 / 56

Page 15: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

1 Modelos Adjuntos

2 O Modo Reverso

3 Metodo Adjunto

4 Codigo Adjunto

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 15 / 56

Page 16: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Simulcao Modelo e Codigo

ModeloEquacoes diferencias

AlgoritmoDiscreticao

CodigoImplementacao

A construcao do codigo do modelo adjunto depois dos 3 passos anteriores.

ModeloEquacoes diferencias adjuntas

AlgoritmoModelo Adjunto – eda

CodigoCodigo adjunto

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 16 / 56

Page 17: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Codigo numerico como uma funcao

Um modelo numerico e um algoritmo que pode ser visto com acomposicao de funcoes diferenciais.Cada funcao representa uma instrucao no codigo numerico.

float x, y, z;float u, v;float f;

x = y + z + u*u;y = z*y + x*v;f = x*x + y*y + u*u + v*v;

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 17 / 56

Page 18: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Funcao H definida como um algoritmo numerico

H : Rn → Rm

X → Y

Cada passo do algoritmo e representado por

H l : Rnl−1 → Rnl (l = 1, ...,K)

Z l−1 → Z l

H = HK ◦ · · · ◦H1 =:K⊙

l=1

H l

Z l = (H l ◦ · · · ◦H1)(X) =l⊙

i=1

H i(X) (1 ≤ l ≤ K)

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 18 / 56

Page 19: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

O jacobiano da funcao H e definido por

Aij(X0) :=∂Hi(X)∂Xj

∣∣∣∣x=x0

(i = 1, . . .m ; j = 1, . . . , n)

A(X0) =∂HK

∂ZK−1

∣∣∣∣zk−1=zk−1

0

· · · · · ∂H1

∂Z0

∣∣∣∣z0=x0

Zk−10 =

l⊙i=1

H i(X0)

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 19 / 56

Page 20: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Modo para frente

Avaliamos

A(X0) =∂HK

∂ZK−1· · · · · ∂H

2

∂Z1· ∂H

1

∂Z0

no mesmo ordem em que a composicao e avalida

H l(. . . (H2(H1(X)))

Multiplicamos primeiro

∂H2

∂Z1· ∂H

1

∂Z0

e entao

∂H3

∂Z2e multiplicado ao resultado

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 20 / 56

Page 21: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Modo para frente

Avaliamos

A(X0) =∂HK

∂ZK−1· · · · · ∂H

2

∂Z1· ∂H

1

∂Z0

no mesmo ordem em que a composicao e avalida

H l(. . . (H2(H1(X)))

Multiplicamos primeiro

∂H2

∂Z1· ∂H

1

∂Z0

e entao

∂H3

∂Z2e multiplicado ao resultado

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 20 / 56

Page 22: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Modo Reverso

Avaliamos

A(X0) =∂HK

∂ZK−1· ∂H

K−1

∂ZK−2· · · · ∂H

2

∂Z1· ∂H

1

∂Z0

Ao contrario, este modo comeca de

∂HK

∂ZK−1· ∂H

K−1

∂ZK−2

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 21 / 56

Page 23: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Funcao Escalar

H : Rn → Rm onde m = 1X → Y

O modo reverso e preferıvel!!

Para m = 1 operar em modo reverso e chamado deMetodo Adjunto.

O algoritmo para calcular o gradiente e chamado Modelo Adjunto.

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 22 / 56

Page 24: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

1 Modelos Adjuntos

2 O Modo Reverso

3 Metodo Adjunto

4 Codigo Adjunto

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 23 / 56

Page 25: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Definicoes

H =K⊙

l=1

H l

HK : RnK−1 → R nk = m = 1

Z l0 = (H l ◦ · · · ◦H1)(X0) =

l⊙i=1

H i(X0) (1 ≤ l ≤ K)

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 24 / 56

Page 26: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

δZ l =∂

(l⊙

i=1H i(X0)

)∂X

∣∣∣∣∣∣∣∣∣x=x0

δX onde δZ0 := δX

δZ l =∂H l(Z l−1)∂Z l−1

∣∣∣∣Zl−1=Zl−1

0

δZ l−1

δ∗Z l := ∇zl

K⊙i=l+1

H i(Z l)

∣∣∣∣∣zl=zl

0

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 25 / 56

Page 27: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

δH = (δ∗Z l , δZ l)

(δ∗Z l−1 , δZ l−1) = (δ∗Z l , δZ l)

=

(δ∗Z l ,

(∂H l(Z l−1)∂Z l−1

)∣∣∣∣Zl−1=Zl−1

0

δZ l−1

)

=

(∂H l(Z l−1)∂Z l−1

)∗∣∣∣∣∣Zl−1=Zl−1

0

δ∗Z l , δZ l−1

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 26 / 56

Page 28: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Resultados Intermediarios Adjuntos

δ∗Z l−1 =(∂H l(Z l−1)∂Z l−1

)∗∣∣∣∣∣Zl−1=Zl−1

0

δ∗Z l

δ∗Z l−1i =

nl∑j=1

∂H lj(Z

l−1)

∂Z l−1i

∣∣∣∣∣∣Zl−1=Zl−1

0

δ∗Z lj

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 27 / 56

Page 29: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

1 Modelos Adjuntos

2 O Modo Reverso

3 Metodo Adjunto

4 Codigo Adjunto

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 28 / 56

Page 30: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Problema

x = y + z + u2;y = zy + xv;

f = x2 + y2 + u2 + v2;

dx = dy + dz + 2udu;dy = ydz + zdy + vdx+ xdv;f = 2xdx+ 2ydy + 2udu+ 2vdv;

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 29 / 56

Page 31: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z; // variablesfloat u, v; // controlsfloat f; // cost variable

x = y + z + u*u; // statement #1

y = z*y + x*v; // statement #2

f = x*x + y*y + u*u + v*v; // cost function

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 30 / 56

Page 32: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z, dx[2], dy[2], dz[2]; // variablesfloat u, v, du[2], dv[2]; // controlsfloat f, df[2]; // cost variable

x = y + z + u*u; // statement #1

y = z*y + x*v; // statement #2

f = x*x + y*y + u*u + v*v; // cost function// df[0] = ???;// df[1] = ???;

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 31 / 56

Page 33: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z, dx[2], dy[2], dz[2]; // variablesfloat u, v, du[2], dv[2]; // controlsfloat f, df[2]; // cost variable

dx[0]=dx[1]=dy[0]=dy[1]=dz[0]=dz[1]=df[0]=df[1]=0;du[0]=1; du[1]=0; dv[0]=0; dv[1]=1;

x = y + z + u*u; // statement #1

y = z*y + x*v; // statement #2

f = x*x + y*y + u*u + v*v; // cost function

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 32 / 56

Page 34: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z, dx[2], dy[2], dz[2]; // variablesfloat u, v, du[2], dv[2]; // controlsfloat f, df[2]; // cost variable

dx[0]=dx[1]=dy[0]=dy[1]=dz[0]=dz[1]=df[0]=df[1]=0;du[0]=1; du[1]=0; dv[0]=0; dv[1]=1;

x = y + z + u*u; // statement #1dx[0] = dy[0] + dz[0] + 2*u*du[0];dx[1] = dy[1] + dz[1] + 2*u*du[1];

y = z*y + x*v; // statement #2dy[0] = z*dy[0] + y*dz[0] + v*dx[0] + x*dv[0];dy[1] = z*dy[1] + y*dz[1] + v*dx[1] + x*dv[1];

f = x*x + y*y + u*u + v*v; // cost function

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 33 / 56

Page 35: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z, dx[2], dy[2], dz[2]; // variablesfloat u, v, du[2], dv[2]; // controlsfloat f, df[2]; // cost variable

dx[0]=dx[1]=dy[0]=dy[1]=dz[0]=dz[1]=df[0]=df[1]=0;du[0]=1; du[1]=0; dv[0]=0; dv[1]=1;

x = y + z + u*u; // statement #1dx[0] = dy[0] + dz[0] + 2*u*du[0];dx[1] = dy[1] + dz[1] + 2*u*du[1];

y = z*y + x*v; // statement #2dy[0] = z*dy[0] + y*dz[0] + v*dx[0] + x*dv[0];dy[1] = z*dy[1] + y*dz[1] + v*dx[1] + x*dv[1];

f = x*x + y*y + u*u + v*v; // cost functiondf[0] = 2*x*dx[0] + 2*y*dy[0] + 2*u*du[0] + 2*v*dv[0];df[1] = 2*x*dx[1] + 2*y*dy[1] + 2*u*du[1] + 2*v*dv[1]

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 34 / 56

Page 36: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Desvantagem

A tecnica anterior e muito costosa quando tem muitos controles

#define NC 1,000,000

float x, y, z, dx[NC], dy[NC], dz[NC]; // variablesfloat u[NC], du[NC]; // controlsfloat f, df[NC]; // cost variable

x = y + z + u[0]*u[0]; // statement #1for ( int i=0 ; i<NC ; i++ ) {

dx[i] = dy[i] + dz[i] + ( i==0 ? 2*u[0]*du[0] : 0 );}

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 35 / 56

Page 37: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Um programa esta composto por um conjunto de instrucoes.I1, I2, . . . , In

Adjunto de uma instrucao I e A(I)O programa adjunto inverte a ordem das instrucoes

A(In), A(In−1), . . . , A(I1)

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 36 / 56

Page 38: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

x = x3 + sen(y2)z

dx = 3x2dx + 2ycos(y2)zdy + sen(y2)dz

dzdydx

=

1 0 00 1 0

sen(y2) 2ycos(y2)z 3x2

dzdydx

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 37 / 56

Page 39: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

z∗y∗x∗

=

1 0 sen(y2)0 1 2ycos(y2)z0 0 3x2

z∗y∗x∗

z∗ = z∗ + sen(y2)x∗

y∗ = y∗ + 2ycos(y2)zx∗

x∗ = x∗ + 3x2x∗

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 38 / 56

Page 40: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

I :=x = f(x, y, . . . , z)

dz...dydx

=

1 · · · 0 0...

. . ....

...0 · · · 1 0

fz(x, y, · · · , z) · · · fy(x, y, · · · , z) fx(x, y, · · · , z)

dz...dydx

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 39 / 56

Page 41: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

z∗

...y∗

x∗

=

1 · · · 0 fz(x, y, · · · , z)...

. . ....

...0 · · · 1 fy(x, y, · · · , z)0 · · · 0 fx(x, y, · · · , z)

z∗

...y∗

x∗

z∗ = z∗ + fz(x, y, · · · , z)x∗

...

y∗ = y∗ + fy(x, y, · · · , z)x∗

x∗ = fx(x, y, · · · , z)x∗

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 40 / 56

Page 42: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

A

for i= 0, · · · , n doIi

end for

=for i= n, · · · , 0 do

A(Ii)end for

A

if B then

I1elseI2

end if

=

if B thenA(I1)elseA(I2)end if

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 41 / 56

Page 43: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

x = y + z + u*u; // statement #1dx[0] = dy[0] + dz[0] + 2*u*du[0];dx[1] = dy[1] + dz[1] + 2*u*du[1];

dx[0] dx[1]dy[0] dy[1]dz[0] dz[1]du[0] du[1]dv[0] dv[1]

=

0 1 1 2 ∗ u 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1

dx[0] dx[1]dy[0] dy[1]dz[0] dz[1]du[0] du[1]dv[0] dv[1]

X1 = A1X0

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 42 / 56

Page 44: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

y = z*y + x*v; // statement #2dy[0] = z*dy[0] + y*dz[0] + v*dx[0] + x*dv[0];dy[1] = z*dy[1] + y*dz[1] + v*dx[1] + x*dv[1];

dx[0] dx[1]dy[0] dy[1]dz[0] dz[1]du[0] du[1]dv[0] dv[1]

=

1 0 0 0 0v z y 0 x0 0 1 0 00 0 0 1 00 0 0 0 1

dx[0] dx[1]dy[0] dy[1]dz[0] dz[1]du[0] du[1]dv[0] dv[1]

X2 = A2X1

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 43 / 56

Page 45: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

f = x*x + y*y + u*u + v*v; // cost functiondf[0] = 2*x*dx[0] + 2*y*dy[0] + 2*u*du[0] + 2*v*dv[0];df[1] = 2*x*dx[1] + 2*y*dy[1] + 2*u*du[1] + 2*v*dv[1];

(df [0] df [1]

)=(2 ∗ x 2 ∗ y 2 ∗ z 2 ∗ u 2 ∗ v

)dx[0] dx[1]dy[0] dy[1]dz[0] dz[1]du[0] du[1]dv[0] dv[1]

f = p>2 X2

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 44 / 56

Page 46: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

X1 = A1X0 p1 = A>2 p2

X2 = A2X1 p0 = A>1 p1

f = p>2 X2 f = p>0 X0

p>0 X0 =(A>1 A

>2 p2

)>X0 = p>2 A2A1X0 = p>2 X2

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 45 / 56

Page 47: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

A = A2A1

X2 = AX0 7−→ f = p>0 X2

f∗ = p>1 X0 ←− p1 = A>p0

f = f∗

f = p>0 X2 = p>0 AX0 = (A>p0)>X0 = p>1 X0 = f∗

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 46 / 56

Page 48: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

y = z*y + x*v; // statement #2dy[0] = z*dy[0] + y*dz[0] + v*dx[0] + x*dv[0];dy[1] = z*dy[1] + y*dz[1] + v*dx[1] + x*dv[1];

dx[0] dx[1]dy[0] dy[1]dz[0] dz[1]du[0] du[1]dv[0] dv[1]

=

1 0 0 0 0v z y 0 x0 0 1 0 00 0 0 1 00 0 0 0 1

dx[0] dx[1]dy[0] dy[1]dz[0] dz[1]du[0] du[1]dv[0] dv[1]

X1 = AX0

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 47 / 56

Page 49: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

y = z*y + x*v; // statement #2

axayazauav

=

1 v 0 0 00 z 0 0 x0 y 1 0 00 0 0 1 00 x 0 0 1

axayazauav

X1 = AX0

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 48 / 56

Page 50: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

y = z*y + x*v; // statement #2ax = ax + v*ay;az = az + y*ay;au = au;av = av + x*ay;ay = z*ay;

axayazauav

=

1 v 0 0 00 z 0 0 x0 y 1 0 00 0 0 1 00 x 0 0 1

axayazauav

X1 = AX0

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 49 / 56

Page 51: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z; // variablesfloat u, v; // controlsfloat f; // cost variable

x = y + z + u*u; // statement #1

y = z*y + x*v; // statement #2

f = x*x + y*y + u*u + v*v; // cost function

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 50 / 56

Page 52: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z, ax, ay, az; // variablesfloat u, v, au, av; // controlsfloat f, af; // cost variable

x = y + z + u*u; // statement #1

y = z*y + x*v; // statement #2

f = x*x + y*y + u*u + v*v; // cost function

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 51 / 56

Page 53: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z, ax, ay, az; // variablesfloat u, v, au, av; // controlsfloat f, af; // cost variable

x = y + z + u*u; // statement #1ay += ax; az += ax;au += 2*u*ax; ax = 0;

y = z*y + x*v; // statement #2az += y*ay; ax += u*ay;av += x*ay; ay = z*ay;

f = x*x + y*y + u*u + v*v; // cost functionax += 2*x*af; ay += 2*y*af;au += 2*u*af; av += 2*v*af;

ax = ay = az = au = av = 0;af = 1;

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 52 / 56

Page 54: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Codigo Adjunto

float x, y, z, ax, ay, az; // variablesfloat u, v, au, av; // controlsfloat f, af, df[2]; // cost variable

af = 1;ax = ay = az = au = av = 0;// cost functionax += 2*x*af; ay += 2*y*af;au += 2*u*af; av += 2*v*af;// statement #2az += y*ay; ax += u*ay;av += x*ay; ay = z*ay;// statement #1ay += ax; az += ax;au += 2*u*ax; ax = 0;// gradientdf[0] = au;df[1] = av;

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 53 / 56

Page 55: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

float x, y, z, ax, ay, az; float x, y, z;float u, v, au, av; float u, v;float f, af, df[2]; float f;

af = 1; // statement #1ax = ay = az = au = av = 0; x = y + z + u*u;// cost functionax += 2*x*af; ay += 2*y*af; // statement #2au += 2*u*af; av += 2*v*af; y = z*y + x*v;// statement #2az += y*ay; ax += u*ay; // cost functionav += x*ay; ay = z*ay; f = x*x + y*y + u*u + v*v;// statement #1ay += ax; az += ax;au += 2*u*ax; ax = 0;// gradientdf[0] = au;df[1] = av;

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 54 / 56

Page 56: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Referencias

Recipes for Adjoint Code ConstructionRALF GIERING

An Introduction to the Adjoint Approach to DesignMICHAEL B. GILES

Simulation and Control of Physical Phenomena in Computer GraphicsJOS STAM

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 55 / 56

Page 57: O Método Adjunto - VISGRAF Lab · Equa˘c~oes diferencias Algoritmo Discreti˘c~ao C odigo Implementa˘c~ao A constru˘c~ao do c odigo do modelo adjunto depois dos 3 passos anteriores

Obrigada!!!

[email protected]

Dalia Melissa Bonilla Correa IMPA () O Metodo Adjunto 11 de Novembro de 2009 56 / 56