SciELO - Scientific Electronic Library Online

 
vol.22 issue3Otimização de recursos para a operação de instalação de âncoras de equipamentos offshoreCooperação entre redes neurais artificiais e técnicas 'clássicas' para previsão de demanda de uma série de vendas de cerveja na Austrália author indexsubject indexarticles search
Home Pagealphabetic serial listing  

Services on Demand

Journal

Article

Indicators

Related links

Share


Pesquisa Operacional

Print version ISSN 0101-7438On-line version ISSN 1678-5142

Pesqui. Oper. vol.22 no.3 Rio de Janeiro July/Dec. 2002

http://dx.doi.org/10.1590/S0101-74382002000300003 

Programação de operações em sistemas com tempo de processamento variável

 

 

José Manuel Valério de Carvalho* ; Mª Sameiro de Carvalho; José António Oliveira

Departamento de Produção e Sistemas, Universidade do Minho, Braga Portugal

Endereço para correspondência

 

 


RESUMO

Neste artigo analisa-se um problema de planeamento de operações com tempos de processamento variável. Em particular, este projecto está relacionado com o planeamento de operações de carga de camiões em armazéns automáticos. As operações podem ser vistas como tarefas executadas em paralelo, com tempos de disponibilidade (data de chegada dos camiões) e datas de entrega (data de cut off). Os tempos de processamento das tarefas são variáveis e dependem do número de tarefas a serem processadas simultaneamente; para garantir a taxa de expedição nominal de funcionamento do armazém, é necessário impor um número mínimo de tarefas em execução simultânea. Apresenta-se um procedimento baseado em programação dinâmica com os tempos de expedição dos camiões ordenados pela regra EDD. A eficiência do algoritmo é também discutida.

Palavras-chave:  logística, armazéns automáticos, planeamento.


ABSTRACT

In this work a scheduling operation problem with variable processing times is analysed. In particular this project is concerned with the scheduling of the truck load operations in an automatic warehouse. The truck load operations can be assumed as processing tasks in parallel, with ready times (availability of the trucks) and due dates (trip cut off time). Processing time is variable and depends upon the number of tasks simultaneously in progress; a minimum number of simultaneous tasks is imposed to guarantee the nominal rate of expedition of the warehouse. A procedure based on Dynamic Programming with truck expedition times ordered by EDD rule is presented. The algorithm efficiency is also discussed.

Keywords:  logistics, automatic warehouse, scheduling.


 

 

1. Introdução

A logística envolve um conjunto de actividades que visam a gestão eficiente de produtos, bens e informação ao longo de toda a cadeia de abastecimento. Áreas de trabalho, como, por exemplo, o aprovisionamento, os transportes, a gestão de inventários e a armazenagem, que tradicionalmente eram encaradas como actividades distintas são, hoje em dia, combinadas numa estratégia integrada que visa a racionalização dos custos e um crescente aumento da satisfação dos clientes.

Nos últimos anos, a logística tem suscitado um interesse crescente tanto no meio industrial como a nível académico. Fundamentalmente dois tipos de factores contribuem para esta tendência: i) a crescente competitividade dos mercados que, gerando a necessidade de uma redução de custos (que cada vez menos pode ser obtida pela racionalização dos processos produtivos) leva as empresas a desenvolver uma logística mais eficiente; ii) o desenvolvimento de novas tecnologias, tanto nas áreas dos sistemas de informação (ex.: transmissão electrónica de documentos) como em equipamentos para manipulação de produtos (ex.: armazéns total ou parcialmente automatizados) que, associados a sofisticados sistemas de apoio à decisão, permitem o desenvolvimento e implementação de sistemas logísticos que asseguram, não só uma melhoria dos serviços, como também reduções muito significativas dos custos.

Uma das áreas que mais rapidamente tem evoluído é, sem dúvida, a área da armazenagem. Tradicionalmente, um armazém era descrito como um local onde se guardam produtos e/ou matérias primas. Esta visão estática reflecte a ideia de que um armazém "é um mal necessário" a fim de estabelecer a ponte entre a produção e os clientes, acrescentando custos ao processo. Pouca ou nenhuma importância era dada ao planeamento das suas operações, aos métodos de manuseamento dos produtos, ao sistema de rotação dos stocks, ao uso eficiente dos espaços, aos métodos de trabalho, etc.

Contudo, esta perspectiva já não corresponde minimamente aos mais modernos conceitos de armazenagem que, como resultado das novas solicitações do mercado, visam sincronizar os elementos da cadeia logística proporcionando todo um conjunto acrescido de operações tais como: a consolidação de encomendas (preparação de encomendas para clientes com produtos provenientes de vários produtores); "cross-docking" (operação de preparação de encomendas mas que não envolve armazenamento dos produtos); processamento (operações que acrescentam valor aos produtos; ex.: embalagem), etc. Benefícios económicos resultam, em cada caso, de vários factores: diminuições nos custos de transporte, reduções nos custos de armazenagem e manuseamento dos produtos, menores níveis de stock, etc. Estes factores tem contribuído decisivamente para que os meios industriais e académicos, trabalhando em conjunto, desenvolvam novas ferramentas de análise e obtenção de soluções para os problemas logísticos.

Os sistemas automáticos de armazenamento facilitam as acções da logística. Estes sistemas devem ser eficientes para justificar o investimento que envolvem e constituírem uma alternativa aos sistemas convencionais de armazenamento. A eficiência de um sistema automático de armazenamento depende, entre outros factores, do planeamento das operações de recepção e expedição de mercadorias. Neste artigo, apresenta-se um algoritmo para a programação de operações para a expedição de mercadorias, com vista ao cumprimento das datas de entrega.

O planeamento das operações em armazéns automáticos com elevadas taxas nominais de expedição deve ser feito com cuidado para assegurar que os camiões deixem as instalações respeitando a data de entrega, e possam visitar os clientes ao longo das rotas sem atraso. Este projecto está relacionado com a programação das operações num grande armazém com um sistema automático de colocação / recolha de paletes (AS/RS) controlado por um sistema de gestão do armazém (WMS). O WMS decide a posição em que as paletes são colocadas, escolhe a sequência das paletes a serem recolhidas, e determina os movimentos dos empilhadores.

Tipicamente, neste tipo de sistemas de armazém, é o supervisor que define o plano das operações, seleccionando as viagens / cargas a ser preparadas de cada vez. Segundo o nosso melhor conhecimento, esta selecção das viagens é baseada geralmente em regras de despacho simples, sendo depois a eficiência das regras avaliada usando modelos de simulação Elsayed & Stern (1983), Gibson & Sharp (1992) e Randhawa & Shroff (1995).

Neste trabalho, desenvolveu-se uma estratégia para programar as preparações das cargas e um procedimento, baseado em programação dinâmica (DP), que gera soluções em que as viagens são agrupadas em blocos. Os modelos foram inseridos num sistema de planeamento de operações do armazém (WPS), que determina os tempos em que se deve começar a preparação de cada carga. O supervisor insere essa informação no WMS, que depois faz a gestão do sistema. Claramente, os planos são gerados de modo a que o WMS, usando as suas próprias regras, deva poder executá-las dentro dos tempos previstos. O WMS e o WPS foram integrados num sistema desenvolvido pela empresa EFACEC Automação e Robótica, S.A. em 1998 para um centro de distribuição.

Neste artigo, apresentamos uma versão do problema onde as cargas devem ser preparadas directamente nos camiões, e as zonas de preparação antecipada não podem ser usadas. Um algoritmo para este problema usando as zonas de preparação antecipada pode ser encontrado em Oliveira (2000).

O artigo está organizado do seguinte modo: na secção seguinte, descreve-se o funcionamento de um armazém automático e identifica-se o problema de planeamento; na terceira secção apresenta-se o modelo matemático, tecem-se considerações sobre a sua aplicabilidade e apresentam-se extensões ao modelo; a quarta secção é dedicada à caracterização da metodologia de solução adoptada; na quinta secção apresenta-se o algoritmo desenvolvido, baseado nos conceitos da programação dinâmica e determina-se a sua eficiência; por fim, discutem-se as conclusões sobre este trabalho.

 

2. Descrição do sistema de armazenamento

O sistema de armazenamento tem capacidade para armazenar cerca de 38 mil paletes em alvéolos, estando previsto um número diferenciado de artigos situado entre os 1000 e os 1500. As paletes, com os artigos encomendados pelos clientes, são expedidas por camião. A viagem de um camião consiste no transporte de um conjunto de cerca de três dezenas de paletes. O conjunto de paletes que formam a carga de uma dada viagem é conhecido e fixo.

O corpo principal do armazém é constituído por onze corredores. Em cada corredor existe um stockador automático para movimentar as paletes desde os alvéolos até ao buffer de saída, colocado no topo do corredor. A jusante dos corredores, as paletes são movimentadas por empilhadores. Existe um conjunto de empilhadores que recolhe as paletes nos buffers de saída dos corredores e as coloca nos camiões.

A preparação (da carga) de uma viagem significa a recolha, movimentação e formação do conjunto de paletes, que será transportado no mesmo camião. Existem 13 cais de carga, Nc= 13, onde os camiões são carregados. Os camiões têm idêntica capacidade.

A capacidade máxima de expedição de mercadorias do sistema é 240 paletes por hora, ms, e é definida pela capacidade dos onze stockadores,mm . O sistema de armazenamento deve ter uma taxa nominal de funcionamento idêntica à taxa máxima, para tornar eficiente a sua utilização e justificar o seu investimento.

A capacidade de movimentar paletes pelos empilhadores é dada por neme, sendo ne o número de empilhadores e me a capacidade de movimentação de cada um deles. Portanto, os empilhadores devem ser em número suficiente de modo a garantir o funcionamento do sistema à taxa máxima de expedição de paletes definida pelos stockadores. Se tal não acontecer, os empilhadores não são capazes de remover as paletes que os stockadores colocam nos buffers de saída, levando à imobilização dos stockadores quando os respectivos buffers de saída estão cheios. De facto, os stockadores e os empilhadores formam um sistema em série em que a capacidade do sistema é dada pela menor das duas capacidades

No que se segue, vamos assumir que os ne empilhadores existentes no sistema igualam a capacidade dos stockadores em termos de movimentação de paletes.

O número de viagens expedidas por dia é da ordem de uma centena, tendo todas as viagens igual importância. Cada viagem tem um instante de saída do armazém (cut-off), o qual deve ser cumprido planeando correctamente a hora de início de preparação da viagem. Como princípio, a programação não deve admitir atrasos.

O plano operacional do armazém deve entrar em linha de conta com todos estes factores. Diariamente, dado um conjunto de viagens com os respectivos instantes de saída, é necessário estabelecer um plano operacional de funcionamento do armazém, de modo a racionalizar a utilização de recursos humanos e materiais e minimizar a soma dos atrasos gerados pelas viagens que são concluídas após a hora limite de saída.

 

3. Modelação do problema

O modelo que se apresenta destina-se a formalizar o problema aqui apresentado e também o problema com zonas de preparação antecipada apresentado em Oliveira (2000), ajudando na sua compreensão e definição. Contudo, no desenvolvimento de uma metodologia de solução para o problema em análise alguns parâmetros irão ser relaxados. Para auxiliar na construção do modelo para este problema de planeamento definiram-se as seguintes variáveis, que seguem de perto a notação usada em Blazewicz et al. (1996):

Vj – designa a viagem j. Neste trabalho utiliza-se o termo "viagem" para denotar o mesmo que o termo "tarefa", utilizado na literatura de planeamento da produção.

rj – data de disponibilidade de vj. Define o instante de chegada ao sistema do camião que transporta vj.

dj – data de entrega de vj. Define o instante em que o camião deve abandonar o sistema sem haver atraso.

wj – factor de ponderação de vj, que mede a importância associada à viagem. Dado que as viagens têm igual importância, iremos considerar  wj = 1,"j.

sj – instante em que se inicia a preparação de vj. O estabelecimento de um plano de operações requer a definição do instante de início de preparação de cada viagem.

Cj – instante em que vj sai do sistema de armazenamento.

Uma viagem diz-se "activa", quando é iniciada a sua preparação em sj , e permanece nesse estado até ao instante Cj em que recebe a última palete e se conclui o carregamento do camião. A demora de uma viagem, Dj, é uma variável que toma valores não negativos e é medida relativamente ao instante de saída do sistema, Dj = max (Cjdj ,0.

A movimentação dos stockadores e dos empilhadores pode ser modelada como uma fonte que assegura um fluxo de paletes, que é constante ao longo do tempo. A capacidade de movimentação de paletes é medida em paletes por unidade de tempo. Em cada instante, esta capacidade é partilhada pelas viagens que estão activas. Um ponto crucial do modelo é que os tempos de processamento das viagens são dependentes do número de viagens a serem processadas simultaneamente, isto é, o tempo necessário para completar uma viagem depende do número de viagens activas. Se o número de viagens activas for mais pequeno, mais rápida será a sua preparação.

Designa-se por tempo nominal de processamento de uma viagem pj, o tempo que demoraria a preparar a carga de uma viagem se fosse possível essa viagem receber todo o fluxo de paletes à taxa nominal de funcionamento do sistema. Dado que o número de paletes por viagem é aproximadamente constante, iremos considerar que o tempo nominal de processamento é igual para todas as viagens, verificando-se a relação pj= p,"j. Necessariamente, para qualquer viagem j, dj ³ rj+pj.

Há, no entanto, que impor um limite mínimo ao número de viagens activas, Nmin. Se essa restrição não existir, pode não ser possível assegurar o fluxo nominal de funcionamento do sistema. Para ilustrar este ponto, vamos considerar a situação limite em que todo o sistema está apenas a executar uma viagem. Haverá um grande número de empilhadores a fornecer paletes para a mesma viagem, o que dá origem a congestionamentos, que se traduzem numa redução da capacidade do sistema, que passa efectivamente a funcionar abaixo da sua capacidade nominal. Considera-se que Nmin = 6 é um valor razoável.

O número de cais disponíveis definem um limite superior ao número de viagens activas, que se representa por Nmax.

3.1 Formulação Matemática

O modelo descrito no ponto anterior pode ser formalizado matematicamente através de variáveis indexadas a um intervalo de tempo, que são designadas na literatura anglo-saxónica por time indexed variables. A utilização deste tipo de formulações para a modelização de problemas de planeamento da produção foi utilizada por Sousa (1989).

Entende-se que o processamento de uma tarefa é o resultado de um conjunto de contribuições de processamento parcelares. A consideração de um intervalo de tempo suficientemente pequeno permite individualizar as contribuições de processamento. A contribuição de processamento numa viagem é, neste caso, o carregamento de mais uma palete. Em primeiro lugar, é necessário identificar o tempo que demora o processamento de uma contribuição de processamento numa viagem, e depois escolher um intervalo de tempo adequado. Vamos considerar o caso geral em que o conjunto das contribuições necessárias para efectuar a viagem j, denotado por Xj, podem ser diferentes. Essas contribuições são processadas ao longo de uma janela temporal T, e a variável binária Xjt, indexada ao intervalo de tempo t, representa se há, ou não, uma contribuição nesse intervalo de tempo.

As contribuições de processamento fornecidas pelo sistema em cada intervalo de tempo são constantes, e independentes do número de viagens a serem processadas simultaneamente (viagens activas).

Essencialmente, a formulação modela a atribuição das contribuições de processamento por parte do sistema às diversas viagens. Uma viagem torna-se activa ao iniciar o seu processamento, quando recebe a primeira contribuição de processamento. As contribuições de processamento não têm que ser necessariamente contíguas, isto é, pode haver instantes de tempo em que uma viagem não recebe contribuições de processamento, embora não esteja ainda concluída. No entanto, a viagem permanece activa até receber a última contribuição de processamento.

Exemplo:

Na Figura 1, apresenta-se um conjunto de viagens, indicando as suas datas de disponibilidade e de entrega. Para a viagem 1, ilustra-se a atribuição de três unidades de processamento (o número de paletes da viagem) e o período em que esta viagem permanece activa. É possível estabelecer um plano sem atrasos se existir uma atribuição das contribuições de processamento do sistema às viagens dentro do intervalo definido pelas suas datas de disponibilidade e de entrega, respeitando os limites impostos ao número de viagens activas.

 

 

A formulação que a seguir se apresenta "organiza" a distribuição das contribuições de processamento disponíveis em cada intervalo de tempo t pelas diferentes viagens que estão activas nesse intervalo de tempo. A solução indica os instantes de activação das viagens, e os intervalos em que recebem as contribuições de processamento.

Para permitir a construção do modelo matemático definiram-se as seguintes variáveis e parâmetros:

yjt – variável binária que identifica se a viagem j está activa no instante t.

xjt – variável binária que indica se a viagem j recebeu uma contribuição no instante t.

¦jt – variável binária que identifica se a viagem j está concluída no instante t.

Xj – quantidade de unidades de processamento da viagem j.

A – quantidade de unidades de processamento disponíveis em cada intervalo de tempo t.

Wjt– penalidade que a viagem j incorre no intervalo de tempo t, se estiver activa depois da sua data de entrega,t > dj.

Este género de formulação permite definir várias medidas de eficiência para este modelo. O modelo matemático a seguir apresentado tem como objectivo a minimização dos atrasos ponderados para uma versão muito geral do problema, em que se consideram datas de disponibilidade e de entrega:

sendo T um limite superior para o tempo necessário para completar todas as viagens.

A função objectivo desta formulação (3) minimiza a soma das penalidades geradas pelos atrasos. A Expressão (3) soma, a partir da data de entrega (viagem atrasada) os intervalos de tempos em que a viagem permanece activa.

A Equação (4) garante que a viagem j recebe todas as contribuições de processamento necessárias à sua conclusão. Salienta-se que se permite que haja diferentes valores para as quantidades de unidades de processamento de cada viagem. Essas contribuições podem ocorrer desde o instante de disponibilidade rj até ao instante de tempo T.

Para poder receber uma contribuição de processamento, uma viagem deve estar no estado activo. A variável que controla a activação da viagem é yjt. A Equação (5) garante que uma viagem só recebe contribuições depois de ser activada. A activação de yjt ocorre com o processamento da primeira contribuição.

As Equações (6) e (7) em conjunto garantem que a variável yjt, após tomar o valor 1, só volta a tomar o valor 0 quando a viagem j estiver terminada, o que acontece quando a viagem não recebe mais contribuições de processamento. Para uma melhor compreensão do modelo, são usadas variáveis binárias auxiliares ¦jt para marcar o fim do processamento da viagem j. Estas variáveis assumem o valor 1 no intervalo em que a viagem recebe a última contribuição de processamento, de acordo com a Equação (7), e também nos intervalos subsequentes. Note-se que ¦jt só pode tomar o valor unitário se todas as contribuições xjt subsequentes forem nulas. Assim, a Equação (6) garante que uma variável yjt+1 assume o valor 1 quando yjt é igual a 1, excepto quando a viagem termina.

As Equações (8) e (9) traduzem os recursos do sistema. Em (8) limitam-se as contribuições de processamento disponíveis em cada intervalo de tempo, A. Em (9), impõem-se limites inferiores e superiores para o número de viagens activas. Por um lado, neste sistema de armazenamento, existe a necessidade de garantir um número mínimo de viagens a receberem as contribuições de processamento geradas pelos stockadores, Nmin, para assegurar o fluxo de paletes à taxa nominal de funcionamento. Por outro lado, o número máximo de viagens activas simultaneamente é limitado pelo número de cais, Nmax.

Exemplo:

No exemplo da Figura 2, a viagem j tem uma janela temporal para processamento entre os instantes rj e dj. A viagem é activada no intervalo de tempo t2, com o processamento da primeira contribuição de processamento, pelo que yjt2=1 e xjt2 = 1. A viagem permanece activa até ao intervalo de tempo t9, o que significa que, também yjt2=yjt3=yjt4=yjt5 = yjt6 = yjt7 = yjt8 = yjt9 =1. A viagem também recebe contribuições nos intervalos t6,t7 et9, o que significa que xjt6= xjt7= xjt9= 1. A conclusão do processamento da viagem no intervalo t9, implica que as variáveis ¦jt10 e seguintes tomem o valor 1.

 

Por outro lado, as contribuições de processamento disponíveis no intervalo tk são dispersas pelas viagens que nesse intervalo estão activas. Na Figura 3, as três unidades disponíveis são afectas às viagens j, j+3 e j+4. As viagens activas nesse intervalo de tempo são j,j+1, j+3 e j+4, representadas a cinzento.

 

 

Salienta-se que, num dado período de tempo, o sistema é capaz de fornecer um número conhecido e bem determinado de paletes. O modelo de programação matemática acima definido assenta no pressuposto que em qualquer intervalo de tempo t todas as paletes fornecidas pelo sistema são distribuídas e entregues às viagens que estão activas nesse intervalo de tempo. Pretende-se que as paletes sejam distribuídas de um modo mais ou menos equitativo pelas viagens, no sentido de minimizar possíveis congestionamentos dos empilhadores que afectam a taxa de funcionamento do sistema de armazenamento. Uma forma de atingir a distribuição equitativa consiste em limitar o número de paletes que uma viagem pode receber no intervalo de tempo t. A utilização da variável binária xjt limita a recepção de paletes a uma palete por viagem por intervalo de tempo. Esta limitação tem implicação directa na escolha do intervalo de tempo t. O intervalo de tempo deve ser escolhido de modo a que o número de paletes A fornecidas no intervalo seja um número inteiro, e igual ou inferior ao número mínimo de viagens activas, Nmin: o intervalo de tempo a considerar deve respeitar m st £ Nmin e ser inteiro. No presente problema, assumindo m s= 240 paletes por hora, o que corresponde a 4 paletes por minuto, se Nmin ³ 4, é possível considerar um intervalo de tempo igual a 1 minuto.

3.2 Complexidade

Em vez do problema de optimização definido na secção anterior, vamos considerar o problema de decisão que a ele pode ser associado, que consiste em decidir se existe, ou não, um plano com um atraso inferior a K, isto é,Dj £ K.

Proposição: Dado um conjunto de viagens, datas de disponibilidade e datas de entrega, o problema de decidir se existe um plano com atraso inferior a K que obedeça a todas as restrições é NP-completo.

Prova: O problema pertence à classe NP, porque existe um certificado conciso, constituído pelas datas de início de preparação e pelos instantes de conclusão de todas as viagens, sjCj, j= 1,2,... n, que permite comprovar, em tempo polinomial, que existe um plano válido. As datas de conclusão Cj permitem comprovar que o atraso é inferior a K. Também, as datas de início de preparação e de conclusão das viagens definem o conjunto de viagens activas em cada instante. É possível verificar que o número de viagens activas, em cada instante, respeita os valores mínimos e máximos permitidos, Nmin e Nmax. É também possível verificar em tempo polinomial, que a capacidade do sistema é suficiente para executar todas as viagens, resolvendo um problema de máquinas paralelas com preempção, datas de disponibilidade e tomando as datas de conclusão como datas limite de saída, Pçpmtn,rj,Cjç–(Horn, 1973), que é um problema polinomial (Blazewicz et al., 1996) que pode ser resolvido como um modelo de fluxo em rede.

O problema é NP-completo, porque inclui como caso especial o problema 1çrjçDj que é um problema NP-completo (Garey & Johnson, 1977). Quando existe apenas 1 cais, Nmin=Nmax=1. Toda a capacidade do sistema é usada para a única viagem activa. Nesta situação, o tempo de processamento da viagem coincide com o tempo em que a viagem está activa.

Exemplo:

A Figura 4 ilustra os instantes de início de preparação e os instantes de conclusão de quatro viagens. Para este exemplo, o número de viagens activas tem o valor mínimo de 2 e o máximo de 3.

 

 

É possível fazer a ordenação da lista por valor crescente de datas em tempo O(nlogn). Vamos considerar a lista ordenada dos instantes de início de preparação e os instantes de conclusão, sj e Cj, "j, dada pelos vectores l[] e t[] :

É trivial comprovar que os sj e Cj obedecem às datas de disponibilidade e de entrega rj e dj, respectivamente. É possível, em tempo linear, percorrer a lista e determinar, em cada instante, o número de viagens activas. Isso pode ser feito contabilizando as novas viagens e as viagens terminadas quando há mudança do instante de tempo da lista.

Após afectar as viagens a processadores, a solução do problema Pçpmtn,rj,Cjç–permitiria comprovar que a capacidade seria suficiente. Se a restrição relativa aos números mínimo e máximo de processos admissíveis em simultâneo for respeitada e a capacidade for suficiente, o certificado é válido.

3.3 Extensões ao modelo

Usando as variáveis indexadas a intervalos de tempo, é possível modelar variações do problema apresentado, com diferentes medidas de eficiência e/ou restrições. A título ilustrativo, vamos considerar o problema da minimização do número de viagens concluídas em atraso, objectivo que aparece frequentemente em problemas de planeamento.

Para modelar este problema, é necessário considerar variáveis binárias adicionais, Uj, que tomam o valor 1 quando a viagem é concluída com atraso, e 0, caso contrário. Para o efeito, seria necessário incluir as restrições:

A função objectivo passaria a ser

 

4. Uma metodologia de solução

O modelo de programação matemática acima apresentado é um modelo cuja aplicabilidade prática levanta dificuldades ao nível da utilização face ao elevado número de variáveis utilizadas. As variáveis binárias xjt determinam uma sequência bem definida de paletes que devem ser recolhidas pelos stockadores e entregues às viagens pelos empilhadores. O WMS define a sequência de recolha de paletes de uma forma dinâmica e de acordo com parâmetros que variam instantaneamente. Desta forma é de todo impossível impor uma sequência de extracção de paletes de acordo com as variáveis xjt.

Considerando que todas as viagens tem um número constante de paletes, vamos considerar o caso em que todos os Xj são iguais. Para responder às dificuldades enunciadas decidiu-se utilizar uma metodologia de solução baseada em programação dinâmica. Nesta metodologia o conjunto de viagens é ordenado pela regra EDD e dividido em subconjuntos disjuntos que designamos por blocos, que adiante será devidamente explicado. O dimensionamento destes blocos é feito tendo em conta os limites impostos ao número de viagens activas, Nmin e Nmax, e por forma a minimizar a soma das demoras na saída das viagens. Nesta Secção, analisam-se alguns aspectos relacionados com a estratégia usada para abordar este problema.

4.1 Regra EDD

Como estratégia de solução, e atendendo a que as viagens têm igual factor de ponderação, wj=w=1,"j a expedição das viagens é feita de acordo com a regra EDD. É de salientar que, caso os factores de ponderação não sejam iguais, a regra EDD poderá não produzir a melhor solução.

4.2 Datas de disponibilidade

As datas de chegada dos camiões são estabelecidas pelos responsáveis da gestão do armazém. Assim, e de acordo com o plano de preparação das viagens, é solicitado diariamente à empresa de transporte que aluga os camiões, um conjunto de camiões para efectuar os transportes das viagens desse dia, o que permite relaxar as datas de disponibilidade das viagens. Relaxando as datas de disponibilidade, rj=0,"j, calcula-se o melhor plano que define os sj para todas as viagem. Os camiões são enviados para o armazém com a garantia de respeitar os sj estabelecidos no plano.

4.3 Tempos variáveis de processamento

Tal como foi referido na Secção anterior, os tempos de preparação de cada viagem são variáveis e dependem do número de viagens em processo simultâneo. O esquema da Figura 5 apresenta 4 modos diferentes de planear a preparação de três viagens, com iguais tempos nominais de preparação. No caso I, ilustra-se o processamento individual de cada viagem. Nos casos II e III duas viagens são preparadas simultaneamente e no último caso as três viagens são processadas simultaneamente.

 

 

No entanto, salienta-se o facto de a viagem 3 ter sempre a sua conclusão no instante t3. Este facto resulta de a expedição acumulada de 3 viagens equivaler a uma quantidade (fixa) de paletes que são processadas pelo sistema a uma taxa que é igual nos 4 casos.

A preparação de uma viagem de cada vez de acordo com a regra EDD representa uma solução dominante, porque o tempo de processamento de cada viagem seria o menor possível, isto é, seria igual ao tempo nominal de processamento, pj. Com os tempos mínimos de processamento, os instantes de conclusão de cada viagem acontecem mais cedo, favorecendo o cumprimento das datas de entrega. No problema em análise, esta solução não é viável do ponto de vista técnico, conforme já foi explicado, porque não garante a taxa nominal de expedição de paletes do sistema de armazenamento. Ou seja, é necessário haver um conjunto mínimo de viagens a serem processadas simultaneamente, para escoarem o fluxo de paletes vindas dos corredores.

4.4 Definição de blocos

A estratégia adoptada consiste em definir uma partição do conjunto de viagens em subconjuntos de viagens que estão activas simultaneamente. Estes subconjuntos de viagens são designados por blocos. A dimensão dos blocos deve obedecer aos limites Nmin e Nmax, de modo a garantir a taxa de funcionamento do sistema.

Neste armazém é o WMS que determina a sequência pela qual as paletes são recolhidas pelos stockadores, quando existe um conjunto de viagens activas simultaneamente. A sequência de paletes definida pelo WMS pode não coincidir com a sequência determinada no modelo de programação matemática, e dessa maneira o cumprimento das datas de entrega pode ficar comprometido. Tal não acontece na estratégia adoptada em que se garante que todas as viagens de um bloco são terminadas antes de se dar início à execução das viagens do bloco seguinte.

Exemplo:

A Figura 6 esquematiza duas estratégias possíveis para a activação de viagens, num sistema que tem capacidade para fornecer 2 paletes por unidade de tempo. No esquema A, as viagens são activadas à medida que se verifica a conclusão de uma viagem ou se atinge o instante de disponibilidade para uma viagem. No intervalo de tempo 4 estão activas as viagens 1, 2, 3 e 4. Se a sequência de entregas do WMS for a representada, em que os números associados às paletes representam a ordem pela qual as paletes são entregues a partir do intervalo de tempo 4, a data de entrega da viagem 2 não é respeitada. Isto acontece por a segunda palete ter sido atribuída à viagem 4 quando havia uma palete em falta na viagem 2 que tem uma menor data de entrega.

 

 

A estratégia de activação das viagens por blocos, ilustrada no esquema B, tem a vantagem de garantir a conclusão de viagens activas, respeitando as datas de entrega, antes de activar um novo conjunto de viagens. Isso decorre do facto dos recursos existentes serem canalizados para as viagens escolhidas, pertencentes ao bloco.

4.5 Tempo de conclusão das viagens

Neste sistema, assumimos que os tempos reais de conclusão de todas as viagens do bloco coincidem com o instante de tempo em que o bloco termina, embora isso possa não acontecer na realidade para todas as viagens, estando garantido que terminam sempre antes do fim do bloco como se passa a explicar.

Um dos parâmetros que o sistema WMS utiliza para definir a sequência da recolha de paletes é a data de entrega das viagens que estão activas. As paletes pertencentes às viagens com menores datas de entrega têm maior prioridade e podem ser recolhidas em primeiro lugar. Face à sequência de recolha de paletes definida pelo WMS é possível que algumas viagens do bloco estejam terminadas antes do fim do bloco, quando lhes é entregue a última palete da viagem. Tipicamente, o perfil para as viagens se completarem é ilustrado na Figura 7, em que as viagens são terminadas na sequência v1,v3 , v2, v4, v5, coincidindo o fim do bloco com o fim da viagem 5. Dado não ser possível controlar a sequência da recolha das paletes, escolhemos uma opção conservadora, que garante que as datas de conclusão previstas no plano nunca serão ultrapassadas na execução real do plano: prevê-se que o instante de conclusão de todas as viagens do bloco seja o instante em que o bloco termina.

 

 

4.6 Duração de processamento dos blocos

Vamos designar o conjunto de viagens tratadas no bloco por E. A duração de processamento do bloco, PE, depende somente do número de viagens do bloco, isto é, depende do número çEç. A duração de processamento do bloco é uma função linear da dimensão do próprio bloco, PE(çEç). Quanto maior for o número de viagens em processo de um bloco, maior é o tempo de processamento das viagens, porque o fluxo de paletes (com um valor constante por unidade de tempo) é dividido por um número maior de viagens.

Considere-se um bloco com çEç viagens que são processadas à taxa ne me durante PE unidades de tempo, conforme ilustra a Figura 8.

 

 

Seja l o número de paletes por viagem. Num bloco com çEç viagens, há um total de l çEç paletes a processar. A expressão que relaciona o número de paletes e o tempo PE é a seguinte:

A duração do bloco é dada por:

Seja SPE o instante de início de processamento do bloco. Dado que os tempos nominais de preparação são iguais, verifica-se que todas as viagens activas do bloco têm o mesmo instante de início, sj = SPE, e o mesmo instante de conclusão de preparação:

As soluções do problema baseiam-se no dimensionamento dos vários blocos que devem respeitar os valores Nmin e Nmax. A definição dos conjuntos de viagens que devem ser preparadas em paralelo, de modo a que os tempos de conclusão das respectivas preparações respeitem as horas limites de expedição das cargas, responde adequadamente ao problema operacional existente. Se tal não for possível, é necessário escolher a alternativa que minimiza a soma dos atrasos verificados nas horas de partidas.

Exemplo:

Vamos considerar uma instância com 12 viagens, em que o tempo nominal de processamento de uma viagem é pj=1 viagem/u.t., "j. Os limites para a dimensão dos blocos são, respectivamente, Nmin=3 e Nmax = 5. As datas de entrega das viagens são as seguintes:

A Figura 9 ilustra duas soluções baseadas na estratégia de construção de blocos de viagens activas. Verifica-se que a solução caracterizada pelo plano A, formada por 4 blocos iguais, de dimensão Nmin=3, não respeita as datas de entrega para as viagens 7 e 8. O plano B produz uma solução somente com 3 blocos, formados respectivamente por 5, 3 e 4 viagens e cumpre as datas de entrega.

 

 

5. Modelo de programação dinâmica

Em termos gerais, a solução deste problema consiste em determinar subconjuntos distintos do conjunto das viagens. Pretende-se uma partição do conjunto das viagens (ordenadas pela regra EDD) em pequenas listas, tal que seja minimizada a soma das demoras das viagens.

5.1 Definição do modelo

A variável estado ei representa o número de viagens já processadas, ou seja, um dado estado é identificado por um conjunto Ei de viagens ordenadas por data de entrega crescente (EDD), tal que d1 £ d2 £ ... £ dçEiç. O estado inicial do modelo é definido para o instante em que se dá início ao período de expedição de viagens e corresponde a e0 = Æ.

Para um dado estado ei, é possível calcular o número de viagens já processadas desde o estado inicial. Dado que as viagens estão ordenadas pela regra EDD, o estado ei significa que as primeiras çEiç viagens já foram processadas.

As viagens do conjunto Ei representam uma quantidade bem definida de paletes. Atendendo à quantidade de paletes e à taxa de expedição de paletes, é possível estabelecer uma relação biunívoca entre o número de viagens processadas e o tempo de processamento. A expressão do tempo de preparação associado a um dado estado ei pode ser derivada de uma forma semelhante à da Expressão (13):

Trata-se de uma função linear do número acumulado de viagens já preparadas. É de salientar que, para um dado estado ei, este tempo é independente da forma como as viagens do conjunto Ei foram subdivididas e agrupadas nos blocos, conforme se ilustra no exemplo da Figura 5.

Havendo um tempo bem determinado associado a cada estado, é possível, ao enumerar as acções alternativas a ele associadas, avaliar os atrasos que decorrem da expedição das viagens do bloco, e directamente calcular as contribuições de estágio, verificando uma condição fundamental para a aplicação da programação dinâmica e French (1982).

Em cada estágio, para cada estado ei, é necessário fazer o dimensionamento do próximo bloco de viagens. Seja D o conjunto de viagens do próximo bloco, isto é, o próximo bloco é constituído pelo processamento simultâneo de çDç viagens.

A transição num estágio de um estado ei para o estado ei resulta do planeamento de um bloco formado por D viagens, Ej = Ei ÈD e tem associada uma contribuição de estágio g ei(D). Esta acção conduz do estado ei =çEiç ao estado ei =çEiç=çEiç+çDç.

Dado que, ao estado ei está associado um tempo bem determinado e podemos calcular a duração do bloco, é possível determinar os instantes de conclusão das viagens de um bloco, que podem ser calculados de acordo com a Equação (14). Assim, a cada uma das acções alternativas, podemos associar um custo g ei(D), dado pela soma dos atrasos respeitantes à expedição das D viagens que formam o bloco, ou seja,  g ei(D)= max{Cjdj,0}.

A cada estado está associada uma função, Valor de Estado, G(ei), que representa o menor custo de planear as tarefas representadas pelo estado. O Valor de Estado corresponde ao valor óptimo para resolver um problema reduzido, formado pelas viagens do conjunto Ei associado ao estado.

Dado que cada estado resulta de uma transição de um estado anterior, e se, para todas as possibilidades que conduzem ao estado ej, escolhermos a que apresenta a menor soma, em termos de valor do estado anterior e da contribuição associado, obtém-se o menor custo para se planear as tarefas de Ej, isto é, G(Ej)= {G(Ej)+g(Di)}, em que Ej=Ei ÈDi.

A validade da programação dinâmica requer a verificação das condições de separabilidade e optimalidade. A condição de separabilidade corresponde à validade de utilização de uma relação de recorrência. A relação de recorrência permite que o valor de cada estágio possa ser calculado em função do estágio antecedente e da contribuição de estágio.

A condição de optimalidade implica a validade da hipótese de que a optimização global resulta da optimização em cada estágio. Na verdade, não pode haver outra forma de planear as tarefas de Ei com um custo inferior, senão seria possível diminuir o valor de G(Ei) e dessa forma diminuir a soma, ou seja, diminuir o valor de G(Ej).

A existência da relação de recorrência (18), que permite determinar a solução óptima, resulta de serem verificadas as condições de separabilidade e de optimalidade.

Exemplo:

Vamos considerar a aplicação do modelo de programação dinâmica à instância apresentada no Exemplo anterior. Uma enumeração das decisões alternativas respeitando as restrições impostas conduziu à rede apresentada na Figura 10. Os arcos representados correspondem às transições possíveis, e os valores que lhes estão associados traduzem a soma dos custos das demoras associadas à decisão. Os estados assinalados correspondem aos estados possíveis e têm valor finito; os seus valores óptimos são os calculados na resolução a seguir apresentada. Aos restantes estados, está associado um valor +¥. 

 

 

A partir do estado inicial, há apenas 3 decisões alternativas: fazer blocos de 3, 4 ou 5 viagens. Dado o tempo nominal de processamento de uma viagem, os tempos de cada bloco, que são contados a partir do instante 0, são iguais a 3, 4 e 5 u.t., respectivamente. Dado haver apenas um caminho desde o estado inicial, em que G0(0)=0, no primeiro estágio, a aplicação da relação de recorrência a cada um desses estados toma a seguinte forma:

Os cálculos apresentados completam a determinação dos valores óptimos dos estados possíveis para o estágio 1. Passando ao estágio 2, a única decisão que conduz ao estado 6 é a de executar um bloco de 3 viagens depois de ter concluído o primeiro bloco de 3 viagens. Esta decisão corresponde a um bloco de 3 unidades de duração com início no instante de tempo 3, pelo que o instante de conclusão de todas as viagens executadas no bloco é o instante 6.

Para atingir o estado 7, há duas alternativas: executar um bloco de 4 viagens depois de ter completado um bloco de 3 viagens, ou executar um bloco de 3 viagens depois de ter executado um bloco de 4 viagens. Nos dois casos, o tempo de conclusão do segundo bloco executado é igual a 7, mas as duas alternativas traduzem custos diferentes:

Para os restantes estados possíveis deste estágio, a aplicação da relação de recorrência produz os seguintes resultados:

Passando ao estágio 3, obtemos os seguintes valores óptimos para cada estado:

Finalmente, no estágio 4, é possível atingir o estado 12 em que todas as viagens são preparadas:

A solução óptima deste problema corresponde a um conjunto de blocos de dimensão 5, 3 e 4, respectivamente, e cuja soma das demoras é zero. No primeiro bloco, são preparadas as viagens 1 a 5, no segundo bloco, as viagens 6 a 8, e, no último bloco, as viagens 9 a 12. Esta solução está representada na Figura 9, Plano B. Sendo nulo o valor das demoras, é possível preparar todas as viagens respeitando as horas limite de saída impostas.

5.2 Eficiência

A eficiência da heurística proposta pode ser avaliada em termos da carga computacional. Na análise que se segue, é assumido que n>>Nc.

A carga computacional depende do número de estágios, do número de estados e do número de acções alternativas em cada estado no qual é avaliada a relação de recorrência, dada pela Equação (18). As acções alternativas em cada estado resultam das diferentes formas de dimensionamento dos blocos. A dimensão dos blocos deve ter um valor mínimo para permitir o funcionamento do sistema à taxa máxima. A dimensão máxima de um bloco é função do número de cais.

O número de acções alternativas possíveis é limitado superiormente por Nc. Assim, a ordem de grandeza do conjunto de acções alternativas, S, é  O(S)=O(Nc). O número de estados possíveis para n viagens é da ordem O(n). O número máximo de estágios resulta da preparação das n viagens em blocos de dimensão mínima, , que é um valor de ordem O(n).

A eficiência de um algoritmo de programação dinâmica é de ordem de grandeza do produto do número de estágios pelo número de estados e pelo número de alternativas Rodrigues (1994). Para o modelo em análise, a eficiência do algoritmo de programação dinâmica é O(n).O(n).O(Nc), ou simplificando, O(n2.Nc).

Trata-se portanto de um procedimento polinomial. As experiências computacionais efectuadas com instâncias de 100 viagens, um número próximo dos valores reais, foram resolvidas em menos de 50 mili-segundos num computador AMD K6 400 MHz com 128 MB de memória.

 

6. Conclusão

Neste artigo, analisámos um sistema que assegura um fluxo constante, ao longo do tempo, de contribuições de processamento que são divididas equitativamente pelas viagens activas. Isto dá origem a um problema com viagens com um tempo de processamento variável, que depende do número de viagens activas.

Quando se consideram datas de disponibilidade e datas de entrega, este problema pertence à classe de problemas NP-difíceis. Para obter soluções no caso em análise, foi adoptado um método de solução baseado em programação dinâmica, em que se relaxavam as datas de disponibilidade. Esta estratégia permite obter um procedimento de O(n2.Nc).

Salienta-se ainda como vantagem prática que a estratégia de processamento das viagens por blocos gera pontos fronteira que podem ser pontos importantes de controlo na execução prática do plano.

Foi assumido que as contribuições de processamento podiam sempre ser atribuídas a uma viagem. No sistema real em análise, tal não acontece necessariamente. Há situações em que as contribuições de processamento devem ser utilizadas para a preparação de cargas, a ser posteriormente transferidas para os camiões. A análise deste sistema, bem como a derivação de um algoritmo para a sua solução, será objecto de um artigo subsequente.

 

Agradecimentos

Agradecemos aos Drs. Jorge Vieira e Eduardo Silvério da Efacec, Sistemas de Informação, S.A., a sua colaboração na definição deste problema.

Este trabalho foi realizado no âmbito de um projecto da Linha de Engenharia de Sistemas e de Processos Industriais do Centro Algoritmi.

 

Referências Bibliográficas

(1) Blazewicz, J.; Ecker, K.; Pesch, E.; Schmidt, G. & Weglarz, J. (1996).  Scheduling in Computer and Manufacturing Processes. Springer-Verlag, Berlin.        [ Links ]

(2) Elsayed, E. & Stern, R. (1983).  Computerized algorithms for order processing in automated warehousing systems. International Journal of Production Research, 21, 579-586.        [ Links ]

(3) French, S. (1982).  Sequencing and Scheduling: An Introduction to the Mathematics of the Job-Shop. John Wiley, New York.        [ Links ]

(4) Garey, M.R. & Johnson, D.S. (1977).  Two-processor scheduling with start times and deadlines. SIAM J. Comput., 6, 416-426.        [ Links ]

(5) Gibson, D. & Sharp, G. (1992).  Order batching procedures. European Journal of Operational Research, 58, 57-67.        [ Links ]

(6) Horn (1973).  Minimizing average flow time with parallel machines. Operations Research, 21, 846-847.        [ Links ]

(7) Oliveira, J. (2000).  Aplicações de Modelos e Algoritmos de Investigação Operacional ao Planeamento de Operações em Armazéns. Ph.D. Thesis, Universidade do Minho, Escola de Engenharia.        [ Links ]

(8) Rodrigues, A. (1994).  Investigação Operacional: Modelos Determinísticos. Universidade do Minho, Braga.        [ Links ]

(9) Randhawa, S. & Shroff, R. (1995).  Simulation-based design evaluation of unit automated storage/retrieval systems. Computers and Industrial Engineering, 28, 71-79.        [ Links ]

(10) Sousa, J.P. (1989).  Time Indexed Formulations of Non-Preemptive Single-Machine Scheduling Problems. Ph.D. Thesis, Université Catholique de Louvain, Louvain-la-Neuve.        [ Links ]

 

 

Endereço para correspondência
José Manuel Valério de Carvalho
E-mail: vc@dps.uminho.pt

Recebido em 05/2000, aceito em 10/2002 após 2 revisões

 

 

* Corresponding author / autor para quem as correspondências devem ser encaminhadas

Creative Commons License All the contents of this journal, except where otherwise noted, is licensed under a Creative Commons Attribution License