1

Método de Búsqueda Directo Hooke&Jeeves
Héctor F. Farías Stipo ( cronopio@elo.utfsm.cl )

Abstract  Se utilizó el método de búsqueda directo de Hooke&Jeeves propuesto en [1] para determinar los parámetros de un controlador PI utilizando el software Matlab. I. INTRODUCCIÓN Los métodos analíticos imponen demasiadas restricciones a las funciones objetivos, y resulta que no siempre es posible resolver el sistema de ecuaciones analíticamente. Para resolver ésta problemática nacen los métodos numéricos, los cuáles se dividen en dos grandes grupos, los métodos numéricos Indirectos y los Directos [2]. Los métodos numéricos Indirectos utilizan la función objetivo analítica, las primeras y segundas derivadas, pero las derivadas muchas veces son de difícil obtención e incluso puede que no se conozca la función objetivo analíticamente. Entre los métodos Indirectos más conocidos se encuentran: Newton, QuasiNewton, Secante, “Regula Falsi”. Los métodos numéricos Directos en cambio, requieren únicamente los valores que entrega la función objetivo, los que pueden ser resultados de experimentación o bien de la evaluación de una expresión analítica. Además el método Directo utiliza un plan de experiencias secuencial, el cuál utiliza los resultados de los experimentos o evaluaciones analíticas previas para generar el próximo experimento de una forma tal que se acelere la obtención de una solución óptima. Entre los métodos Directos más conocidos se encuentran: Fibonacci, Nelder&Mead, y el no tan conocido “Hooke&Jeeves” [1] que será tratado con profundidad en este trabajo. R. Hooke (1635-1702) Filósofo y Físico inglés considerado el mecánico más notable de su época y fundador de la meteorología científica. Fue el primero en formular la teoría de los movimientos planetarios matemáticamente y se dice que fue él quien por primera vez idealizo “que los cuerpos se atraen mutuamente con una fuerza que varía inversamente al cuadrado de la distancia que los separa”.

T.A. Jeeves publicó la referencia [1] en el Journal ACM en 1961. II. MÉTODO DE HOOKE&JEEVES PARA BUSCAR MÍNIMOS MIRADO DESDE EL PUNTO DE VISTA DE LOS MÉTODOS NUMÉRICOS La explicación del método se realizará para una función de 2 variables para su mejor comprensión, destacando que el método puede ser utilizado para una función de n variables. El método consiste básicamente en realizar la búsqueda en cada una de las dimensiones (X1,X2) y luego por la diagonal determinada por los puntos coordenadas y el punto inicial X0=( X1(0),X2(0)) en el cuál se inicio la búsqueda variando el paso para cada iteración en caso de ser necesario para ir ajustando el resultado hasta alcanzar la precisión requerida. El vector XBi es un “pivote” base que se sitúa en la coordenada (X1(i),X2(i)) que minimiza mejor la función objetivo o el resultado del experimento hasta la iteración “i”.

Fig1. Idea básica del método de búsqueda Hooke&Jeeves. El algoritmo en diagrama de flujo para realizar el método se muestra en la figura 2, en el cual se debe ingresar: • • • • • la función objetivo f(X) a minimizar en el caso de que se conozca(o bien, disponer de la planta a experimentar); el número N de variables de la función f(X); la tolerancia de error E permitida; el largo del paso D inicial; el punto inicial X0=(X1(0),X2(0)..., XN(0) );

if Y<YB YB=Y. end else X=2*XB-X0. %determina N Fig2. YB=f(XB(1). • N=2.X2)= cos(X1)+sen(X2). if Y<YB YB=Y. posicion_de_partida=X0. end end Fig3.X(2)). El diagrama de flujo de la figura 2 fue programado en Matlab y se muestra a continuación: function Hooke(E. YB=YA. else X(i)=XB(i). else D=0. En la gráfica de la curva del ejemplo 1 mostrado en la figura 3. entorno=R.5. if YA<YB XB=X.X0) N=length(X0).5*D. Y=f(X(1).5). Y=f(X(1). if R<=E posicion_final=XB.count=0.1. fin=1. while((fin==0)&(count<=1000)) X=XB.D. XB(i)=X(i).XB(2)). XB=X0. X0=XB. end end end count=count+1. minimo=YB.-6). rojo representan las zonas de máximos locales.2 Ejemplo 1: • f(X1.X(2)). X0=XB. XB(i)=X(i).X(2)). if YA==YB R=D*N^(0. Gráfica de la curva del ejemplo 1. YA=f(X(1). else A2=1. A2=0. else X(i)=XB(i)-D. • X0=(-1. • E=0. • D=1. while((A2==0)&(fin==0)&(count<=1000)) for i=1:1:N X(i)=XB(i)+D. y las más cercanas al azul las de mínimos locales. fin=0. count=count+1. las tonalidades más cercanas al end end posicion_de_partida posicion_final minimo=YB entorno=R iteraciones=count . YA=YB. Diagrama de flujo del algoritmo implementado.

-6. lo que arrojó los siguientes resultados: >>Hooke(1e-1.0) XB5 =(-3. A continuación se muestran los puntos encontrados para cada una de las iteraciones del ejemplo 1: Fig6.0) XB2 =(-3.875) III. En la figura 5 se denota en color rojo el punto inicial y con azul el final que corresponde al punto que minimiza la función objetivo.-7.125. . dada la tolerancia de error aceptada(E=0.5 -8 -8. Esquema en Simulink para la realización de los experimentos.5 -6] ) posición_de_partida= -1. El controlador PI con ganancia proporcional Kp y ganancia integrativa Kp/Ti.5.0.-7.-7.5 -3 -2.1250 -7.1).0) XB6 =(-3.0) XB1 =(-2.0. En este caso se utilizará la Planta o proceso a controlar como un experimento en el cuál se va a minimizar el valor IAE.-7.X2). como: • • • • IAE: Integral del valor absoluto del error.875) XB9 =(-3.25. X B's en el plano X X 1 -5 2 -5.25. Fig4.-7.5 -2 -1. El mínimo que debería haber encontrado con exacta precisión es –2 en las coordenadas (-π.125.5 X2 -7 -7.0) XB3 =(-3.875) XB10=(-3.-8.-8.5 -9 -4 -3.75) XB8 =(-3. ITSE: Integral del cuadrado del error ponderado por el tiempo.5 -6 posición_final= -3. de manera de minimizar alguna característica del lazo cerrado.3 function r=f(x.-8. X0 =(-1.5 -1 X 1 Fig5.1. Gráfica de los puntos XB en cada iteración.125.5.0884 iteraciones= 10 >> Los resultados obtenidos son muy buenos. -6. ISE: Integral del cuadrado del error.-8.9996 entorno= 0. Gráfica de la superficie del ejemplo 1 en el plano (X1. Para llevar a cabo nuestro experimento. En el esquema de la figura 6 se utilizó una Planta de primer orden con ganancia K y constante de tiempo Tau. ITAE: Integral del valor absoluto del error ponderado por el tiempo.5 -6 En este trabajo se utilizará el criterio de minimizar la integral del valor absoluto del error “IAE” frente a un escalón de referencia para ajustar los parámetros de un controlador PI (proporcional-integrativo).-7. En la línea de comando de Matlab se invocó la función Hooke (línea 1).75) XB7 =(-3.5.5.0) XB4 =(-3.[-1.-5π/2) que corresponde a un mínimo local.y) r=cos(x)+sin(y).8750 mínimo= -1. se utilizó Simulink de Matlab. APLICACIÓN EN CONTROL La idea general es utilizar el método de búsqueda directo para ajustar los parámetros de un controlador [4].

[10 1e-4]. • X0=(10.Ti=X(2). La función modificada se nombró HookePI en la cuál se debe ingresar: • la tolerancia de error E permitida. • los parámetros de la planta XP=(K. En la línea de comando de Matlab se invocó la función HookePI (línea 1). minimo=YB. YA=YB.1.Ti=XB(2). YA=er. K=XP(1). else A2=1. else X(i)=XB(i). function HookePI(E. if R<=E posicion=XB. end else X=2*XB-X0. Y=er. if YA<YB XB=X.Ti).6317e-6 iteraciones= 31 >> Fig7. Kp=X(1). %determina N X0 XB=X0.XP) global Kp Ti K Tau tout y ref error N=length(X0). XB(i)=X(i).1. Kp=X(1). Kp=X(1). En la figura 7 se puede ver que a medida que se acerca al mínimo local el algoritmo disminuye el paso hasta cumplir con la tolerancia de error. • D =0. Ejemplo 2: • E =1e-5. fin=1. while((A2==0)&(fin==0)&(count<=150)) for i=1:1:N X(i)=XB(i)+D.Tau=XP(2).0291e-4 entorno= 8. if Y<YB YB=Y. if YA==YB R=D*N^(0. while((fin==0)&(count<=150)) X=XB.5*D. YB=YA. XB(i)=X(i). YB=er. X0=XB.[0 tiempo]) r=IAE(length(IAE)). .Tau). Gráfica de los puntos XB en cada iteración.1e-3). • los parámetros iniciales X0=(Kp. end end end count=count+1. count=count+1. • el largo del paso D inicial. end end end end Kp=XB(1) Ti=XB(2) int_error_minima=YB entorno=R iteraciones=count function r=er( ) global K Tau Kp Ti tout ref y error tiempo=100*Tau.5).Ti=X(2).count=0. Kp=XB(1).707 Ti= 9.4 Se hicieron algunas modificaciones sobre el programa original para utilizar los resultados experimentales provenientes del Simulink.0.X0. sim('sist'. A2=0. X0=XB.Ti=X(2). if Y<YB YB=Y. • XP=(1. entorno=R. fin=0. else X(i)=XB(i)-D. lo que arrojó los siguientes resultados: >>Hooke(1e-5.9111e-4 Int_error_mínima= 1.1e-4).[1 1e-3] ) Kp= 9. else D=0.D. Y=er.

Journal of the ACM. cualquier otro. IV. Jeeves. ISE. por lo que la solución encontrada no necesariamente va a ser un mínimo global. del Depto. o bien. Optimización y Simulación de Procesos-“Métodos Numéricos” Universidad Nacional de Jujuy. CONCLUSIONES En base a los resultados presentados en este trabajo. 8. Apuntes del profesor J. April 1961.Glaria B. 2. Cabe destacar que los resultados encontrados por el método corresponden a mínimos locales. En la figura 8 se aprecia el buen desempeño del algoritmo para minimizar la integral del valor absoluto del error. Fig8. se puede concluir que el algoritmo de búsqueda directa de Hooke&Jeeves entrega resultados bastante satisfactorios y posee la gran ventaja de que solo requiere la función objetivo o la planta a experimentar.5 V. R. Enrique Tarifa. pp. éste se puede utilizar en sistemas más complejos para encontrar los parámetros del controlador que nos entregue la mejor respuesta posible del proceso según algún criterio como el IAE. Hooke and T. 3.cecc. 4. Vol. de Electrónica de la UTFSM-Valpo Chile. "Direct Search Solution of Numerical and Statistical Problems". Además como el método descrito opera en N variables. REFERENCIAS 1. ITAE. ISTE. 212229. .cl). CECC “Biografías Físicos-Matemáticos” (www. A. Gráfica de la respuesta a escalón inicial y final.

Sign up to vote on this title
UsefulNot useful