Beruflich Dokumente
Kultur Dokumente
Resumen
Se presenta una breve descripcin al campo de la diferenciacin automtica (DA), la
cual es una poderosa herramienta basada en la regla de la cadena para el clculo de
derivadas exactas. Se estudiarn los dos enfoques de la DA (modo hacia delante y
modo hacia atrs), as como sus dos implementaciones (sobrecarga de operadores y
transformacin de cdigo). Se analizarn algunos de los mtodos usados para el
clculo de derivadas tales como la codificacin a mano, diferenciacin numrica (DN)
y diferenciacin simblica (DS). El objetivo es demostrar que utilizando DA obtenemos derivadas exactas, para esto se resolver un sistema de ecuaciones algebraicas
no lineales por medio del Newton Raphson para solucionar el problema de flujos de
potencia en el rea de ingeniera elctrica. Este problema se resolver en su forma
tradicional ya que entrega el Jacobiano exacto y se comparar con la solucin del Jacobiano obtenido aplicando DA. Esta comparacin demostrar que la DA calcula derivadas exactas.
Palabras clave: Diferenciacin Automtica, Jacobiano.
Abstract
This paper presents a brief description to field of automatic differentiation (AD). AD is a
powerful tool based on the chain rule to obtain exact derivates. Two approaches of AD
will be studied (forward and reverse modes), as well as its two implementations (overCiencia Nicolaita No. 47
131
Agosto de 2007
loading operator and source-to-source transformation). Some methods used to compute derivatives will be analyzed such as hand-coding, numerical differentiation (ND)
and symbolic differentiation (SD). The objective is to demonstrate that using automatic differentiation we obtain exact derivatives, for this reason a nonlinear algebraic
equations system will be solved using the Newton Raphson method for solve the power flow problem in the electrical engineering area. This problem will be solved in its
traditional form since will give us the exact Jacobian and will be compared with the Jacobian solution using automatic differentiation. This comparison will demonstrate that
AD computes exact derivatives.
Keywords: Automatic Differentiation, Jacobian.
1. Introduccin
La diferenciacin frecuentemente constituye un papel importante en una gran variedad de aplicaciones de clculo cientfico, tales como; estudios de optimizacin, anlisis de
sensibilidades, solucin de sistemas de ecuaciones diferencio-algebraicas, solucin de
ecuaciones no lineales y solucin de problemas inversos no lineales, en donde se requiere
la informacin del clculo de las derivadas, ya sea en forma de vector Gradiente, Jacobiano
o Hessiano de una funcin dada, varias veces repetidamente.
Por esta razn es necesario tener un clculo de la derivada exacto y eficiente para la
solucin prctica de dichos problemas. Existen muchas opciones de calcular estas derivadas. Se pueden obtener manualmente, pero puede resultar difcil y/o tedioso, adems de estar propensos a errores. Tambin pueden obtenerse simblicamente usando paquetes
matemticos tales como Maple o Mathematica pero lo malo es de que no son directamente
aplicables para programas computacionales escritos en lenguajes de programacin tales
como C, adems pueden fallar o simplemente ser computacionalmente ineficientes para
problemas a gran escala. Otra forma de calcular derivadas es aproximndola usando diferenciacin numrica, pero sta puede resultar inexacta y lenta, en base a que el sistema tiene que ser evaluado n+1 veces, donde n es el nmero de variables de estado.
La diferenciacin automtica, tambin conocida como diferenciacin computacional,
diferenciacin algortmica o diferenciacin de algoritmos, ha emergido como una tcnica alterna para calcular derivadas. Dado un programa que calcula una funcin numrica F(x), utilizando alguna de las herramientas de la diferenciacin automtica generar un programa
relacionado que calcule F(x). La DA trabaja sistemticamente aplicando la regla de la cadena del clculo diferencial al nivel de los operadores y libreras incorporadas del lenguaje, por
lo que no est sujeto a los mismos errores numricos de la diferenciacin numrica. Debido
a esto la tcnica de la DA ha tenido un gran inters en los campos de la ingeniera y la ciencia.
Agosto de 2007
132
Hay dos formas de implementar la DA, una es transformando el cdigo fuente y la otra
es por medio de la sobrecarga de operadores. Tambin existen dos enfoques utilizados en la
diferenciacin automtica, los as llamados modo hacia delante y modo hacia atrs.
2. Codificacin a mano
La codificacin a mano (Bishof et al., 1994, Orfanogianni 2000) fue usada extensivamente en el pasado, especialmente cuando el nmero de funciones a diferenciar es pequeo y las funciones son relativamente simples. Podemos obtener derivadas numricas de
funciones simples derivando las expresiones analticas para las derivadas de primer orden y
orden superior a mano y codificndolas en un lenguaje de programacin de alto nivel tales
como C o FORTRAN. La eficiencia del cdigo resultante depender de la eficiencia del cdigo de la derivada, lo cual es responsabilidad del programador, por lo que para un cdigo
grande este proceso puede resultar tedioso y propenso a error.
3. Diferenciacin simblica
La diferenciacin simblica (Ajjarapu y Ibsais, 1997, Jerosolimsky y Levacher, 1994)
es un mtodo ampliamente usado por cientficos y matemticos para el clculo de derivadas. Existen paquetes comerciales basados en el clculo simblico, tales como MAPLE,
MACSYMA y MATHEMATICA, los cuales son poderosas herramientas computacionales de
uso fcil que proporcionan derivadas exactas, expresando todas las derivadas en trminos
de las variables independientes.
La DS es una poderosa tcnica, pero la desventaja de los paquetes que usan el clculo simblico es que corren dentro de ciertas limitaciones de los recursos del CPU, y por lo
tanto no pueden manejar procesos intensos en donde la dimensin de las matrices es grande y complicada.
4. Diferenciacin numrica
En caso en donde el nmero de funciones a ser diferenciadas es muy grande o la
complejidad de las funciones hacen que la derivacin de la expresin analtica a mano sea
difcil, podemos obtener las derivadas de primer orden mediante diferenciacin numrica
(Bischof et al. 1994, Orfanogianni 2000, Prez 2004), mejor conocida como aproximacin
por diferencias divididas, este mtodo posee popularidad en algunas disciplinas cientficas y
reas de la ingeniera ya que es fcil de implementar.
La aproximacin por diferencias divididas a derivadas de primer orden est basada
en la expansin truncada de la serie de Taylor. Existen varias aproximaciones mediante esta
tcnica, tales como:
133
Agosto de 2007
f ( x)
x j
f ( x0 + h * e j ) - f ( x0 )
(1)
x = x0
Diferencias centrales.
f ( x)
x j
f ( x0 + h * e j ) - f ( x0 - h * e j )
x = x0
(2)
2h
xj .
-7
(Prez, 2004).
5. Diferenciacin automtica
En las secciones previas se mostraron las tcnicas ms populares para el clculo
de derivadas, las cuales contienen importantes desventajas que las hacen imprcticas
para aplicaciones grandes. Idealmente, una tcnica para el clculo diferencial debe
contener las siguientes propiedades:
134
Esta tcnica confa en el hecho de que todos los programas computacionales, sin
importar que tan complicados sean, utilizan un sistema finito de operaciones elementales
(unario o binario), segn lo definido por el lenguaje de programacin y sta se basa en
dos evaluaciones; evaluacin de la funcin y evaluacin de la derivada.
Evaluacin de la funcin
Dada una funcin
xi = fi ( x j ) jJi
end
f = xm
Esta subrutina representa a la funcin
elementales
calculadas
Variables Intermedias
x3 = x12
Funciones elementales
x3 = f 3 ( x1 )
x4 = cos( x2 )
x4 = f 4 ( x2 )
x5 = x1 * x4
F = x3 + x5
x5 = f 5 ( x1 , x4 )
F = f 6 ( x3 , x5 )
135
Agosto de 2007
Evaluacin de la derivada
Tradicionalmente, fueron desarrolladas dos diferentes maneras de aplicar la regla
de la cadena en la DA; los as llamados modo hacia delante y modo hacia atrs.
Modo hacia delante
Mantiene las derivadas de cada variable intermedia con respecto a las variables
independientes x1 ,..., xn , donde cada variable intermedia xi tiene un vector gradiente
xi = ei
end
For i
= n +1 m
xi = fi ( x j ) jJi
xi = jJ
f i
x j
x j
end
y = xm
f = xm
donde
x1 = [1 0]
Agosto de 2007
y x2 = [0 1]
136
Variables Intermedias
Gradientes
1 2 x
f3
x1 = 2 x1 = 1
x1
0 0
x3 = x12
x3 =
x4 = cos( x2 )
x4 =
sin(
x
)
x5 = x1 * x4
x4
x5 =
- x1 sin( x2 )
x + 2 x1
x6 = 4
- x1 sin( x2 )
x6 = x3 + x5
y
. En este modo
xi
iniciamos con las variables dependientes propagando las derivadas hacia las variables
independientes acumulando las cantidades escalares adjuntas
cadena se sostiene que
xj =
xi . De la regla de la
fi
xi . A continuacin se muestra el algoritmo para el
x j
i = n + 1, n + 2,K, m
xi = fi ( x j ) jJi
{recorrido directo}
xi = 0
end
y = xm
xm = 1
137
Agosto de 2007
For
i = 1, 2, K , n
xi = 0
end
For i
= m, m - 1,K, n + 1
f
x j = x j + i xi , "j J i
x j
{recorrido reverso}
end
For i = 1, 2, K , n
fi = xi
end
Para aplicar este modo al ejemplo anterior, primero inicializamos
y = 1, x1 = 0, x2 = 0, xi = 0
Variables Intermedias
Escalares
y = x3 + x5
y
= x5 + y*1
x5
x3 = x3 + y
y
= x3 + y*1
x3
x5 = x1 x4
x1 = x1 + x5 *x4
x4 = cos x2
x2 = x2 + x4 * ( - sin x2 )
x3 = x12
x1 = x1 + x3 *(2 x1 )
x4 = x4 + x5 *x1
y = [ x1
Agosto de 2007
x5 = x5 + y
138
x2 ]
139
Agosto de 2007
Pp = E p EqYpq cos(q pq + d p - d q )
(3)
q =1
n
Qp = E p EqYpq sen(q pq + d p - d q )
(4)
q =1
DP H N Dd
DQ = J L D E / E
1
424
3
(5)
JACOBIANO
donde la matriz coeficiente es el Jacobiano y sus elementos estn definidos como sigue:
H=
Pp
d q
N=
Pp
Eq
J=
Eq
Q p
d q
L=
Q p
Eq
Eq
H pp = - E p B pp - Q pcalc
H pq = E p Eq (G pq sin q pq - B pq cos q pq )
(6)
q p
N pp = E p G pp + Ppcalc
(7)
N pq = E p Eq (G pq cos q pq + B pq sin q pq )
Agosto de 2007
140
q p
J pp = - E p G pp + Ppcalc
(8)
J pq = - E p Eq (G pq cos q pq + B pq sin q pq )
q p
L pp = - E p B pp + Q pcalc
(9)
L pq = E p Eq (G pq sin q pq - B pq cos q pq )
q p
Para calcular el Jacobiano utilizando diferenciacin automtica, se aplica esta tcnica a las ecuaciones (3) y (4), que son las funciones a derivar con respecto a las variables independientes (magnitud
7. Resultados
Se resuelve el Jacobiano para un sistema de 3 nodos tomado de la referencia
(Zamora, 2005), mostrando resultados para la tercera iteracin la cual es en la que
converge el mtodo de Newton Raphson. Los resultados obtenidos para el clculo del
Jacobiano usando ambos mtodos, esto es, utilizando las expresiones (6) a (9) que
proporcionan el Jacobiano exacto (Forma Tradicional), y utilizando diferenciacin
automtica, se muestran a continuacin.
-2 1 .1 4 7 4 -5 1 .5 9 6 7 3 1 .6 9 3 9
-4 7 .9 5 4 9 2 8 .5 4 8 2 -1 7 .3 9 6 9
1 5 .3 5 1 6
3 2 .9 3 3 9 -6 5 .5 9 7 6
1 4 4 4 4 442 4 4 4 4 4 4
3
15.3516
32.9339 -65.5976
1 4 4 4 4 442 4 4 4 4 4 4
3
Se observa que los resultados son exactamente los mismos, se imprimen solo 4
decimales sin embargo los valores son idnticos ya que las operaciones numricas que
se realizan son hasta el final en ambas formulaciones, lo cual indica que no hay error por
truncamientos, por lo tanto la precisin es la que tenga la computadora. El ejemplo aqu
mostrado de 3 nodos es solo con la finalidad de hacer ms fcil la aplicacin de la DA al
problema de flujos de carga, en (Zamora, 2005) se pueden encontrar los resultados al
aplicarla a problemas de mayor orden como son los sistemas de prueba del IEEE
(Institute of Electrical and Electronics Engineers), que son de 36 y 118 nodos.
Ciencia Nicolaita No. 47
141
Agosto de 2007
8. Conclusiones
Para demostrar que la tcnica de la diferenciacin automtica es eficiente para el
clculo de derivadas exactas, se utiliz el mtodo de Newton Raphson para solucionar el
problema de flujos de potencia. Se resolvi en su forma tradicional ya que sta nos
entrega el Jacobiano exacto, para as compararlo con la solucin obtenida por
diferenciacin automtica.
Ya que los resultados son iguales, se concluye que el clculo de derivadas por
medio de diferenciacin automtica es exacto, por lo que esta tcnica resulta eficiente
cuando se requiere del clculo de derivadas, ya sea en la forma de vector gradiente,
Jacobiano o Hessiano de una funcin dada.
9. Referencias
Ajjarapu V., and Ibsais A. Mayo 1997. The Role of Automatic Differentiation in Power
System Analysis, IEEE Transactions on Power Systems, Vol. 12, No. 2, pp. 592597.
Averick Brett M., Mor Jorge J., Bishof Christian H., Carle Alan, and Griewank Andreas.
1994. Computing Large Sparse Jacobian Matrices Using Automatic Differentiation.
SIAM Journal on Scientific Computing, 15(2):285-294.
Bishof Christian, Carle Alan, Khademi Peyvan, and Mauer Andrew. 1994. The ADIFOR
2.0 System for the Automatic Differentiation of Fortran 77 Programs. Technical
Report ANL-MCS-P481-1194, Mathematics and Computer Science Division,
Argonne National Laboratory.
Bishof Christian, Carle Alan, Hovland Paul, Khademi Peyvand and Mauer Andrew; 1994.
ADIFOR 2.0 Users Guide (Revision D), Technical Report ANL/MCS-TM-192,
Mathematics and Computer Science Division, Argonne National Laboratory.
Bischof, C. H., Hovland, P. D., and Norris, B. 2002. Implementation of automatic
differentiation tools. In Proceedings of the 2002 ACM SIGPLAN Workshop on
Partial Evaluation and Semantics-Based Program Manipulation (Portland, Oregon,
January 14 - 15, 2002). PEPM '02. ACM Press, New York, NY, 98-107.
Agosto de 2007
142
Coleman T. F., and Verma A., Marzo 1997. ADMIT-1: Automatic Differentiation and
MATLAB interface toolbox, Tech. Rep. CTC97TR271, Theory Center, Cornell
University.
Griewank A., 1989. "On Automatic Differentiation," in Mathematical Programming: Recent
Developments and Applications (M. Iri and K. Tanabe, eds.), pp. 83--108, Kluwer
Academic Publishers.
Griewank A., Juedes D., and Srinivasan J, 1990. "ADOL-C, a package for the automatic
differentiation of algorithms written in C/C++", Preprint MCS-P180-1190,
Mathematics and Computer Science Division, Argonne National Laboratory.
Jerosolimsky M., and Levacher L. Mayo 1994. A New Method for Fast Calculation of
Jacobian Matrices: Automatic Differentiation for Power System Simulation, IEEE
Transactions on Power Systems, Vol. 9, No. 2, pp. 700-706.
Orfanogianni Tina. 2000. A flexible software environment for steady-state power flow
optimization with series FACTS devices. Tesis Doctoral, Swiss Federal Institute of
Technology (ETH) Zurich.
Prez R. Carlos. 2004. Modelos Avanzados de Elementos del Sistema Elctrico de
Potencia en Coordenadas de Fase para Estudios de Estabilidad Dinmica. Tesis
Doctoral, Universidad Autnoma de Nuevo Len, Monterrey, N.L.
Rall L. B., and Corliss G. F. 1996. An introduction to automatic differentiation. In M. Berz,
C. Bischof, G. Corliss, and A. Griewank, editors, Computational Differentiation,
Procs Second International Workshop on Computational Differentiation. SIAM.
TAPENADE 2003. The TAPENADE tutorial. http://www-sop.inria.fr/tropics/tapenade/
143
Agosto de 2007