Você está na página 1de 7

UFCG – Campina Grande – CEEI – PPgEE

Disciplina: Métodos de Otimização Aplicados a Sistemas Elétricos – 2017.1


Professor: Benemar Alencar de Souza
Aluno: Arthur Francisco Andrade

Exercício 4 – 14/05/2017

1) Programar o método Simulated Annealing (Têmpera Simulada).

Como base na exposição do método em sala de aula, no material fornecido e nas


pesquisas realizadas, a seguinte função foi escrita em Matlab® para executar o método
da Têmpera Simulada.

function [x0, f0] = tempera_simulada(f,x0,l,u)


f0 = feval(f,x0);
s = size(x0);

tol = 1e-3;
Ti = 1;
n = 50;
a = 0.5;
k = 1e4;

for T = Ti+tol:-0.02:tol

for k = 1:n %Sequência de pontos testados com temperatura


constante

x1 = x0 + a*(2*rand(s)-1);
x1 = (x1 < l).*l+(l <= x1).*(x1 <= u).*x1+(u < x1).*u;

fx1 = feval(f,x1);
df = fx1 - f0;

if(df >= 0) %O objetivo escolhido foi maximizar a função


x0 = x1;
f0 = fx1;
else
if(rand < exp(k*df/T))
x0 = x1;
f0 = fx1;
end
end

end %Fim do laço interno


end %Fim do laço externo
Descrição da função:

A função tempera_simulada recebe uma variável representante (function handle)


da função a ser otimizada. No caso em questão, o objetivo inserido no código foi
maximizar a função objetivo. Também devem ser fornecidas um vetor x0 com a
estimativa inicial e vetores com limitantes inferior (l, lower) e superior (u, upper) para o
vetor solução. Os limitantes não são intrinsecamente necessários ao método. Porém,
essas limitações evitam a obtenção de soluções espúrias caso o ponto de busca se
distancie muito da região de interesse. As variáveis de retorno da função são um vetor
solução obtido e o valor ótimo encontrado.
O algoritmo busca mimetizar o processo de resfriamento controlado de uma liga
metálica. O programa consiste em, a partir de um ponto inicial, variar o estado
acrescendo um deslocamento aleatório à posição atual. Caso a função avaliada no novo
ponto apresente um desempenho superior em relação ao ponto anterior, o novo ponto
passa a ser o estado atual. Mesmo que o novo ponto apresente desempenho inferior,
ele poderá substituir o ponto original, porém com uma probalidade dada por edf/T, sendo
df um numero negativo correspondente à diferença entre os valores novo e anterior da
função objetivo, e T é a temperatura considerada.
De fato, T é uma constante que decresce a cada iteração do laço externo, e que
lida com o grau de liberdade com o qual estados de menor desempenho podem ser
atingidos. A medida em que T decresce, a possibilidade de escolha de pontos que
contrariem ótimos locais diminui. Em um primeiro momento, poder-se-ia questionar a
razão de definir um modo de alcançar pontos de desempenho inferior. O motivo para
fornecer esse grau de liberdade é possibilitar que o método de busca abdique de ótimos
locais em favor de ótimos globais em potencial.
Assim, no início da execução do programa, com altos valores de temperatura,
todos os pontos possuem probabilidade de serem escolhidos. Com a diminuição da
temperatura, a possibilidade de variação da solução é diminuída e um ponto ótimo é
rastreado.
Durante os testes da função desenvolvida, foi constatada a influência dos
parâmetros sobre a garantia de convergência e a precisão e exatidão da solução obtida.
Posso destacar que a exatidão aumenta ao se aumentar o número n de passos para
cada valor de temperatura. Também deve-se garantir que a razão df/T possua uma
variação suave a partir de um valor próximo de zero até um número negativo de grande
magnitude, de modo que inicialmente exp(df/T) seja próximo de um e tenda a zero a
medida em que a solução vai se aproximando da região definitiva.

2) Aplique o Simulated Annealing do problema 1 para determinar o máximo da


função:
2 - y2
f(x, y) = (2x2 + y2 )e1 - x

A função foi transcrita no Matlab®, como pode ser visto a seguir. Em seguida, foi
inserida na função de otimização escrita no item 1. Como a função de otimização
tempera_simulada já foi escrita com o objetivo definido de rastrear o máximo da função,
não é necessário inverter o sinal da função objetivo.
function f = ex4(x) %Função ex4 (exercício 4).

f = (2*x(1)^2+x(2)^2)*exp(1-x(1)^2-x(2)^2);

end

A região de busca foi definida como sendo o retângulo delimitado pelos pontos
(-2,-2) e (2,2) do plano. A chamada da função na janela de comando e as soluções
encontradas podem ser vistas na Figura 1.

(a)

(b)

Figura 1 – Soluções obtidas no Matlab®.

De fato, pode-se verificar na equação de definição da função que a mesma


apresenta máximo global fmax = 2 para dois pontos distintos: (-1,0) e (1,0). Assim, foi
constatado que, considerando que os resultados apresentados na Figura 1 foram
confirmados.
Uma análise do gráfico da função, mostrado na Figura 2, ratifica as soluções
obtidas. Pode ser observada a simetria da função em torno dos eixos x e y, considerados
individualmente, e a existência de máximo global nos dois pontos encontrados.
Figura 2 - Gráfico da função objetivo do problema 2.

3) Determine o volume máximo de uma caixa retangular cuja área da superfície fecha
(caixa e tampa) é 10 m2.

Resolução:
O volume da caixa retangular é dado pelo produto de suas três dimensões. A área
da superfície é dada por A = 2xy + 2xz + 2yz = 10 m².

Assim, o problema consiste em maximizar a função f sujeita à restrição g, no


domínio indicado:

f(x,y,z) = xyz
{g(x,y,z) = xy + xz + yz = 5
(x, y, z > 0)

Este problema pode ser resolvido por meio de duas abordagens diferentes:

• A primeira consiste em isolar uma das variáveis na segunda equação e


substituí-la na primeira, de modo a se obter um problema equivalente com
apenas duas variáveis. Escolhamos a variável z. Então:

5 - xy
z(x + y) = 5 – xy → z= .
x+y
Logo,

5 - xy
v(x, y) = xy .
x+y

Este novo problema, sem restrição além de as variáveis de controle serem


positivas, pode ser resolvido utilizando qualquer dos métodos estudados. A
solução encontrada é vmax = 2,1517 m³ para x = y = z = 1,2910 m.
O formato que maximiza o volume para uma dada área superficial é o
cúbico.
Uma resolução para este problema empregando a função fminsearch do
Matlab® pode ser vista na Figura 3. Como a função fminsearch rastreia o valor
mínimo da função objetivo, o problema de maximização foi convertido no
problema de minimização equivalente por meio da inserção de um sinal negativo
na definição da função.

(a)

Figura 3 – Resolução do problema em Matlab® usando (a) a função fminsearch (método Simplex) e (b)
utilizando a função tempera_simulada escrita pelo aluno.

Um gráfico da função v(x,y) pode ser visto na Figura 4. Nele, foi destacado o
máximo global.
r

Figura 4 – Gráfico de v(x,y).

• A segunda forma de resolver o problema é empregando do método dos


Multiplicadores de Lagrange, o qual consiste em resolver:

∇f + λ∇g = 0.

No caso em questão, um problema de três variáveis com restrição definida pela


função g é convertido em um problema com uma variável adicional, no qual o
multiplicador λ é a quarta variável. Assim, tem-se:

∇f = (yz, xz, xy)


e
∇g = (y + z, x + z, x + y).

Assim, a condição de Lagrange em conjunto com a equação da restrição resulta


em um sistema de quatro equações e quatro incógnitas:

yz + λy + λz = 0
xz + λx + λz = 0
{
xy + λx + λy = 0
xy + xz + yz - 5 = 0

O problema pode ser resolvido manualmente ou empregando uma função para


resolução de sistemas de equações não-lineares. Neste caso, foi utilizada a função
fsolve da biblioteca do Matlab®. Esta função recebe como entrada um representante de
uma função, transcrita abaixo, e uma estimativa inicial do vetor de soluções.

function f = sistemaLagrange (x)

f(1) = x(2)*x(3) + x(4)*x(2) + x(4)*x(3);


f(2) = x(1)*x(3) + x(4)*x(1) + x(4)*x(3);
f(3) = x(1)*x(2) + x(4)*x(1) + x(4)*x(2);
f(4) = x(1)*x(2) + x(1)*x(3) + x(2)*x(3) - 5;

end
Após a definição do sistema por meio da função sistemaLagrange, segue a resolução,
como mostrado na captura de tela da Figura 5.

Figura 5 – Resolução do sistema de equações do método de Lagrange.

Como pode ser visto na Figura 5, foram encontrados os valores x = y = z =


1,2910 m para as dimensões da caixa. O valor encontrado para o multiplicador foi λ = -
0,6455. Assim, dado que v = xyz = 1,2910³, o volume da caixa obtido foi novamente
2,1517 m³.

Conclusões
• A realização da atividade proposta proporciona ao aluno a aquisição de
competências em relação ao algoritmo estudado.
• A programação do método de Têmpera Simulada permitiu revisar a lógica
deste método heurístico e constatar o papel das constantes no
desempenho das soluções obtidas.
• Sendo a Têmpera Simulada um método com característica estocástica, as
soluções obtidas em diferentes execuções podem não ser as mesmas, a
rigor. Este fato é uma vantagem pois, nos casos em que a função objetivo
apresenta ótimo global em mais de um ponto do domínio considerado, o
método de busca é capaz de encontrar todas as soluções ótimas. Nesse
sentido, o método da Têmpera Simulada se assemelha aos algoritmos
genéticos.
• No item 3, foi proposta uma questão prática que se traduz em um problema
de otimização com restrição definida por função. A resolução do problema
pode ser (e foi) executada de duas formas: unindo a equação de restrição
à função objetivo, e em seguida aplicando o método de Lagrange.
• Neste caso, dada a relativa simplicidade do problema, não foi difícil
incorporar a restrição à função objetivo eliminando uma das variáveis.
Entretanto, como discutido em sala de aula, em alguns casos nos quais as
restrições existem em maior quantidade e/ou são definidas por leis mais
complexas, o método de Lagrange pode ser uma escolha nitidamente
vantajosa.

Você também pode gostar