SciELO - Scientific Electronic Library Online

 
vol.27 issue1Sistema imunológico artificial para resolver o problema da árvore geradora mínima com parâmetros fuzzy 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.27 no.1 Rio de Janeiro Jan./Apr. 2007

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

Um modelo de otimização para o problema integrado de dimensionamento de lotes e programação da produção em fábricas de refrigerantes

 

 

Claudio F. M. ToledoI; Paulo M. FrançaII; Reinaldo MorabitoIII,*; Alf KimmsIV

IDCC / Univ. Federal de Lavras (UFLA) – Lavras – MG – claudio@dcc.ufla.br
IIDENSIS / FEEC / Univ. Estadual de Campinas (UNICAMP) – Campinas – SP – franca@densis.fee.unicamp.br
IIIDEP / Univ. Federal de São Carlos (UFSCar) – São Carlos – SP – morabito@power.ufscar.br
IVDept. of Technology and Operations Management / MSM – University of DuisburgEssen – Duisburg – Alemanha – alf.kimms@uniduisburgessen.de

 

 


RESUMO

O presente artigo apresenta, modela matematicamente e soluciona um problema multi-nível integrado de dimensionamento de lotes e programação da produção em um ambiente industrial com máquinas paralelas que apresentam restrições de capacidade, custos e tempos de preparo dependentes da seqüência. O problema é motivado pela realidade encontrada em alguns setores industriais, em particular o de fabricação e engarrafamento de bebidas. Nesse tipo de indústria a produção envolve dois níveis interdependentes com decisões relativas à armazenagem das matérias-primas e ao engarrafamento das bebidas. As diversas matérias-primas são armazenadas em tanques de onde escoam para as linhas de engarrafamento. O desafio é determinar simultaneamente o dimensionamento e a programação de custo mínimo das matérias-primas nos tanques e o envasamento de bebidas nas linhas, onde tempos e custos de trocas dependem do tipo de item previamente armazenado e envasado. É proposto um modelo matemático inteiro-misto que introduz diversas restrições combinadas que até então costumavam ser tratadas separadamente na literatura. A não existência de testes com modelos similares nos obrigou a criar um conjunto de instâncias para avaliar o modelo e as técnicas de solução propostas. As instâncias foram solucionadas otimamente por meio do pacote computacional GAMS/Cplex. A solução exata se mostrou viável apenas em instâncias de pequena dimensão devido à complexidade do problema em estudo. Os resultados computacionais obtidos pelo GAMS/Cplex são apresentados e analisados.

Palavras-chave: programação da produção; dimensionamento de lotes; indústria de refrigerantes.


ABSTRACT

The present paper establishes, describes mathematically and solves a multi-level lot sizing and scheduling problem in an industrial set with parallel machines and sequence-dependent setup cost and time. The problem is motivated by real situations found in some industrial settings mainly the soft drink industry. In this kind of industry, the production involves two interdependent levels with decisions about raw material storage and soft drink bottling. The several raw materials are stored in tanks from which they flow to the bottling lines. The challenge is to determine simultaneously the minimum cost lot sizing and scheduling of raw material in tanks and also in the bottling lines, where setup costs and time depend on the previous items stored and bottled. A mixed-integer mathematical model with several combined constrains that use to be handled apart in the literature is proposed. The lack of similar models led us to create a set of instances to evaluate the model and the solution techniques developed. The instances were optimally solved by the GAMS/Cplex software. Due to the problem complexity, it is demonstrated that the use of this optimization package is only viable for small-sized instances. The computational results are showed and analyzed.

Keywords: machine scheduling; lot sizing; soft drink industry.


 

 

1. Introdução

A motivação para este trabalho nasceu de problemas industriais envolvendo a fabricação de bebidas. A produção em geral é separada em dois níveis ou estágios. No primeiro nível, as matérias-primas são armazenadas em tanques de onde escoam para diversas linhas de produção ou engarrafamento. No segundo nível, as linhas de produção realizam o envase da matéria-prima em embalagens de diferentes tamanhos resultando na bebida ou produto final. O problema consiste em estabelecer o dimensionamento e a programação da produção de produtos e matérias-primas. A solução do problema deve ser determinada de forma simultânea e integrada nos dois níveis considerados.

A troca de embalagens nas linhas acarreta um tempo de troca. Isso gera um atraso de até algumas horas no início da produção do próximo produto. Esse tempo de troca (setup time) é dependente da seqüência, isto é, da ordem na qual os produtos são produzidos. Um subconjunto de linhas, em geral, é capaz de produzir determinado produto. Assim, produtos podem ser produzidos em linhas dispostas em paralelo.

A matéria-prima das linhas de produção vem de tanques com limitada capacidade de armazenagem. Um tanque pode armazenar apenas um tipo de matéria-prima de cada vez e, por razões técnicas, somente é reabastecido quando está vazio. Um tempo de troca (também dependente da seqüência) existe para limpeza e reabastecimento do tanque, ainda que pelo mesmo tipo de matéria-prima. Durante esse período, nada é escoado do tanque para as linhas de produção.

O objetivo ao resolver esse problema é estabelecer o dimensionamento e a programação de matérias-primas e bebidas, respectivamente, nas linhas e tanques de forma integrada. Afinal, há uma interdependência entre os dois níveis de produção. Essa solução deve também minimizar a soma total dos custos de troca, de estoque e de produção. Portanto, temos um problema multi-nível (2 níveis) de dimensionamento de lotes e programação da produção, com linhas de produção e tanques dispostos em paralelo e com tempos e custos de troca dependentes da seqüência.

O problema de dimensionamento de lote (e programação da produção) capacitado é um tópico de amplo interesse que tem atraído muitos pesquisadores. Citamos Drexl & Kimms (1997) e as referências nele apresentadas para uma visão geral dessa área. O dimensionamento de lote e a programação da produção, com restrição de capacidade, é um problema de otimização NP - difícil. A obtenção de uma solução factível é possível (por exemplo, usando uma política do tipo lote-por-lote), desde que tempos de troca não sejam considerados. Todavia, no problema aqui proposto, a política lote-por-lote pode violar a capacidade dos tanques ou das linhas, conseqüentemente, levando a obtenção de soluções infactíveis. Se tempos de troca estão presentes, a simples determinação de uma solução factível se torna um problema NP - completo. Veja, por exemplo, Fleischmann (1994) para uma discussão maior do problema discreto de dimensionamento de lote e programação da produção, com custos de troca dependentes da seqüência. Outro artigo sobre custos de troca dependentes da seqüência com máquinas paralelas é Kang et al. (1999). Um dos poucos métodos exatos para resolver o problema de dimensionamento de lotes e programação da produção, com tempo de troca dependente da seqüência, é encontrado em Haase & Kimms (2000). Referências sobre trabalhos anteriores também são fornecidas neste artigo. Heurísticas para esse mesmo tipo de problema são descritas em Meyr (2000) e Meyr (2002).

Existem várias publicações para problemas multi-nível de dimensionamento de lotes (Stadtler, 1996; e Tempelmeier & Derstroff, 1996). Porém, para o problema multi-nível de dimensionamento de lote e programação da produção, a literatura é mais escassa (Kimms, 1997 e 1997b). Problemas multi-nível são mais complexos, ainda que se considere capacidade ilimitada. Também há máquinas paralelas no nosso problema. Um estudo em máquinas paralelas com demanda constante é encontrado em Carreno (1990), mas no nosso caso a demanda é dinâmica. Os benefícios de se dedicar uma ou mais máquinas é discutido em Campbell (1992). O trabalho de De Matta & Guignard (1995) trata com horizonte rolante um problema de dimensionamento de lote e programação da produção com máquinas paralelas. Mais recentemente, um problema de dimensionamento de lotes em um cenário multi-nível é descrito em Kuhn & Quadt (2002) e Quadt & Kuhn (2003).

O trabalho mais próximo ao nosso problema é o de Meyr (2002) que trata uma extensão multi-nível de Meyr (2000). Nessa abordagem, entretanto, pode ser necessário dividir um lote em pequenos lotes para não se perder generalidade. Mas isso poderia não ser uma boa idéia em nosso caso, já que o fracionamento excessivo de lotes iria gerar novos e indesejados tempos de troca. Do lado das empresas, verificou-se que a programação da produção de tanques e linhas de envase se dá de forma separada, com ajustes empíricos feitos quando necessários.

Resumindo, parece que até onde pesquisamos não existe uma abordagem capaz de tratar toda a complexidade do problema de produção e engarrafamento de bebidas. Logo, a formulação de um modelo específico é o primeiro passo para se avançar cientificamente neste tópico. O avanço da programação matemática e de suas técnicas, aliado ao aumento da capacidade de processamento dos computadores, descortina o trato conjunto de problemas complexos que até então eram tratados separadamente por conveniência. Esta parece ser uma tendência no planejamento e controle da produção de muitos setores industriais, na medida em que se verificam ganhos de eficiência ao se tratar conjuntamente o todo e suas interdependências, ao invés de tratar as partes para depois ajustá-las por ordem das interdependências.

Na próxima seção, as hipóteses e restrições retiradas do problema industrial são detalhadas. A seguir, um modelo para o problema é proposto e o processo de geração de instâncias para avaliar o modelo é descrito. Essas instâncias são solucionadas usando GAMS/Cplex e os resultados computacionais são analisados. Finalmente, as conclusões e perspectivas futuras são apresentadas.

 

2. Descrição do Problema

Para efeito de melhor compreensão, o problema é ambientado no setor de bebidas e usa nomes e nomenclatura deste tipo de indústria (tanques, xaropes, etc.). O objetivo principal desta seção é apresentar os dois níveis de produção, as restrições existentes em cada um deles e o enquadramento do problema como um problema de dimensionamento e programação da produção.

2.1 Níveis de produção do problema

A fabricação de bebidas envolve o uso de diferentes matérias-primas que misturadas a outros componentes resultam nos xaropes. Os xaropes ficam armazenados em tanques de onde escoam para as linhas de produção. A combinação do tipo de xarope que escoa dos tanques com o tipo de envase realizado nas linhas de produção resulta na bebida ou produto final. Vamos considerar que as demandas por bebidas são planejadas em um horizonte de tempo mensal e devem ser atendidas ao final de cada semana de trabalho.

Em um primeiro nível, o problema envolve o dimensionamento e a programação dos xaropes. Deve-se decidir quanto e quando determinado xarope será armazenado em cada um dos tanques disponíveis. No segundo nível, o problema envolve o dimensionamento e a programação das bebidas ou produtos finais. Deve-se decidir quanto e quando determinado produto será colocado em produção nas linhas de engarrafamento. A Figura 1 abaixo apresenta uma visão geral do processo de produção. Observe que nos dois níveis, as linhas e tanques podem ser vistos como processadores em paralelo.

 

 

2.2 Restrições e decisões envolvidas

As restrições e decisões existentes no problema industrial são introduzidas nesta seção. Inicialmente, apresentamos as restrições relativas aos tanques:

1. Todos os tanques envolvidos têm uma capacidade máxima de armazenagem que não pode ser ultrapassada. Os tanques também devem ser abastecidos com uma quantidade mínima de xarope.

2. Cada tanque pode armazenar um único xarope por vez, mas o mesmo xarope pode estar armazenado em diversos tanques.

3. Um tanque é reabastecido apenas quando o xarope nele armazenado for completamente escoado para as linhas de produção.

4. Existe um custo relacionado à troca de um xarope por outro nos tanques. Também existe um gasto de tempo durante esta troca. Isto ocorre porque o armazenamento de um novo xarope no tanque exige a sua limpeza. Tanto o tempo quanto o custo de troca dependem do produto que estava previamente no tanque.

As decisões relativas aos tanques envolvem:

1. O tipo e a quantidade de xarope que devem ser armazenados em cada tanque.

2. A seqüência em que os xaropes são produzidos e armazenados em cada tanque.

3. A programação dos xaropes nos tanques que atenda às demandas, minimizando os custos e o tempo gasto nas trocas realizadas.

As restrições relativas às linhas de produção são:

1. As linhas podem realizar mais de um tipo de envase. Por exemplo, uma mesma linha pode ser ajustada para engarrafar o xarope em uma embalagem de 600ml, 1l ou 2l, dependendo da programação estabelecida.

2. Se um novo xarope é escoado, a linha deve ser preparada para recebê-lo. O tempo e o custo envolvidos no preparo da linha dependem do tipo de bebida previamente produzida. Por exemplo, as seqüências "refrigerante normal – refrigerante diet" resultam em custos e tempos de preparo maiores do que a seqüência inversa.

3. O tempo de processamento depende de cada linha e do tipo de envase realizado. Por exemplo, duas linhas podem realizar o mesmo tipo de envase em diferentes velocidades. Uma mesma linha em geral tem diferentes tipos de tempo de processamento para diferentes tipos de envase.

4. Trocas ou reposições de xarope em um tanque exigem a interrupção da produção nas linhas que o utilizam.

5. A demanda semanal deve ser atendida e o excedente produzido deve ser estocado.

As decisões relativas às linhas de produção envolvem:

1. A definição do tipo e da quantidade de bebida que é produzida em cada linha.

2. A seqüência em que os produtos são produzidos pelas linhas.

3. A programação dos produtos nas linhas que atenda às demandas, minimizando os custos e os tempos gastos nas trocas realizadas.

As decisões e as restrições relativas aos tanques e às linhas de engarrafamento são interdependentes, pois:

1. As quantidades de xaropes armazenadas nos tanques devem ser suficientes para atender a produção nas linhas.

2. A programação dos xaropes nos tanques deve estar sincronizada à programação das linhas. Não poderá ocorrer o envase de determinada bebida, se o xarope correspondente não estiver armazenado em um tanque.

2.3 Classificação do problema

Os xaropes programados nos tanques devem atender as demandas das linhas de produção e vice-versa. Isso caracteriza o problema industrial como sendo multi-nível. A interdependência entre os dois níveis exige uma solução integrada e sincronizada.

Uma das decisões a serem tomadas é a definição das quantidades de xaropes armazenadas nos tanques e de produtos produzidos nas linhas. Uma solução do problema deve determinar o dimensionamento de lotes nos dois níveis de produção. Além disso, para cada lote produzido nas linhas, uma seqüência de produção deve ser estabelecida. Da mesma forma, a seqüência em que os tanques são ocupados por cada lote de xarope deve ser conhecida. Tem-se assim um problema de programação de lotes tanto nas linhas quanto nos tanques.

O preparo das linhas (tanques) para produzir (armazenar) um novo produto (xarope) ocasiona um gasto de tempo e um custo relativos à interrupção da produção. Além disso, o gasto de tempo e o custo associado dependem do tipo de produto ou xarope previamente produzido na linha ou armazenado no tanque. Desta forma, o problema proposto também é um problema de programação da produção com custos e tempos de preparo dependentes da seqüência nos dois níveis de produção.

Tanto tanques como linhas podem ser vistos como máquinas (ou processadores) dispostas em paralelo que processam xaropes e produtos, respectivamente. Portanto, trata-se de um problema de máquinas paralelas nos dois níveis.

O problema apresenta restrições de capacidade. As demandas devem ser atendidas dentro de um horizonte mensal dividido em períodos semanais. As linhas têm diferentes velocidades de processamento que implicam em diferentes capacidades de produção dentro dos períodos considerados. Além disso, os tanques possuem uma capacidade máxima de armazenagem que limita a quantidade de xarope disponível à produção. A combinação desses fatores restringe a capacidade produtiva da planta industrial.

Isto posto, o problema pode ser classificado como um problema multi-nível (dois níveis) de dimensionamento de lote e programação da produção em máquinas paralelas com restrições de capacidade, custos e tempos de preparo dependentes da seqüência. Iremos nos referir a tal problema simplesmente como um Problema Integrado de Dimensionamento de Lotes e Programação da Produção (PIDLPP) no decorrer deste trabalho.

 

3. Modelagem do Problema

Aspectos presentes no Problema Geral de Dimensionamento e Programação de Lote (PGDPL) apresentado em Fleischmann & Meyr (1997) e no Problema Contínuo de Dimensionamento de Lote (PCDL) apresentado em Bitran & Matsuo (1986) e Drexl & Kimms (1997) foram utilizados na modelagem matemática do problema.

Um horizonte de tempo T foi dividido em macro-períodos de tamanho fixo t. Um número máximo de lotes (S para linhas e para tanques) foi considerado em cada macro-período. Utilizou-se a idéia presente no PGDPL de se programar um número máximo de lotes por macro-período. Isso é feito no nosso modelo através de variáveis e restrições indexadas nos lotes.

Todavia, em um problema multi-nível envolvendo linhas e tanques, é necessário coordenar os lotes programados nos tanques com os lotes programados nas linhas, e vice-versa. Essa sincronia entre os dois níveis é feita aqui se utilizando a idéia de micro-períodos de tamanho fixo presente no Problema Discreto de Dimensionamento de Lotes (Fleischmann, 1990 e 1994), no Problema Contínuo de Dimensionamento de Lotes (Bitran & Matsuo, 1986; e Karmakar & Kekre, 1987) e no Problema Proporcional de Dimensionamento e Programação de Lotes (Drexl, 1995 e 1996; Drexl & Kimms, 1997).

Os macro-períodos t são divididos em Tm micro-períodos de mesmo tamanho e os lotes atribuídos às linhas (tanques) são produzidos sem ocupar necessariamente toda a capacidade de um micro-período, seguindo a hipótese do PCDL. Logo, dois produtos (xaropes) não podem ocupar um mesmo micro-período. Assim, criamos condições de impor restrições na formulação do modelo que permitam fixar no tempo a produção nas linhas, em conjunto com a programação de xarope nos tanques.

Por exemplo, o modelo deve impor que um xarope programado em um tanque esteja disponível pelo menos um micro-período antes do início da produção nas linhas. Isso evita que um produto seja produzido sem que o xarope esteja armazenado no tanque. O modelo consegue representar tais situações usando variáveis e restrições indexadas nos micro-períodos.

A Figura 2 ilustra, por meio de um gráfico de Gantt, o uso das hipóteses do PGDPL e do PCDL no problema em questão. Para isso, T=2 macro-períodos com no máximo S = = 2 lotes foram subdivididos em Tm =5 micro-períodos. Um total de 5 xaropes (XpA, XpB, XpC, XpD, XpE) e 6 produtos (P1, P2, ..., P6) foram dimensionados e programados em 3 tanques (Tq1, Tq2, Tq3) e 3 linhas (L1, L2, L3), respectivamente. O xarope XpA produz o produto P1, XpB produz P2 e P3, XpC produz P4, XpD produz P5 e XpE produz P6. A Figura 2 apresenta a seqüência e o tempo de limpeza e reabastecimento dos xaropes nos tanques, assim como a seqüência e o tempo de produção de cada produto nas linhas.

 

 

XpA, XpB, XpC, XpD e XpE na Figura 2 indicam o tempo de preparação do xarope no tanque e P1, P2, P3, P4 e P5 indicam o tempo de processamento dos produtos. Observamos no exemplo que as atribuições de produtos às linhas e de xaropes aos tanques não ultrapassam o número máximo possível de lotes (S = = 2). Destacamos que o número máximo de atribuições em Tq2 é utilizado para atender a demanda pelos xaropes XpC e XpD nos dois macro-períodos. Por outro lado, apenas uma atribuição é utilizada em Tq3 para armazenar XpE. Nas linhas L1 e L2, o número máximo de atribuições é utilizado para se produzir os produtos P1, P2, P3, P4 e P5. Por outro lado, apenas um lote de P6 é atribuído à linha L3.

Todos os produtos começam a ser produzidos nas linhas nos micro-períodos seguintes àqueles em que os xaropes estão prontos nos tanques. Todavia, conforme ilustrado no tanque Tq3 e na linha L3, a produção não precisa começar imediatamente após o preparo do tanque. Na linha L1, observamos que no segundo macro-período a produção de P3 começa no micro-período seguinte ao término de P2. Isso ocorre porque estamos supondo não haver produção de dois itens em um mesmo micro-período. Portanto, há um intervalo entre a produção de P2 e P3.

Pelo exemplo anterior, podemos perceber que programar e dimensionar os lotes de produtos e xaropes de forma sincronizada não é uma tarefa fácil. O modelo matemático busca representar todas as restrições envolvidas nesse tipo de situação conforme é apresentado a seguir.

3.1 Notação utilizada

O significado de cada parâmetro e variável de decisão presentes no modelo é apresentado nesta seção.

3.1.1 Parâmetros gerais

T: número de macro-períodos.

C: capacidade (em unidades de tempo) dentro de um macro-período.

Tm: número de micro-períodos por macro-períodos.

Cm: capacidade (em unidades de tempo) dentro de um micro-período (C=TmxCm).

e : um número real positivo suficientemente pequeno.

M: um número real positivo suficientemente grande.

3.1.2 Parâmetros para as Linhas de Produção

J: número de produtos.

L: número de linhas em paralelo.

Lj : conjunto de linhas nas quais o produto j pode ser produzido.

S: número máximo de lotes por macro-período.

djt : demanda pelo produto j no final do macro-período t.

sijl : custo de troca dependente da seqüência de produção do produto i para o produto j na linha l (sijl = 0, se i = j).

hj : custo de estoque para cada unidade do produto j que permanece em estoque ao final de um macro-período.

vjl : custo de produção de uma unidade do produto j na linha l.

pjl : tempo de processamento de uma unidade do produto j na linha l (hipótese: pjl < Cm).

xjl0 = 1, se a linha l está ajustada inicialmente para o produto j.

s'ijl : tempo de troca (setup time) para ajustar a linha l a partir do produto i para o produto j (hipóteses: s'ijl < C e s'ijl = 0).

wl1 : tempo de troca para o primeiro lote na linha l no macro-período 1 que já foi executado antes do macro-período 1 começar (Observação: se wl1 > 0, então os valores xjl1 são conhecidos e estas variáveis devem ser ajustadas adequadamente).

Ij0 : estoque inicial do produto j.

3.1.3 Variáveis de decisão para as Linhas de Produção

zijls : indica se a linha l é ajustada (zijls = 1) ou não (zijls = 0) a partir do produto i para o produto j no lote s (definir zijls > 0 é suficiente ).

Ijt : quantidade de produto j em estoque no final do macro-período t.

qjls : quantidade do produto j produzido na linha l no lote s.

xjls = 1, se o lote s na linha l pode ser usado para produzir o produto j; 0, caso contrário.

uls = 1, se uma quantidade é efetivamente produzida no lote s na linha l; 0, caso contrário.

s'ls : tempo de troca na linha l no início do lote s.

wlt : tempo de troca gasto antes do primeiro lote na linha l no macro-período t que é programado ao final do macro-período t-1.

xElst = 1, se o lote s na linha l termina no micro período t .

xBlst = 1, se o lote s na linha l começa no macro período t .

dls : tempo no primeiro micro-período do lote s que é reservado para tempo de troca e tempo ocioso.

q0j : quantidade de produto j que deixará de ser produzida, ou seja, será positiva toda vez que a demanda do produto j não for satisfeita.

3.1.4 Parâmetros para os Tanques

: número de xaropes.

: número de tanques.

: conjunto de tanques nos quais o xarope j pode ser armazenado.

: número máximo de lotes por macro-período.

: custo de troca do xarope i para o xarope j no tanque k.

: custo de estoque para cada unidade do xarope j que permanece no tanque ao final de um macro-período.

: custo de produção para cada unidade do xarope j utilizada no tanque k.

= 1, se o tanque k é ajustado para o xarope j no início do horizonte de planejamento.

: tempo de troca do xarope i para o xarope j gasto no tanque k (hipóteses: < C e é um inteiro múltiplo de Cm).

: tempo de troca do primeiro lote no tanque k no macro-período 1 realizado antes do macro-período 1 começar (Obs.: se > 0, os valores são conhecidos e devem ser ajustados).

: estoque inicial do xarope j no tanque k.

: capacidade máxima do tanque k.

Qk: capacidade mínima do tanque k.

3.1.5 Variáveis de decisão para os Tanques

, indica se o tanque k é ajustado ( = 1) ou não ( = 0) a partir do xarope i para o xarope j no início do lote s (definir > 0 é suficiente).

: quantidade de xarope j no tanque k ao final do micro-período t.

: quantidade de xarope j armazenada no tanque k no lote s.

: quantidade de xarope j armazenada no tanque k no lote s no micro-período t.

= 1, se o lote s pode ser usado para armazenar o xarope j no tanque k; 0, caso contrário.

= 1, se o lote s é usado para armazenar xarope no tanque k; 0, caso contrário.

: tempo de troca gasto no tanque k no início do lote s.

: tempo de troca programado no tanque k ao final do macro-período t-1.

= 1, se o tempo de troca para o xarope no lote s do tanque k termina no micro-período t.

= 1 , se o tempo de troca para o xarope no lote s do tanque k começa no micro-período t.

3.1.6 Parâmetros para ajustar Linhas de Produção e Tanques

rji : fator de conversão que determina a quantidade de xarope j necessária para produzir uma unidade do produto i.

3.1.7 Variáveis de decisão para ajustar Linhas de Produção e Tanques

qkjlst: quantidade de produto j produzida na linha l, micro-período t e que pertence ao lote s que utiliza xarope do tanque k.

3.2 Formulação matemática

A seguir o modelo matemático conjunto é desenvolvido, com explicações para cada uma de suas partes.

3.2.1 Função objetivo

A função objetivo procura minimizar os custos de produção, preparo e estoque envolvidos nas linhas e tanques, respectivamente. Para garantir que uma solução venha a ser encontrada, as demandas que não forem atendidas são armazenadas na variável q0j . As demandas não atendidas são altamente penalizadas pelo parâmetro M >>0 para se evitar tal tipo de solução.

3.2.2 Restrições das Linhas de Produção

Nem todos os produtos podem ser produzidos em todas as linhas. Se xjls é uma variável binária que indica para qual produto j um certo lote s em determinada linha l está reservado, podemos expressar que isto nunca ocorrerá da seguinte forma:

A abordagem aqui adotada, baseada no PGDPL, exige que cada lote em um macro período seja atribuído (reservado) a um produto, mesmo que nada venha a ser produzido:

Uma quantidade qjls será programada para produção em determinada linha, apenas se o lote s estiver reservado ao produto j (xjls=1). Isto ocorrendo, não poderá exceder a capacidade C do macro-período. Essa ligação entre as variáveis xjls e qjls está expressa a seguir:

A produção de qjls poderá se estender por até todo macro-período, segundo a restrição (4). A troca de um produto i para outro j numa mesma linha deve ser identificada no modelo. Assim, podemos determinar o tempo de troca sls que ocorre antes de determinado lote s começar a ser produzido em l:

Para o primeiro lote em um macro-período t, parte do seu tempo de troca poderá ocorrer no final do macro-período anterior (wlt > 0). Se isto acontecer, o final do último lote em t-1 ( = 1) deverá reservar tempo suficiente para wlt.

Observe que a expressão t.C na restrição (8) indica quando termina o macro-período t no horizonte de tempo considerado. Por outro lado, a expressão Cm.t indica quando termina a produção do lote t.S dentro do macro-período t. O total do tempo gasto em cada linha não poderá exceder a capacidade C do macro-período:

As equações de balanceamento de estoque abaixo garantem que o número de produtos em estoque é igual ao que estava em estoque no início do período, mais o que foi produzido, menos a demanda do período. Como desejamos garantir a obtenção de uma solução, permitimos que q0j unidades sejam "produzidas" no primeiro macro-período sem o uso de capacidade.

O tempo entre o final de um lote s e o final do lote anterior s-1 deve ser suficiente para que ocorra a produção do produto em s, mais o tempo de troca que antecede esse lote.

A fim de obter uma programação bem estabelecida, todo lote deverá ter um único início e um único fim em cada linha:

Enquanto a variável xjls indica se o lote s está reservado para produzir o produto j ou não, a variável uls indica se s é de fato produzido na linha l ou não. Se um lote não é usado, então a quantidade atribuída a ele precisa ser zero. Caso contrário, uma quantidade mínima e deve ser produzida:

Observe que uls = 0 na restrição (16) impede a produção de qualquer produto j no lote s da linha l. Por outro lado, uls = 1 na restrição (17), indica que pelo menos uma quantidade mínima e deverá ser produzida de algum produto j no lote s da linha l. Se um lote s não é usado efetivamente para produzir algum produto, seu início (xBlst) e seu final (xElst) devem ser o mesmo. Logo, nenhum tempo será reservado para produção do lote:

Para evitar redundâncias no modelo, se um lote s não é usado, ele deverá começar à direita de quando o lote s-1 termina:

Redundâncias também são evitadas ao se obrigar que um lote s+1 seja usado apenas quando os lotes anteriores s, s-1,...,1 em um mesmo macro-período já tenham sido usados. Se ocorrerem lotes vazios (não usados), eles serão os últimos lotes do macro-período:

O início e o fim de um lote devem ser escolhidos de tal forma que o início indique o primeiro micro-período no qual o lote é produzido, se há efetivamente uma quantidade atribuída a tal lote. Da mesma forma, o fim de um lote deverá indicar o último micro-período de produção do lote:

Uma relação entre as linhas de produção e os tanques deve ser estabelecida. Inicialmente, estabelecemos qual quantidade de um produto j produzido na linha l e atribuído ao lote s provém de quais tanques k:

A retirada de quantidades de xaropes dos tanques para as linhas deverá ocorrer dentro dos intervalos de produção dos lotes nas linhas:

No primeiro micro período de produção de um lote, algum tempo dls é reservado para troca de produtos ou indica tempo ocioso. O tempo restante neste micro-período é usado para produção. Isto é levado em consideração nas seguintes restrições:

3.2.3 Restrições dos Tanques

Nem todos os xaropes dos produtos podem ser armazenados em todos os tanques. Primeiro estabelecemos quais tanques não podem armazenar determinados xaropes:

No máximo um tipo de xarope j poderá ser armazenado em cada tanque k e reservado a determinado lote s:

A quantidade que pode ser armazenada em um lote tem como limitante superior a capacidade máxima do tanque. Além disso, se algum lote é efetivamente armazenado no tanque, ele deverá atender a uma ocupação mínima do tanque:

O custo e o tempo de troca envolvendo xaropes nos tanques também dependem da seqüência em que os xaropes são armazenados. Nas linhas de produção, o estado das linhas é preservado para um mesmo tipo de produto. Isto não ocorre nos tanques. O conteúdo de um tanque deve ser completamente escoado para que o mesmo seja limpo e reabastecido. Esse procedimento é sempre seguido ainda que a troca envolva o mesmo tipo de xarope. Desta forma, tempos e custos de troca ocorrem nos tanques apenas quando o tanque é efetivamente utilizado ( = 1, = 1, = 1 em (35) abaixo). Mudanças na atribuição de um lote reservado ao xarope em um tanque ( = 1, = 1, =0) não necessariamente significa que houve troca:

A quantidade armazenada em um tanque precisa ser programada tal que o micro-período em que o xarope será retirado do tanque seja conhecido:

A quantidade em um tanque ao final de um micro-período é o que já estava no tanque, mais o que foi adicionado, menos o que escoa para as linhas. A seguir, veremos que os tanques podem ser reabastecidos apenas se estiverem vazios. Para coordenar linhas e tanques, exige-se que a quantidade retirada dos tanques esteja armazenada pelo menos um micro-período antes:

O lote s de um tanque precisa ser programado tal que seu tempo de troca ocorra entre o final do lote s-1 e o final de s. Parte do tempo de troca também pode ocorrer no macro-período anterior da mesma forma que aconteceu nas linhas:

O tempo final de troca de um lote deverá ser único. Além disso, o xarope que é armazenado em um tanque está disponível para ser produzido apenas quando o tempo de troca do tanque é completado:

O início do tempo de troca de um tanque também deverá ser único:

O intervalo de tempo no qual a troca de um lote é programada será positivo se, e somente se, o lote é efetivamente atribuído ao tanque:

Para evitar redundâncias, os lotes vazios nos tanques também são programados à direita do final dos lotes anteriores. Além disso, os lotes vazios serão os últimos lotes dentro do macro-período:

Sem perda de generalidade, consideramos que o tempo de troca entre xaropes é um inteiro múltiplo da capacidade do micro-período. Assim, o intervalo de tempo programado para início e fim do tempo de troca de um lote será exatamente igual ao tempo de troca envolvido:

As restrições a seguir garantem que um tanque poderá ser reabastecido apenas quando estiver vazio:

Observe que um tanque no micro-período t -1 deverá estar vazio, = 0, quando seu lote for efetivamente usado por algum xarope (uks=1), a partir do micro-período seguinte ( = 1).

A Tabela 1 abaixo agrupa as restrições de acordo com seu significado tanto nas linhas quanto nos tanques. O objetivo é fornecer uma visão geral das restrições comum aos dois níveis, das restrições específicas a cada nível e das restrições que estabelecem a sincronia entre linhas e tanques.

 

 

4. Geração de Instâncias

Não encontramos na literatura conjuntos de instâncias que reunissem todas as características presentes no PIDLPP aqui proposto. Por isso, optamos pelo desenvolvimento de um método para geração de tais instâncias que foram agrupadas em dois conjuntos: instâncias de pequena e de grande dimensão. O número de variáveis binárias presentes no modelo matemático correspondente a cada instância foi o critério utilizado para separá-las nesses dois grupos. Esta geração de instâncias foi inspirada num estudo de caso de uma fábrica de refrigerantes localizada no interior de São Paulo. Os valores adotados para os parâmetros foram também baseados em dados e práticas extraídos desta fábrica.

4.1 Método gerador de instâncias

O método gerador de instâncias basicamente obedece ao seguinte algoritmo (a notação utilizada no algoritmo está definida adiante):

Passo 1: Recebe parâmetros.
  {J, , L, , T, Tm, Cm}
  {hj , , vjl , , , Qk}
  {min Dem, max Dem, min pjl , max pjl , min rji , max rji}
  {min s'ijl , max s'ijl , min , max }
Passo 2: Gera parâmetros.
  s'ijl Î [ min s'ijl , max s'ijl ], Î [ min , max ]
  pjl Î [ min pjl , max pjl ], rji Î [ min rji , max rji ]
Passo 3: Calcula os custos de troca.
  sijl = f s'ijl e =
Passo 4: Gera demandas para os produtos.
  djt Î [ min Dem, max Dem ]
Passo 5: Calcula o tempo de processamento médio das demandas ().
Passo 6: Seja C a capacidade disponível no macro-período.
  Passo 6.1: Se 0,8C < < 1,2C, vá para o Passo 7
  Passo 6.2: Caso contrário, retorne ao Passo 4
Passo 7: Cria instância com os parâmetros gerados.

O primeiro conjunto de parâmetros fornecidos pelo usuário no Passo 1 contém o número de produtos (J) e xaropes (), o número de linhas (L) e tanques (), o número de macro (T) e micro-períodos (Tm) e a capacidade disponível em cada micro-período (Cm). No próximo conjunto de parâmetros, o usuário estabelece os custos de estoque dos produtos (hj) e xaropes (), os custos de produção dos produtos (vjl ) e xaropes (), respectivamente, nas linhas e tanques. Também são recebidos os valores das capacidades máxima e mínima dos tanques ( e Qk). Os próximos parâmetros obtidos se referem aos valores máximos e mínimos que estabelecem os intervalos onde as demandas, os tempos de processamento, os fatores de conversão e os tempos de troca são gerados.

No Passo 2, os tempos de troca nas linhas (s'ijl ) e tanques (), os tempos de processamento (pjl) e os fatores de conversão (rji) são gerados de modo uniforme dentro dos intervalos estabelecidos. No Passo 3, os custos de troca são estabelecidos a partir dos tempos de troca através do fator de conversão f . O uso de um fator de conversão f se baseia em procedimento semelhante adotado em Fleischmann (1990) e Haase & Kimms (2000). Utilizamos f=1000 porque permitiu a geração de custos de troca que no total representavam 20% do custo determinado pela função objetivo da formulação matemática. Os testes computacionais que levaram a esse valor podem ser encontrados em Toledo (2005).

As demandas em cada período T são geradas no Passo 4. Procuramos criar instâncias onde as demandas possam ser atendidas dentro da capacidade disponível. Os valores já definidos para T e Tm limitam a capacidade em C=TmxCm por macro-período t. Por isso, um valor para o tempo de processamento médio () das demandas criadas é calculado no Passo 5. As fórmulas que determinam foram estabelecidas em Toledo (2005) e são aqui utilizadas. Essas fórmulas se baseiam em valores médios para o tempo de processamento das demandas geradas nas linhas e em valores médios do tempo de troca dos produtos e xaropes envolvidos, respectivamente, nas linhas e tanques. Uma vez determinado , as demandas são incorporadas à instância apenas se a condição do Passo 6 for atendida:

0,8C < < 1,2C

Considerou-se uma tolerância dentro da qual deve estar, para se garantir um certo nível de utilização da capacidade disponível. Caso essa condição seja atendida, a instância é gerada (Passo 7). Caso contrário, retorna-se ao Passo 4 e um novo conjunto de demandas é criado.

4.2 Caracterizando as instâncias

Os valores usados nos parâmetros do Passo 1 para criar instâncias de pequena dimensão foram:

  • L={2, 3, 4} e ={2,3}.
  • J={2,3,4} e ={1,2}.
  • S={2,3} e ={2}.
  • T={1,2,3,4}, Tm=5 e Cm=1h.
  • min Dem=500u e max Dem=10000u; u: unidades de produto.
  • hj ==1 ($/u).
  • vjl ==1 ($/u).
  • =5000l e Qk =1000l; l: litros de xarope.

A Tabela 2 lista os intervalos de valores para geração dos parâmetros presentes no Passo 2. Todos esses limitantes foram baseados em dados fornecidos pela fábrica de refrigerantes mencionada anteriormente.

 

 

Um conjunto de 10 instâncias foi criado para cada combinação dos parâmetros LxJxT= 3x3x4=36, ou seja, 360 instâncias foram geradas no total. Alguns parâmetros foram fixados ao invés de combinados. A Tabela 3 apresenta os 36 conjuntos de instâncias obtidos com as diferentes combinações de parâmetros e informações sobre o número de variáveis e restrições presentes no respectivo modelo matemático.

 

 

Observe que o número de xaropes (), o número de tanques (), o número de lotes nos tanques () e lotes nas linhas (S) são fixados, mas não combinados com L e J. Por exemplo, fixou-se =2 e S==2 quando L=2 e =3, S=3 e =2 quando L=3 ou 4. Adotou-se tal procedimento por dois motivos. Primeiro, uma combinação muito ampla de parâmetros levaria a um número excessivo de possíveis instâncias a serem geradas. Segundo, parâmetros como S e repercutem diretamente no número de variáveis e restrições do modelo. Ao se fixarem previamente tais valores, evita-se que as instâncias geradas se tornem de elevada dimensão, de acordo com os critérios adotados nesse trabalho (número de variáveis binárias). Essas instâncias foram solucionadas pelo pacote computacional GAMS/Cplex. Os resultados obtidos são apresentados na seção seguinte.

Alguns valores dos parâmetros anteriores foram alterados para a geração das instâncias de grande dimensão:

  • L={5,8} e ={5,6}.
  • J={10,15} e ={5,8}.
  • S={5,8} e ={3,4}.
  • T={4,8, 12} e Tm={10}.

Cresce o número de produtos, linhas e macro-períodos nessas instâncias. Logo, outros parâmetros como número de lotes por período (S e ) e número de micro-períodos (Tm) precisaram ser ajustados.

A Tabela 4 apresenta um total de 12 conjuntos de instâncias de dimensões maiores, com os parâmetros iniciais e o respectivo número de variáveis e restrições presentes nos modelos matemáticos correspondentes. Para cada um desses conjuntos, 10 instâncias foram geradas.

 

 

Os valores presentes nas Tabelas 3 e 4 deixam claro que um pequeno aumento em um conjunto de valores foi suficiente para gerar instâncias com um número considerável de variáveis e restrições envolvidas. Esse comportamento era esperado dado a complexidade do modelo matemático estabelecido para o problema. Para mais detalhes de como estas instâncias foram geradas, o leitor pode consultar Toledo (2005).

 

5. Resultados Computacionais

Um método de resolução exata do modelo matemático foi a primeira abordagem usada para encontrar soluções para o PIDLPP. O modelo apresentado na seção 3 possui uma grande quantidade de parâmetros, variáveis e restrições. Isso nos levou a escolher um pacote que contivesse uma linguagem de modelagem algébrica em programação matemática que facilitasse sua implementação e resolução, ao invés de apenas utilizar um solver. Optou-se pelo pacote computacional GAMS/Cplex versão 7.0. O PIDLPP é um Problema de Programação Inteira Mista (PPIM) e o Cplex resolve PPIMs através de um algoritmo do tipo branch & bound com cortes (i.e., branch & cut). Esse algoritmo soluciona uma série de subproblemas de Programação Linear (PL). Mesmo um simples PPIM é capaz de gerar muitos subproblemas do tipo PL, levando o Cplex a demandar uma grande quantidade de memória e um significativo esforço computacional. Os testes realizados demonstram que isso de fato ocorre durante a resolução do PIDLPP. Assim, o tempo máximo de execução do GAMS/Cplex em todas as instâncias foi ajustado para 1 hora. Todos os resultados apresentados nas próximas seções foram obtidos em um Pentium IV com processador de 2.8 GHz.

5.1 Resultados para instâncias de pequena dimensão

A Tabela 5 contém o número de variáveis binárias, variáveis contínuas e o número de restrições presentes no modelo correspondente a cada instância dos conjuntos L//J/ quando T=1.

 

 

A Tabela 6 apresenta os resultados obtidos usando GAMS/Cplex quando T=1.

 

 

Cada combinação L//J/ representa um conjunto de 10 instâncias. A segunda coluna lista o número de soluções ótimas encontradas nas 10 instâncias testadas. O valor médio (média), máximo (máx), mínimo (mín) e o desvio padrão (dp) dos desvios percentuais e dos tempos de CPU também são listados. O desvio percentual é a distância entre a solução retornada pelo método e o melhor limitante inferior obtido. A solução ótima foi encontrada na maioria das instâncias. O GAMS/Cplex não encontrou dificuldades quando T=1 para retornar a solução ótima na maior parte das instâncias (77 de um total de 90 instâncias) dentro do tempo limite de 1 hora.

A Tabela 7 apresenta informações sobre o modelo de cada instância gerada quando T=2.

 

 

A Tabela 8 apresenta os resultados obtidos quando T=2.

 

 

Para T=2 o GAMS/Cplex começa a ter problemas para determinar a solução ótima. Apenas 25 de um total de 90 instâncias foram resolvidas na otimalidade. Além disso, cresce o tempo computacional necessário para encontrar tais soluções. O método começa a retornar apenas a melhor solução factível após 1 hora (tempo limite) em várias instâncias. Isso era de se esperar devido ao aumento no número de variáveis e restrições presentes no modelo de cada instância (Tabela 7). Observa-se uma piora nesse comportamento quando se executam os conjuntos de instâncias para T=3 e 4. Os resultados são apresentados nas Tabelas 9 e 10.

 

 

 

 

Para T=4 o GAMS/Cplex não encontra soluções ótimas na grande maioria das instâncias. O crescimento no valor do desvio percentual demonstra que ocorre uma piora na qualidade da melhor solução factível em relação aos conjuntos de instâncias anteriores. As Tabelas 11 e 12 apresentam o número de variáveis e restrições presentes nos respectivos modelos matemáticos para essas instâncias com T=3 e 4, respectivamente.

 

 

 

 

A complexidade do modelo proposto associada ao número considerável de variáveis e restrições presentes nos modelos quando T=3 e T=4 justificam a dificuldade encontrada pelo algoritmo branch & cut em determinar soluções ótimas dentro de 1 hora. A Figura 3 exemplifica a evolução na dimensão dos modelos no decorrer dos macro-períodos usando o conjunto de instâncias 4/2/4/2 quando T=1, 2, 3 e 4.

 

 

5.2 Resultados para instâncias de grande dimensão

Os resultados computacionais anteriores indicam a inviabilidade da solução exata de instâncias de dimensões maiores dentro do tempo limite estabelecido. Um aumento no tempo de execução talvez permitisse obter soluções factíveis. Porém, os valores do desvio na Tabela 10 já demonstram uma queda acentuada na qualidade de tais soluções.

Acreditamos que 1 hora de CPU utilizando uma ferramenta robusta como o GAMS/Cplex já é um tempo limite considerável para apoiar decisões de programação e sequenciamento na prática. Aumentar esse tempo não seria razoável, se pretendemos aqui trabalhar com metodologias que possam vir a ser utilizadas em situações reais, tendo que ser executadas várias vezes por dia ou por semana. Ao invés de aprofundar a análise de resultados dispendiosos em termos de tempo computacional, optamos por desenvolver alternativas que possibilitassem encontrar soluções dentro do tempo limite estabelecido. Nesse caso, a única abordagem com GAMS/Cplex que se mostrou viável foi a resolução de versões relaxadas do modelo matemático. Três versões são avaliadas:

  • Relax1: Todas as variáveis binárias do modelo matemático são relaxadas. Trata-se de uma relaxação linear do modelo.
  • Relax2: As variáveis uls e permanecem binárias e as demais são relaxadas.
  • Relax3: As variáveis uks, , xjls e permanecem binárias e as demais são relaxadas.

Esse tipo de avaliação de modelo foi realizado recentemente em Gupta & Magnusson (2005), ao solucionar um Problema de Dimensionamento de Lote Capacitado (PDLC) com custos e tempos de troca dependentes da seqüência. O PDLC proposto apresenta uma formulação complexa que também dificulta a resolução de instâncias de grande dimensão. Os autores decidiram então determinar limitantes inferiores para essas instâncias, resolvendo versões do modelo com algumas variáveis binárias relaxadas. Diferentes combinações de relaxação de variáveis binárias foram avaliadas e essas versões relaxadas do PDLC foram solucionadas usando como solver o Cplex.

As três versões relaxadas aqui propostas também foram solucionadas usando o GAMS/Cplex. A Tabela 13 contém o número de soluções ótimas (Ot), o número de soluções inteiras factíveis (Fac) e o número de instâncias onde soluções inteiras não foram retornadas (NSol) dentro do tempo limite de 1 hora.

 

 

Relax1 retorna soluções ótimas para todas as instâncias com J=10, oito soluções ótimas e duas factíveis com J=15. Soluções ótimas já passam a ser mais difíceis de se determinar quando variáveis binárias estão presentes em Relax2. O número de soluções factíveis retornadas é maior e em alguns casos nenhuma solução é retornada. A situação é ainda pior em Relax3, quando apenas em um conjunto de instâncias (10/5/4) cinco soluções factíveis foram obtidas. Os tempos computacionais em cada conjunto de instâncias para Relax1 e Relax2 retornar a solução final estão na Tabela 14.

 

 

Apesar de ter todas as restrições relaxadas, Relax1 levou em média um tempo considerável para retornar a solução nas instâncias 15/8/4, 15/8/8 e 15/8/12. A simples inclusão de dois tipos de variáveis binárias em Relax 2 fez com que o tempo máximo de execução fosse atingido, praticamente em todas as instâncias. A Tabela 15 apresenta o número de variáveis e restrições envolvidas na solução dos modelos exatos.

 

 

A Tabela 16 apresenta uma comparação do número de variáveis entre as versões relaxadas do modelo.

 

 

Um número elevado de variáveis e restrições está presente no modelo exato (Tabela 15), deixando evidente a dificuldade de se solucionar através de um método exato um modelo com essa dimensão de variáveis e restrições. O número de variáveis binárias diminui nas versões relaxadas. Porém, o número de variáveis binárias em Relax3 fica acima de 1000 em todas as instâncias. Relax2 também apresenta uma quantidade relevante de variáveis binárias.

Os resultados obtidos para instâncias de elevada dimensão demonstram que o modelo não parece adequado para gerar limitantes, e não encorajam usar procedimentos do tipo relax-and-fix (Clark & Clark, 2000) para tentar obter boas soluções viáveis a partir do modelo original. Em Toledo (2005) alguns resultados são apresentados numa tentativa de determinar melhores soluções usando um procedimento baseado em horizonte rolante e relax-and-fix. Entretanto, a tentativa mostrou-se incapaz de fornecer bons resultados.

 

6. Conclusões e Perspectivas

O presente trabalho propõe um novo problema chamado de Problema Integrado de Dimensionamento de Lotes e Programação da Produção (PIDLPP). Trata-se de um problema multi-nível de dimensionamento de lote e programação da produção em máquinas paralelas com restrições de capacidade, custos e tempos de preparo dependentes da seqüência. O problema foi inspirado em uma situação real encontrada no segmento das indústrias de bebidas.

O problema combina aspectos raramente tratados em conjunto na literatura, como tempos e custos de troca dependentes da seqüência e máquinas paralelas. Além disso, destacamos seu aspecto multi-nível ao estabelecer dois cenários interdependentes que exigem uma integração e sincronização entre as programações estabelecidas para cada um deles.

Um modelo matemático que capturasse todos os aspectos envolvidos no problema foi o primeiro desafio, e consiste na principal contribuição deste trabalho. O modelo combinou aspectos presentes no Problema Geral de Dimensionamento e Programação de Lotes (PGDPL) e no Problema Contínuo de Dimensionamento de Lotes (PCDL). Todavia, não encontramos abordagem similar na literatura que combinasse lotes e micro-períodos da forma aqui apresentada.

O modelo matemático apresentou uma complexa formulação que requer um vasto conjunto de parâmetros, variáveis e restrições. Acreditamos que tal modelo oferece um caminho inicial em termos de modelagem desse tipo de problema. Todavia, apesar de se constituir em uma refinada e realista representação do problema prático em foco, o modelo proposto tem utilidade limitada para tratar instâncias de grande dimensão. Isso acontece em grande medida pela sua complexidade, o que aponta uma futura continuidade da pesquisa em promover simplificações do modelo que não descaracterizem sua relevância prática.

A não existência de problemas semelhantes na literatura obrigou o desenvolvimento de um método para gerar instâncias que permitisse avaliar o modelo proposto. Estabelecido o modelo matemático e criados os conjuntos de instâncias, o passo seguinte foi encontrar soluções para essas instâncias. A primeira tentativa foi solucioná-las utilizando o pacote GAMS/Cplex dentro de um tempo limite de 1 hora. Os resultados computacionais nas instâncias de pequena dimensão demonstraram que o pacote é suficiente para encontrar soluções ótimas quando o número de macro-períodos é 1 ou 2. Porém para 3 ou 4 macro-períodos ele quase não consegue retornar soluções ótimas, com o desvio médio em relação ao melhor limitante inferior alcançando valores de 5 a 10%.

As instâncias de grande dimensão do PCDLPP simplesmente não podem ser solucionadas por um pacote como o GAMS/Cplex dentro do tempo limite estabelecido de 1 hora. Já se torna um desafio para o método exato encontrar uma solução factível para algumas dessas instâncias em uma hora de computação. Isso dá uma idéia da complexidade do modelo evidenciada mais pela forte interdependência e acoplamento entre as restrições do que pelo número de variáveis inteiras. O elevado número de variáveis inteiras é uma conseqüência da necessidade de se estabelecer restrições interdependentes e acopladas, capazes de descrever as diversas peculiaridades do problema. A alternativa encontrada foi solucionar versões relaxadas do modelo nas quais se escolhem certos grupos de variáveis binárias para serem relaxadas. As variáveis menos indexadas permaneceram binárias e as demais passaram a ser contínuas. Porém, esta estratégia alternativa não se mostrou viável, pois ainda assim o GAMS/Cplex encontrou dificuldades em retornar soluções factíveis. Isso frustrou a tentativa de estabelecer limitantes inferiores para o problema a partir de versões relaxadas do modelo matemático. Comparações desse tipo já haviam sido realizadas por Gupta & Magnusson (2005) no PDLC, mas não foi possível no PIDLPP.

Uma perspectiva interessante para pesquisa futura seria desenvolver métodos meta-heurísticos efetivos para tratar o PCDLPP. Seguindo nesta linha de pesquisa, as dificuldades encontradas para determinar soluções ótimas nos levaram a desenvolver um algoritmo genético híbrido para tratar tal problema. Os resultados obtidos usando esta abordagem estão sendo compilados e deverão ser reportados em breve num próximo artigo.

 

Agradecimentos

Os autores agradecem aos três revisores anônimos pelos úteis comentários e sugestões, e ao Eng. Flávio A. M. Veronese da Companhia de Bebidas Ipiranga, Ribeirão Preto – SP, pela sua colaboração com esta pesquisa. Esta pesquisa foi parcialmente financiada pela FAPESP (processo 00/02609-2) e CNPq (303956/2003-8).

 

Referências Bibliográficas

(1) Bitran, G.R. & Matsuo, H. (1986). Approximation formulations for the single-product capacitated lot size problem. Operations Research, 34, 63-74.        [ Links ]

(2) Campbell, G.M. (1992). Using short-term dedication for scheduling multiple products on parallel machines. Production and Operations Management, 1, 295-307.        [ Links ]

(3) Carreno, J.J. (1990). Economic lot scheduling for multiple products on parallel identical processors. Management Science, 36, 348-358.        [ Links ]

(4) Clark, A.R. & Clark, S.J. (2000). Rolling-horizon lot-sizing when set-up times are sequence-dependent. International Journal of Production Research, 38(10), 2287-2307.        [ Links ]

(5) De Matta, R. & Guignard, M. (1995). The performance of rolling production schedules in a process industry. IIE Transactions, 27, 564-573.        [ Links ]

(6) Drexl, A. & Haase, K. (1995). Proportional lotsizing and scheduling. International Journal of Production Economics, 40, 73-87.        [ Links ]

(7) Drexl, A. & Haase, K. (1996). Sequential-analysis based randomized-regret-methods for lot-sizing and scheduling. Journal of the Operational Research Society, 47, 251-265.        [ Links ]

(8) Drexl, A. & Kimms, A. (1997). Lot sizing and scheduling – survey and extensions. European Journal of Operational Research, 99, 221-235.        [ Links ]

(9) Fleischmann, B. (1990). The discrete lot-sizing and scheduling problem. European Journal of Operational Research, 44, 337-348.        [ Links ]

(10) Fleischmann, B. (1994). The discrete lot-sizing and scheduling problem with sequence-dependent setup costs. European Journal of Operational Research, 75, 395-404.        [ Links ]

(11) Fleischmann, B. & Meyr, H. (1997). The general lotsizing and scheduling problem. OR Spektrum, 19, 11-21.        [ Links ]

(12) Gupta, D. & Magnusson, T. (2005). The capacitated lot-sizing and scheduling problem with sequence-dependent setup costs and setup times. Computer & Operations Research, 32, 727-747.        [ Links ]

(13) Haase, K. & Kimms, A. (2000). Lot sizing and scheduling with sequence dependent setup costs and times and efficient rescheduling opportunities. International Journal of Production Economics, 66, 159-169.        [ Links ]

(14) Kang, S. & Malik, K. & Thomas, L.J. (1999). Lotsizing and scheduling on parallel machines with sequence-dependent setup costs. Management Science, 45, 273-289.        [ Links ]

(15) Karmakar, U.S. & Kekre, S. (1987). The deterministic lotsizing problem with startup and reservation costs. Operations Research, 35, 389-398.        [ Links ]

(16) Kimms, A. (1997). Demand Shuffle – A method for multi-level proportional lot sizing and scheduling. Naval Research Logistics, 44, 319-340.        [ Links ]

(17) Kimms, A., (1997b). Multi-level lot sizing and scheduling: methods for capacitated, dynamic and deterministic models. Physica-Verlag, Heidelberg.        [ Links ]

(18) Kuhn, H. & Quadt, D. (2002). Lot sizing and scheduling in semiconductor assembly – a hierarchical planning approach. In: Proceedings of the International Conference on Modeling and Analysis of Semiconductor Manufacturing [edited by G.T. Mackulak, J.W. Fowler and A. Schömig], Tempe, USA, 211-216.        [ Links ]

(19) Meyr, H. (2000). Simultaneous lotsizing and scheduling by combining local search with dual reoptimization. European Journal of Operational Research, 120, 311-326.        [ Links ]

(20) Meyr, H. (2002). Simultaneous lotsizing and scheduling on parallel machines. European Journal of Operational Research, 139, 277-292.        [ Links ]

(21) Quadt, D. & Kuhn, H. (2003). Production planning in semiconductor assembly. Working Paper, Catholic University of Eichstätt, Ingolstadt.        [ Links ]

(22) Stadtler, H. (1996). Mixed integer programming model formulations for dynamic multi-item multi-level capacitated lotsizing. European Journal of Operational Research, 94, 561-581.        [ Links ]

(23) Tempelmeier, H. & Derstroff, A. (1996). A lagrangean-based heuristic for dynamic multilevel multi-item constrained lotsizing with setup times. Management Science, 42, 738-757.        [ Links ]

(24) Toledo, C.F.M. (2005). Problema conjunto de dimensionamento de lotes e programação da produção. Tese de Doutorado, Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica.        [ Links ]

 

 

Recebido em 04/2006; aceito em 11/2006
Received April 2006; accepted November 2006

 

 

* 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