As heurísticas Hd2 e Hd3 são adaptações da heurística Hd1 para situações específicas em que existem estágios com apenas uma máquina. Quando todos os estágios possuem má- quinas paralelas, as heurísticas Hd1, Hd2 e Hd3 são idênticas.
Qualquer que seja o estágio com apenas uma única máquina, as heurísticas Hd2 e Hd3 resolvem-no como um típico Problema do Caixeiro Viajante (vide seção 2.3). Na literatura, existem diversos métodos de solução para o problema cíclico direcionado do Caixeiro Viajan- te e, portanto, também para o problema de programação da produção. Assim, a heurística Hd2 aplica o algoritmo FITSP (Farthest Insertion Traveling Salesman Procedure) e a heurística
Hd3 utiliza o NITSP (Nearest Insertion Traveling Salesman Procedure), ambos descritos a seguir.
Algoritmo FITSP (Farthest Insertion Traveling Salesman Procedure)
Como descrito por Moccellin (1992, p.29-30), o algoritmo de inserção denominado
FITSP escolhe arbitrariamente uma cidade (s) para ser a cidade-base ou o nó inicial da rota,
entre as n cidades a serem visitadas. Dentre as (n–1) cidades remanescentes, a próxima cidade (p) a ser inserida na rota é determinada por meio de um critério de seleção específico. A partir de então, tem-se uma sub-rota ou um ciclo composto por dois nós (s e p). Entre os (n–2) nós remanescentes, um terceiro nó (cidade q) é selecionado e inserido no ciclo atual. As duas al- ternativas possíveis de inserção, (s, q, p, s) e (s, p, q, s), são examinadas, sendo escolhida a que corresponde ao menor comprimento total da sub-rota. O processo de inserção continua até que seja obtida uma rota completa.
Rosenkrantz, Stearns e Lewis (1974) comprovaram experimentalmente que o método
FITSP fornece melhores resultados tanto quando comparado ao NITSP como à inserção alea-
tória.
O algoritmo FITSP é constituído por (n–1) iterações:
PASSO 1: Escolha arbitrariamente o nó inicial (tarefa fictícia J0).
PASSO 2: Encontre o próximo nó da sub-rota que tenha a maior distância do nó esco- lhido anteriormente.
PASSO 3(PASSO DE SELEÇÃO): Entre os nós ainda não selecionados, escolha o que tenha a maior distância de qualquer nó da sub-rota.
PASSO 4(PASSO DE INSERÇÃO): Examine todas as possibilidades de inserção do nó esco- lhido na sub-rota atual, adotando aquela que leva ao menor comprimento total.
PASSO 5: Se todos os nós foram inseridos na rota, PARE. Caso contrário, vá para o PASSO 3.
Algoritmo NITSP (Nearest Insertion Traveling Salesman Procedure)
O algoritmo NITSP é análogo ao procedimento do FITSP, diferenciando apenas no critério de seleção do próximo nó da sub-rota (Passos 2 e 3). O algoritmo NITSP escolhe o nó que tenha a menor distância da sub-rota.
É importante salientar que tanto o algoritmo FITSP como o NITSP escolhem a sub- rota com o menor comprimento no critério de inserção (Passo 4).
Algoritmo Hd2/Hd3
PASSO 1. Nos estágios k, de 1 a g–1, se k possuir máquinas paralelas, analise todas as possibilidades de alocação tarefa-máquina e escolha a opção com a menor data de término.
Senão, se o estágio k possuir apenas uma máquina, aplique o Algoritmo
FITSP (ou NITSP, na Hd3). No Passo de Seleção, considere na matriz de dis-
tâncias a soma rjk+sijk, com i∈Vk∪{0}, j∈Vk, e no Passo de Inserção, calcule
o comprimento total considerando as datas de liberação das tarefas (rjk) e a
antecipação ou não do setup.
PASSO 2. Repita o passo 1 até que todas as tarefas estejam programadas e vá para o
PASSO 3.
PASSO 3. Se o último estágio possuir máquinas paralelas, aplique o Algoritmo Multiple
Insertion.
Observação: no passo de inserção dos algoritmos FITSP e NITSP, também se conside-
ram os valores de rjk e sijk no cálculo do comprimento da sub-rota atual.
Heurística Hd4
A heurística Hd4 utiliza o procedimento desenvolvido por Stinson (STINSON,51977
apud STINSON; SMITH, 1982) tanto no sequenciamento como na alocação no flexible flow line. Stinson e Smith (1982) adaptaram o Método de Aproximação de Vogel para o sequenci-
amento do flow shop com setup dependente da sequência. Este método é conhecido pela sua eficácia em fornecer boas soluções iniciais para o problema de transporte.
A heurística de Stinson é utilizada para fornecer uma sequência de tarefas que minimi- zam o tempo total de setup. Este procedimento também já foi aplicado por Simons Jr. (1992) no flow shop tradicional, por Fuchigami (2005) na ordenação inicial para o flow shop híbrido e por Chen (2008) como uma etapa de melhoria na sua heurística para o problema de máquina única.
O procedimento proposto a partir de Stinson e Smith (1982), Simons Jr. (1992) e Chen (2008) é definido a seguir.
Heurística de Stinson
PASSO 1. Construa uma matriz n×n dos dados de entrada do problema.
PASSO 2. Calcule a diferença entre os dois menores elementos de cada linha e de cada
coluna da matriz. O elemento (j,j), onde 1≤j≤n, não é considerado. Na etapa
STINSON, J.P. (1977). A heuristic algorithm for obtaining an initial solution for the Traveling Salesman Prob- lem, School of Management Working Paper, 77-12, Syracuse University, Syracuse, New York.
em que houver apenas um elemento na linha ou coluna, considera-se a dife- rença igual a zero.
PASSO 3. Identifique a linha ou a coluna com a maior diferença. Nesta, selecione o e- lemento (i,j) com o menor valor. Desempate selecionando o elemento que possui o menor valor entre todas as linhas e/ou colunas com a maior diferença.
PASSO 4. Elimine todos os elementos da linha i e da coluna j e o elemento (j,i).
PASSO 5. Repita os PASSOS 2 a 4 até que todas as tarefas estejam programadas.
Os dados de entrada para a construção da matriz podem ser apenas os tempos de setup ou estes tempos somados aos de processamento, ou então utilizar os dados de estágios especí- ficos (apenas do primeiro estágio, todos os estágios etc.). A construção da matriz e os critérios de desempate utilizados durante o algoritmo influenciam no desempenho da heurística.
A programação final considerada por Simons Jr. (1992) é obtida quebrando a sequên- cia circular (ciclo) formada pelas tarefas em cada ponto possível, implementando a programa- ção no flow shop e selecionando a opção em que o makespan é o menor.
Fuchigami (2005) utilizou o algoritmo TOTAL de Simons Jr. (1992) apenas como regra de prioridade para o primeiro estágio, acarretando na separação dos pares de tarefas ao efetuar a alocação às máquinas. Ou seja, a sequência definida não se mantém na programação do flow shop híbrido, servindo apenas para definir a prioridade de alocação das tarefas. Na- quele trabalho, também não foi considerado no algoritmo a característica de setup antecipado. A ideia da heurística Hd4 é utilizar a sequência fornecida pela heurística de Stinson, mantendo juntas as tarefas o máximo possível na alocação. Isto pode ser feito quebrando a
sequência de tarefas em “mk” partes da forma mais equitativa possível, e alocando cada parte
Os métodos construtivos que programam uma tarefa de cada vez podem ser míopes, pois analisam localmente apenas a melhor opção para a tarefa sendo programada. A heurística Hd4, por utilizar matrizes com todos os tempos de setup e processamento, possibilita a análise global e a escolha de bons pares de tarefas.
O objetivo aqui é manter juntos bons pares de tarefas no primeiro estágio e considerar as características específicas do ambiente tratado. Assim, a matriz dos dados de entrada será
da ordem v1 × v1 (contendo apenas as tarefas que visitam o primeiro estágio) e cada elemento
eij será composto pela soma dos tempos de processamento e de setup não antecipados de todos
os estágios
[
(
)
]
∈ − + =∑
∈ 1 , , 1 A s parai j V p e G k ijk ijk jk ij .Critério para formação de mk partes equitativas
Tendo sido definida a sequência completa de tarefas que visitam o primeiro estágio,
divide-se o tempo total de fluxo pela quantidade de máquinas do estágio (m1) e denomina-se
esta quantidade de “fração f”.
Todas as tarefas cujas datas de término (ou tempo de fluxo) são inferiores a f, serão alocadas na mesma sequência à primeira máquina do estágio. A próxima tarefa da sequência, chamada de “tarefa-limite” será alocada na primeira ou na segunda máquina, dependendo do critério descrito a seguir.
Estabelecendo a fração f como um marco na sequência completa, se a maior parte da carga da tarefa-limite (tempo de setup mais tempo de processamento) ficar à esquerda de f, tal tarefa será alocada à primeira máquina, caso contrário, na segunda. Ou seja, se a diferença entre f e o início do setup da tarefa-limite for maior do que a diferença entre o fim da tarefa- limite e f, então a tarefa-limite será associada à primeira máquina, caso contrário, na segunda máquina.
Considerando agora na segunda máquina a tarefa fictícia 0 antecedendo a primeira tarefa não programada, calcula-se o novo valor dos tempos de fluxos das tarefas. Da mesma forma, divide-se novamente o tempo total de fluxo pela quantidade de máquinas ainda não programadas, obtendo-se uma nova fração f. Verificam-se as tarefas cujas datas de término são inferiores a f, alocando-as sequencialmente à primeira máquina ainda não programada e utiliza-se o mesmo critério acima para definir a qual máquina será associada a nova tarefa- limite.
Este procedimento é repetido até que as m1 partes da sequência original de tarefas se-
jam alocadas às m1 máquinas do primeiro estágio.
Algoritmo Hd4
PASSO 1. No primeiro estágio, aplique a heurística de Stinson, considerando a matriz
formada pelos elementos
∑
gk=1[(
1− Aijk)
sjk + pjk]
, com i,j∈V1.PASSO 2. Quebre a sequência circular obtida em cada ponto possível e selecione a se- quência com o menor tempo total de fluxo (considerando a tarefa fictícia ini- cial e os dados do primeiro estágio) como se fosse um problema de máquina única.
PASSO 3. Quebre a sequência obtida em m1 partes da forma mais equitativa possível e
aloque cada parte a uma máquina do primeiro estágio e vá para o estágio 2.
PASSO 4. Atualize as datas de liberação como as datas de término do estágio anterior.
PASSO 5. Analise todas as possibilidades de alocação tarefa-máquina e escolha a opção com a menor data de término.
PASSO 7. Vá para o próximo estágio e repita os PASSOS 4 a 6 até que todos os estágios
estejam programados.