• Nenhum resultado encontrado

AULA 10 META-HEURÍSTICAS NO PCV

N/A
N/A
Protected

Academic year: 2019

Share "AULA 10 META-HEURÍSTICAS NO PCV"

Copied!
44
0
0

Texto

(1)

AULA 10

META-HEURÍSTICAS NO PCV

Autor: Anibal Tavares de Azevedo

INTRODUÇÃO À META-HEURÍSTICAS

PROBLEMAS PROGRAMAÇÃO INTEIRA

Designação

Mochila

(2)

Leonard Euler

O problema das Sete Pontes de Konigsberg

Percorrer todas as sete pontes sem

repetir nenhuma (não tem solução). Grafo

(1) Percorrer todas as cidades.

(3) Minimizar a distância percorrida ! (2) Passar por todas

apenas uma única vez.

(3)

4

3

2

1 1 4 2 3 4 2 3 1 2 3 1 4 3 1 4 2

4

3

2

1 1 4 2 3 4 2 3 1 2 3 1 4 3 1 4 2 4

3

2

1 1 3 2 4 3 2 4 1 2 4 1 3 4 1 3 2

4

3

2

1 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3

Para o Problema do Caixeiro Viajante Simétrico existem (n-1)!/2 soluções distintas em termos de

distância !

Problema do Caixeiro Viajante

Cidades (n-1)!/2 Tempo

5 12 Insignif.

10 181440 0.001 s

15 43 bilhões 10 min

20 6.0 x 1016 36 anos

25 3.1 x 1023 235 milhões

de anos Quanto tempo

para resolver usando 1 computador capaz de fazer

1 bilhão de adições por segundo ?

E para valores acima de 26 ?

(4)

1 2

3 4 5

6 7

8 9

10

11 12

13 14

(5)

1 2

3 4 5

6 7

8 9

10

11 12

13 14

Problema do Caixeiro Viajante

i j

xij

Variáveis de Decisão

X = 1 se o caixeiro vai do nó i para o nó j.

Problema do Caixeiro Viajante

x

i j

Origem

(6)

1

5

2

3

x13 x12

Variáveis de Decisão

x15

4

Xij= 1 se o caixeiro vai do nó i para o nó j. x14

x41 x31

x21

x51

1

5

2

3

x13 x12

Dado que estou na cidade 1, qual será a próxima cidade?

x15

4

x14

(7)

1

5

2

3

x53 x52

Dado que estou na cidade 1, qual será a próxima cidade?

x51

4

x54

x

51

+ x

52

+ x

53

+ x

54

= 1

Problema do Caixeiro Viajante

i

5

2

3

xi3 xi2

Dado que estou na cidade i, qual será a próxima cidade?

xi5

4

xi4

m

i

x

m

ij

=

1

,

=

1

,

L

,

(8)

1

5

2

3

x31 x21

Dado que estou na cidade 1, qual foi a cidade anterior?

x51

4

x41

x

21

+ x

31

+ x

41

+ x

51

= 1

1

5

2

3

x35 x25 x15

4

x45

x

15

+ x

25

+ x

35

+ x

45

= 1

Dado que estou na cidade 5, qual foi a cidade anterior?

(9)

j

5

2

3

Dado que estou na cidade j, qual será a próxima cidade?

4

m

j

x

m i j i

ij

1

,

1

,

,

, 1

L

=

=

≠ = x3j x2j x5j x4j

Problema do Caixeiro Viajante

Min

S.a.:

MODELO INCOMPLETOGERAL

m

i

x

m

j

ij

1

,

1

,

,

1

L

=

=

=

m

j

x

m i

ij

1

,

1

,

,

1

L

=

=

=

∑∑

= = m i m j ij ij

x

c

1 1

custo para realizar percorrer a rota i-j

m

j

i

x

ij

=

1

ou

0

,

,

=

1

,

L

,

Pelo menos 1 cidade j posterior a i

Pelo menos 1 cidade j anterior a i

(10)

i j

xij

Variáveis de Decisão

Xij= 1 se operário i realiza a tarefa j e 0 caso contrário.

x

i j

Operário

Tarefa

1

2

x22

1

2

x21 x12 x11

n

m

=

n = no. de tarefas m = no. operários

Restrições : todas as tarefas j devem ser alocadas a pelo menos 1 operário e vice-versa.

(11)

Min

S.a.:

MODELO COMPLETO GERAL

Problema de Designação

m

i

x

m

j

ij

1

,

1

,

,

1

L

=

=

=

m

j

x

m i

ij

1

,

1

,

,

1

L

=

=

=

∑∑

= = m i m j ij ij

x

c

1 1

custo para realizar a tarefa

m

j

i

x

ij

=

1

ou

0

,

,

=

1

,

L

,

Pelo menos 1 tarefa (j) para cada operário(i)

Pelo menos 1 operário(i) para

cada tarefa (j)

Min

S.a.:

MODELO COMPLETO GERAL

Problema de Designação

m

i

x

m

j

ij

1

,

1

,

,

1

L

=

=

=

m

j

x

m i

ij

1

,

1

,

,

1

L

=

=

=

∑∑

= = m i n j ij ij

x

c

1 1

custo para realizar a tarefa

m

j

i

x

ij

=

1

ou

0

,

,

=

1

,

L

,

X é solução inteira !! (Bazaraa, 2nd, p.429) Caso particular do modelo de transporte: m = n e vetor b só com

(12)

MAS...

1

4

2

3

5

6 7

As restrições anteriores permitem a existência de sub-rotas !! 1

4

2

3

5

6 7

1

5

2

3

x21

Eliminação de sub-rotas com dois nós

4

Problema do Caixeiro Viajante

x12

x13

x31 x14

x41 x51

x15

(13)

1

5

2

3

x21

Eliminação de sub-rotas com dois nós

4

Problema do Caixeiro Viajante

x12

x

12

+ x

21

≤≤≤≤

1

1 2

x21

Eliminação de sub-rotas com dois nós

Problema do Caixeiro Viajante

x12

(14)

1 2

x21

Eliminação de sub-rotas com dois nós

x12

x

12

+ x

21

≤≤≤≤

1

1 2

x21

x12

ou

1 2

x21

Eliminação de sub-rotas com dois nós

Problema do Caixeiro Viajante

x12

x

12

+ x

21

≤≤≤≤

1

1 2

x21

x12

1 2

x21

x12

ou

(15)

1

5

2

3

Eliminação de sub-rotas com três nós

4

Problema do Caixeiro Viajante

x

ij

+ x

jk

+ x

ki

≤≤≤≤

2

1

5

2

3

Eliminação de sub-rotas com três nós

4

Problema do Caixeiro Viajante

x12

x23

x31

(16)

Min

S.a.:

MODELO COMPLETOGERAL

m

i

x

m

j

ij

1

,

1

,

,

1

L

=

=

=

m

j

x

m i

ij

1

,

1

,

,

1

L

=

=

=

∑∑

= = m i m j ij ij

x

c

1 1

custo para realizar percorrer a rota i-j

m

j

i

x

ij

=

1

ou

0

,

,

=

1

,

L

,

∈ = − ≤ S j i

ij S S m

x , , , 2 , 1 L

No. nós sub-grafo Eliminação

sub-rotas

REPRESENTAÇÃO

(17)

META-HEURÍSTICA PARA O PCV

REPRESENTAÇÃO - VÉRTICES

1 2

3

4

5

SOLUÇÃO

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

1 2

SOLUÇÃO

(18)

1 2

3

4

5

1 2 3

SOLUÇÃO

REPRESENTAÇÃO - VÉRTICES

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

1 2 3 4

SOLUÇÃO

(19)

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

1 2 3 4 5

SOLUÇÃO

REPRESENTAÇÃO - VÉRTICES

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

1 2 3 4 5

SOLUÇÃO

(20)

ALGORITMO GULOSO PARA O PCV (TSP)

1

2

3

4

5

A SOLUÇÃO PODE SER MELHOR? COMO FAZER?

META-HEURÍSTICA PARA O PCV

SELECIONAR 2 ARESTAS E RECONECTAR !

DESSA FORMA, “CRUZAMENTOS” SÃO ELIMINADOS

1

2

(21)

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 1: Escrever função em Scilab que desenhasolução do PCV.

1 2 3 4 5

+

Cidade Coord. X Coord. Y

1 x1 y1

2 x2 y2

3 x3 y3

4 x4 y4

5 x5 y5

=

META-HEURÍSTICA PARA O PCV

1 2 3 4 5

SOLUÇÃO

REPRESENTAÇÃO - VÉRTICES

1 2

3

4

5

(22)

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7

Vértice Coordenada X Coordenada Y

1 2 2

2 6 2

3 8 7

4 11 5

5 13 7

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

(23)

META-HEURÍSTICA PARA O PCV

1 2 3 4 5 2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8 Índice 1 2 4 5 3 function tspgraf(ind,x,y) clf(gcf(),'clear'); set(gca(),"auto_clear","off"); x = x(ind); // Reordenar usando ind. y = y(ind);

plot(x,y,'ob'); xi = [x x(1)]; yi = [y y(1)]; plot(xi,yi,'-r');

//obtendo manipulador dos eixos a=get("current_axes");

a.data_bounds=[min(x)-1,min(y)-1;max(x)+1,max(y)+1];

endfunction

Desenho 1: desenhar as cidades com pontos. Permitir que 2 desenhos

na mesma figura.

Desenho 2: desenhar cada caminho com as linhas.

Limites do gráfico para visualizar a rota ! FUNÇÃO TSPGRAF

(24)

function tspteste(ind)

//ind = [1 2 3 4 5]; // Ordem.

x = [2 6 8 11 13]; y = [2 2 7 5 7];

tspgraf(ind,x,y);

endfunction

Ordem para percorrer as cidades.

Coordenadas das cidades

Chamada para desenhar a rota escolhida FUNÇÃO TSPTESTE

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 2: Escrever função em Scilab que avaliasolução do PCV.

1 2 3 4 5

+

Cidade Coord. X Coord. Y

1 2 2

2 6 2

3 8 7

4 11 5

5 13 7

(25)

function [dist] = tspdist(ind,M)

ind = [ind; ind(1)];

n = length(ind);

dist = 0;

for i=1:(n-1)

dist = dist + M(ind(i),ind(i+1)); end

endfunction

Total de ligações entre as cidades

Índices da ordem das cidades p/ percorrer

Cálculo da distância total da rota, usando matriz de

distância M(cidade i, cidade j). FUNÇÃO TSPDIST

META-HEURÍSTICA PARA O PCV

function [M]=tspmatrix(x,y)

n = length(x);

for i=1:n

for j=1:n

d=(x(i)-x(j))^2+(y(i)-y(j))^2;

M(i,j) = sqrt(d);

end

end

endfunction

Calcular as distâncias de i para todas as j demais.

Número de cidades: linhas e colunas de M

Cálculo distância de i p/ j. FUNÇÃO TSPMATRIX

META-HEURÍSTICA PARA O PCV

x xi

yj

(26)

HEURÍSTICA “VIZINHO MAIS PRÓXIMO”

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 3: Escrever função em Scilab que aplica “vizinho + próximo”.

+

Cidade Coord. X Coord. Y

1 2 2

2 6 2

3 8 7

4 11 5

5 13 7

=

1 2 3 4 5

1 2

(27)

META-HEURÍSTICA PARA O PCV

function [sol]=nearestn(x,y) [M]=tspmatrix(x,y); n = length(x);

// Conjunto de vertices candidatos. V = 1:n;

// Escolhendo a 1a. Cidade aleatoriamente. ind = round(rand()*(n-1))+1;

sol = [V(ind)]; len = length(V);

V = [V(1:ind-1) V(ind+1:len)];

for i=1:(n-1)

menor = M(sol(i),V(1)); elem = V(1);

for j=2:length(V)

if (menor > M(sol(i),V(j))) then menor = M(sol(i),V(j)); elem = V(j); ind = j; end end

// Atualizando V e sol. sol = [sol; elem]; len = length(V);

V = [V(1:ind-1) V(ind+1:len)]; end

endfunction

FUNÇÃO NEARESTN

Índices da ordem das cidades p/ percorrer

META-HEURÍSTICA PARA O PCV

function tspteste2

// Vértices.

x = [2 6 8 11 13]; y = [2 2 7 5 7];

[sol]=nearestn(x,y);

tspgraf(sol,x,y);

endfunction

(28)

VIZINHANÇA - 2-OPT

META-HEURÍSTICA PARA O PCV

1 2

3

4

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

VIZINHANÇA - 2-OPT

1 2 3 4

Todos os cruzamentos que dependem da escolha de dois vértices simultaneamente serão eliminados

(29)

META-HEURÍSTICA PARA O PCV

VIZINHANÇA - 2-OPT

Todos os cruzamentos que dependem da escolha de dois vértices simultaneamente serão eliminados

1 2

3

4

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

1 2 4 3

1 2 4 3

5 6

1 2

4

3

META-HEURÍSTICA PARA O PCV

VIZINHANÇA - 2-OPT

1 2 3 6 5 4

“FLIP”

5 6

1 2

4

3

1 2 3 4 5 6 1 2 3 6 5 4

(30)

Tarefa 4: Escrever uma vizinhança 2-opt.

META-HEURÍSTICA PARA O PCV

function [sol2]=flip(sol, fp )

n = length(sol);

for i=1:(fp-1) sol2(i) = sol(i); end

for i=fp:n

sol2(i) = sol(n-(i-fp)); end

endfunction

FUNÇÃO FLIP

1 2 3 6 5 4

1 2 3 4 5 6

(31)

MINHA PRIMEIRA META-HEURÍSTICA

VIZINHANÇA - 3-OPT

Escolher simultaneamente 3 arcos para serem modificados: 3 arcos serão

eliminados e 3 novoscriados !

VIZINHANÇA - λ λ λ λ-OPT

(32)

VIZINHANÇA -λλλλ-OPT

VIZINHANÇA -λλλλ-OPT

(33)

VIZINHANÇA -λλλλ-OPT

META-HEURÍSTICA PARA O PCV

VIZINHANÇA -λλλλ-OPT

(34)

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

VIZINHANÇA - 3-OPT

1 2 3 4 5

Elimina todos os cruzamentos que dependem da escolha de

(35)

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

VIZINHANÇA - 3-OPT

1 2 3 4 5

Elimina todos os cruzamentos que dependem da escolha de

trêsvértices simultâneos (sucessivos 2-OPTs resolvem !)

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

VIZINHANÇA - 2-OPT

(36)

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

VIZINHANÇA - 2-OPT

1 2 3 5 4

Aplicando vizinhança 2-OPT no problema abaixo para ilustrar o que ocorrerá com os cruzamentos ! Ainda tem cruzamento!

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

VIZINHANÇA - 2-OPT

1 2 3 5 4

(37)

META-HEURÍSTICA PARA O PCV

1 2

3

4

5

2

1 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8

VIZINHANÇA - 2-OPT

1 2 4 5 3

Aplicando vizinhança 2-OPT no problema abaixo para ilustrar o que ocorrerá com os cruzamentos ! Ótimo!

5

6

1 2

4

3

1 4 5 2 3 6

5

6

1 2

4

3

1 2 3 4 5 6 VIZINHANÇA - 2-OPT ××××3-OPT

(38)

VIZINHANÇA -2-OPT××××3-OPT

5

6

1 2

4

3

1 4 5 2 3 6

5

6

1 2

4

3

5

6

1 2

4

3

1 2 3 6 5 4

5

6

1 2

4

3

1 2 3 4 5 6 1 4 5 6 3 2

Tarefa 5: Escrever SA em Scilab resolve o PCV.

(39)

MINHA PRIMEIRA META-HEURÍSTICA

function [s, f] = satsp(x,y,Tmax,Tmin,Miter,alfa) T = Tmax; n = length(x);

[s] = nearestn(x,y);

[M] = tspmatrix(x,y); f = tspdist(s,M); delta = 0.0;

while (T > Tmin) iter = 0;

while (iter <= Miter)

fp = round(rand()*(n-2)) + 2; [si] = flip(s,fp);

delta=tspdist(si,M)-tspdist(s,M); if (delta <= 0) then

s = si;

f = tspdist(si,M) else

aux = rand();

if (aux < exp(-delta/T)) then s = si;

f = tspdist(si,M); end

end

iter = iter + 1; tspgraf(s,x,y); end

T = T*alfa end

endfunction

FUNÇÃO SATSP – VIZINHO ALEATÓRIO

Problema de Minimização Desenho melhor solução

MINHA PRIMEIRA META-HEURÍSTICA

function [s, f] = satsp(x,y,Tmax,Tmin,Miter,alfa) T = Tmax; n = length(x);

[s] = nearestn(x,y);

[M] = tspmatrix(x,y); f = tspdist(s,M); delta = 0.0;

while (T > Tmin) iter = 0;

while (iter <= Miter)

fp = round(rand()*(n-2)) + 2; [si] = flip(s,fp);

delta=tspdist(si,M)-tspdist(s,M); if (delta <= 0) then

s = si;

f = tspdist(si,M) else

aux = rand();

if (aux < exp(-delta/T)) then s = si;

f = tspdist(si,M); end

end

iter = iter + 1; tspgraf(s,x,y); end

(40)

function testesatsp

x = [2 6 8 11 13]; y = [2 2 7 5 7];

Tmax = 1000; Tmin = 100; Miter = 10; alfa = 0.95;

[s, f] =

satsp(x,y,Tmax,Tmin,Miter,alfa)

endfunction

Cidade Coord. X

Coord. Y

1 2 2

2 6 2

3 8 7

4 11 5

5 13 7

Tarefa 6: Modificar o código do SA anterior p/ manter melhor sol.

(41)

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 7: Escrever Tabu Search em Scilab resolve o PCV.

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 8: Usar os dados da biblioteca TSPLIB.

(42)

Tarefa 8: Usar os dados da biblioteca TSPLIB.

MINHA PRIMEIRA META-HEURÍSTICA

function [x, y] = leituratsp(fname,f)

fid = mopen(fname, "r"); if (fid == -1)

error("cannot open file for reading"); end

nf = length(f);

// Convertendo parte do nome do arquivo // no número de dados a serem lidos.

n = strtod(part(f,2:nf-4));

// Leitura das primeiras 6 linhas.

aux = mgetl(fid,6);

for i=1:n

ind = mfscanf(fd,"%d"); x(1,ind) = mfscanf(fd,"%f"); y(1,ind) = mfscanf(fd,"%f"); end

mclose(fd);

endfunction

FUNÇÃO LEITURATSP – DADOS DO TSP

Garantir abertura do arquivo

Número de dados

Dados p/ eliminar

(43)

MINHA PRIMEIRA META-HEURÍSTICA

function tspteste3

[f,diret]=uigetfile(['*.*']);

fname = diret+'\'+f;

[x, y] = leituratsp(fname,f);

[sol]=nearestn(x,y);

tspgraf(sol,x,y);

endfunction

FUNÇÃO TSPTESTE3 – PROGRAMA TSP

Menu para localizar arquivos

Nome arquivo

Leitura dados

Solução + gráfico associado

MINHA PRIMEIRA META-HEURÍSTICA

Tarefa 9: Considerar e resolver as variantes do PCV.

(44)

Referências

Documentos relacionados

Considerando que o experimento não alterou a área do citoplasma dos neurônios deste estudo, sugere-se que essa redução da área nuclear seja a principal responsável pela

Fazendinha, i naquela época o Alceu, elis morava na Concórdia, a mãinha, o pai deli, na época elis era novo, né, elis morava lá, eli num lembra muito bem do primeiro anu Qui eu

[r]

Por isso, este trabalho teve como objetivo apresentar parte da História da Matemática que envolveu um de seus grandes personagens, PITÁGORAS DE SAMOS, além da história do

Meta-aprendizagem aplicado para seleção de meta-heurísticas sintonizadas por método de corrida Framework Espaço das meta-caracteristicas Representação baseada em grafo

Uma vez apresentadas as perguntas de pesquisa, pode-se afirmar que objetivo principal foi identificar as impressões sobre o início da docência e contextos vivenciados por 10

Os principais aprimoramentos realizados neste diagnóstico foram: utilização de três espectrômetros para medidas simultâneas das emissões de hidrogênio,

consulta parecida com a nossa linguagem natural, o sistema inteligente tornará decisões , através de seu banco de regras, onde obterá infonnações acerca de quais