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
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