Flow Shop Scheduling
Grupo:
Leandro Lopes
Marcelo Henrique Dias
Tópicos
 Descrição do problema
 Modelagem
 Implementação (!)
Descrição do problema
Há um conjunto de n jobs e m máquina cada
job possui um certo número de operações
Ex:
JOB 1
M1(2)
M2(2)
M3(4)
JOB 2
M1(3)
M2(1)
M3(1)
JOB 3
M1(2)
M2(3)
M3(2)
Descrição do problema
Objetivo:
Diminuir o makespan, ou seja, a
duração total da programação
Modelagem
Para representar as operações dos jobs,
utilizamos a seguinte estrutura:
JOB
M1
M2
M3
SOMA
1
2
2
4
8
2
3
1
1
5
3
2
3
2
7
Modelagem
Para representar as alocações dos jobs, temos
a estrutura:
M1
M2
M3
1
2
1
1
3
4
1
1
5
6
7
8
9
10 11 12
Modelagem
Será necessária uma matriz para auxiliar nas
alocações dos jobs:
JOB
Última Máquina
Última Posição
1
1
2
2
3
Modelagem
Construção da solução inicial:
 Método guloso
 Aloca sempre a operação do job com a maior
soma de tempos
JOB
M1
M2
M3
SOMA
1
2
2
4
8
2
3
1
1
5
3
2
3
2
7
Modelagem
Características:
 Não há possibilidade de inviabilidades
 Sobreposição
 Alocação de operações em ordem não permitida
1
2
3
4
M1 1
M2
1
1
1
1
M3
5
6
7
8
9 10 11 12
Modelagem
Função objetivo:
 Como não há inviabilidade
A função objetivo será apenas o tempo
total da duração da programação.
M1
M2
M3
1
2
3
4
5
6
7
8
1
1
3
3
2
2
2
1
1
3
3
3
2
1
1
1
1
9
3
10 11 12
3
2
Modelagem
Movimentos: Apenas são aceitos movimentos na máquina 1
M1
1
2
3
4
5
6
7
1
1
3
3
2
2
2
1
1
3
3
3
2
1
1
1
1
3
5
6
7
8
9
M2
M3
M1
M2
M3
1
2
3
2
2
2
4
8
9
10 11 12
3
2
10 11 12
Modelagem
Heurística:
 Busca Tabu
Vizinhança:
 Para cada job, movimentar a operação da máquina 1
em todas as possíveis posições da própria maquina 1
Modelagem
Vizinhança:
M1
1
2
3
4
5
6
7
1
1
3
3
2
2
2
1
1
3
3
3
2
1
1
1
1
3
5
6
7
8
9
M2
M3
M1
M2
M3
1
2
3
2
2
2
4
8
9
10 11 12
3
2
10 11 12
Modelagem
Vizinhança:
M1
1
2
3
4
5
6
7
1
1
3
3
2
2
2
1
1
3
3
3
2
1
1
1
1
3
5
6
7
8
9
M2
M3
1
M1
M2
M3
2
3
4
2
2
2
8
9
10 11 12
3
2
10 11 12
Modelagem
Vizinhança:
M1
1
2
3
4
5
6
7
1
1
3
3
2
2
2
1
1
3
3
3
2
1
1
1
1
3
6
7
8
9
M2
M3
1
M1
M2
M3
2
3
4
5
2
2
2
8
9
10 11 12
3
2
10 11 12
Modelagem
Vizinhança:
M1
1
2
3
4
5
6
7
1
1
3
3
2
2
2
1
1
3
3
3
2
1
1
1
1
3
4
5
6
7
8
9
2
2
2
M2
M3
1
M1
M2
M3
2
3
8
9
10 11 12
3
2
10 11 12
Modelagem
Vizinhança:
Para cada vizinho de um job x encontrado,
construir a solução e encontrar a Fo-job.
Guardar então o movimento na estrutura a seguir
Pi
vizinhos_job
Pf
Fo
Modelagem
Vizinhança:
Quando toda vizinhança com aquele job x estiver
completa, encontrar na estrutura vizinho_job
o movimento com melhor Fo
Gravar então o movimento na matriz de
melhores vizinhos gerais
Pi
vizinho_geral
Pf
Fo
Modelagem
Vizinhança:
Com a matriz vizinho_geral completa, encontrar
O melhor movimento, observando a Fo.
Se o mesmo for melhor que o Fo_star,
Fo_star  Fo;
Modelagem
Vizinhança:
M1
1
2
3
4
5
6
7
1
1
3
3
2
2
2
1
1
3
3
3
2
1
1
1
1
3
5
6
7
8
9
2
2
2
M2
M3
1
M1
M2
M3
2
3
4
X
8
9
10 11 12
3
2
10 11 12
Modelagem
Lista Tabu:
Utilizamos um matriz para guardar
os movimentos proibidos
JOB
Pi (Posição Inicial)
2
5
.
.
.
Implementação
?
Download

Flow Shop Scheduling via Busca Tabu