AULA 12
PROGRAMAÇÃO DA PRODUÇÃO
Autor: Anibal Tavares de Azevedo
INTRODUÇÃO À META-HEURÍSTICAS
UMA MÁQUINA
MÁQUINA
TAREFAS
TEMPO
UMA MÁQUINA
MÁQUINA
TAREFAS
p1
TEMPO pi - tempo processamento tarefa i
Ci - instante término tarefa i di - data de entrega da tarefa i
C1
d1
1 2 3
Ei = Max{di-Ci, 0} = avanço tarefa i
UMA MÁQUINA
MÁQUINA
TAREFAS
p1
TEMPO c1
p2
c2
d2 d1
1 2 3
MÁQUINA
TAREFAS
p1
TEMPO c1
p2
c2
d2 d3 d1
p3 c3
1 2 3
Sem interrupção da tarefa !
PROBLEMAS PROGRAMAÇÃO INTEIRA
Designação
Mochila
i
j
x
ijVariáveis de Decisão
X
ij= 1 se o caixeiro vai do nó i para o nó j.
Problema do Caixeiro Viajante
x
i j
Origem
(Cidade i)
(Cidade j)
Destino
i
j
x
ijVariáveis de Decisão
X
ij= 1 se a máquina processa a tarefa i e depois a tarefa j.
PROGRAMAÇÃO DA PRODUÇÃO
x
i j
Origem
S.a.:
MODELO
COM RESTRIÇÕES
APENAS
Min
???
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Tarefa fictícia 0 antes da primeira tarefa e após a última tarefa. Cada tarefa tem uma única sucessora e predecessora.
S.a.:
MODELO
COM RESTRIÇÕES
APENAS
Min
???
PROGRAMAÇÃO DA PRODUÇÃO
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
S.a.:
MODELO
MINIMIZA
FLUXO TOTAL
Min
PROGRAMAÇÃO DA PRODUÇÃO
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Se xij = 1, então, Cj≥≥≥≥Ci + pj, ou seja, o instante de término da tarefa j só pode ser depois do instante de término da tarefa i. Se xij = 0, então, Cj – Ci≥≥≥≥- M (M – valor grande), e a restrição está desativada !
Soma dos tempos de término das tarefas
∑
= n i iC
1Heurística para solução do problema
Proc.(pi)
Instante(Ci)
Tarefa
3
6
4
TOTAL = 25
UTILIZANDO ORDEM DOS DADOS
Proc.(pi)
Instante(Ci)
Tarefa
3
6
4
TOTAL = 23
REGRA SHORTEST PROCESSING TIME (SPT) – SOLUÇÃO ÓTIMA
1 2 3
Soma Ci
3
13
7
3
23
10
S.a.:
MODELO
MINIMIZA
ATRASO MÁXIMO
Min
T
maxPROGRAMAÇÃO DA PRODUÇÃO
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Tmax = Max {Ti}, i=1,...,n, e Ti = max{Ci-di,0}
n
i
d
C
T
i≥
i−
i,
=
1
,...,
n
i
T
T
max≥
i,
=
1
,...,
n
R
Heurística para solução do problema
Proc.(pi)
Instante(Ci)
Tarefa
3
6
4
MAX = 3
UTILIZANDO ORDEM DOS DADOS
1
2
3
Data(di)
3
9
13
13
6
10
3
3
0
Ti = max{Ci-di,0}
Heurística para solução do problema
Proc.(pi)
Instante(Ci)
Tarefa
6
4
3
MAX = 0
REGRA EARLIEST DUE DATE (EDD) – SOLUÇÃO ÓTIMA
1 2
3
Data(di)
6
10
13
6
10
13
0
0
0
MÁQUINA
TAREFAS
p1 TEMPO c1 p2 c2 d2 d11 2 3
Ti = Max{Ci-di, 0} = atraso tarefa i Li = Ci – di = latenessda tarefa i
S.a.:
MODELO
MINIMIZA
SOMA DOS ATRASOS
Min
PROGRAMAÇÃO DA PRODUÇÃO
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Minimizando soma dos atrasos Ti
n
i
d
C
T
i≥
i−
i,
=
1
,...,
n
i
T
T
max≥
i,
=
1
,...,
n
R
T
∈
+UMA MÁQUINA
MÁQUINA
TAREFAS
p1
TEMPO pi - tempo processamento tarefa i
Ci - instante término tarefa i di - data de entrega da tarefa i
C1
d1
1 2 3
Ei = Max{di-Ci, 0} = avanço tarefa i
S.a.:
MODELO
MINIMIZA
SOMA ATRASOS E AVANÇOS
Min
PROGRAMAÇÃO DA PRODUÇÃO
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Minimizando soma dos atrasos Ti e avanços Ei
n
i
d
C
T
i≥
i−
i,
=
1
,...,
n
R
T
∈
+i n i i
E
T
+
∑
=1n
i
C
d
E
i≥
i−
i,
=
1
,...,
n
R
S.a.:
MODELO
MINIMIZA
NÚMERO DE TAREFAS ATRASADAS
Min
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Minimizando soma de tarefas atrasadas
n
i
d
C
T
i≥
i−
i,
=
1
,...,
n
R
T
∈
+∑
= n i iy
1n
i
My
T
i≤
i,
=
1
,...,
n
B
y
∈
Se Ti > 0, então, yi = 1
UMA MÁQUINA
MÁQUINA
TAREFAS
p1 TEMPO c1 p2 c2 d2 d11 2 3
S.a.:
MODELO
MINIMIZA
ATRASO MÁXIMO
Min
L
maxPROGRAMAÇÃO DA PRODUÇÃO
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
n
j
n
i
x
M
p
M
C
C
j≥
i−
+
(
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
n
i
d
C
L
L
i+−
i−=
i−
i,
=
1
,...,
n
i
L
L
L
max≥
+i−
−i,
=
1
,...,
n
R
L
+∈
+L
−∈
R
+nMinimizar Lmax = Max {Li}, i=1,...,n
INCLUINDO TEMPO DE SETUP
MÁQUINA
INDEPENDENTE DA SEQUÊNCIA
TEMPO
1 2 3
p1
s1
+
S.a.:
MODELO
MINIMIZA
FLUXO TOTAL
Min
C
max∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Para se considerar o tempo de setup da tarefa i independente da sequência de processamento, basta adicionar um valor si ao tempo de processamento pi para realizar a tarefa i.
Minimização do
Makespan
(tempo total para realizar todas as tarefas)
n
j
n
i
x
M
p
s
M
C
C
j≥
i−
+
(
j+
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,...,
1
,
max
C
i
n
C
≥
i=
INCLUINDO TEMPO DE SETUP
DEPENDENTE DA SEQUÊNCIA
Tarefa
0
2
1
1 2 31
0
3
3
2
0
1 2 3
p1
TEMPO
p2 p3
s12=1 s23=2
INCLUINDO TEMPO DE SETUP
DEPENDENTE DA SEQUÊNCIA
Tarefa
0
2
1
1 2 31
0
3
3
2
0
1 2 3
p1
TEMPO p2
p3 s13=3
TOTAL = p1 + p2 + p3 + 3 + 3 =
ΣΣΣΣ
p + 6
s32=3
S.a.:
MODELO
MINIMIZA
FLUXO TOTAL
Min
C
maxPROGRAMAÇÃO DA PRODUÇÃO
∑
≠ ==
=
n j i iij
j
n
x
, 0,...,
1
,
0
,
1
∑
≠ ==
=
n i j jij
i
n
x
, 0,...,
1
,
0
,
1
,
,...,
1
,
0
i
n
C
i≥
=
C
0=
0
)
1 )( 1 ( + +
∈
n nB
x
Para se considerar o tempo de setup da tarefa i dependente da próxima tarefa j, basta adicionar um valor sij ao tempo de processamento pi para realizar a tarefa i.
Minimização do
Makespan
(tempo total para realizar todas as tarefas)
n
j
n
i
x
M
p
s
M
C
C
j≥
i−
+
(
ij+
j+
)
ij,
=
0
,
1
,...,
,
=
1
,...,
,...,
1
,
max
C
i
n
É possível provar que o
problema do
Makespan
corresponde ao problema
do caixeiro-viajante que
começa na cidade 0 e tem
distância
s
ijentre
as
cidades i e j.
PROGRAMAÇÃO DA PRODUÇÃO
MÁQUINAS PARALELAS
IDÊNTICAS
UNIFORMES
NÃO-RELACIONADAS
As máquinas
possuem o mesmo
tempo de
processamento e
preparação .
Os tempos de
processamento e
preparação são
proporcionais ao da máquina + antiga.
Não existe relação entre os tempos de
processamento e
PROGRAMAÇÃO DA PRODUÇÃO
MÁQUINAS PARALELAS
IDÊNTICAS
UNIFORMES
NÃO-RELACIONADAS
As máquinas
possuem o mesmo
tempo de
processamento e
preparação .
Os tempos de
processamento e
preparação são
proporcionais ao da máquina + antiga.
Não existe relação entre os tempos de
processamento e
preparação das ≠≠≠≠ máquinas.
MÁQUINAS PARALELAS
MÁQUINAS
TAREFAS
TEMPO
TAREFAS
p1
TEMPO c1
p2
c2
1 2 3
TEMPO p3
c3 MAQ. 1
MAQ. 2
pi - tempo processamento tarefa i Ci - instante término tarefa i n - número de tarefas m – número de máquinas
TAREFAS
p1
TEMPO c1
p2
c2
1 2 3
MÁQUINAS PARALELAS
TEMPO p3
c3
C
max= Max{c
1+c
2, c
3}
MAQ. 1
i
j
x
ijVariáveis de Decisão
X
ij= 1 se a máquina j processa a tarefa i.
MÁQUINAS PARALELAS
x
i j
Origem
(Tarefa i)
(Máquina j)
Destino
S.a.:
MODELO
COM RESTRIÇÕES
APENAS
Min
PROGRAMAÇÃO DA PRODUÇÃO
∑
==
=
m
j
ij
i
n
x
1
,...,
1
,
1
∑
=
=
=
≥
ni ij
i
x
j
m
p
C
1
max
1
,
1
,...,
mnB
x
C
max≥
0
,
∈
Uma tarefa i é alocada exatamente para uma única máquina j.
C
maxMinimizar Cmax = Max {Ci}, i=1,...,m
O makespan corresponde ao
maior tempo de
MÁQUINAS PARALELAS
IDÊNTICAS
UNIFORMES
NÃO-RELACIONADAS
As máquinas
possuem o mesmo
tempo de
processamento e
preparação .
Os tempos de
processamento e
preparação são
proporcionais ao da máquina + antiga.
Não existe relação entre os tempos de
processamento e
preparação das ≠≠≠≠ máquinas.
TAREFAS
p11
TEMPO c11
p21
c21
1 2 3
MÁQUINAS PARALELAS
TEMPO p32
c32 MAQ. 1
MAQ. 2
pik - tempo tarefa i na máquina k
Cik - instante término tarefa i na máq. k di - data de entrega da tarefa i n - número de tarefas
TAREFAS
p11
TEMPO
1 2 3
MÁQUINAS PARALELAS
TEMPO p32
MAQ. 1
MAQ. 2
p22 c32
pik - tempo tarefa i na máquina k
c11
c32
TAREFAS
p11
TEMPO
1 2 3
MÁQUINAS PARALELAS
TEMPO p32
MAQ. 1
MAQ. 2
p2 c2
sijk - tempo preparação da máquina k para realizar a tarefa j depois da i.
s322 c11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
2 1
3 4 3
4 2
6
3
1
3 3
3 1 10
10
10 10
i
j
x
ijVariáveis de Decisão
X
ijk= 1 se o veículo k vai do nó i para o nó j.
x
i jk
Origem
(Cidade i)
(Cidade j)
Destino
Veículo k
i
j
x
ijVariáveis de Decisão
X
ijk= 1 se a tarefa i precede a tarefa j na máquina k.
x
i jk
Origem
(Tarefa i)
(Tarefa j)
Destino
Máquina k
Roteamento de Veículos
S.a.:
MODELO
MINIMIZA
SOMA ATRASOS E AVANÇOS
Min
∑∑
= ==
=
m k n iijk
j
n
x
1 0,...,
1
,
1
∑
==
≤
n jjk
k
m
x
1
0
1
,
1
,...,
n
j
n
i
x
M
p
s
M
C
C
jk≥
ik−
+
(
ijk+
jk+
)
ijk,
=
0
,
1
,...,
,
=
1
,...,
)1 )( 1 ( + +
∈
mn nB
x
Minimizando soma dos atrasos Ti e avanços Ei
n
i
d
C
T
i≥
i−
i,
=
1
,...,
n
R
T
∈
+i n i i
E
T
+
∑
=1n
i
C
d
E
i≥
i−
i,
=
1
,...,
n
R
E
∈
+m
k
n
h
x
x
n h j j hjk n h i iihk
0
,
1
,...,
,
1
,...,
S.a.:
MODELO
MINIMIZA
SOMA ATRASOS E AVANÇOS
Min
∑∑
= ==
=
m k n iijk
j
n
x
1 0,...,
1
,
1
∑
==
≤
n jjk
k
m
x
1
0
1
,
1
,...,
n
j
n
i
x
M
p
s
M
C
C
jk≥
ik−
+
(
ijk+
jk+
)
ijk,
=
0
,
1
,...,
,
=
1
,...,
)1 )( 1 ( + +
∈
mn nB
x
Minimizando soma dos atrasos Ti e avanços Ei
n
i
d
C
T
i≥
i−
i,
=
1
,...,
n
R
T
∈
+i n i i
E
T
+
∑
=1n
i
C
d
E
i≥
i−
i,
=
1
,...,
n
R
E
∈
+m
k
n
h
x
x
n h j j hjk n h i iihk
0
,
1
,...,
,
1
,...,
0 0
=
=
=
−
∑
∑
≠ = ≠= Garante que cada máquina k, se usada, tem uma única sequência de processamento.
S.a.:
MODELO
MINIMIZA
SOMA ATRASOS E AVANÇOS
Min
∑∑
= ==
=
m k n iijk
j
n
x
1 0,...,
1
,
1
∑
==
≤
n jjk
k
m
x
1
0
1
,
1
,...,
n
j
n
i
x
M
p
s
M
C
C
jk≥
ik−
+
(
ijk+
jk+
)
ijk,
=
0
,
1
,...,
,
=
1
,...,
)1 )( 1 ( + +
∈
mn nB
x
Minimizando soma dos atrasos Ti e avanços Ei
n
i
d
C
T
i≥
i−
i,
=
1
,...,
n
R
T
∈
+i n i i
E
T
+
∑
=1n
i
C
d
E
i≥
i−
i,
=
1
,...,
n
R
E
∈
+m
k
n
h
x
x
n h j j hjk n h i iihk
0
,
1
,...,
,
1
,...,
0 0
=
=
=
−
∑
∑
≠ = ≠ =MÁQUINAS PARALELAS
JOB SHOP
=
2
1
3
3
1
2
1
2
3
3
2
1
3
1
2
O
Matriz de operações das tarefas
=
8
8
8
4
7
2
2
8
5
3
5
9
10
7
5
P
Matriz de tempos de processamento
M1
M2
M3
i
j
x
ijVariáveis de Decisão
X
ijk= 1 se a tarefa i precede a tarefa j na máquina k.
x
i jk
Origem
(Tarefa i)
(Tarefa j)
Destino
Máquina k
2 4 1 5 3
2
4 1 3 5
2
4 1
5 3
32 35
M1
M2
M3
S.a.:
MODELO
MINIMIZA
SOMA ATRASOS E AVANÇOS
Min
m
k
n
j
n
i
Mx
p
C
C
ik≥
jk+
jk−
ijk,
=
1
,...,
,
=
1
,...,
,
=
1
,...,
mnnB
x
∈
Minimizando do tempo do fluxo total tarefas
mn
R
C
∈
+∑
=
n
i m i
C
1) (
JOB SHOP
m
k
n
j
n
i
x
M
p
C
C
jk≥
ik+
jk−
(
1
−
ijk),
=
1
,...,
,
=
1
,...,
,
=
1
,...,
1
,...,
1
,
,...,
1
,
) 1 ( , ) ( ) 1 (
, +
≥
C
+
p
+i
=
n
k
=
m
−
C
iik ik iikn
i
p
S.a.:
MODELO
MINIMIZA
SOMA ATRASOS E AVANÇOS
Min
m
k
n
j
n
i
Mx
p
C
C
ik≥
jk+
jk−
ijk,
=
1
,...,
,
=
1
,...,
,
=
1
,...,
mnnB
x
∈
Minimizando do tempo do fluxo total tarefas
mn
R
C
∈
+∑
= n i m iC
1 ) (JOB SHOP
m
k
n
j
n
i
x
M
p
C
C
jk≥
ik+
jk−
(
1
−
ijk),
=
1
,...,
,
=
1
,...,
,
=
1
,...,
1
,...,
1
,
,...,
1
,
) 1 ( , ) ( ) 1 (, +
≥
C
+
p
+i
=
n
k
=
m
−
C
iik ik iikn
i
p
C
i,i(1)≥
i,i(1),
=
1
,...,
A operação da tarefa i é concluída depois do término da operação k e do tempo de processamento de k+1.S.a.:
MODELO
MINIMIZA
SOMA ATRASOS E AVANÇOS
Min
m
k
n
j
n
i
Mx
p
C
C
ik≥
jk+
jk−
ijk,
=
1
,...,
,
=
1
,...,
,
=
1
,...,
mnn
B
x
∈
Minimizando do tempo do fluxo total tarefas
mn
R
C
∈
+∑
= n i m iC
1 ) (JOB SHOP
m
k
n
j
n
i
x
M
p
C
C
jk≥
ik+
jk−
(
1
−
ijk),
=
1
,...,
,
=
1
,...,
,
=
1
,...,
1
,...,
1
,
,...,
1
,
) 1 ( , ) ( ) 1 (, +
≥
C
+
p
+i
=
n
k
=
m
−
C
iik ik iikn
i
p
=
3
2
1
3
2
1
3
2
1
3
2
1
3
2
1
O
Matriz de operações das tarefas
=
8
8
8
4
7
2
2
8
5
3
5
9
10
7
5
P
Matriz de tempos de processamento
M1
M2
M3
As n tarefas tem o mesmo roteiro
COLÔNIA DE FORMIGAS (ACO)
ANT COLONY OPTIMIZATION ALGORITHM GENÉRICO
COLÔNIA DE FORMIGAS (ACO)
COLÔNIA DE FORMIGAS (ACO)
FUNÇÃO TESTEACO
function testeacotsp
// Dados da instância. x = [2 6 8 11 13]; y = [2 2 7 5 7];
// Número de iterações. miter = 10;
// Número de formigas. nf = 10;
// Evaporação do feromonio. ttx = 0.95;
// Ant Colony Optimization. [s, f] = acotsp(x,y,miter,nf,ttx);
endfunction
for i=1:miter
[S] = getSolution(t,nf); [fo]= evaluate(S,M); // Menor valor obtido. [aux,ind] = min(fo); if (i == 1) then
menor = aux;
best = S(ind,:); else
if (aux < menor) then menor = aux;
best = S(ind,:); end
end
[t]= updateP(t,ttx); mprintf('Iteração %d: %8.3f \n',i,menor);
end endfunction
FUNÇÃO ACOTSP
function [best, menor] = acotsp(x,y,miter,nf,ttx) [M] = tspmatrix(x,y); t = computeP(M);
S = zeros(nf,length(x));
COLÔNIA DE FORMIGAS (ACO)
for i=1:miter
[S] = getSolution(t,nf); [fo]= evaluate(S,M); // Menor valor obtido. [aux,ind] = min(fo); if (i == 1) then
menor = aux;
best = S(ind,:); else
if (aux < menor) then menor = aux;
best = S(ind,:); end
end
[t]= updateP(t,ttx); mprintf('Iteração %d: %8.3f \n',i,menor);
end endfunction
FUNÇÃO ACOTSP
function [best, menor] = acotsp(x,y,miter,nf,ttx) [M] = tspmatrix(x,y); t = computeP(M);
S = zeros(nf,length(x));
FUNÇÃO COMPUTEP
function [t] = computeP(M)
t = 1.0/M;
endfunction
for i=1:miter
[S] = getSolution(t,nf); [fo]= evaluate(S,M); // Menor valor obtido. [aux,ind] = min(fo); if (i == 1) then
menor = aux;
best = S(ind,:); else
if (aux < menor) then menor = aux;
best = S(ind,:); end
end
[t]= updateP(t,ttx); mprintf('Iteração %d: %8.3f \n',i,menor);
end endfunction
FUNÇÃO ACOTSP
function [best, menor] = acotsp(x,y,miter,nf,ttx) [M] = tspmatrix(x,y); t = computeP(M);
S = zeros(nf,length(x));
FUNÇÃO GETSOLUTION
function [S] = getSolution(t, nf)
for i=1:nf
sol = nearestnaco(x,y,t); S(i,:) = sol';
end
endfunction
COLÔNIA DE FORMIGAS (ACO)
FUNÇÃO NEARESTACO
function [sol]=nearestnaco(x,y,t) // Obtendo a probabilidade // associada ao feromonio. nij = 1.0/M;
total = sum(sum(t.*nij)); p = (t.*nij)/(total);
[M]=tspmatrix(x,y); n = length(x);
// Conjunto de vertices candidatos.
V = 1:n;
// Escolhendo a 1a. Cidade aleat. ind = round(rand()*(n-1))+1; sol = [V(ind)];
len = length(V);
V = [V(1:ind-1) V(ind+1:len)];
COLÔNIA DE FORMIGAS (ACO)
for i=1:(n-1)
menor = p(sol(i),V(1)); elem = V(1);
ind = 1;
for j=2:length(V)
if (menor > p(sol(i),V(j))) then menor = p(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
for i=1:miter
[S] = getSolution(t,nf); [fo]= evaluate(S,M); // Menor valor obtido. [aux,ind] = min(fo); if (i == 1) then
menor = aux;
best = S(ind,:); else
if (aux < menor) then menor = aux;
best = S(ind,:); end
end
[t]= updateP(t,ttx); mprintf('Iteração %d: %8.3f \n',i,menor);
end endfunction
FUNÇÃO ACOTSP
function [best, menor] = acotsp(x,y,miter,nf,ttx) [M] = tspmatrix(x,y); t = computeP(M);
S = zeros(nf,length(x));
FUNÇÃO UPDATEP
function [t] = updateP(t,ttx)
t = ttx*t;
endfunction
ENXAME DE PARTÍCULAS (PSO)
COLÔNIA DE ABELHAS
BUSCA PELA COLMÉIA
BUSCA POR COMIDA