AULA 11
LOCALIZAÇÃO DE FACILIDADES
Autor: Anibal Tavares de Azevedo
INTRODUÇÃO À META-HEURÍSTICAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
Localização de Facilidades
3
1
4
6
5
J = {1, ..., n}
I = {1, ..., m}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
Localização de Facilidades
3
1
4
6
5
Minimizar custo
designação em relação
a todos os clientes !
c
ij
facilidade i
aberta: y
i= 1
Cliente i na
facilidade j: x
ij= 1
S.a.:
MODELO
COMPLETO
GERAL
J
j
,
1
∀
∈
=
∑
∈
I
i
ij
x
J
,
I
,
∀
∈
∀
∈
≤
y
i
j
x
ij iJ
I
ij
B
x
∈
Min
∑∑
Custo entre cliente i e centro j
∈
I
∈
i
j
J
ij
ij
x
c
∑
∈
=
I
i
i
p
y
I
i
B
y
∈
1 cliente conectado
apenas em 1 facilidade
Só conectar clientes se
facilidade foi aberta
Abertura e localização de
exatamente p facilidades
Localização de Facilidades
Localização de Facilidades
Min Max{d
ij
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
1
4
S.a.:
MODELO
COM MÁXIMO
GERAL
J
j
,
1
∀
∈
=
∑
∈
I
i
ij
x
J
,
I
,
∀
∈
∀
∈
≤
y
i
j
x
ij iJ
I
ij
B
x
∈
Min
r
Máxima distância entre cliente i e centro j
∑
∈
=
I
i
i
p
y
I
i
B
y
∈
∑
∈
≥
I
i
ij
ij
x
d
r
Localização de Facilidades
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
1
3
4
3
4
2
6
3
1
3
3
3
1
10
Localização de Facilidades
S.a.:
MODELO
COMPLETO
GERAL
J
j
,
1
∀
∈
=
∑
∈
I
i
ij
x
J
,
I
,
∀
∈
∀
∈
≤
y
i
j
x
ij iJ
I
ij
B
x
∈
Min
∑∑
Custo entre cliente i e centro j
∈
I
∈
i
j
J
ij
ij
x
c
∑
∈
=
I
i
i
p
y
I
i
B
y
∈
I
,
∀
∈
≤
∑
∈
i
y
Q
x
q
i
i
J
j
ij
j
Localização de Facilidades
As demandas q
jdos j clientes não
deve exceder a capacidades Q
idas i
facilidades.
Para um número fixo de facilidades
obtém-se: designação generalizada!
Min
S.a.:
MODELO COMPLETO GERAL
m
i
b
x
a
n
j
i
ij
ij
,
1
,
,
1
L
=
≤
∑
=
n
j
x
m
i
ij
1
,
1
,
,
1
L
=
=
∑
=
∑∑
=
=
m
i
n
j
ij
ij
x
c
1
1
Custo total
Capacidade e
recursos gastos
pelo operário i
Cada tarefa j tem
1 operário
n
j
m
i
x
ij
≥
0
,
=
1
,
L
,
,
=
1
,
L
,
1
1
2
x
12
x
11
Restrições : todas os
operários i
devem ser alocados a
pelo menos 1 tarefa
!
a
11
x
11
+a
12
x
12
≤≤≤≤
b
1
Alocação do operário 1
Designação Generalizada
Capacidade do operário 1
E
1
2
1
x
21
x
11
Restrição : todas as
tarefas j
devem ser alocadas a
pelo menos 1 operário
!
x
11
+ x
21
= 1
Alocação para a tarefa 1
Designação Generalizada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
Localização de Facilidades
3
1
4
6
5
Minimizar custo fixo de
implantação da
facilidade i
f
i
S.a.:
MODELO
COMPLETO
GERAL
J
j
,
1
∀
∈
=
∑
∈
I
i
ij
x
J
,
I
,
∀
∈
∀
∈
≤
y
i
j
x
ij iJ
I
ij
B
x
∈
Min
+ Custo fixo de implantação
das i facilidades
∑∑
∑
∈
∈
∈
+
I
i
j
J
ij
ij
I
i
i
i
y
c
x
f
∑
∈
=
I
i
i
p
y
I
i
B
y
∈
Localização de Facilidades
I
,
∀
∈
≤
∑
∈
i
y
Q
x
q
i
i
J
j
Localização de Facilidades
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
Localização de Facilidades
3
1
4
6
5
Minimizar custo fixo de
abertura da arco ij
f
ij
2
1
3
4
3
4
2
-6
3
1
3
3
3
1
Consumo
x
ij
Fluxo no arco ij
Produção
S.a.:
MODELO
COMPLETO
GERAL
N
i
,
∀
∈
=
−
∑
∑
∈
N
∈
j
j
N
i
ij
ji
x
q
x
E
j
i
y
u
x
ij≤
ij i,
∀
(
,
)
∈
E
ij
R
x
∈
+
Min
+ Custo fixo de implantação
das i facilidades
ij
ij
E
j
i
ij
ij
y
c
x
f
+
∑
∈
)
,
(
E
B
y
∈
Localização de Facilidades
EXAME.COM, 23/07/2012 – Consumidores – Punições da Anatel elevam pedidos de portabilidade
1
Uso do celular
1
Capta ligação
2
2
Central
3
3
Rede Telefone
4
4
Redes de Telefonia Celular
8
9
10
5
6
7
4
1
2
3
3
4
1
2
1
1
2
2
Célula
Central
1
2
3
4
2
1
3
4
1
2
Custo c
12
: Custo de
cabeamento entre a
células 2 e Central 1.
Custo
c
34
:
Custo
de
cabeamento
entre
a
célula 3 e a Central 2
localizada na Célula 4.
2
1
Redes de Telefonia Celular
CUSTO DE CABEAMENTO
3
4
1
2
h
12
= 0
Custo h
24
: Custo de se mover uma
ligação para uma célula adjacente
alocada
para
uma
antena
diferente. No caso, de se mover
da célula 2 (Central 1) para a
célula 4 (Central 2).
2
1
h
34
= 0
Redes de Telefonia Celular
3
4
1
Demanda
λ
λ
λ
λ
2
2
1
Demanda
λ
λ
λ
λ
3
Demanda
λ
λ
λ
λ
4
+
+
≤≤≤≤
Capacidade
M
2
Demanda
λ
λ
λ
λ
1
≤≤≤≤
Capacidade
M
1
2
Redes de Telefonia Celular
CAPACIDADE DAS CENTRAIS
3
4
1
2
1
2
1 1e2 2
2
Célula
Central
1
2
3
4
Redes de Telefonia Celular
Min
S.a.:
MODELO COMPLETO GERAL
n
i
x
m
k
ik
1
,
1
,
,
1
L
=
=
∑
=
∑
=
=
≤
n
i
k
ik
i
x
M
,k
,
,m
1
1
L
λ
∑
∑
∑∑∑
=
=
=
=
=
−
+
n
i
n
i
n
j
ij
m
k
ij
ik
m
k
ik
x
h
y
C
1
1
1
1
1
)
1
(
Cabeamento
+ Handoff
1 Célula deve ter 1
única central
K
I
ik
B
x
∈
∑
=
=
m
k
jk
ik
ij
x
x
y
1
O total da demanda
atendida pela central k
Se i e j estão na mesma
central k tirar handoff
Redes de Telefonia Celular
Central
M
k1
10
2
10
Célula
λλλλ
i1
4
2
4
3
4
4
4
Demandas
iguais
No máximo 2 células
Um Pequeno Exemplo
Demanda
por célula
Capacidade
Centrais
Célula
Central 1 Central 2
1
0
0
2
4
4
3
4
4
4
8
0
Custo cabeamento c
ik
Cel\Cel
1
2
3
4
1
0
3
2
2
2
3
0
1
51
3
2
1
0
4
4
2
5
4
0
GLPK Lab for Windows
# Modelo alocação de células a centrais telefônicas set I; /* célula */
set J; /* célula */ set K; /* MSC */
param a{k in K}; /* Capacidade das MSCs */ param b{i in I}; /* Células */ param c{i in I, k in K}; /* Custos fixos */ param h{i in I, j in J}; /* Custos de handoff */ param l{i in I}; /* Capacidade da célula*/ param file, symbolic, default "Antena.txt";
var x{i in I, k in K}>=0 binary; var y{i in I, j in J} binary; var z{i in I, j in J, k in K}>=0;
minimize cost: sum{i in I, k in K}c[i,k]*x[i,k] + sum{i in I, j in J}h[i,j]*(1-y[i,j]);
s.t. restricao1{k in K}: sum{i in I} l[i]*x[i,k] <= a[k]; restricao2{i in I}: sum{k in K} x[i,k]= b[i];
restricao3{i in I, j in J}: y[i,j] = sum{k in K} z[i,j,k]; z1{i in I, j in J, k in K}: z[i,j,k]<=x[i,k];
z2{i in I, j in J, k in K}: z[i,j,k]<=x[j,k];
z3{i in I, j in J, k in K}: z[i,j,k] + 1 >= x[i,k] + x[j,k];
PARTE 1 - FORMULAÇÃO
Índices das variáveis
Dados
do
modelo
Variáveis
Modelo
GLPK Lab for Windows
solve;
/* RELATORIO */
printf '\n' >> file;
printf '---\n' >> file;
printf 'Solucao Encontrada \n' >> file;
printf '---\n' >> file;
printf ' \n' >> file;
printf '---\n' >> file;
printf ' Célula Central Custo C Custo H \n \n' >> file;
printf '---\n' >> file;
printf{i in I} ' %8d %8d %8.2f %8.2f \n',
i, sum{k in K} k*x[i,k], sum{k in K} c[i,k]*x[i,k], sum{j in J} h[i,j]*(1-y[i,j])
>> file;
printf '---\n’
PARTE 2 - FORMULAÇÃO
GLPK Lab for Windows
printf 'Custo total (z): ' >> file;
printf ' %10.2f \n',
sum{i in I, k in K}c[i,k]*x[i,k] + sum{i in I, j in J}h[i,j]*(1-y[i,j]) >> file;
printf '---\n‘ >> file;
printf '\n' >> file;
PARTE 3 - FORMULAÇÃO
GLPK Lab for Windows
data;
set I := 1 2 3 4;
set J := 1 2 3 4;
set K := 1 2;
param a := 1 10
2 10;
param b := 1 1
2 1
3 1
4 1;
param c : 1 2 :=
1 0 0
2 4 4
3 4 4
4 8 0;
param h : 1 2 3 4 :=
1 0 3 2 2
2 3 0 1 51
3 2 1 0 4
4 2 5 4 0;
param l := 1 4
2 4
3 4
4 4;
end;
PARTE 4 - FORMULAÇÃO
1 Célula deve ter 1
única central
Custo cabeamento c
ik
Custo de
handoff h
ij
Demanda
por célula
GLPK Lab for Windows
PARTE 5 - RESULTADOS
Célula
Central 1 Central 2
1
0
0
2
4
4
3
4
4
4
8
0
Cel\Cel
1
2
3
4
1
0
3
2
2
2
3
0
1
51
3
2
1
0
4
4
2
5
4
0
1
2
1
2
Célula
1
2
3
4
Central
3
4
1
2
2
1
SOLUÇÃO ÓTIMA ENCONTRADA
Métodos de Solução
Força Bruta
Enumerar todas as possibilidades de solução e
escolher a melhor.
2
1
1
2 ...
1
n
Índice da célula i
Alocação célula i na central j
Um computador capaz de fazer 1 milhão de avaliações de
soluções por segundo levaria 10
31
anos !!!
Se n = 65 e m = 5, então, o número de soluções possíveis é de:
5
65
≅≅≅≅
10
45
Redes de Telefonia Celular
Redes de Telefonia Celular
HEURÍSTICA 1
Algoritmos Genéticos
http://brainz.org/15-real-world-applications-genetic-algorithms/
Métodos de Solução
A evolução da espécie está relacionada com a
seleção natural dos indivíduos mais adaptados
ao seu meio.
Algoritmos Genéticos
Reprodução
Mutação
Seleção
Projeto
Alocação
1
1
0
2 ...
1
I
Métodos de Solução
Localização de Facilidades
MEU PRIMEIRO ALGORITMO GENÉTICO
REPRESENTAÇÃO
MEU PRIMEIRO ALGORITMO GENÉTICO
Aplicando Algoritmos Genéticos em Problemas Contínuos
Aplicando Algoritmos Genéticos em Problemas Contínuos
MEU PRIMEIRO ALGORITMO GENÉTICO
function [P] = initialize(m,n)
P = grand(n,m,”bin”,1,0.5);
endfunction
FUNÇÃO INITIALIZE
Função de distribuição de
probabilidade binomial
Número de testes
Probabilidade de sucesso
= 0 1 1
1 0 1
M O M M
L L
P
Número de
indivíduos
Número de cromossomos
function [fo] = evaluate(P)
[nind,nbits] = size(P);
x(1,1) = 1;
for j=2:nbits
x(j,1) = x(j-1,1)*2;
end
x = x(nbits:-1:1);
fo = P*x;
fo = -1 + ((3*fo)/(2^22-1));
endfunction
FUNÇÃO EVALUATE
= 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 P = 1 2 4 8 x*
=
= 4 8 5 9 foMEU PRIMEIRO ALGORITMO GENÉTICO
function [P2] = select(P1)
[n,m] = size(P1);
[fo] = evaluate(P1);
pfo = 1/(1 + fo);
cpfo = [0 cumsum(pfo)];
ind = find(cpfo <= r);
ind = ind(length(ind));
for j=1:n
P2(j,:) = P1(ind,:);
end
endfunction
FUNÇÃO SELECT
1 0 0 1
0 1 1 0
1 1 1 0
1 0 0 1
1 0 0 1
1 1 1 0
function testega1
// Número de indíviduos.
m = 4;
// Número de cromossomos.
n = 22;
[P] = initialize(n,m);
disp
(P);
[fo] = evaluate(P);
disp
(fo);
[P] = select(P);
disp
(P);
endfunction
FUNÇÃO SELECT
MEU PRIMEIRO ALGORITMO GENÉTICO
function [P2]= crossover(P,txc) [n,m] = size(P);
P2 = P;
k = round(n*txc); for i=1:k
pt = round((rand()*(m-1))+1); i1 = round((rand()*(n-1))+1); i2 = round((rand()*(n-1))+1); in1 = P(i1,:);
in2 = P(i2,:); for j=pt:length(in1)
in1(j) = P(i2,j); end
for j=pt:length(in2) in2(j) = P(i1,j); end
P2(i1,:) = in1; P2(i2,:) = in2; end
endfunction
FUNÇÃO CROSSOVER
1 0 0 1
1 1 1 0
1 0
1 0
1 1
0 1
function [P2]= mutation(P,txm)
[n,m] = size(P);
for i=1:txm
i = round((rand()*(n-1))+1);
j = round((rand()*(m-1))+1);
if (P(i,j) == 1) then
P(i,j) = 0;
else
P(i,j) = 1;
end
end
endfunction
FUNÇÃO MUTATION
1 0 0 1
1 1 1 0
1 0
1 0
1 1
0 1
MEU PRIMEIRO ALGORITMO GENÉTICO
for i=1:miter
[P]= crossover(P,txc); [P]= mutation(P,txm); [P] = selected(P); [fo] = evaluate(P); // Menor valor obtido. [aux,ind] = min(fo); if (aux < menor) then
menor = aux;
best = P(ind,:); end
mprintf('Iteração %d: %8.3f \n',i,menor);
end endfunction
FUNÇÃO TESTEGA2
function testega2
// Número de indíviduos. m = 4;
// Número de cromossomos. n = 22;
// Número de iterações. miter = 100;
// Taxa de Crossover. txc = 0.25;
// Taxa de Mutação. txm = 0.1;
// Inicializando. [P] = initialize(n,m); [fo] = evaluate(P); // Menor valor obtido. [menor,ind] = min(fo); best = P(ind,:);
mprintf('Iteração %d: %8.3f \n',0,menor);
for i=1:miter
[P]= crossover(P,txc); [P]= mutation(P,txm); [P] = selected(P); [fo] = evaluate(P); // Menor valor obtido. [aux,ind] = min(fo); if (aux < menor) then
menor = aux;
best = P(ind,:); end
mprintf('Iteração %d: %8.3f \n',i,menor);
end endfunction
MEU PRIMEIRO ALGORITMO GENÉTICO
FUNÇÃO TESTEGA2
Métodos de Solução
A evolução da espécie está relacionada com a
seleção natural
dos indivíduos mais adaptados
ao seu meio
.
Algoritmos Genéticos
Avaliar o “fitness” do indivíduo através da função objetivo
Projeto
Alocação
1
1
0
2 ...
1
n
∑ ∑
∑
∏
∑ ∑
= = = = = =
+
=
J j K k L i i L i ij k j j I i i J j ijj
c
x
w
d
S
c
x
w
V
1 1 1 1
1 1
))
(
(
Métodos de Solução
A evolução da espécie está relacionada com a
seleção natural dos indivíduos mais adaptados
ao seu meio.
Algoritmos Genéticos
Reprodução
Mutação
Seleção
Projeto
Alocação
1
1
0
2 ...
1
I
Localização de Facilidades
Métodos de Solução
A evolução da espécie está relacionada com a
seleção natural
dos indivíduos mais adaptados
ao seu meio
.
Algoritmos Genéticos
Projeto
Alocação
1
1
1
2
...
1
I
∑
=
=
I
i
i
M
x
1
Como avaliar o “fitness”
de indivíduos infactíveis?
Métodos de Solução
A evolução da espécie está relacionada com a
seleção natural
dos indivíduos mais adaptados
ao seu meio
.
Algoritmos Genéticos
Estratégia de penalização da infactibilidade
Projeto
Alocação
1
1
1
2
...
1
I
2
1
−
−
=
∑
= I
i i