09.05.2013 Views

TÉCNICAS HEURÍSTICAS PARA OPTIMIZAÇÃO COMBINATÓRIA

TÉCNICAS HEURÍSTICAS PARA OPTIMIZAÇÃO COMBINATÓRIA

TÉCNICAS HEURÍSTICAS PARA OPTIMIZAÇÃO COMBINATÓRIA

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

<strong>TÉCNICAS</strong> <strong>HEURÍSTICAS</strong> <strong>PARA</strong><br />

<strong>OPTIMIZAÇÃO</strong> <strong>COMBINATÓRIA</strong><br />

CARACTERIZAÇÃO DOS PROBLEMAS DE <strong>OPTIMIZAÇÃO</strong><br />

<strong>COMBINATÓRIA</strong><br />

Dados:<br />

F → um domínio enumerável de soluções admissíveis (permutações,<br />

conjuntos, inteiros, grafos)<br />

c → Função custo (medida de ineficiência)<br />

Problema<br />

c: F → IR n<br />

(extensão natural: avaliação com critérios múltiplos)<br />

Minimize c<br />

Sujeito a f∈F<br />

1<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

PROBLEMAS DE <strong>OPTIMIZAÇÃO</strong> <strong>COMBINATÓRIA</strong>:<br />

MODELOS E APLICAÇÕES<br />

1 Árvore de Suporte de Custo Mínimo<br />

Definição do Problema<br />

Este problema consiste em determinar uma árvore de suporte (grafo com<br />

um e um só caminho entre qualquer par de nós) com custo mínimo numa<br />

rede da forma<br />

1<br />

5<br />

5<br />

2<br />

4<br />

Formulação Matemática do Problema<br />

4<br />

3<br />

5<br />

Sejam A o conjunto das árvores de suporte da rede e f(A) o custo da árvore<br />

A. O problema pode ser formulado da seguinte forma<br />

3<br />

4<br />

4<br />

3<br />

minimize z = f(A)<br />

sujeito a A∈A<br />

2<br />

2<br />

Custo do arco (i,j)<br />

6<br />

5<br />

1<br />

6<br />

3<br />

3<br />

7


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

2 Problema do Caminho Mais Curto<br />

Definição do Problema<br />

Este problema consiste em determinar um caminho mais curto entre um nó<br />

inicial s e um nó terminal t num grafo da forma<br />

s<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

N = {1,2,3,4,5,6} representa o conjunto de nós<br />

A = {(1,2),(1,3),(1,4),(2,3),(2,5),(2,6),(3,4),(3,5),(4,5),(5,6)}<br />

representa o conjunto de arcos<br />

cij ((i,j)∈A) representa o custo de atravessar o arco (i,j)<br />

Variáveis:<br />

1<br />

Função objectivo<br />

2<br />

1<br />

3<br />

3<br />

1<br />

1<br />

4<br />

2<br />

3<br />

3<br />

⎧1<br />

se caminho contém o arco ( i,<br />

j)<br />

xij = ⎨<br />

⎩0<br />

caso contrário<br />

minimize z =<br />

( ) ∑ c ij xij<br />

i,<br />

j ∈A<br />

3<br />

5<br />

5<br />

4<br />

6<br />

3 t<br />

Custo de atravessar<br />

o arco (i,j)<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Restrições<br />

1. No caminho existe apenas um arco que sai do nó inicial s<br />

x12 + x13 + x14 = 1 ⇔ ∑ x sj − ∑ x js = 1<br />

j:<br />

( s,<br />

j)<br />

∈A j:<br />

( j,<br />

s)<br />

∈A<br />

2. No caminho existe apenas um arco que termina no nó final t<br />

x26 + x56 = 1 ⇔ ∑ x tj − ∑ x jt = −1<br />

j:<br />

( t,<br />

j)<br />

∈A j:<br />

( j,<br />

t)<br />

∈A<br />

3. O número de arcos que sai do nó i menos o número que entra no<br />

mesmo é igual a zero<br />

x 23 + x 25 + x 26 − x 12 = 0<br />

x 34 + x 35 − x 13 − x 23 = 0<br />

x 45 − x 14 − x 34 = 0<br />

x 56 − x 25 − x 35 − x 45 = 0<br />

Programa Binário<br />

minimize z =<br />

( ) ∑ c ij xij<br />

i,<br />

j ∈A<br />

sujeito a<br />

⇔ ∑ x ij − ∑ x ji = 0 (i≠s,t)<br />

j:<br />

( i,<br />

j)<br />

∈A j:<br />

( j,<br />

i)<br />

∈A<br />

⎧ 1 se i = s<br />

⎪<br />

∑ xij<br />

− ∑ x ji = ⎨ 0 se i ≠ s,<br />

t<br />

j:<br />

( i,<br />

j)<br />

∈A j:<br />

( j,<br />

i)<br />

∈A<br />

⎪<br />

⎩−1<br />

se i = t<br />

xij∈{0,1}, (i,j)∈A<br />

4


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

3 Problema do Fluxo Máximo<br />

Definição do Problema<br />

Este problema consiste em determinar o fluxo máximo que pode ser<br />

enviado de um nó inicial s para um nó terminal t num grafo da forma<br />

2<br />

6<br />

5<br />

9 3 7<br />

3<br />

4<br />

t<br />

1 3 14 6<br />

7<br />

8<br />

s<br />

2 3<br />

4<br />

1<br />

3<br />

7<br />

3<br />

capacidade<br />

do arco (i,j)<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

N = {1,2,3,4,5,6,7,8} representa o conjunto de nós<br />

A = {(1,2),(1,4),(2,3),(2,5),(3,6),(4,3),(4,7),(5,3),(5,8),(6,5),(6,7),(6,8),(7,8)}<br />

representa o conjunto de arcos<br />

uij ((i,j)∈A) representa a capacidade do arco (i,j)<br />

Variáveis:<br />

xij ((i,j)∈A) representa a quantidade de fluxo que atravessa o arco (i,j)<br />

f representa o fluxo a enviar do nó s para o nó t<br />

Função objectivo<br />

maximize z = f<br />

5<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Restrições<br />

1. A quantidade de fluxo que sai do nó s é igual a f<br />

x12 + x14 = f ⇔ ∑ xsj<br />

− ∑ x js = f<br />

j:<br />

( s,<br />

j)<br />

∈ A j:<br />

( j,<br />

s)<br />

∈A<br />

2. A quantidade de fluxo que entra no nó t é igual a f<br />

x58 + x68 + x78 = f ⇔ ∑ xtj<br />

− ∑ x jt = − f<br />

j:<br />

( t,<br />

j)<br />

∈ A j:<br />

( j,<br />

t)<br />

∈A<br />

3. A quantidade de fluxo que sai do nó i menos a quantidade de fluxo<br />

que entra no mesmo nó é igual a zero<br />

x23 + x25 − x12 = 0<br />

x36 − x23 − x43 − x53 = 0<br />

x43 + x47 − x14 = 0<br />

x53 + x58 − x25 − x65 = 0<br />

x65 + x67 + x68 − x36 = 0<br />

x78 − x47 − x67 = 0<br />

⇔ ∑ x ij − ∑ x ji = 0 (i≠s,t)<br />

j:<br />

( i,<br />

j)<br />

∈A j:<br />

( j,<br />

i)<br />

∈A<br />

4. A quantidade de fluxo que atravessa o arco (i,j) não pode ultrapassar<br />

a sua capacidade nem ser negativo<br />

Programa Linear<br />

0 ≤ x ij ≤ u ij , (i,j)∈A<br />

maximize z = f<br />

sujeito a<br />

⎧ f<br />

⎪<br />

∑ xij<br />

− ∑ x ji = ⎨ 0<br />

j:<br />

( i,<br />

j)<br />

∈A j:<br />

( j,<br />

i)<br />

∈A<br />

⎪<br />

⎩−<br />

f<br />

se<br />

se<br />

se<br />

i = s<br />

i ≠ s,<br />

t<br />

i = t<br />

0 ≤ x ij ≤ u ij , (i,j)∈A<br />

6


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

4 Problema do Fluxo de Custo Mínimo<br />

Definição do Problema<br />

Este problema consiste em determinar a forma como deve ser distribuído o<br />

fluxo num grafo de modo a que os requerimentos sejam satisfeitos<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

N = {1,2,3,4,5,6,7,8} representa o conjunto de nós<br />

A = {(1,2),(1,4),(2,4),(2,5),(3,2),(3,5),(4,6),(4,7),(5,4),(5,7),(5,8),(7,6),(7,8)}<br />

representa o conjunto de arcos<br />

cij ((i,j)∈A) representa o custo unitário de atravessar o arco (i,j)<br />

bi (i∈N) representa o requerimento do nó i<br />

Variáveis:<br />

[45]<br />

[45]<br />

3<br />

1<br />

[20] 2<br />

3<br />

3<br />

xij ((i,j)∈A) representa a quantidade de fluxo que atravessa o arco (i,j)<br />

Função objectivo<br />

8<br />

2<br />

1<br />

4<br />

[0]<br />

4<br />

3<br />

5<br />

[0]<br />

2<br />

minimize z =<br />

( ) ∑ c ij xij<br />

i,<br />

j ∈A<br />

7<br />

7<br />

5<br />

6<br />

6<br />

7<br />

8<br />

1<br />

4<br />

[−50]<br />

[−20]<br />

[−40]<br />

Requerimento<br />

do nó i<br />

Custo unitário de<br />

atravessar o arco (i,j)<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Restrições<br />

1. A quantidade de fluxo que sai do nó i menos a quantidade de fluxo<br />

que entra no mesmo nó é igual ao requerimento desse mesmo nó<br />

x 12 + x 14 = 45<br />

x 24 + x 25 − x 12 − x 32 = 20<br />

x 32 + x 35 = 45<br />

x 46 + x 47 − x 14 − x 24 − x 54 = 0<br />

x 54 + x 57 + x 58 − x 25 − x 35 = 0<br />

− x 46 − x 76 = −50<br />

x 76 + x 78 − x 47 − x 57 = −20<br />

− x 58 − x 78 = −40<br />

8<br />

⇔ ∑ x ij − ∑ x ji = bi<br />

j:<br />

( i,<br />

j)<br />

∈ A j:<br />

( j,<br />

i)<br />

∈A<br />

(i∈N)<br />

2. A quantidade de fluxo que atravessa o arco (i,j) não pode ser<br />

negativo<br />

Programa Linear<br />

minimize z =<br />

( ) ∑ c ij xij<br />

i,<br />

j ∈A<br />

x ij ≥ 0, (i,j)∈A<br />

sujeito a ∑ x ij − ∑ x ji = bi<br />

j:<br />

( i,<br />

j)<br />

∈ A j:<br />

( j,<br />

i)<br />

∈A<br />

x ij ≥ 0, (i,j)∈A<br />

(i∈N)


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

5 Problema de Localização Sem Capacidades<br />

Definição do Problema<br />

Pretende-se fazer um estudo sobre a localização de aterros sanitários em 5<br />

locais possíveis que irão receber os resíduos domésticos e industriais de 7<br />

concelhos. Os custos anuais de funcionamento dos aterros sanitários e de<br />

transporte entre os concelhos e os aterros são dados pela tabela seguinte:<br />

Concelhos<br />

Aterros<br />

1 2 3 4 5 6 7<br />

9<br />

Custos de<br />

Funcioanamento<br />

1 50 25 85 10 20 60 40 120<br />

2 90 20 10 95 80 70 95 100<br />

3 80 15 15 90 60 60 30 160<br />

4 10 90 20 95 90 50 60 130<br />

5 20 95 60 20 20 70 70 140<br />

Qual a localização ideal dos aterros sanitários e a respectiva afectação aos<br />

concelhos, de forma a que o custo total seja mínimo.<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

m representa o número de locais possíveis para a instalação dos aterros<br />

sanitários (m = 5)<br />

n representa o número de concelhos (n = 7)<br />

cij (i=1,2,...,m; j=1,2,...,n) representa o custo anual de afectar o aterro sanitário<br />

i ao concelho j,<br />

fi (i=1,2,...,m) representa o custo anual de funcionamento de um aterro<br />

sanitário em i.<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Variáveis:<br />

⎧1<br />

se o aterro sanitário i é afectado ao concelho j<br />

xij = ⎨<br />

⎩0<br />

caso contrário<br />

⎧1<br />

se for instalado um aterro sanitário no local i<br />

yi = ⎨<br />

⎩0<br />

caso contrário<br />

Função objectivo<br />

Restrições<br />

m n m<br />

minimize z = ∑∑cij<br />

xij<br />

+ ∑ fi<br />

yi<br />

i=<br />

1j= 1 i=<br />

1<br />

1. Cada concelho é servido por um e um só aterro<br />

x11 + x21 + x31 + x41 + x51 = 1<br />

x 12 + x 22 + x 32 + x 42 + x 52 = 1<br />

x 13 + x 23 + x 33 + x 43 + x 53 = 1<br />

x 14 + x 24 + x 34 + x 44 + x 54 = 1<br />

x 15 + x 25 + x 35 + x 45 + x 55 = 1<br />

x 16 + x 26 + x 36 + x 46 + x 56 = 1<br />

x 17 + x 27 + x 37 + x 47 + x 57 = 1<br />

10<br />

m<br />

⇔ ∑ x ij = 1,<br />

j=1,2,...,n<br />

i=<br />

1


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

2. Obrigação de instalação de um aterro sanitário num local, sempre<br />

que a ele seja afectado a um concelho<br />

x 11 ≤ y 1 , x 21 ≤ y 2 , x 31 ≤ y 3 , x 41 ≤ y 4 , x 51 ≤ y 5 ,<br />

x 12 ≤ y 1 , x 22 ≤ y 2 , x 32 ≤ y 3 , x 42 ≤ y 4 , x 52 ≤ y 5 ,<br />

x 13 ≤ y 1 , x 23 ≤ y 2 , x 33 ≤ y 3 , x 43 ≤ y 4 , x 53 ≤ y 5 ,<br />

x 14 ≤ y 1 , x 24 ≤ y 2 , x 34 ≤ y 3 , x 44 ≤ y 4 , x 54 ≤ y 5 ,<br />

x 15 ≤ y 1 , x 25 ≤ y 2 , x 35 ≤ y 3 , x 45 ≤ y 4 , x 55 ≤ y 5 ,<br />

x 16 ≤ y 1 , x 26 ≤ y 2 , x 36 ≤ y 3 , x 46 ≤ y 4 , x 56 ≤ y 5 ,<br />

x 17 ≤ y 1 , x 27 ≤ y 2 , x 37 ≤ y 3 , x 47 ≤ y 4 , x 57 ≤ y 5 .<br />

Ou seja<br />

Programa Binário<br />

xij − yi ≤ 0, i=1,2,...,m; j=1,2,...,n<br />

m n m<br />

Minimize z = ∑∑cij<br />

xij<br />

+ ∑ fi<br />

yi<br />

i=<br />

1j= 1 i=<br />

1<br />

m<br />

sujeito a ∑ x ij = 1,<br />

j=1,2,...,n<br />

i=<br />

1<br />

xij − yi ≤ 0, i=1,2,...,m; j=1,2,...,n<br />

xij ∈ {0,1}, i=1,2,...,m; j=1,2,...,n<br />

yi ∈{0,1}, i=1,2,...,m<br />

11<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

6 Problema de Localização Com Capacidades<br />

Definição do Problema<br />

Uma empresa pretende fazer um estudo sobre a localização das fábricas a<br />

construir em 5 locais possíveis que irão abastecer 6 armazéns. Os custos<br />

fixos de funcionamento diários das fábricas e os custos unitários de<br />

transporte entre as fábricas e os armazéns são dados pela tabela seguinte:<br />

Armazéns<br />

Fábricas<br />

1 2 3 4 5 6 Capacidade<br />

Produtiva<br />

12<br />

Custos de<br />

Funcion.<br />

1 4 2 5 1 2 6 1000 2500<br />

2 7 2 2 9 8 7 1400 2000<br />

3 8 1 1 3 3 6 2000 3300<br />

4 1 9 2 9 9 5 1900 2800<br />

5 2 4 6 2 1 7 1500 2900<br />

Procura diária 500 800 400 900 700 600<br />

Formule o problema.<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

m representa o número de localizações possíveis das fábricas (m = 5)<br />

n representa o número armazéns (n = 6)<br />

ai (i=1,2,...,m) representa a capacidade produtiva da fábrica i.<br />

bj (j=1,2,...,n) representa a procura diária do armazém j.<br />

cij (i=1,2,...,m; j=1,2,...,n) representa o custo unitário de transporte<br />

entre a fábrica i e o armazém j,<br />

fi (j=1,2,...,m) representa custo fixo de funcionamento diário de uma<br />

fábrica no local i.


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Variáveis:<br />

xij (i=1,2,...,m; j=1,2,...,n) representa a quantidade que deve ser enviada<br />

da fábrica localizada em i para o armazém j<br />

⎧1<br />

se for instalado uma fábrica no local i<br />

yi = ⎨<br />

(i=1,2,...,m)<br />

⎩0<br />

caso contrário<br />

Função objectivo<br />

Restrições<br />

m n m<br />

minimize z = ∑∑cij<br />

xij<br />

+ ∑ fi<br />

yi<br />

i=<br />

1j= 1 i=<br />

1<br />

1. Procura diária dos armazéns<br />

x11 + x21 + x31 + x41 + x51 = 500<br />

x 12 + x 22 + x 32 + x 42 + x 52 = 800<br />

x 13 + x 23 + x 33 + x 43 + x 53 = 400<br />

x 14 + x 24 + x 34 + x 44 + x 54 = 900<br />

x 15 + x 25 + x 35 + x 45 + x 55 = 700<br />

x 16 + x 26 + x 36 + x 46 + x 56 = 600<br />

13<br />

m<br />

⇔ ∑ x ij = b j , j=1,2,...,n<br />

i=1<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

2. Capacidades das fábricas<br />

x 11 + x 12 + x 13 + x 14 + x 15 + x 16 ≤ 1000y 1<br />

x 21 + x 22 + x 23 + x 24 + x 25 + x 26 ≤ 1400y 2<br />

x 31 + x 32 + x 33 + x 34 + x 35 + x 36 ≤ 2000y 3<br />

x 41 + x 42 + x 43 + x 44 + x 45 + x 46 ≤ 1900y 4<br />

x 51 + x 52 + x 53 + x 54 + x 55 + x 56 ≤ 1500y 5<br />

3. Não faz sentido transportar quantidades negativas<br />

Programa Binário Misto<br />

xij ≥ 0, i=1,2,...,m; j=1,2,...,n<br />

m n m<br />

Minimize z = ∑∑cij<br />

xij<br />

+ ∑ fi<br />

yi<br />

i=<br />

1j= 1 i=<br />

1<br />

m<br />

sujeito a ∑ x ij = b j , j=1,2,...,n<br />

i=1<br />

n<br />

∑ x ij − ai<br />

yi<br />

≤ 0,<br />

i=1,2,...,m<br />

j = 1<br />

14<br />

n<br />

⇔ ∑ x ij − ai<br />

yi<br />

≤ 0,<br />

i=1,2,...,m<br />

j = 1<br />

xij ≥ 0, i=1,2,...,m; j=1,2,...,n<br />

yi ∈{0,1}, i=1,2,...,m


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

7 Problema da Cobertura de Conjuntos<br />

Definição do Problema<br />

Uma empresa de telecomunicações móveis pretende instalar novas antenas<br />

em 6 locais possíveis para fazer a cobertura de 5 zonas geográficas. As<br />

zonas que cada antena cobre, assim como os custos de instalação são<br />

dados pela tabela seguinte<br />

Antenas 1 2 3 4 5 6<br />

Zonas geográficas cobertas 1,2,3 4,5 1,4 2,5 1,3 2,3,5<br />

Custo de Instalação 900 800 400 300 500 900<br />

Formule o problema.<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

m representa as zonas geográficas a cobrir pelas antenas (m = 5)<br />

n representa o número de locais possíveis para instalar antenas (n = 6)<br />

cj (j=1,2,...,n) representa o custo de instalação da antena no local j.<br />

⎧1<br />

se a antena instalada no local j pode servir a zona geográfica i<br />

aij = ⎨<br />

⎩0<br />

caso contrário<br />

(i=1,2,...,m; j=1,2,...,n)<br />

Variáveis:<br />

⎧1<br />

se for instalada uma antena no local j<br />

x j = ⎨<br />

(j=1,2,...,n)<br />

⎩0<br />

caso contrário<br />

15<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Função objectivo<br />

Restrições<br />

n<br />

minimize z = ∑ c j x j<br />

j = 1<br />

Cobertura do conjunto das zonas geográficas pelas antenas<br />

x1 + x3 + x5 ≥ 1<br />

x 1 + x 4 + x 6 ≥ 1<br />

x 1 + x 5 + x 6 ≥ 1<br />

x 2 + x 3 ≥ 1<br />

Programa Binário<br />

x 2 + x 4 + x 6 ≥ 1<br />

n<br />

Minimize z = ∑ j j<br />

j =<br />

x c<br />

1<br />

n<br />

⇔ ∑ a ij x j ≥ 1,<br />

i=1,2,...,m<br />

j = 1<br />

n<br />

sujeito a ∑ a ij x j ≥ 1,<br />

i=1,2,...,m<br />

j = 1<br />

xj ∈{0,1}, j=1,2,...,n<br />

16


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

8 Problema da Partição de Conjuntos<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

m representa entidades (objectos) a servir<br />

n representa o número de locais possíveis<br />

cj (j=1,2,...,n) representa o custo de instalação no local j.<br />

⎧1<br />

se o local j pode servir o objecto i<br />

aij = ⎨<br />

(i=1,2,...,m; j=1,2,...,n)<br />

⎩0<br />

caso contrário<br />

Variáveis:<br />

⎧1<br />

se o local j for escolhido<br />

x j = ⎨<br />

(j=1,2,...,n)<br />

⎩0<br />

caso contrário<br />

Programa Binário<br />

n<br />

Minimize z = ∑ c j x j<br />

j = 1<br />

n<br />

sujeito a ∑ a ij x j = 1,<br />

i=1,2,...,m<br />

j = 1<br />

xj ∈{0,1}, j=1,2,...,n<br />

17<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

9 Problema do Empacotamento de Conjuntos<br />

Formulação Matemática do Problema<br />

Parâmetros<br />

m representa entidades (objectos) a servir<br />

n representa o número de locais possíveis<br />

cj (j=1,2,...,n) representa o custo de instalação no local j.<br />

⎧1<br />

se o local j pode servir o objecto i<br />

aij = ⎨<br />

(i=1,2,...,m; j=1,2,...,n)<br />

⎩0<br />

caso contrário<br />

Variáveis:<br />

⎧1<br />

se o local j for escolhido<br />

x j = ⎨<br />

(j=1,2,...,n)<br />

⎩0<br />

caso contrário<br />

Programa Binário<br />

n<br />

Maximize z = ∑ c j x j<br />

j = 1<br />

n<br />

sujeito a ∑ a ij x j ≤ 1,<br />

i=1,2,...,m<br />

j = 1<br />

xj ∈{0,1}, j=1,2,...,n<br />

18


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

BREVE INTRODUÇÃO À COMPLEXIDADE COMPUTACIONAL<br />

Problema P<br />

Tamanho de uma instância n Algoritmo A<br />

(codificada em binário)<br />

TEMPO<br />

Nº de operações elementares<br />

(somas, comparações, …)<br />

“Worst Case” 10n 3 + 5n 2<br />

(pior dos casos)<br />

“rate of growth” O(n 3 )<br />

(taxa de crescimento)<br />

[bons] Algoritmos Polinomiais Algoritmos exponenciais [Maus]<br />

O(n 3 ) O(n ln n) O(2 n )<br />

Classificação dos algoritmos<br />

- “recognition problems”<br />

- as classes P e N P<br />

- problemas NP-completos<br />

- problemas FÁCEIS e DIFÍCEIS<br />

19<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Crescimento de funções polinomiais e exponenciais<br />

Função Valores aproximados<br />

n 10 100 1 000<br />

n ln n 33 664 9 966<br />

n 3 1 000 1 000 000 10 9<br />

10 6 n 8 10 14 10 22 10 30<br />

2 n 1 024 1.27×10 30 1.05×10 301<br />

n log n 2 099 1.93×10 13 7.89×10 29<br />

n! 3 628 800 10 158 4×10 2567<br />

Os algoritmos polinomiais aproveitam melhor a tecnologia<br />

Função<br />

Tamanho do problema<br />

resolvido num dia<br />

20<br />

Idem num computador dez<br />

vezes mais rápido<br />

n 10 12 10 13<br />

n ln n 0.948×10 11 0.87×10 12<br />

n 2 10 6 3.16×10 6<br />

n 3 10 4 2.15×10 4<br />

10 8 n 4 10 18<br />

2 n 40 43<br />

10 n 12 13<br />

n log n 79 95<br />

n! 14 15<br />

Fonte: Papadimitriou and Steiglitz, 1982


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Análise do “Worst Case”<br />

→ garantia absoluta<br />

→ independente do COMPUTADOR<br />

da IMPLEMENTAÇÃO<br />

das “INSTÂNCIAS” PARTICULARES<br />

→ medida muito conservadora (PESSIMISTA)<br />

→ retrata “mal” a PERFORMANCE EFECTIVA de um<br />

algoritmo<br />

Análise Probabilística<br />

→ assume hipóteses sobre a distribuição probabilística dos<br />

INPUTS<br />

e deriva resultados analíticos sobre a distribuição dos<br />

OUPUTS<br />

→ geração de “instâncias” aleatórias (SIMULAÇÃO)<br />

PROGRAMAÇÃO LINEAR - LP<br />

SIMPLEX Dantzig 1947<br />

ELIPSOÍDE Khachian 1979<br />

MÉTODOS PROJECTIVOS Karmarkar 1984<br />

21<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Alguns problemas fáceis<br />

→ Transportes<br />

→ Afectação<br />

→ Árvore Geradora de Custo Mínimo<br />

→ Caminho Mais Curto<br />

→ Fluxo Máximo<br />

→ Fluxo de Custo Mínimo<br />

→ Programação Linear<br />

Alguns problemas difíceis<br />

→ Mochila 0-1<br />

→ Mochila Inteiro<br />

→ Caixeiro Viajante<br />

→ Localização Sem/Com capacidades<br />

→ Cobertura de Conjuntos<br />

→ Partição de Conjuntos<br />

→ Empacotamento de Conjuntos<br />

→ Programação Inteira Binária<br />

→ Programação Inteira<br />

→ Programação Inteira Mista<br />

22


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Como abordar então os problemas combinatórios “intratáveis”?<br />

⇒ <strong>HEURÍSTICAS</strong><br />

Ideia: Usar a estrutura do problema para obter SOLUÇÕES<br />

SATISFATÓRIAS de uma forma eficiente<br />

EFICIÊNCIA E EFICÁCIA DOS ALGORITMOS<br />

Eficiência<br />

(rapidez)<br />

a<br />

“ depressa e bem há pouco quem”<br />

23<br />

b<br />

Eficácia<br />

(qualidade da solução)<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

ESTRUTURA TÍPICA DE UMA ABORDAGEM HEURÍSTICA<br />

1<br />

2<br />

CUSTO<br />

$<br />

Construção de uma algoritmos “GREEDY”<br />

SOLUÇÃO INICIAL “dispatching rules”<br />

24<br />

(prioridades)<br />

Melhoramentos procedimentos<br />

Iterativos de<br />

Até se atingir um<br />

“óptimo local”<br />

“TROCAS”<br />

Soluções


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

ALGORITMOS DE PESQUISA LOCAL<br />

Heurísticas de melhoramentos (Pesquisa local − “local Search”)<br />

Vizinhanças (Neighbouroods)<br />

Dado um problema com instâncias (F,c), uma vizinhança N é uma função<br />

N: F → 2 F<br />

A escolha de N é critica: estrutura das soluções<br />

Exemplo: Problema do Caixeiro Viajante<br />

Solução vizinha: 2-change (troca de dois vértices)<br />

1<br />

2 5<br />

Em geral: k-change<br />

3 4 6<br />

7<br />

25<br />

1<br />

f<br />

N(f)<br />

F<br />

2 5<br />

3 4 6<br />

7<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Sub-Vizinhanças<br />

A “análise” é feita apenas sobre um subconjunto [de cardinalidade<br />

“parametrizável”] de soluções escolhidas aleatoriamente na vizinhança<br />

Restrição natural e<br />

“prática” das estratégias<br />

de pesquisa local<br />

Estratégias de pesquisa<br />

− procuarar a melhor solução na vizinhança N(x) (ou na subvizinhança<br />

SN(x))<br />

− procurar, até encontrar uma solução melhor que x<br />

Constituem a base de um PROCESSO ITERATIVO cuja regra de<br />

paragem é, em geral, simples (n iterações)<br />

Esforço computacional<br />

− processo de identificação (enumeração) das soluções vizinhas<br />

− “avaliação” dessas soluções (pode ser um esforço grande)<br />

26<br />

x<br />

N(x)<br />

SN(x)<br />

F


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

PROBLEMA DA MOCHILA 0-1<br />

Problema<br />

Artigo j 1 2 3 4 5 6<br />

Valor unitário cj 12 14 15 24 24 17<br />

Peso unitário aj 15 14 14 18 17 12<br />

Maximizar o valor<br />

não ultrapassando o peso máximo (60)<br />

Variáveis de decisão<br />

⎧1<br />

se o artigo j é escolhido<br />

x j = ⎨<br />

⎩0<br />

caso contrário<br />

Formulação Matemática do problema<br />

max 12x1 + 14x2 + 15x3 + 24x4 + 24x5 + 17x6 s.a. 15x1 + 14x2 + 14x3 + 18x4 + 17x5 + 12x6 ≤ 60<br />

x j ∈{0,1}<br />

27<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Uma heurística construtiva<br />

valor<br />

Ordenar os artigos por rácio e ir metendo na mochila os artigos por<br />

peso<br />

essa ordem<br />

valor<br />

peso<br />

1 2 3 4 5 6<br />

12<br />

15<br />

14<br />

14<br />

15<br />

14<br />

28<br />

24<br />

18<br />

24<br />

17<br />

17<br />

12<br />

0.80 1.00 1.07 1.33 1.41 1.42<br />

Uma heurística de melhoramentos<br />

× × × 3º 2º 1º<br />

Σ = 47 Σ = 29 Σ = 12<br />

Trocar artigos que estão dentro da mochila com artigos que estão fora<br />

4<br />

5<br />

6<br />

2<br />

1<br />

3


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

PROBLEMA DO CAIXEIRO VIAJANTE<br />

Heurísticas de construção de percursos<br />

Menor custo de inserção<br />

Passo 0: Escolha um subpercurso inicial com duas cidades i1 e i2 tais<br />

que:<br />

29<br />

( d d )<br />

d i i + di<br />

i = mínimo ij +<br />

i V , j V<br />

i≠<br />

j<br />

∈ ∈<br />

1 2 2 1<br />

com V = {1,2,…,n} o conjunto de cidades.<br />

Passo 1: Determine o vértice k não pertencente ao subpercurso com<br />

menor valor<br />

dik + dkj<br />

− dij<br />

= mínimo d pk + dkq<br />

− d<br />

( p,<br />

q)<br />

∈T<br />

com T o percurso já construído.<br />

ji<br />

( )<br />

Passo 2: Insera o nó k entre os nós i e j. Se não houver mais nós para<br />

inserir, pare com o subpercurso obtido. Caso contrário, volte<br />

ao passo 1.<br />

Vizinho mais próximo<br />

Passo 0: Sejam i uma cidade inicial e V = {1,2,…,n}−{i} o conjunto<br />

de cidades a visitar.<br />

Passo 1: Calcule a cidade j mais próxima da cidade i a partir de:<br />

dij<br />

= mínimo dip<br />

p∈V<br />

Passo 2: Insira a cidade j imediatamente a seguir a i e faça<br />

i = j e V = V − {j}<br />

Passo 3: Se V = ∅, termine. Caso contrário, volte ao passo 1.<br />

pq<br />

(*)<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Heurísticas de melhoramento de percursos<br />

As heurísticas de melhoramentos de percursos consistem em, a partir de<br />

um percurso inicial, efectuar permutações de k arcos. Ou seja, em<br />

substituir k arcos do percurso por k arcos não pertencentes ao percurso.<br />

Estas substituições terão de manter um percurso pelas n cidades e só se<br />

realizam se houver uma redução do valor da função objectivo. O caso<br />

k = 2 é descrito através do seguinte algoritmo<br />

Passo 0: Considere um percurso inicial<br />

Passo 1: Avalie o valor (redução ou aumento) de todas as trocas de<br />

dois arcos não consecutivos para o percurso corrente:<br />

i<br />

k<br />

l<br />

j<br />

Passo 2: Se nenhuma das potenciais trocas de dois arcos conduziu a<br />

uma redução, termine com o percurso corrente. Caso<br />

contrário actualize o percurso com a troca a que maior<br />

redução conduziu e volte ao passo 1.<br />

Nota: Os resultados computacionais até agora relatados na literatura<br />

apontam para o valor k = 3 como o mais adequado. Quatro trocas de<br />

arcos falha por ineficiência no processo de troca de arcos enquanto que<br />

duas trocas conduz a soluções não tão boas como desejáveis.<br />

30<br />

i<br />

k<br />

l<br />

j


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

META-<strong>HEURÍSTICAS</strong> <strong>PARA</strong><br />

PROBLEMAS DE <strong>OPTIMIZAÇÃO</strong> <strong>COMBINATÓRIA</strong><br />

Dificuldades com os métodos tradicionais<br />

- sofisticação (matemática)<br />

- custos/benefícios<br />

- esforço computacional<br />

- flexibilidade/robustez<br />

Estratégias de pesquisa local (local search)<br />

- estrutura de VIZINHANÇA (neighbourhood) ⇐ crítica<br />

- trajectória<br />

- estratégia de STEEP DESCENT ⇒ MÍNIMOS LOCAIS<br />

IDEIA:<br />

Permitir uma DEGRADAÇÃO TEMPORÁRIA<br />

da função objectivo<br />

31<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

SIMULATED ANNEALING (AREFECIMENTO SIMULADO)<br />

• Considere uma solução actual x n<br />

• Escolher “à sorte” uma solução x em V(x n )<br />

• Se x é melhor, x n ← x<br />

Se não: com probabilidade p(n) x n ← x<br />

(1−p(n)) mantém x n<br />

[p(n) decresce com o tempo − “temperatura” arrefece]<br />

Parâmetros<br />

a) escolha da probabilidade de aceitação<br />

⎛ 1 ⎞<br />

p( n)<br />

= exp⎜−<br />

∆Fn<br />

⎟<br />

⎝ T ( n)<br />

⎠<br />

com ∆Fn = F(x) − F(xn )<br />

b) escolha de um “TEMPERATURE SCHEDULE”<br />

T(n)<br />

T 0<br />

T 1<br />

T 2<br />

T 3<br />

L<br />

2L<br />

c) Escolha de uma REGRA DE <strong>PARA</strong>GEM<br />

3L<br />

4L<br />

32<br />

n<br />

T(kL) = T k = α k T 0<br />

Cooling rate<br />

(0


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

TABU SEARCH<br />

• Considere uma solução actual x n<br />

• Ir para a melhor solução admissível<br />

(mesmo que seja pior)<br />

da vizinhança V(x n ) ou sub-vizinhança V’(x n )⊆V(x n )<br />

• Para evitar “CICLOS”, criar e manter uma<br />

LISTA TABU<br />

De pares (x n , x) dos movimentos recentes<br />

Parâmetros<br />

Dificuldades de gestão da informação<br />

Guardar atributos em vez de soluções na lista tabu<br />

[Exemplo: Caixeiro Viajante − troca de duas arestas]<br />

a) Estrutura de VIZINHANÇA ( e SUB-VIZINHANÇA)<br />

b) que atributos?<br />

c) Tamanho da LISTA TABU<br />

d) REGRA DE <strong>PARA</strong>GEM (fixar n iterações)<br />

33<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

ALGORITMOS GENÉTICOS<br />

• Tratam POPULAÇÕES de soluções [paralelismo intrínseco]<br />

• Uma solução é CODIFICADA como uma sequência de tamanho<br />

finito num alfabeto finito − CROMOSSOMAS<br />

sobre a POPULAÇÃO da GERAÇÃO n<br />

é feita uma SELECÇÃO dos melhores indivíduos<br />

que são sujeitos a um processo de CRUZAMENTO<br />

(em pares)<br />

e com uma pequena probabilidade sofre uma<br />

MUTAÇÃO (alteração de um valor de um gene)<br />

dando origem à GERAÇÃO n+1<br />

A selecção é feita com maior probabilidade<br />

sobre os indivíduos mais ADAPTADOS<br />

[maior valor de FITNESS]<br />

transformação de<br />

função objectivo<br />

34


Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Operador de cruzamento [crossover]<br />

Pontos de crossover (aleatórios)<br />

0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 1<br />

1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 0<br />

Pais Filhos<br />

Operador de mutação [mutation]<br />

0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1<br />

Dificuldades<br />

Ponto de mutação<br />

(arbitrário)<br />

• criticidade do sistema de CODIFICAÇÃO (esquemas, codificação<br />

binária)<br />

• Convergência prematura (MIGRAÇÃO)<br />

• compromisso GENERALIDADE / EFICIÊNCIA<br />

35<br />

Técnicas Heurísticas para Optimização Combinatória Jorge P. J. Santos<br />

Exemplo: Problema do Caixeiro Viajante<br />

• Representar uma solução (ROTA) por uma lista ordenada das<br />

cidades:<br />

3 5 7 1 2 4 8 6 9<br />

• Operador CRUZAMENTO<br />

(o operador usual não funciona)<br />

A: 3 5 7 1 2 4 8 6 9 3 5 2 3 4 6 8 6 9<br />

B: 1 9 2 3 4 6 8 7 5 1 9 7 1 2 4 8 7 5<br />

sem sentido!<br />

Operador “especial” para permutações<br />

B: H 9 H 3 H 6 8 H 5<br />

B: 3 6 H H H H 8 5 9<br />

B’: 3 6 7 1 2 4 8 5 9<br />

3<br />

36<br />

5<br />

7<br />

1<br />

9 6 8<br />

4<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!