Deisemara Ferreira
Universidade Federal de São Carlos, UFSCar;
Departamento de Engenharia de Produção
Rod. Washington Luís - Km 235; 13565-905, São Carlos, SP deise@dep.ufscar.br
Alistair R. Clark
University of the West of England, Bristol Institute of Technology, Frenchay Campus, Coldharbour Lane, Bristol, BS16 1QY, England;
alistair.Clark@uwe.ac.uk
Bernardo Almada-Lobo
Faculdade de Engenharia da Universidade do Porto, Rua Dr. Roberto Frias s/n, Porto 4200-465, Portugal,
almada.lobo@fe.up.pt
Reinaldo Morabito
Universidade Federal de São Carlos, UFSCar;
Departamento de Engenharia de Produção
Rod. Washington Luís - Km 235; 13565-905, São Carlos, SP morabito@power.ufscar.br
Resumo
Apresentamos neste trabalho uma reformulação do modelo P2EMM, proposto por Ferreira et al.
(2009a), que é baseado no modelo GLSP. Nesta reformulação o problema de dimensionamento e sequenciamento da produção de bebidas dois estágios com sincronia e tempos e custos de troca dependentes da sequência é modelado como um problema mono estágio, o que em geral reduz as dimensões do modelo. Os experimentos computacionais realizados com instâncias baseadas em dados reais indicam que o modelo proposto é competitivo quando comparado ao modelo P2EMM e uma estratégia de relaxação apresentados em Ferreira et al. (2009a).
Palavras-chave: Modelos integrados de dimensionamento e sequenciamento da produção.
Planejamento da produção de bebidas. Programação inteira mista. Programação matemática.
Abstract
In this work we present a reformulation of the P2EMM model, proposed by Ferreira et al.
(2009a) which is based on the GLSP model. In this proposed model the soft drink synchronized two-stages lot sizing and scheduling problem with sequence-dependent times and costs is reformulated as a one stage problem. The total number of variables and constraints are reduced with the reformulation. The computational tests with instances based on real data show that the proposed model is competitive when compared to P2EMM model and a relaxation approach proposed by Ferreira et al. (2009a).
Keywords: Integrated lot sizing and scheduling problems. Soft drink production planning. Mixed
integer programming. Mathematical Programming.
1. Introdução
Uma tarefa fundamental para se garantir o bom desempenho de um processo produtivo é a programação da produção. Para defini-la é necessário considerar vários fatores como, por exemplo, demanda dos produtos, capacidades de produção, preparo das máquinas, entre outros.
Em vários processos produtivos, como na produção bebidas, além destes fatores há a necessidade de programar e sincronizar mais de um estágio da produção, o que torna esta tarefa ainda mais complexa. Além disto, é desejável que o sequenciamento e o dimensionamento dos estágios sejam definidos simultaneamente, uma vez que estas decisões são dependentes uma da outra e ambas podem consumir altos índices de capacidade de produção.
Modelos integrados de dimensionamento e sequenciamento da produção têm sido aplicados no estudo da programação da produção de algumas indústrias brasileiras. Alguns exemplos são Araújo et al. (2008), Toso et al. (2009) e Luche et al. (2008) aplicados nos setores de fundição, nutrição animal e grãos eletrofundidos, respectivamente.
Na literatura, os trabalhos de Rangel e Ferreira (2003) e Clark (2003) apresentam modelos de otimização inteira mista para tratar do dimensionamento de lotes no setor de bebidas.
Em Ferreira et al. (2008b, 2009b) foi estudado um problema de dimensionamento e sequenciamento da produção de refrigerantes em uma fábrica de pequeno porte por meio de um modelo de otimização baseado no modelo GLSP (Fleischmann e Meyr, 1997). O modelo considera apenas um estágio de produção, envase da bebida, tratado como gargalo da produção, com uma única linha de envase. Heurísticas do tipo relax and fix foram propostas para resolver o modelo. Um caso mais geral do problema considerando dois estágios de produção (preparo do xarope e envase da bebida) foi estudado em Toledo et al. (2007, 2008). Foi proposto um modelo de otimização inteira mista que considera a sincronia entre os estágios, que é um aspecto importante em fábricas de médio e grande porte, com várias linhas de envase paralelas. Devido à complexidade e dimensão do modelo (que envolve cerca de 65 famílias de restrições), foram propostas abordagens de solução por meio de algoritmos genéticos e meméticos (Toledo et al., 2008).
Em Ferreira et al. (2009a) é proposto um modelo de otimização inteira mista, Modelo Dois Estágios Multi-Máquinas (P2EMM), que considera várias linhas de envase em paralelo, sincronia entre os dois estágios de produção (preparo do xarope e envase da bebida) e tempos e custos de troca dependentes da sequência em ambos os estágios. Este modelo admite hipóteses simplificadoras em relação ao modelo proposto em Toledo et. al. (2007), como a dedicação de linha a tanque. Para resolvê-lo, é então estudada uma abordagem de solução baseada em uma estratégia de relaxação (ER) do modelo, combinada com heurísticas relax and fix. Uma comparação destas abordagens pode ser encontrada em Ferreira et al. (2008).
Neste trabalho é estudada uma reformulação do modelo P2EMM e GLSP para se considerar o problema de programação da produção de bebidas com apenas um estágio, consequentemente o número total de variáveis e restrições do modelo é reduzido.
Na próxima seção deste artigo é descrito resumidamente o processo de produção de refrigerantes. O modelo P2EMM é apresentado na Seção 3. Na Seção 4 é detalhada a reformulação do modelo. Os experimentos computacionais realizados com instâncias baseadas em dados reais são analisados na Seção 5. E finalmente, na Seção 6 apresentamos as considerações finais e propostas de trabalhos futuros.
2. Processo de Produção de Refrigerantes
Conforme mencionado, a produção de bebidas possui dois estágios principais que são o preparo do xarope (sabor) e o envase da bebida pronta. O xarope é preparado em tanques especiais que possuem hélices para agitar o líquido. Uma quantidade mínima de xarope, suficiente para cobrir as hélices, deve ser preparada para garantir a homogeneidade do mesmo.
Há necessidade de preparar o tanque (limpeza) antes de seu uso. Este preparo é dependente da
sequência e ocorre mesmo entre trocas de xaropes de mesmo sabor. O tempo de troca no tanque é então o tempo de limpeza do tanque somado ao tempo de preparar o xarope (mistura dos ingredientes).
Após o preparo, o xarope é enviado para as linhas de envase se estas estiverem prontas.
Independente do número de tanques, cada linha de envase recebe xarope de apenas um tanque por vez, porém um tanque pode enviar xarope para mais de uma linha simultaneamente se elas estiverem envasando o mesmo sabor de bebida. O tempo de troca na linha é considerado o tempo de limpeza da linha, se o novo item a ser produzido for de sabor diferente, e/ou ajuste mecânico se o novo item a ser produzido utilizar um vasilhame de tamanho diferente.
Outro fator fundamental na programação da produção de bebidas, além dos tempos e custos de trocas dependentes da sequência, é a sincronia entre os estágios de preparo de xarope e envase da bebida. Na prática, se o tanque não estiver com o xarope pronto para ser enviado para a linha de envase, esta deve aguardar até que o xarope esteja pronto. Do mesmo modo, o tanque só pode iniciar o envio de xarope para a linha de envase se ela estiver preparada. Assim, podem ocorrer esperas da linha de envase pelo tanque e do tanque pela linha de envase. As Figuras 1 e 2 representam situações onde o tanque e a linha de envase estão seqüenciados, porém na Figura 1 não há sincronia entre os estágios. Os lotes de produção (retângulos) determinam os tamanhos dos lotes e o espaço entre eles define os tempos de troca de um refrigerante para outro na linha de envase, ou troca de um xarope para outro no tanque. Os tipos de refrigerantes são representados por números (1, 2 e 3) e os tipos de xaropes por letras (a e b).
Capacidade disponível Linha
a b b
1 2 2 3
Tanque
Subp. 2 Subp. 4
b
Subp. 3 Subp. 1
Figura 1. Programação não sincronizada.
No exemplo da Figura 1, se forem consideradas estas esperas, ou seja, se o tempo de troca for considerado como sendo o maior tempo entre a troca do item na linha e o xarope a ser preparado no tanque, a programação seria como representado na Figura 2 a seguir. Os retângulos de cor preta na Figura 2 são a diferença entre o tempo de troca de produtos da linha e de xarope no tanque.
Capacidade disponível Linha
a b b
1
Subp. 1 Subp. 2 Subp. 4
Tanque
b
Subp. 3
3 2
2
Figura 2. Programação sincronizada.
Note que a inclusão dos tempos de espera equivale a considerar na programação o maior
tempo de troca entre produtos na linha e xarope no tanque. Uma programação da produção não
sincronizada, ou seja, sem a consideração das diferenças entre os tempos de troca dos dois
estágios, pode levar a uma programação inviável na prática, uma vez que os tempos de espera
podem consumir parte da capacidade de produção (Ferreira et al., 2009a).
3. Modelo Dois Estágios Multi-Máquinas - P2EMM
Os parâmetros número total de refrigerantes (itens); xaropes; linhas de envase (máquinas) e tanques; períodos; sub-períodos (i.e. número total de preparos em cada período) são designados respectivamente pelas letras maiúsculas J, L, M, T e N.
Sejam os índices definidos como i j , ∈ (1,..., ) J itens; t ∈ (1,..., ) T períodos; s ∈ (1,..., N ) sub-períodos; k l , ∈ (1,..., ) L sabor dos xaropes; m ∈ (1,..., M ) máquinas e tanques; e suponha que os seguintes conjuntos são conhecidos: S
tconjunto dos sub-períodos do período t; λ
jconjunto de todas as máquinas que podem produzir o item j; α
mconjunto de todos os refrigerantes que podem ser produzidos na máquina m; β
mconjunto de todos os xaropes que podem ser preparados no tanque m; γ
mlconjunto de todos os refrigerantes que podem ser produzidos na máquina m e utilizam o xarope l.
A seguir os dados e variáveis com o sobrescrito I se referem ao estágio de xaroparia do processo de produção e os com o sobrescrito II se referem ao estágio de envase:
Dados
d
jt= demanda do item j no período t;
h
j= custo de estocar uma unidade o item j;
g
j= custo de atrasar a entrega de uma unidade do item j;
II
s
ij= custo de fazer a troca do item i para j;
I
s
kl= custo de fazer a troca do xarope k para l;
II
b
ij= quantidade consumida de tempo para fazer a troca de produção do item i para j;
I
b
kl= quantidade consumida de tempo para fazer a troca do xarope k para o xarope l;
II
a
mj= quantidade consumida de tempo para produção de uma unidade do item j na máquina m;
II
K
mt= capacidade de tempo disponível na máquina m para envase no período t;
I
K
ml= lote máximo do xarope l no tanque m;
I
q
ls= quantidade mínima do xarope l a ser preparada nos tanques no sub-período s.
r
lj= quantidade consumida de xarope l para produção de uma unidade do item j;
Variáveis:
I
+jt= estoque do item j no período t;
I
−jt= quantidade em atraso do item j no período t;
II
x
mjt= produção da máquina m do item j no sub-período s;
II
v
ms= tempo que a máquina m no sub-período s ficou aguardando o preparo do tanque;
II
y
mjs= 1 se a linha m está preparada para produção do item j no sub-período s; 0 caso contrário.
y
mlsI=1 se há produção no tanque m do xarope l no sub-período s; 0 caso contrário.
II
z
mijs= 1 se há troca na máquina m do item i para o item j no sub-período s; 0 caso contrário.
z
mklsI= 1 se há troca no tanque m do xarope k para o xarope l no sub-período s;
O modelo de otimização inteira mista, chamado simplesmente de modelo Dois Estágios Multi-Máquinas (P2EMM), para a programação da produção de refrigerantes, é então composto pela função objetivo (1) e pelas restrições (2)-(17) apresentadas a seguir.
(1)
J
1 t 1 1 1 1 1
Z= ( )
m m m m
T M N M N
II II I I
j jt j jt ij mijs kl mkls
j m s i j m s k l
Min h I g I s z s z
α α β β
+ −
= = = = ∈ ∈ = = ∈ ∈
+ + +
∑∑ ∑∑ ∑ ∑ ∑∑ ∑ ∑
Sujeito a:
Estágio I (Xaroparia)
(2) ∑
∈ ml j
II mjs jl
x r
γ
I I
,
ml mls
≤ K y m = 1,..., M l , ∈ β
m, s = 1,..., N ;
(3) ∑
∈ ml j
II mjs jl
x r
γ
≥ q
lsIy
mlsI, m = 1,..., M l , , ∈ β
ms = 1,..., N ;
(4) ∑ ∑
∈
∈ −
≥
m
m l
I mls l
I s
ml
y
y
β β ( 1)
m = 1,..., M , t = 1,..., , T s ∈ − S
t{ } P
t;
(5) z
mklsI≥ y
mk sI ( −1)+ y
mlsI− 1 m = 1,..., M k l , , ∈ β
m, 1,..., s = N ; (6)
( 1)1
mk
I II I
mkls mj s mls
j
z y y
γ −
∈
≥ ∑ + − m = 1,..., M k l , , ∈ β
m, 2,..., , t = T s = P
t;
(7) 1
m m
I mkls
k l
z
β β
∈ ∈
∑ ∑ ≤ m = 1,..., M , t = 1,..., , T s ∈ S
t;
Estágio II (Envase)
(8) I
+j(t−1)+ I
−jt+ ∑∑ = + + ,
∈ j ∈t
m s S
II
x
mjs λ+
I
jtI
−j(t−1)d
jtj = 1 ,..., J , t = 1 ,..., T ; (9)
m t m m t t
II II II II II II
mj mjs ij mijs ms mt
j s S i j s S s S
a x b z v K
α α α
∈ ∈ ∈ ∈ ∈ ∈
+ +
∑ ∑ ∑ ∑ ∑ ∑ ≤ , m = 1,..., M , t = 1,..., ; T
(10) ,
m m m m
II I I II II
ms kl mkls ij mijs
k l i j
v b z b
β β α α
∈ ∈ ∈ ∈
≥ ∑ ∑ − ∑ ∑ z m = 1,..., M , s = 1,..., N ;
(11)
mjsIIII j II II mt
mjs
y
a
x ≤ K , m = 1,..., M , j ∈ α
m, t = 1,..., T , s ∈ S
t;
(12) ∑ = 1 ,
∈ m j
II
y
mjs α1,..., , 1,..., ; m = M s = N
(13) z
mijsII≥ y
miII(s−1)+ y
mjsII-1, m = 1,..., M , i , j ∈ α
m, s = 2,..., N ; (14) ∑ ∑ 1,
∈ m ∈ m
i j
II
z
mijs α α≤ m = 1 ,..., M , s = 1,..., N ;
(15) I
+jt, I
−jt≥ 0 , j = 1,..., , 1,..., J t = T ; x
mjsII, v
msII, z
mijsII, z
mklsI≥ 0 ; y
mjsII, y
mlsI= 0 / 1 , ,
,...,
1 M
m = i e , j ∈ α
mk e , l ∈ β
mt = 1 ,..., T , s ∈ S
t.
O critério de otimização (1) é minimizar os custos de estoque, atraso e troca. As
restrições (2) junto com as restrições (3) garantem os lotes máximos e mínimos respectivamente
do xarope l. A restrição (4) ordena a produção em sub-períodos consecutivos dentro de cada
período. A restrição (5), equivalente à restrição (14) do estágio II, controla a troca de xarope no
tanque. Porém esta restrição não controla as trocas entre períodos se o último sub-período do período anterior for ocioso, sendo então necessárias as restrições (6) para contabilizar estas trocas. A restrição (7) é semelhante a (14), e limita o número de trocas por sub-período.
A restrição (8) diz respeito ao balanceamento entre estoque e produção. A restrição (9) garante que o tempo de produção mais o tempo gasto para as trocas de refrigerantes, e o tempo de espera da máquina não excederão a capacidade de tempo do período t da máquina m. Sendo que o tempo de espera da máquina é a diferença entre o tempo de troca na máquina e troca do tanque, restrição (10). A restrição (11) garante que não haverá produção caso a máquina m não esteja preparada. A restrição (12) estabelece que a máquina sempre estará preparada para produzir exatamente um refrigerante por sub-período. A restrição (13) controla a troca de refrigerantes.
Pode ocorrer apenas uma troca por sub-período, restrição (14). As restrições (15) definem o domínio das variáveis.
Um outro método de solução do problema, Estratégia de Relaxação (ER), baseado no modelo P2EMM foi testado em Ferreira et al.( 2009a) que combinado com uma heurística do tipo relax and fix obteve as melhores soluções para o problema da programação de bebidas. Este método se baseia na solução de um modelo denominado P1EMM, Um Estágio Multi Máquinas, obtido pela eliminação de todas as variáveis do estágio I, exceto a variável de preparo, , e todas as restrições, exceto as restrições de quantidade mínima e máxima de xarope no tanque (2) e (3) do modelo P2EMM; a variável de espera da máquina pelo tanque, que garante a sincronia entre os dois estágios, também é eliminada. Assim, a restrição que calcula o tempo de espera do estágio II, (10), é removida e a restrição de capacidade, (9), é modificada para:
I
y
mlsII
v
ms(9a)
m t m m t
II II II II II
mj mjs ij mijs mt
j s S i j s S
a x b z K
α α α
∈ ∈ ∈ ∈ ∈
+ ≤
∑ ∑ ∑ ∑ ∑ , m = 1 ... M , t = 1 ... T .
O modelo Um Estágio Multi Máquinas (P1EMM), composto então pela função objetivo (1a):
(1a)
J
1 t 1 1 1
Z ( )
m m
T M N
II II
j jt j jt ij mijs
j m s i j
Min h I g I s z
α α
+ −
= = = = ∈ ∈
= ∑∑ + + ∑∑ ∑ ∑ ,
e pelas restrições (2), (3), (8), (9a), (11)-(15).
O algoritmo ER descrito na Figura 3 a seguir resume a estratégia de relaxação.
Algoritmo ER
Passo 1 - Resolva o modelo P1EMM.
Passo 2 - Se P1EMM é viável, então
para todo m = 1 ... M , j ∈ α
m, s = 1 ... N faça se x
mjsII> 0 então
Fixe as variáveis de preparo no modelo P2EMM de acordo com:
y
mjsII= 1 e y
mlsI= 1 , ∀ l ∈ σ
jPasso 3 - Resolva o modelo P2EMM obtido na Passo2.
( σ
jé o xarope necessário para a produção do item j)
Figura 3 – Algoritmo ER. Fonte: Ferreira et al. (2009a).
4. Reformulação do modelo P2EMM
Nas soluções ótimas dos modelos P2EMM e GLSP as máquinas (linhas de envase do segundo estágio) se mantém preparadas em sub-períodos ociosos, restrições (12), com o último item produzido. Tendo em vista que os tempos e custos de troca de um item para ele mesmo são nulos nas linhas, este estado de preparo não gera tempos de troca ou custos adicionais para máquinas. No caso do primeiro estágio da produção de bebidas, não é possível fazer o mesmo para os tanques, pois os tempos de troca de um xarope para ele mesmo são sempre positivos.
Assim, é necessário ou não mantê-los preparados, como é feito no modelo P2EMM, ou anular os tempos e custos de troca que seriam considerados nos sub-períodos ociosos. Esta é a razão pela qual não é possível sincronizar os dois estágios tomando apenas o máximo entre os tempos de troca de itens nas linhas e tanques. Na reformulação proposta neste trabalho, os tempos e custos são anulados nos sub-períodos ociosos com o auxílio de um novo conjunto de variáveis, o que permite tomar o máximo entre o tempo de troca de bebida na linha e o do xarope utilizado para produzir esta bebida no tanque. Com isto, é possível formular o modelo com apenas um estágio, o que em geral reduz o número total de variáveis e restrições. O modelo reformulado denominado P2EMM-R1 é descrito a seguir.
Considere que as variáveis de produção, estoque, atraso, set up e troca do estágio II são as mesmas do modelo P2SEMM. Portanto, o sobrescrito II é removido. Defina uma variável binária, que assume valor 1 para algum item j em sub-períodos ociosos e 0 para todos os outros itens nos sub-períodos onde há produção. Esta variável é utilizada para anular as variáveis de set up e troca em períodos onde não há produção, ou seja, em períodos onde os tempos de set up e troca não devem ser contabilizados. Os parâmetros de lotes máximos e mínimos dos xaropes são transformados em termos de bebida pronta. Desta forma, é o lote máximo de refrigerante j que se pode envasar com um tanque cheio do xarope, q
v
mjtUB
mjmj
é o mínimo de bebida que se envasa com o lote mínimo de xarope que deve ser preparado, max { b
ijII, b
klI: , i j ∈ α
m, ( ) k ∈ σ i e ( ) l ∈ σ j } , onde σ ( ) i é o conjunto do xarope utilizado para preparar a bebida i . O parâmetro
bijé o máximo entre o tempo de troca da linha e o tempo necessário para o preparo do xarope a ser envasado. Este pré-processamento dos dados de tempos de troca garante a sincronia entre os estágios, pois sempre o maior tempo é considerado evitando que a linha (ou o tanque) comece a envasar (ou enviar xarope) antes que o outro estágio esteja pronto. O modelo P2EMM-R1 é dado a seguir:
(16)
J
1 t 1 1 ,
Z= ( ) ( ( ))
t m m m
T M
j jt j jt ij mijs jj mjjs mjs
j m s S i j i j j
Min h I g I c z c z v
α α α
+ −
= = = ∈ ∈ ∈ ≠ ∈
+ + + −
∑∑ ∑∑ ∑ ∑ ∑
Sujeito a:
(17) I
+j(t−1)+ I
−jt+ ∑∑ = + + ,
∈ j ∈t
m s S
II
x
mjs λ+
I
jtI
−j(t−1)d
jtj = 1,..., , J t = 1 ,..., T ; (18) x
mjs≤ UB
mj( y
mjs− v
mjs), m = 1,..., M , j ∈ α
ms = 1,..., N ; (19) x
mjs≥ q
mj( y
mjs− v
mjs) , m = 1,..., M , j ∈ α
ms = 1,..., N ;
(20) ( ( )
m t t m m m
mj mjs ij mijs jj mjjs mjs mt
j s S s S i j j
j i
a x b z b z v K
α α α α
∈ ∈ ∈ ∈ ∈ ∈
≠
+ + − ≤
∑ ∑ ∑ ∑ ∑ ∑ ) , m = 1,..., M , t = 1,..., ; T
(21) ∑ = 1 ,
∈ m j
II
y
mjs α1,..., , 1,..., ; m = M s = N
(22) v
mjs≤ v
mj s( +1)m = 1,..., M , j ∈ α
mt = 1,..., , T s ∈ S
t/ { } L
t;
(23) z
mjjs≥ v
mjs, m = 1,..., M , j ∈ α
ms = 1,..., N ; (24) z
mijs≥ y
mi s( −1)+ y
mjs-1, m = 1,..., M , i , j ∈ α
m, s = 1,..., N ; (25) 1,
m m
mijs
i j
z
α α
∈ ∈
∑ ∑ ≤ m = 1,..., M , s = 1,..., N ;
(26) I
+jt, I
−jt≥ 0 ; x
mjs, z
mijs≥ 0 ; v
mjs, y
mjs= 0 / 1 , m = 1 ,..., M , i e j ∈ α
mt = 1,..., T , s ∈ S
t. A função objetivo (16) minimiza os custos de estoque, atraso e troca. A restrição (17) é a restrição de balanceamento de estoque. As restrições (18) e (19) definem os lotes mínimos e máximos de produção da linha. Se não há produção no sub-período o lote é nulo, porém pela restrição (21) para algum item j a variável de set up é 1, o que implica que a variável deve assumir valor 1 para que o termo ( seja nulo. O mesmo ocorrerá com o termo
que será nulo evitando a contabilização do tempo de troca na restrição de capacidade (20) e fazendo com que o custo de troca na função objetivo neste sub-período ocioso também seja nulo. A restrição (22) faz com que os sub-períodos ociosos ocorram no fim do período e que a linha sempre esteja preparada para um mesmo item. Esta restrição combinada com a restrição (23) garante que a linha é mantida preparada com o último item produzido. Note que nos sub- períodos ociosos a variável de setup assume valor 1 exatamente para o item j relacionado a variável de troca , pois é permitida apenas uma troca por sub-período (restrição (25)), então o único item j que satisfará as restrições (21) e (24) é o item j da troca . As restrições (24), (25) e (26) são similares às restrições (13), (14) e (15), respectivamente.
y
mjsv
mjt) )
mjs mjs