• Nenhum resultado encontrado

Autor: Anibal Tavares de Azevedo

N/A
N/A
Protected

Academic year: 2019

Share "Autor: Anibal Tavares de Azevedo"

Copied!
22
0
0

Texto

(1)

AULA 9

MINHA PRIMEIRA META-HEURÍSTICA

Autor: Anibal Tavares de Azevedo

INTRODUÇÃO À META-HEURÍSTICAS

MINHA PRIMEIRA META-HEURÍSTICA

Problema 1:

(2)

REPRESENTAÇÃO

MINHA PRIMEIRA META-HEURÍSTICA

CONSTRUINDO META-HEURÍSTICAS - BUSCA LOCAL

(3)

1

(4)

function [sol] = greedy(u,v,cap) r = v./u;

ind = 1:length(v); ord = bubble(r,ind); used = 0;

i = 1; sol = [];

while (used <= cap)&(i <= length(v)) sol = [sol ord(i)];

used = used + v(ord(i)); i = i + 1;

end

if (used > cap)

sol = sol(1:length(sol)-1) end

endfunction

Fornece ordem crescente de ri- O(n2) operações

Calcular a relação ri= vi/ui de cada item

Armazena os índices dos itens na mochila !

Retirar o último item, pois não cabe na mochila ! FUNÇÃO GREEDY

MINHA PRIMEIRA META-HEURÍSTICA

CONSTRUINDO META-HEURÍSTICAS - BUSCA LOCAL

1

SOLUÇÃO ALEATÓRIA

1 0 ?

If (rand() <= 0.5) then sol(i) = 1;

(5)

function [sol] = solaleat(u) n = length(u);

for i=1:n

if (rand() <= 0.5) then sol(i) = 0;

else

sol(i) = 1; end

end endfunction

FUNÇÃO SOLALEAT

1 1 1

0 0 0

Escolher 1 ! Sortear todos os

elementos !!

MINHA PRIMEIRA META-HEURÍSTICA

CONSTRUINDO META-HEURÍSTICAS - BUSCA LOCAL

1

(6)

Tarefa 1: Escolher uma vizinhança e criar função correspondente.

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 1: Escolher uma vizinhança e criar função correspondente.

1 0 0

No caso do problema da Mochila entende-se por solução vizinha

toda aquela que tiver um digito de diferença em relação a uma

solução inicialmente fornecida.

Solução inicial

0 0 0

1 1 0

1 0 1

7

12

10

0

(7)

Tarefa 1: Escolher uma vizinhança e criar função correspondente.

1 0 0

Solução inicial

0 0 0

1 1 0

1 0 1

7

12

10

0

Vizinhança Completa Best Improvement

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 1: Escolher uma vizinhança e criar função correspondente.

1 0 0

Solução inicial

0 0 0

1 1 0

7

12

0

(8)

Tarefa 1: Escolher uma vizinhança e criar função correspondente.

1 0 0

Solução inicial

0 0 0

1 1 0

1 0 1

7

12

10

0

Vizinhança Completa Random Improvement

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 1: Escolher uma vizinhança e criar função correspondente.

1 0 0

Para todas as vizinhanças é necessário criar uma função que

forneça a qualidade das soluções geradas, isto é, uma função

“Avaliar”.

Solução inicial

0 0 0

1 1 0

1 0 1

7

12

10

0

(9)

Tarefa 1: Escolher uma vizinhança e criar função correspondente.

Best Improvement

Pode-se combinar solução inicial aleatória e vizinhança First ou

para solução inicial Greedy usa-se a vizinhança Best, mas para a

maioria das aplicações práticas não é observado grande diferença.

First Improvement Random Improvement Avaliar

function [fo] = avaliar(sol,u)

endfunction

function [sol2] = xyzimprov(sol,u)

endfunction

Solução Greedy Solução Aleatória

MINHA PRIMEIRA META-HEURÍSTICA

function [fo] = avaliar(sol,u)

soma = 0.0;

for i=1:length(sol)

if (sol(i) == 1) then soma = soma + u(i); end

end

FUNÇÃO AVALIAR

1 0 0

SOL

7 5 3

u

i = 1

i = 2

SOMA = 7

SOMA = 7

7

(10)

function [sol2] = bestimprov(sol,u) [fo1] = avaliar(sol,u);

sol2 = sol;

for i=1:length(sol) aux = sol;

if (aux(i) == 1) then aux(i) = 0;

else

aux(i) = 1; end

[fo2] = avaliar(aux,u); if (fo2 > fo1) then

fo1 = fo2; sol2 = aux; end

end endfunction

FUNÇÃO BEST IMPROVEMENT

1 0 0

0 0 0

Realizar 1 troca Testar todas as

trocas !!

MINHA PRIMEIRA META-HEURÍSTICA

function [sol2] = firstimprov(sol,u) [fo1] = avaliar(sol,u);

sol2 = sol; i=1;

while((sol2 <= sol)|(i <= length(sol))) aux = sol;

if (aux(i) == 1) then aux(i) = 0;

else

aux(i) = 1; end

[fo2] = avaliar(aux,u); if (fo2 > fo1) then

fo1 = fo2; sol2 = aux; end

i = i + 1;

FUNÇÃO FIRST IMPROVEMENT

First Improvement

7

12

(11)

function [sol2] = randomimprov(sol,u) [fo1] = avaliar(sol,u);

sol2 = sol;

i= round(rand()*(length(sol)-1)+1); while((sol2 <= sol))

aux = sol;

if (aux(i) == 1) then aux(i) = 0;

else

aux(i) = 1; end

[fo2] = avaliar(aux,u); if (fo2 > fo1) then

fo1 = fo2; sol2 = aux; end

i= round(rand()*(length(sol)-1)+1); end

endfunction

Até o sorteio aleatório melhorar FUNÇÃO RANDOM IMPROVEMENT

MINHA PRIMEIRA META-HEURÍSTICA

REJEIÇÃO

PENALIZAÇÃO REPARAÇÃO

(12)

function [sol2] = bestimprov2(sol,u,v,cap) [fo1] = avaliar(sol,u);

sol2 = sol;

for i=1:length(sol) aux = sol;

if (aux(i) == 1) then aux(i) = 0;

else

aux(i) = 1; end

[flag]=factverif(aux,u,v,cap); if (flag == 1) then

[fo2] = avaliar(aux,u); if (fo2 > fo1) then

fo1 = fo2; sol2 = aux; end

end end endfunction

FUNÇÃO BEST IMPROVEMENT

REJEIÇÃO

1

0

0

1

1

0

0

0

Verificar aux !!

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 2: Escrever a função de avaliação de factibilidade “factverif”.

1 0 0

No caso do problema da Mochila entende-se que uma solução

factível é tal que o volume total dos itens selecionados não violam

a capacidade da mochila.

Solução Factível

7 6 4

v

SOL 1 1 0

Solução Infactível

7 6 4

(13)

function [flag] = factverif(sol,u,v,cap)

flag = 1; soma = 0.0;

for i=1:length(sol)

if (sol(i) == 1) then soma = soma + v(i); end

end

if (soma > cap) then flag = 0;

end endfunction

FUNÇÃO FACTVERIF - REJEIÇÃO

1 0 0

SOL

7 6 4

v

i = 1

i = 2

CAP = 7

CAP = 7

7

0

i = 3 0 CAP = 7

MINHA PRIMEIRA META-HEURÍSTICA

function [sol2] = bestimprov3(sol,u,v,cap) [fo1] = avaliar(sol,u);

sol2 = sol;

for i=1:length(sol) aux = sol;

if (aux(i) == 1) then aux(i) = 0;

else

aux(i) = 1; end

[fo2] = avaliarpen(aux,u,v,cap); if (fo2 > fo1) then

FUNÇÃO BEST IMPROVEMENT

PENALIZAÇÃO

(14)

Tarefa 3: Escrever a função de avaliação “avaliarpen”.

1 0 0

No caso do problema da Mochila entende-se que uma solução

factível é tal que o volume total dos itens selecionados não violam

a capacidade da mochila.

Solução Factível

7 6 4

v

Capacidade = 10 SOL

cap

1 1 0

Solução Infactível

7 6 4

v

Capacidade = 10 SOL

cap

MINHA PRIMEIRA META-HEURÍSTICA

function [fo] =

avaliarpen(sol,u,v,cap) soma = 0.0;

vol = 0.0; for i=1:length(sol)

if (sol(i) == 1) then soma = soma + u(i); vol = vol + v(i); end

end

if (vol > cap) then fo = soma - max(u)*(vol-cap);

else

fo = soma;

FUNÇÃO AVALIARPEN

1 0 0

SOL

7 6 4

v

i = 1

i = 2

VOL = 7

VOL = 7

7

0

(15)

CONSTRUINDO META-HEURÍSTICAS - BUSCA LOCAL

MINHA PRIMEIRA META-HEURÍSTICA

CONSTRUINDO META-HEURÍSTICAS - BUSCA LOCAL

(16)

CONSTRUINDO META-HEURÍSTICAS - BUSCA LOCAL

MINHA PRIMEIRA META-HEURÍSTICA

(17)

SIMULATED ANNEALING

MINHA PRIMEIRA META-HEURÍSTICA

(18)

SIMULATED ANNEALING

MINHA PRIMEIRA META-HEURÍSTICA

(19)

Tarefa 4: Escrever o “Simulated Annealing” para o “Knapsack”.

1 0 0

No caso do problema da Mochila entende-se que uma solução

factível é tal que o volume total dos itens selecionados não violam

a capacidade da mochila.

Solução Factível

7 6 4

v

Capacidade = 10 SOL

cap

1 1 0

Solução Infactível

7 6 4

v

Capacidade = 10 SOL

cap

MINHA PRIMEIRA META-HEURÍSTICA

function [s, f] =

sa(u,v,cap,pinit,Tmax,Tmin,Miter,alfa) T = Tmax;

[s] = ginit(u,v,cap,pinit); f = f1(s,u,v,cap);

soma = 0.0; vol = 0.0;delta = 0.0; while (T > Tmin)

iter = 0;

while (iter <= Miter) [si] = genrand();

delta=f1(si,u,v,cap)-f1(s,u,v,cap); if (delta >= 0) then

s = si;

f = f1(si,u,v,cap); else

aux = rand();

if (aux < exp(-delta/T)) then

(20)

function knapsack u = [7 5 3]; v = [7 6 4]; cap = 10; pinit = 1; Tmax = 1000; Tmin = 500; Miter = 2; alfa = 0.95; [sb, fob] =

sa(u,v,cap,pinit,Tmax,Tmin,Miter,alfa); endfunction

FUNÇÃO KNAPSACK

MINHA PRIMEIRA META-HEURÍSTICA

(21)

Aplicando “Simulated Annealing” em Problemas Contínuos

MINHA PRIMEIRA META-HEURÍSTICA

(22)

Aplicando “Simulated Annealing” em Problemas Contínuos

Referências

Documentos relacionados

Nível global de satisfação (questionários de avaliação da satisfação) 2015 - Utentes de CMI: 96% 2015 - Utentes LI: 98% Quadrimestral (Curto Internamento -

Nos dias 07 e 08 de maio de 2012 foi realizada reunião entre a Secretaria Municipal de Saúde (SMS) de Porto Alegre e agências das Nações Unidas com o objetivo de

ter que colocar um regramento de como vamos funcionar, porque não podemos 305. ficar debatendo um assunto ao longo de duas horas para, depois, terem que

Obrigações correntes FGTS 285.175 INSS a recolher 154.696 ISS retido 147.803 IRRF Salários 65.621 CSLL/COFINS/PIS retenções 42.920 IRRF a recolher 10.492.. No exercício de 2018

BL B´asica ´e muito mais lenta do que as demais em todos os problemas, principalmente nas maiores instˆancias da classe ORM P e nas instˆancias SLM P, pois n˜ao apresenta o teste

Para além disso, uma leitura panorâmica dos artigos que integram esta edição revela que as análises aqui apresentadas refletem as mudanças empíricas e de eixos de

Para a solução aproximada do PRP-UMP foram propostas duas heurísticas de construção, duas de busca local, além de um procedimento de busca intensiva conhecido na literatura

Foram implementadas e analisadas, para instâncias existentes na literatura, três heurísticas de construção, uma de busca local baseada na metaheurística VNS e uma heurística