Académique Documents
Professionnel Documents
Culture Documents
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
[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
eq. [2]
x k+1
depende
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
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.
Critrio de parada
Arg. mnimo de
= argmin(f(xk) + dk)
4
Xk+1=xk + dk
Maio de 2015
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)
Maio de 2015
x2
-2
10
Tabela 1
Valores iniciais algoritmo de busca aleatria
iteraes
2.4720
334760
Tabela 1
Valores finares algoritmo de busca aleatria
ii)
iii)
Maio de 2015
x1
x2
-2
10
Tabela 3
Valores iniciais algoritmo de gradiente
iteraes
2.3874
11224
Tabela 4
Valores finares algoritmo de gradiente
Maio de 2015
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
Maio de 2015
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
10
Maio de 2015
11
Maio de 2015
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
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
14
Maio de 2015
15
Maio de 2015