Sunteți pe pagina 1din 5

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 T.A. Jeeves publicó la referencia [1] en el


directo de Hooke&Jeeves propuesto en [1] Journal ACM en 1961.
para determinar los parámetros de un
controlador PI utilizando el software Matlab. II. MÉTODO DE HOOKE&JEEVES PARA
BUSCAR MÍNIMOS MIRADO DESDE EL
I. INTRODUCCIÓN PUNTO DE VISTA DE LOS MÉTODOS
NUMÉRICOS
Los métodos analíticos imponen demasiadas
restricciones a las funciones objetivos, y resulta La explicación del método se realizará para una
que no siempre es posible resolver el sistema de función de 2 variables para su mejor
ecuaciones analíticamente. Para resolver ésta comprensión, destacando que el método puede
problemática nacen los métodos numéricos, los ser utilizado para una función de n variables. El
cuáles se dividen en dos grandes grupos, los método consiste básicamente en realizar la
métodos numéricos Indirectos y los Directos [2]. búsqueda en cada una de las dimensiones
(X1,X2) y luego por la diagonal determinada por
Los métodos numéricos Indirectos utilizan la los puntos coordenadas y el punto inicial X0=(
función objetivo analítica, las primeras y X1(0),X2(0)) en el cuál se inicio la búsqueda
segundas derivadas, pero las derivadas muchas variando el paso para cada iteración en caso de
veces son de difícil obtención e incluso puede ser necesario para ir ajustando el resultado hasta
que no se conozca la función objetivo alcanzar la precisión requerida. El vector XBi es
analíticamente. Entre los métodos Indirectos más un “pivote” base que se sitúa en la coordenada
conocidos se encuentran: Newton, Quasi- (X1(i),X2(i)) que minimiza mejor la función
Newton, Secante, “Regula Falsi”. objetivo o el resultado del experimento hasta la
iteración “i”.
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 Fig1. Idea básica del método de búsqueda
conocidos se encuentran: Fibonacci, Hooke&Jeeves.
Nelder&Mead, y el no tan conocido
“Hooke&Jeeves” [1] que será tratado con El algoritmo en diagrama de flujo para realizar el
profundidad en este trabajo. método se muestra en la figura 2, en el cual se
R. Hooke (1635-1702) Filósofo y Físico inglés debe ingresar:
considerado el mecánico más notable de su
época y fundador de la meteorología científica. • la función objetivo f(X) a minimizar en el
Fue el primero en formular la teoría de los caso de que se conozca(o bien, disponer de
movimientos planetarios matemáticamente y se la planta a experimentar);
dice que fue él quien por primera vez idealizo • el número N de variables de la función f(X);
“que los cuerpos se atraen mutuamente con una • la tolerancia de error E permitida;
fuerza que varía inversamente al cuadrado de la • el largo del paso D inicial;
distancia que los separa”.
• el punto inicial X0=(X1(0),X2(0)..., XN(0) );
2

Ejemplo 1: rojo representan las zonas de máximos locales, y


• f(X1,X2)= cos(X1)+sen(X2); las más cercanas al azul las de mínimos locales.
• N=2;
• E=0.1; El diagrama de flujo de la figura 2 fue
• D=1; programado en Matlab y se muestra a
• X0=(-1.5;-6); continuación:

function Hooke(E,D,X0)
N=length(X0); %determina N
XB=X0;
YB=f(XB(1),XB(2));
fin=0;count=0;
posicion_de_partida=X0;

while((fin==0)&(count<=1000))
X=XB;
YA=YB;
A2=0;
while((A2==0)&(fin==0)&(count<=1000))
for i=1:1:N
X(i)=XB(i)+D;
Y=f(X(1),X(2));
if Y<YB
YB=Y;
XB(i)=X(i);
else
X(i)=XB(i)-D;
Y=f(X(1),X(2));
if Y<YB
YB=Y;
XB(i)=X(i);
else
X(i)=XB(i);
end
end
end
count=count+1;
if YA==YB
R=D*N^(0.5);
if R<=E
posicion_final=XB;
minimo=YB;
entorno=R;
fin=1;
else
Fig2. Diagrama de flujo del algoritmo D=0.5*D;
implementado. X0=XB;
end

else
X=2*XB-X0;
YA=f(X(1),X(2));
X0=XB;
if YA<YB
XB=X;
YB=YA;
count=count+1;
else
A2=1;
end
end
end
end
Fig3. Gráfica de la curva del ejemplo 1. posicion_de_partida
posicion_final
En la gráfica de la curva del ejemplo 1 mostrado minimo=YB
en la figura 3, las tonalidades más cercanas al entorno=R
iteraciones=count
3

function r=f(x,y)
r=cos(x)+sin(y);
X0 =(-1.5;-6.0)
XB1 =(-2.5;-7.0)
XB2 =(-3.5;-8.0)
XB3 =(-3.5;-8.0)
XB4 =(-3.0;-8.0)
XB5 =(-3.0;-8.0)
XB6 =(-3.25;-7.75)
XB7 =(-3.25;-7.75)
XB8 =(-3.125;-7.875)
XB9 =(-3.125;-7.875)
XB10=(-3.125;-7.875)

Fig4. Gráfica de la superficie del ejemplo 1 en III. APLICACIÓN EN CONTROL


el plano (X1,X2).
La idea general es utilizar el método de búsqueda
En la línea de comando de Matlab se invocó la directo para ajustar los parámetros de un
función Hooke (línea 1), lo que arrojó los controlador [4], de manera de minimizar alguna
siguientes resultados: característica del lazo cerrado, como:

>>Hooke(1e-1,1,[-1.5 -6] ) • IAE: Integral del valor absoluto del


posición_de_partida= -1.5 -6 error;
posición_final= -3.1250 -7.8750 • ITAE: Integral del valor absoluto del
mínimo= -1.9996 error ponderado por el tiempo;
entorno= 0.0884 • ISE: Integral del cuadrado del error;
iteraciones= 10 • ITSE: Integral del cuadrado del error
>> ponderado por el tiempo;

Los resultados obtenidos son muy buenos, dada En este trabajo se utilizará el criterio de
la tolerancia de error aceptada(E=0.1). El minimizar la integral del valor absoluto del error
mínimo que debería haber encontrado con exacta “IAE” frente a un escalón de referencia para
precisión es –2 en las coordenadas (-π,-5π/2) ajustar los parámetros de un controlador PI
que corresponde a un mínimo local. (proporcional-integrativo). En este caso se
utilizará la Planta o proceso a controlar como un
X B's en el plano X X
1 2 experimento en el cuál se va a minimizar el valor
-5
IAE.
-5.5 Para llevar a cabo nuestro experimento, se utilizó
-6 Simulink de Matlab.
-6.5

-7
X2

-7.5

-8

-8.5

-9
-4 -3.5 -3 -2.5 -2 -1.5 -1
X
1

Fig5. Gráfica de los puntos XB en cada


iteración. Fig6. Esquema en Simulink para la
realización de los experimentos.
En la figura 5 se denota en color rojo el punto
inicial y con azul el final que corresponde al En el esquema de la figura 6 se utilizó una Planta
punto que minimiza la función objetivo. A de primer orden con ganancia K y constante de
continuación se muestran los puntos encontrados tiempo Tau; El controlador PI con ganancia
para cada una de las iteraciones del ejemplo 1: proporcional Kp y ganancia integrativa Kp/Ti.
4

Se hicieron algunas modificaciones sobre el end


end
programa original para utilizar los resultados end
experimentales provenientes del Simulink. Kp=XB(1)
La función modificada se nombró HookePI en la Ti=XB(2)
cuál se debe ingresar: int_error_minima=YB
entorno=R
• la tolerancia de error E permitida; iteraciones=count
• el largo del paso D inicial;
• los parámetros iniciales X0=(Kp,Ti); function r=er( )
global K Tau Kp Ti tout ref y error
• los parámetros de la planta XP=(K,Tau); tiempo=100*Tau;
sim('sist',[0 tiempo])
function HookePI(E,D,X0,XP) r=IAE(length(IAE));

global Kp Ti K Tau tout y ref error Ejemplo 2:


N=length(X0); %determina N
X0 • E =1e-5;
XB=X0; • D =0.1;
Kp=XB(1);Ti=XB(2); • X0=(10,1e-4);
K=XP(1);Tau=XP(2);
YB=er; • XP=(1,1e-3);
fin=0;count=0;
while((fin==0)&(count<=150)) En la línea de comando de Matlab se invocó la
X=XB;
función HookePI (línea 1), lo que arrojó los
YA=YB;
A2=0; siguientes resultados:
while((A2==0)&(fin==0)&(count<=150))
for i=1:1:N >>Hooke(1e-5,0.1,[10 1e-4],[1 1e-3] )
X(i)=XB(i)+D;
Kp=X(1);Ti=X(2);
Kp= 9.707
Y=er; Ti= 9.9111e-4
if Y<YB Int_error_mínima= 1.0291e-4
YB=Y; entorno= 8.6317e-6
XB(i)=X(i);
else iteraciones= 31
X(i)=XB(i)-D; >>
Kp=X(1);Ti=X(2);
Y=er;
if Y<YB
YB=Y;
XB(i)=X(i);
else
X(i)=XB(i);
end
end
end
count=count+1;
if YA==YB
R=D*N^(0.5);
if R<=E
posicion=XB;
minimo=YB;
entorno=R;
fin=1; Fig7. Gráfica de los puntos XB en cada
else iteración.
D=0.5*D;
X0=XB;
end En la figura 7 se puede ver que a medida que se
else acerca al mínimo local el algoritmo disminuye el
X=2*XB-X0; paso hasta cumplir con la tolerancia de error.
Kp=X(1);Ti=X(2);
YA=er;
X0=XB;
if YA<YB
XB=X;
YB=YA;
count=count+1;
else
A2=1;
end
5

V. REFERENCIAS

1. R. Hooke and T. A. Jeeves, "Direct Search


Solution of Numerical and Statistical Problems",
Journal of the ACM, Vol. 8, April 1961, pp. 212-
229.

2. Enrique Tarifa, Optimización y Simulación de


Procesos-“Métodos Numéricos” Universidad
Nacional de Jujuy.

3. CECC “Biografías Físicos-Matemáticos”


Fig8. Gráfica de la respuesta a escalón inicial (www.cecc.cl).
y final.
4. Apuntes del profesor J.Glaria B. del Depto. de
En la figura 8 se aprecia el buen desempeño del Electrónica de la UTFSM-Valpo Chile.
algoritmo para minimizar la integral del valor
absoluto del error.

IV. CONCLUSIONES

En base a los resultados presentados en este


trabajo, 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. Cabe destacar que los
resultados encontrados por el método
corresponden a mínimos locales, por lo que la
solución encontrada no necesariamente va a ser
un mínimo global. Además como el método
descrito opera en N variables, é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, ITAE, ISE,
ISTE, o bien, cualquier otro.

S-ar putea să vă placă și