Upload
internet
View
114
Download
8
Embed Size (px)
Citation preview
Flow Shop Flow Shop SchedulingScheduling
Grupo:Leandro Lopes
Marcelo Henrique Dias
Tópicos
Descrição do problema Modelagem Implementação (!)
Descrição do problema
Há um conjunto de nn jobs e mm máquina cada job possui um certo número de
operações
JOB 1 M1(2) M2(2) M3(4)
JOB 2 M1(3) M2(1) M3(1)
JOB 3 M1(2) M2(3) M3(2)
Ex:
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:
1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1
M2 1 1
M3
Modelagem
Será necessária uma matriz para auxiliar nas alocações dos jobs:
JOB Última Máquina
Última Posição
1
2
3
1 2
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 5 6 7 8 9 10
11
12
M1 1 1 1
M2 1 1
M3
Modelagem
Função objetivo: Como não há inviabilidade
A função objetivo será apenas o tempo total da duração da programação.
1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1 3 3 2 2 2
M2 1 1 3 3 3 2
M3 1 1 1 1 3 3 2
Modelagem
Movimentos:
1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1 3 3 2 2 2
M2 1 1 3 3 3 2
M3 1 1 1 1 3 3 2
1 2 3 4 5 6 7 8 9 10 11 12
M1 2 2 2
M2
M3
Apenas são aceitos movimentos na máquina 1
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:1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1 3 3 2 2 2
M2 1 1 3 3 3 2
M3 1 1 1 1 3 3 2
1 2 3 4 5 6 7 8 9 10 11 12
M1 2 2 2
M2
M3
Modelagem
Vizinhança:1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1 3 3 2 2 2
M2 1 1 3 3 3 2
M3 1 1 1 1 3 3 2
1 2 3 4 5 6 7 8 9 10 11 12
M1 2 2 2
M2
M3
Modelagem
Vizinhança:1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1 3 3 2 2 2
M2 1 1 3 3 3 2
M3 1 1 1 1 3 3 2
1 2 3 4 5 6 7 8 9 10 11 12
M1 2 2 2
M2
M3
Modelagem
Vizinhança:1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1 3 3 2 2 2
M2 1 1 3 3 3 2
M3 1 1 1 1 3 3 2
1 2 3 4 5 6 7 8 9 10 11 12
M1 2 2 2
M2
M3
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
vizinhos_job
Pi 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
vizinho_geral
Pi 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:1 2 3 4 5 6 7 8 9 10 11 12
M1 1 1 3 3 2 2 2
M2 1 1 3 3 3 2
M3 1 1 1 1 3 3 2
1 2 3 4 5 6 7 8 9 10 11 12
M1 2 2 2
M2
M3
X
Modelagem
Lista Tabu:Utilizamos um matriz para guardar
os movimentos proibidos
JOB Pi (Posição Inicial)
2 5...
Implementação
?