You are on page 1of 15

COMPARAR ALGORITMO DE BUSCA DE DIREES

ALEATRIAS E ALGORITMO DE GRADIENTE


Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

T3-13/05/2015: COMPARAR ALGORITMO DE BUSCA DE


DIREES ALEATRIAS E ALGORITMO DE GRADIENTE.

Introduo
No caso de um problema de otimizao irrestrito, ele um critrio que
engloba de maneira mais geral um clculo matemtico de otimizao, o
objetivo deste trabalho justamente avaliar o desempenho de dois mtodos
bsicos, o mtodo de busca de direes aleatrias e o mtodo de gradiente,
na busca do mnimo local de uma funo dentro da bacia de atrao da
anlise.
Metodologia
O algoritmo de otimizao desenhado foi feito na plataforma MATLAB,
sendo a funo objetivo para o problema proposto na pgina 13 da unidade
5 das notas de aula, como expressa a equao (1).
f ( x )=2 x 21+x 22 +2 x1 x 2+ x 12 x 2+3

eq. [1]

Deve-se obter o valor das variveis {x} rsub {1 } e {x} rsub {2 } para que a
expresso da equao [1] seja o mnimo, sem ter restries para o valor das
variveis, sendo o ponto inicial em [-1 1].
O processo seguido para programao dos algoritmos de busca de direes
e de gradiente foram feitos com base nos passos descritos para cada um
deles nas notas de aula mencionados.
a. Algoritmo de busca de direes
A partir do desenho especificado para este algoritmo o qual
descreve-se no fluxograma 1, deu-se o incio para o desenho das
rutinas e sub-rotinas propcias para o casso.

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Para obter uma ordem e organizao no processo de programao, o


caminho seguido foi atravs do desenho de funes, as quais podem
ser requeridas como uma sub-rotina por qualquer um dos algoritmos
em caso de ser precisados.

[Capte
atencin
Definio
dala
funo
e dados inicias
de los lectores

Critrio de parada

Direo de busca

dk

Arg. mnimo de
= argmin(f(xk) + dk)

Xk+1=xk + dk

Fluxograma 1
Critrio de parada:
Para a definio do critrio de parada,
existem trs opes as quais se descrevem nas notas de aula no
capitulo cinco, sendo considerado para o caso particular o mtodo de
aproximao do valor da funo objetivo, considerando sempre que
as ltimas seis iteraes no variam mais do 0,0001 respeito da
diferena do mximo e mnimo ocorrido durante todo o algoritmo,
sendo deste modo executado no critrio de fim do anel fechado.
Direo de busca:
Para estabelecer o critrio de direo de
busca, considere-se um vetor de n componentes aleatrios com uma

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

distribuio gaussiana entre zero e um, como dita a norma do


algoritmo, sendo para o casso especfico um vetor dk=[2,1], j que a
funo objetivo tem duas variveis, importante compreender que
para cada um dos ciclos de clculo gerado preciso a avalio do
novo vetor de direo dk.
Constante alpha (): Um valor que requere um trabalho mais
profundo o escalar , j que junto com a direo dk, vo
estabelecer o estimativo de crescimento da varivel x para cada
iterao.
O processo de obteno de , feito atravs da funo
secaurea(), a qual vai ser descrita independentemente no Anexo 1,
considerando que tambm vai ser til no algoritmo de gradiente.
Clculo do vetor das variveis:
compreendido que para cada
ciclo de execuo do anel condicional while o vetor das variveis
xk vai ter um novo valor otimizado respeito ao seu predecessor,
sendo por isso importante armazenar todos os valores gerados, os
quais s podemos obter no passo final do algoritmo sendo
matematicamente obtido por a equao (2).
x k+1=x k + d k

eq. [2]

Como se observa na expresso (2), o valor de

x k+1

depende

diretamente dos valores prvios calculados x k y d k , o que faz


obvio que tem que ser a linha final dentro do algoritmo e a qual var

armazenar o valor de x .
A funo gerada para o algoritmo de busca de direes est expressa
em (3).
[xstar,iter]=minbusqueda(f,x,a,b)
[3]
Onde cada um dos termos expressos na funo descrito do seguinte
modo.
xstar: Vetor que contm a varivel para qual a funo vai dar o
mnimo valor dela.

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

iter: Escalar que faz o conta do nmero de repeties requeridas pela


funo minbusqueda foram necessrias para que o algoritmo
converge-se ao mnimo local, com o mnimo erro expressado no
critrio de parada.
Funo f: Funo objetivo a qual o tema de nosso analise.
x: Ponto inicial pertencente aos nmeros reais que fica dentro da
bacia de atrao condio de existncia do algoritmo.
a e b: So os limites para o condio que responsvel por gerar
o novo vetor x k .

b. Algoritmo do gradiente:
O segundo mtodo desenhado para a
determinao do mnimo local da funo dentro da bacia de atrao
em estudo foi o algoritmo do gradiente, o qual difere do algoritmo de
busca, s na maneira em que define o valor do vetor dk que, neste
casso vai ser o vetor gradiente da funo objetivo, o qual calculado
por a expresso gradiente( ) que uma sub-rotina exclusivamente
desenhada para avaliar iterativamente a derivada parcial da funo
objeto do analises, o algoritmo do gradiente descrito no Anexo 1.
No processo de fluxo de programao para o algoritmo de gradiente
tem que seguir uma sequncia similar ao algoritmo de busca de
direes aleatria, no fluxograma 2, tem um detalhe onde pode-se
apreciar a diferena no ponto de clculo da direo dk.

Definio da funo e dados inicias

Critrio de parada

dk= - gradiente gk(f(),)

Arg. mnimo de
= argmin(f(xk) + dk)

4
Xk+1=xk + dk

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Fluxograma 2
Sendo dk o negativo do valor do gradiente, calculado por meio da
funo gradiente (), a qual expressa a direo de decrescimento da
funo objetivo que neste casso de ordem dois.
Mantendo a similitude com o algoritmo de busca, procedesse com a
determinao do novo xk, que vai depender diretamente do seu
valor k-1 somado uma constante dk.
Finalmente precisa-se determinar a funo objetivo para cada uma
das iteraes, lembrando que seu valor vai ser o critrio de parada
para a expresso while at obter o mnimo erro estabelecido como
limite do clculo.
A funo desenhada para o mtodo do gradiente expressasse em (4).
[xstar,iter]=mingrad(f,x,a,b)

[4]

Onde:

xstar: Vetor que contm a varivel para qual a funo f(x), expressa
seu mnimo valor.
iter: Escalar que faz o conta do nmero de repeties requeridas pela
funo mingrad foram necessrias para que o algoritmo convergir
ao mnimo local, dentro do mnimo erro expressado no critrio de
parada.
Funo f: Funo objetivo o qual o tema de analises.
x: Ponto inicial pertencente aos nmeros reais que fica dentro da
bacia de atrao condio de existncia do algoritmo.
a e b: So os limites para o condio que responsvel por gerar
o novo vetor x k .

Resultados
i)

Algoritmo de busca de direes aleatrias: Executada a funo


com os dados requeridos que so os expressados na tabela 1. E aps

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

o tempo que preciso o computador para convergir a uma resposta


satisfatria se obtiveram os valores expressados na tabela 2. Para
otimizar a funo expressa na equao (1) por meio do da funo
minbusqueda(f,x,a,b).

Valores iniciais da funo minbusqueda(f,x,a,b)


x1

x2

-2

10

Tabela 1
Valores iniciais algoritmo de busca aleatria

Valores resposta da funo minbusqueda(f,x,a,b)


xsatar
-1.4817

iteraes
2.4720

334760

Tabela 1
Valores finares algoritmo de busca aleatria
ii)

Algoritmo de gradiente: Executada a funo com os dados


requeridos que so os expressados na tabela 3. E aps de o tempo
que preciso o computador para convergir a uma resposta satisfatria
se obtiveram os valores expressados na tabela 4. Para otimizar a
funo expressa na equao (1) por meio do da funo
mingrad(f,x,a,b).

iii)

Valores iniciais da funo mingrad(f,x,a,b)

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

x1

x2

-2

10

Tabela 3
Valores iniciais algoritmo de gradiente

Valores resposta da funo mingrad(f,x,a,b)


xsatar
-1.4779

iteraes
2.3874

11224

Tabela 4
Valores finares algoritmo de gradiente

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Anlises dos resultados


Uma vez culminada a execuo dos algoritmos, obtiveram-se os grficos de
convergncia de cada um deles (anexo 2), sendo as respostas obtidas
motivo de anlise.
Chama ateno que o algoritmo de busca de direes consume um maior
custo computacional, sendo o mesmo valor de limite de erro para os dois
estabelecido em 0.00001.
O algoritmo de gradiente converge muito mais rpido que o algoritmo de
busca de direes, mas a preciso do mtodo de busca foi mais confivel j
que, pr o mtodo analtico sabe-se que o mnimo da funo est no ponto
xal=[-1.5 2.5].
Avaliando um erro relativo para cada um dos algoritmos aplicando a
equao [5], obteve-se o expressado na tabela 3.
Er =

x al x star
100
xal

[5]

ERRO RELATIVO
Algoritmo de busca

Algoritmo de gradiente

Er =[ 1.22 1.12 ]

Er =[ 1.47 4.5 ]

Tabela 3
Erro relativo dos algoritmos
Se alm disso consideramos que uma relao entre o nmero de iteraes
requerido por os algoritmos, pode ser descrito percentualmente por um
2900% maior o para o algoritmo de busca de direes, em outras palavras,
a execuo do algoritmo de busca de direes precisa 2900% mais
iteraes que o algoritmo de gradiente, o que claramente um custo
computacional muito maior.

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Dos grficos de convergncia dos algoritmos pode-se observar que o


gradiente tem uma naturaliza de estabilidade e, a busca de direes tem
uma naturaliza que tende instabilidade.
Concluses
Analisando os dados obtidos, possvel concluir que, o algoritmo de
gradiente pode se considerar com maior eficincia, j que no s
deve-se analisar o erro de convergncia, alm disso importante
observar o tempo e custo computacional, que no justifica pois para
uma diferencia muito considervel de iteraes, no entrega uma
resposta de erro dentro do mesmo contexto.
Se o critrio do otimizador procurar o menor erro possvel, teria
que tomar como soluo o algoritmo de busca aleatria conseguindo
seu objetivo com o sacrifico de tempo e trabalho.
Pode-se compreender que a deciso sobre o melhor algoritmo
subjetiva, e s quando o otimizador defina globalmente os
requerimentos do problema poder tomar a deciso mais acertada.
Considerando que nem sempre o maior nmero de iteraes chega na
melhor resposta j que pode cair no casso que o ponto flutuante do
computador gere um erro adicional, pode-se estabelecer que na
maioria dos casos o algoritmo de gradiente ser mais confivel.

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
JUAN PABLO OCHOA AVILES

Mestrado em Engenharia Eltrica

Anexo 1
Funo gradiente
function [ gk ] = gradiente( f,X)
delta=0.0001;
[row,~]=size(argnames(f));
e=eye(row);
for i=1:row-1
for j=1:row
gk(j,i)=(f(X(i)+delta*e(i,j),X(i+1)+delta*e(i+1,j))f(X(i),X(i+1)))/delta;
end
end
end

Funo seo urea


function [alpha,a1,b1] = secaurea( f,a1,b1,GK,X )
i=0;
alphaa=b1-0.618*(b1-a1);
alphab=a1+0.618*(b1-a1);
fa=f(X(1)+alphaa*GK(1),X(2)+alphaa*GK(2));
fb=f(X(1)+alphab*GK(1),X(2)+alphab*GK(2));
while (b1-a1)>0.0001
if fa<fb
b1=alphab;
alphab=alphaa;
alphaa=b1-0.618*(b1-a1);
fb=fa;
fa=f(X(1)+alphaa*GK(1),X(2)+alphaa*GK(2));
else
a1=alphaa;
alphaa=alphab;
alphab=a1+0.618*(b1-a1);
fa=fb;
fb=f(X(1)+alphab*GK(1),X(2)+alphab*GK(2));
end
i=i+1;
end
alpha=(a1+b1)/2;
end

10

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

11

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
JUAN PABLO OCHOA AVILES

Mestrado em Engenharia Eltrica

Anexo 2
1
0.8
0.6

f(x)

0.4
0.2
0
-0.2
-0.4

2000

4000

6000
iteraes

8000

10000

12000

Grfico 1
Convergncia do algoritmo do gradiente

11

x 10

3.5
3
2.5

f(x)

2
1.5
1
0.5
0
-0.5

0.5

1.5

iteraes

2.5

3.5
5

x 10

Grfico 2
Convergncia do algoritmo de busca de seo aleatria

12

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Anexo 3
Algoritmo de busca de direes aleatrias
function [ xstar,iter ] = minbusqueda( f,x,a,b )
parada=0;
k=1;
X=x(k,:)
F(k)=f(X(1),X(2));
a1=a;
b1=b;
[row,~]=size(argnames(f));
while parada==0;
dk=rand(row,1);
[alpha,a1,b1]=secaurea(f,a1,b1,dk,X);
k=k+1;
x(k,:)=x(k-1,:)'+alpha*dk;
X=x(k,:);
F(k)=f(X(1),X(2));
Fxmax=max(F);
[Fxmin,xstar]=min(F);
deltaF=Fxmax-Fxmin;
if k>5
F5=[F(k);F(k-1);F(k-2);F(k-3);F(k-4);F(k-5)];
EF1=max(F5)-min(F5);
if EF1<0.00001*deltaF'
parada=1;
end
end

end
[fila,coluna]=size(x)
x(xstar,:)
plot(F);
iter=k;
end

13

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

Algoritmo de busca de gradiente

function [ xstar,iter ] = mingrad( f,x,a,b )


parada=0;
k=1;
X=x(k,:)
F(k)=f(X(1),X(2));
a1=a;
b1=b;
while parada==0;
gk(:,k)=gradiente(f,X);
GK=gk(:,k);
dk=-GK;
[alpha,a1,b1]=secaurea(f,a1,b1,GK,X);
k=k+1;
x(k,:)=x(k-1,:)'+alpha*dk;
X=x(k,:);
F(k)=f(X(1),X(2));
Fxmax=max(F);
[Fxmin,xstar]=min(F);
deltaF=Fxmax-Fxmin;
if k>5
F5=[F(k);F(k-1);F(k-2);F(k-3);F(k-4);F(k-5)];
EF1=max(F5)-min(F5);
if EF1<0.000001*deltaF'
parada=1;
end
end
end
x(xstar,:)
plot(F);
iter=k;
end

14

Maio de 2015

COMPARAR ALGORITMO DE BUSCA DE DIREES


ALEATRIAS E ALGORITMO DE GRADIENTE
Mestrado em Engenharia Eltrica

JUAN PABLO OCHOA AVILES

15

Maio de 2015

You might also like