Vous êtes sur la page 1sur 3

na llamada bsico de fminunc superior

Sin ningn tipo de opciones adicionales de la sintaxis es


[X, FVal] = fminunc ('objfun', x0)
donde
objfun : nombre de un archivo de funcin en la que la funcin objetivo se
codifica x0: (columna) portadoras de los valores iniciales x
(primera salida): vector solucin ptima (columna) FVal (segunda salida):
valor de la funcin ptima

Notas :
1) En lugar de objfun . puede utilizar cualquier otro nombre
2) Si usted no est interesado en FVal , slo tienes que escribir x = fminunc
('objfun', x0 ).
3) Varias opciones se pueden ajustar, en particular el "gradiente opcin "que
utiliza informacin sobre el gradiente de la funcin objetivo;
ver B y descripcin de la ayuda de Matlab .
4) fminunc busca un mnimo (como lo hace linprog ). Si se busca un mximo,
el cdigo-f en el archivo de funcin!
Ejemplo: top
Minimizar la funcin objetivo
f (x, y, z) = (x
2
+ y
2
)
2
-x
2
-y + z
2

(1) En primer lugar, tiene que codificar la funcin objetivo. Abra un nuevo
archivo-m en el editor y escribe:
funcin f = objfun (x)
f = (x (1) ^ 2 + x (2) ^ 2) ^ 2-x (1) ^ 2-x (2) + x (3) ^ 2;
Guarde el archivo con (cualquiera) nombre - Aqu elegimos objfun.m. Si el
archivo se guarda con este nombre, entonces usted tiene acceso a ella y puede
recuperar el valor de la funcin para cualquier vector de entrada x . Por
ejemplo, si usted quiere saber el valor en (1,1,1), tipo (ventana de comandos o
un archivo de secuencia de comandos) objfun ([1, 1, 1]) y ejecutar. La
respuesta en la ventana de comandos es 3 .
(2) Ahora podemos aplicar fminunc con un valor de partida la eleccin
apropiada de encontrar un mnimo. Elegimos x0 = [1, 1, 1] y ejecutamos los
siguientes comandos en la ventana de comandos:
>> X0 = [1, 1, 1], [x, FVal] = fminunc ('objfun', x0)
Advertencia: Gradiente debe ser proporcionada para el mtodo de la
confianza-regin;
utilizando el mtodo de lnea de bsqueda en lugar.
> En C: \ MATLABR12 \ toolbox \ optim \ fminunc.m en la lnea 211
Optimizacin terminado con xito:
actual direccin de bsqueda es una direccin de descenso, y la
magnitud de la
derivada direccional en busca sentido a menos de 2 * options.TolFun
x =
0.49998491345499
0.50000453310525
-0,00000383408095
FVal =
-0,49999999985338
El comentario ms abajo de la lnea de comando le dice que no se proporcion
informacin sobre el gradiente que puede conducir a un rendimiento no
ptimo.
B de Call of fminunc con la informacin suministrada
gradiente superior
Programas de optimizacin generalmente funciona mejor si la informacin
pendiente se explota. Esto requiere dos modificaciones:
(1) El archivo de objetivo debe ser codificado de tal manera que el gradiente
se puede retireved como segunda salida. Para la funcin anterior para ello es
necesario la siguiente extensin del archivo de funcin:
funcin [f, gradf] = objfun (x)
f=(x(1)^2+x(2)^2)^2-x(1)^2-x(2)+x(3)^2;
gradf=[4*x(1)*(x(1)^2+x(2)^2)-2*x(1);4*x(2)*(x(1)^2+x(2)^2)-1;2*x(3)];
El segundo argumento de salida, gradf, es el vector gradiente de f escrita
como vector columna.
(2) El programa tiene que ser `dijo 'que deber explotar la informacin
pendiente. Esto se hace mediante la especificacin de una de las opciones de
optimizacin, y el programa tiene que ser informado de que tiene que utilizar
esta opcin. La sintaxis general es
>> Options = optimset ('GradObj', 'on');
>> [x, FVal] = fminunc ('objfun', x0, opciones)
Por ejemplo, ahora con la informacin suministrada gradiente, que ejecutamos
en la ventana de comandos:
>> Options = optimset ('GradObj', 'on');
>> x0 = [1, 1, 1], [x, FVal] = fminunc ('objfun', x0, opciones)
Optimizacin terminado con xito:
valor de la funcin relativa cambiar en menos de OPTIONS.TolFun
x =
0.50045437772043
0.49981153795642
0.00003452966310
FVal =
-0,49999989244986
Como puede ver, los valores difieren ligeramente de los obtenidos
anteriormente, y de hecho son ms precisos.

Vous aimerez peut-être aussi