You are on page 1of 3

UNIVERSIDAD AUTONOMA

METROPOLITANA
n de Ciencias Naturales e Ingeniera
Divisio
Departamento de Matematicas Aplicadas y Sistemas

Casa abierta al tiempo

Computaci
on Evolutiva
Tarea 1: metodos de optimizacion basados en gradiente

1.

Objetivo

Familiarizarse con las caractersticas basicas de los metodos de optimizacion basados en


gradiente. En particular, con el metodo de gradiente conjugado propuesto por Fletcher-Reeves.

2.

Actividades

2.1.

Implementaci
on del m
etodo de Fletcher-Reeves

Implementar el algoritmo de Fletcher-Reeves en el lenguaje de su preferencia. Como recordaran, este metodo necesita 2 procedimientos que se pueden hacer manualmente: i ) calcular
el gradiente de la funci
on (derivando) y ii ) encontrar el valor optimo de la longitud de paso.
Para evitar hacer estos pasos de manera manual se pueden utilizar metodos n
umericos para
aproximar estos valores.
1. Aproximaci
on del gradiente: sea x0 Rn (n es el n
umero de variables) el punto donde
queremos evaluar el gradiente de una funcion f (x). Entonces, para aproximar la derivada
parcial con respecto a xi usamos lo siguiente:

f (x)
f (x0i + x0i ) f (x0i x0i )
,
=
xi x0
2x0i
donde x0i R es un valor relativamente peque
no y la notacion f (x0i + x0i ) significa
0
0
0
0
0
0
f (x1 , x2 , . . . , xi + xi , . . . , xn1 , xn ), es decir, solamente se modifica la i-esima variable
de x0 . Te
oricamente entre m
as peque
no sea x0i , mejor sera la aproximacion de la derivada. Sin embargo, en la pr
actica, por limitantes en la precision de los tipos numericos
de punto flotante, un valor muy peque
no de x0i puede empeorar la aproximacion de la
derivada.
2. Longitud de paso
optima: para obtener el valor optimo de podemos usar un metodo de
eliminaci
on de intervalos como el de la secci
on dorada mostrado en el Pseudocodigo 1.
Puesto que este metodo requiere un intervalo inicial de b
usqueda tenemos que utilizar
un metodo adicional para estimar este intervalo antes de aplicar el metodo de la secci
on
dorada. El metodo que usaremos es la fase de acotamiento descrita en el Pseudocodigo 2.

2.2.

Resolver una funci


on de prueba

Una vez implementado el metodo de Fletcher-Reeves, usarlo para resolver el problema


siguiente:
Min f (x) = [10(x2 x21 )]2 + (1 x1 )2 + 90(x4 x23 )2 +
(1 x3 )2 + 10(x2 + x4 2)2 + 0.1(x2 x4 )
1

La optimizaci
on se debe realizar con los siguientes parametros: x(0) = [3, 1, 3, 1]T y
tolerancias de 1 105 (incluso para las b
usquedas unidireccionales).
La salida de la ejecuci
on del algoritmo debera mostrar los valores de x, y de f (x) obtenidos
a cada iteraci
on. Al final deber
a mostrar los valores optimos aproximados de x? y su f (x? )
correspondiente.

Entrada:
[a, b]: lmite inferior y superior del intervalo de b
usqueda.
: tolerancias para detener la b
usqueda.
Salida:
x? : aproximaci
on del valor que produce el mnimo de la funcion.
funci
on seccionDorada(a, b, )
Lba
Repetir
B Encontrar puntos intermedios dentro de [a, b]
x1 a + 0.618L
B 0.618 es una aproximacion del n
umero dorado.
x2 b 0.618L
Si f (x1 ) < f (x2 ) entonces
a x2
Otro
b x1
Fin Si
Lba
B Actualizar longitud del intervalo
Hasta que |L| < 
x? (a + b)/2
regresa x?
Fin funci
on
Algorithm 1: Pseudocodigo del algoritmo de la seccion dorada.
2

Entrada:
x0 : punto inicial de b
usqueda.
: incremento para avanzar en la b
usqueda.
Salida:
[a, b]: lmite inferior y superior del intervalo donde se encuentra el mnimo.
funci
on acotamiento(x0 , )
B Encontrar la direcci
on en la que decrece la funcion.
0
0
Si f (x ||) f (x ) f (x0 + ||) entonces
||
B Avanzar a la derecha.
0
Otro Si f (x ||) f (x0 ) f (x0 + ||) entonces
||
B Avanzar a la izquierda
Otro Si f (x0 ||) f (x0 ) f (x0 + ||) entonces
[a, b] [x0 ||, x0 + ||]
regresa [a, b]
Fin Si
k0
Repetir
k k+1
xk xk1 + 2k1
B Cada iteracion aumentamos mas x
Hasta que f (xk ) < f (xk1 )
B El mnimo est
a entre los valores xk2 y xk , pero tenemos
B que ajustar el intervalo dependiendo la direccion de b
usqueda.
[a, b] [mn(xk2 , xk ), m
ax(xk2 , xk )]
regresa [a, b]
Fin funci
on
Algorithm 2: Pseudocodigo de la fase de acotamiento.

You might also like