• Nenhum resultado encontrado

Escalonamento Baseado em Congestionamentos

O Nível Virtual

2.2 Abordagens ao Problema do Escalonamento

2.2.1 Abordagens de Investigação Operacional

2.2.1.2.2 Escalonamento Baseado em Congestionamentos

Uma filosofia possível de escalonamento é ver o escalonamento segundo a perspectiva dos processos, em que há um conjunto de processos com prioridades previamente atribuídas a escalonar nos recursos, escalonando-se processo a processo, do processo mais prioritário até ao menos prioritário. Esta filosofia centra a atenção nos processos e é tipicamente orientada para a redução do comprimento de escalonamento dos processos mais prioritários (processos menos prioritários poderão ter de esperar por recursos que estão ocupados por processos mais prioritários). Certa classe de abordagens ao problema do escalonamento de processamento intermitente é dita baseada em congestionamentos por dar prioridade, durante a construção de um escalonamento, ao escalonamento de tarefas, não do processo mais prioritário, mas no recurso mais prioritário, i.e., o mais congestionado. Esta é uma filosofia que vê o escalonamento sob a perspectiva dos recursos e da sua utilização e pode resumir-se no escalonamento recurso a recurso, do recurso mais prioritário até ao menos prioritário.29

29

Estas duas filosofias podem combinar-se de modo a obter uma perspectiva baseada na tarefa, usando de alguma forma as prioridades de recursos e as prioridades de processos para estabelecer prioridades de pares tarefa-recurso (prioridade ao par tarefa-recurso mais crítico) [Morton 1993]. Como adiante se verá, uma

O sistema de escalonamento da produção OPT (Optimized Production Technology, Tecnologia de Produção Optimizada) [Jacobs 1984], [Vollmann 1997] é um destes sistemas baseado em congestionamentos. O OPT é um programa de computador que, numa primeira passagem, realiza um escalonamento para trás, a partir das datas limite dos processos, assumindo capacidade infinita nos recursos, para determinar qual o recurso mais congestionado. Depois de identificado o recurso mais congestionado e de modo a optimizar a sua utilização, escalona para a frente as tarefas nele tendo em conta a capacidade finita e a seguir escalona as tarefas nos outros recursos (até ao recurso congestionado e depois deste) tentando minimizar as existências de trabalhos em curso. O fluxo de materiais é facilitado através da utilização de dois tipos de lotes: o lote de tarefa e o lote de transferência [Jacobs 1984], [Jacobs 1989] que diferem, em geral, dos lotes de processo,30 i.e., das quantidades que vão sendo introduzidas no sistema e que advêm de encomendas do exterior. O lote de tarefa é a quantidade de peças produzidas numa tarefa num recurso de cada vez (se houver tempos de preparação envolvidos “de cada vez” significa com um só tempo de preparação 31); o lote de transferência é a quantidade de peças movida entre duas tarefas seguidas em dois recursos e é sempre menor ou igual ao lote de tarefa. Uma tarefa pode iniciar-se mesmo sem a tarefa antecessora, no mesmo processo, terminar se for usada a subdivisão de lotes (lot-splitting) de um lote de tarefa em vários lotes de transferência de uma tarefa para a outra. Isto leva uma redução do número de trabalhos em curso e do tempo de fluxo de um processo. Havendo tempos de preparação envolvidos, a utilização de lotes de tarefa maiores (agregando, inclusive, lotes de processos diferentes) origina menores perdas de tempo em tempos de preparação o que é preferido para o caso de tarefa em recursos congestionados; os recursos não congestionados têm tempos de inactividade e podem utilizar-se lotes de tarefa menores.

Embora o OPT seja criticado por não poder acomodar vários congestionamentos simultaneamente e congestionamentos que mudam de posição, por ser necessário determinar uma solução recomeçando a partir do início sempre que há uma correcção a fazer ao escalonamento, por ter uma fraca interactividade com o utilizador e por o algoritmo ser propriedade privada, este sistema gera soluções que se aproximam às dos modelos de programação matemática e foi um dos primeiros sucessos comerciais de escalonamento. Para além de ser um sistema de escalonamento que considera a capacidade dos recursos finita, teve o mérito de chamar a atenção da indústria para conceitos chave num sistema de produção como congestionamentos, existências de trabalhos em curso e tempo total de produção (lead

time) variável.

A abordagem de congestionamento errante (shifting bottleneck) [Adams 1988] ao problema de escalonamento de processamento intermitente pode considerar-se uma sofisticação do método do OPT, mais intensivo do ponto de vista computacional, em que se considera poder existir mais de um recurso congestionado. Os recursos são escalonados por um processo iterativo, pela ordem do mais congestionado para o menos congestionado. Em cada iteração, num primeiro passo, mantém-se o escalonamento dos recursos já escalonados fixo, determina-se qual o recurso mais congestionado dos recursos que ainda não foram escalonados e é estabelecida a sequência óptima das tarefas nesse recurso. Para decidir qual é o recurso filosofia de escalonamento baseada nos recursos, ou baseada nos processos, enquadra-se dentro das perspectivas de escalonamento apelidadas de macro-oportunistas e o uso de uma filosofia baseada em tarefa dentro das perspectivas micro-oportunistas.

30

Designado por lote de lançamento (release batch) em [Jacobs 1989].

31

O tempo de preparação é o tempo que uma peça gasta à espera que um recurso seja preparado para depois a processar.

mais congestionado considera-se o problema simplificado, resolvendo-o como se fosse um problema de um só recurso, para cada um dos recursos a escalonar; o recurso mais congestionado é aquele cujo problema simplificado tem o maior valor da função objectivo32 e a sequência de tarefas óptima é a determinada na resolução desse problema. Num segundo passo da iteração, é re-optimizada a sequência de cada recurso já anteriormente escalonado, o que tenta resolver possíveis conflitos que apareçam entre recursos previamente escalonados e o recurso recentemente escalonado. A essência deste método assemelha-se à ideia clássica da programação não linear: concentrar-se sobre uma variável e optimizar segundo essa variável e fazer isto repetidamente para todas as variáveis do problema [Morton 1993]. Para um problema discreto em que há apenas um número finito de escolhas para cada variável este procedimento garante a convergência para um óptimo local, pelo menos, com um número finito de iterações. Se for possível, de algum modo, optimizar segundo cada variável, por ordem de importância decrescente das variáveis, é possível que o óptimo local encontrado seja o óptimo global, ou próximo dele. Os resultados desta abordagem são bastante bons para problemas com até 10 recursos e 500 tarefas. Um factor de peso no custo computacional é, obviamente, o do número de recursos. O procedimento do congestionamento errante foi também testado e comparado com um conjunto de dez heurísticas padrão e produziu os melhores resultados em 95% dos problemas de teste, com o mesmo custo computacional. Mais recentemente, em [Ivens 1996], foi proposta uma extensão do congestionamento errante que tem em conta atrasos e tempos de transporte, bem como tempos de preparação dependentes da sequência de tarefas em cada recurso, acomodando também datas limite, processos com estruturas convergentes e divergentes, máquinas paralelas e sobreposição de tarefas (através da subdivisão do lote de tarefa em lotes de transferência).

A abordagem de dinâmica dos congestionamentos (bottleneck dynamics) [Morton 1993], baseia-se em estimativas de custos de atraso de cada tarefa e em custos de atraso para cada recurso no sistema. Estes custos podem servir para calcular, por exemplo, que tarefa origina o maior quociente benefício/custo ao ser escalonada a seguir num recurso (decisão de sequenciação), ou que recurso deve ser escolhido para a execução de uma tarefa de modo a minimizar a soma dos custos de atraso de recurso e de tarefa (decisão de encaminhamento, por um dos recursos alternativos, ou routing). Outras decisões para que esta abordagem pode servir são a determinação de datas de lançamento de processos, o dimensionamento de lotes (lot-sizing) e a agregação de lotes (batching). A estimativa do custo de atraso de uma tarefa por um período de tempo é dada pelo aumento do atraso que ela provocará na data limite do processo respectivo (e, portanto, no aumento da não satisfação do cliente).33 A estimativa do custo de atraso de um recurso por um período de tempo é dada pelo total dos custos de atraso relativos às tarefas no período corrente de ocupação do recurso (i.e., não só as tarefas na fila de espera do recurso mas também aquelas que chegarão antes desta fila ficar vazia).34

32

Na versão apresentada em [Adams 1988] do congestionamento errante a função objectivo é o comprimento do escalonamento.

33

Há aqui, obviamente, dificuldade de estimar o tempo total de produção, pois ele depende de decisões de sequenciação ainda não tomadas. Se o custo marginal do atraso da entrega ao cliente é constante, este tempo não é relevante, pois o custo de atraso da tarefa é constante. Para o caso mais geral em que o cliente não se importa com uma entrega mais cedo que a data limite mas não tolera atrasos, o tempo total de produção pode ser estimado através de valores de um historial do tempo de processamento restante, ou a decisão de uma pessoa com base em experiência anterior no mesmo sistema produtivo, ou iterando várias simulações de modo a obter estimativas progressivamente melhores, como foi antes referido na nota 28.

34

São necessárias, portanto, as estimativas dos custos de atraso das tarefas, das tarefas do período corrente de ocupação do recurso e do período corrente de ocupação do recurso.

Num primeiro estudo publicado de uma aplicação da dinâmica dos congestionamentos, o sistema SCHED-STAR [Morton 1988] (ver também [Morton 1993]), os princípios referidos são utilizados para, em vez de tentar optimizar o comprimento do escalonamento ou o atraso máximo ou o atraso médio, tratar directamente com custos explícitos e receitas, e custos implícitos como custos de atraso, através do uso de uma função objectivo de valor actualizado líquido.