Programação de operações em sistemas com tempo de processamento variável
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 eme 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 instanteCj 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(Cj'dj,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.![](/img/fbpe/pope/ v22n3/a03img01.gif)
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 respeitarmst£Nmine ser inteiro. No presente problema, assumindo
ms=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 é,[/img/fbpe/pope/
v22n3/a03img02.gif]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, sj e Cj, 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ç[/
img/fbpe/pope/v22n3/a03img02.gif]Djque é 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.[/img/
fbpe/pope/v22n3/a03img01.gif]
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.<formula/>
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áveisxjt.
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,"ja 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.<formula/>
4.5Tempo 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 neme 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.<formula/>
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 gei(D). Esta acção conduz do estado ei =çEiçao estadoei
=ç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
gei(D)
, dado pela soma dos atrasos respeitantes à expedição das D viagens que formam
o bloco, ou seja,
gei(D)= <formula/>max{Cj ' dj,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)=<formula/>{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 deG(Ei) e dessa forma diminuir a soma, ou seja, diminuir o
valor deG(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 queG0(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.2Eficiê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, <formula/>, 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.