## Print version ISSN 0101-7438

### Pesqui. Oper. vol.30 no.1 Rio de Janeiro Jan./Apr. 2010

#### https://doi.org/10.1590/S0101-74382010000100005

Modelos de otimização para problemas de carregamento de contêineres com considerações de estabilidade e de empilhamento

Leonardo Junqueira; Reinaldo Morabito*; Denise Sato Yamashita

Departamento de Engenharia de Produção / Universidade Federal de São Carlos (UFSCar) São Carlos - SP; leo_junqueira@yahoo.com , morabito@ufscar.br, denisesy@dep.ufscar.br

RESUMO

Palavras-chave:  problemas de corte e empacotamento; carregamento de contêineres; otimização combinatória; modelagem matemática.

ABSTRACT

In this paper we present 0-1 integer linear programming models for problems of loading rectangular boxes into containers, trucks or railway cars, considering the practical constraints of stability and load bearing strength of the cargo. The models can also be applied to three-dimensional problems of loading rectangular boxes on pallets, in which the boxes do not need to be arranged in horizontal layers on the pallet. We are not aware of other studies in the literature that present mathematical formulations to these problems considering these constraints explicitly. Computational experiments with the proposed models were performed with the software GAMS/CPLEX and randomly generated instances. The results showed that the models are consistent and they properly represent the situations treated, although this approach (in its current version) is limited to optimally solve only problems of moderate size. However, the models can be useful to motivate future research exploring decomposition methods, relaxations, heuristics, among others, to solve these problems.

1. Introdução

Nas empresas, a logística pode ser vista como a competência que vincula a organização a seus clientes e fornecedores, isto é, um esforço integrado - planejamento, implementação e controle do fluxo eficiente e economicamente eficaz de matérias-primas, estoques em processo, produtos acabados e informações relativas desde os pontos de origem até os pontos de consumo - com o objetivo de ajudar a criar valor para os clientes com o menor custo total possível, existindo para satisfazer as necessidades dos clientes e facilitando as operações relevantes de produção e marketing. Produtos e serviços não têm valor para os clientes a menos que estejam sob a posse dos clientes no momento (tempo) e onde (lugar) eles desejam consumi-los (Ballou, 2002).

Neste trabalho estudamos o problema de otimizar o carregamento (ou arranjo) de cargas (caixas retangulares) em dispositivos de unitização, como contêineres, caminhões, vagões ferroviários ou paletes. Basicamente, o objetivo do problema é determinar o melhor padrão de empacotamento, de modo a maximizar o volume (ou valor) total das caixas carregadas, desde que as caixas não se sobreponham, umas às outras, dentro do contêiner (isto é, duas caixas não podem ocupar um mesmo espaço do contêiner) (Gilmore & Gomory, 1965; George & Robinson, 1980; Morabito & Arenales, 1994, 1997; Miyazawa & Wakabayashi, 1999; Martello et al., 2000; Pisinger, 2002; Wang et al., 2008; Huang & He, 2009).

Na prática, além destas restrições de não sobreposição no arranjo das caixas, outras restrições em geral devem ser consideradas, tais como a estabilidade do carregamento, a resistência das caixas ao empilhamento e a fragilidade das caixas, requisitos de agrupamento ou separação de caixas no empacotamento, arranjos levando em conta múltiplos destinos das caixas, requisitos de carregamento completo de grupos de caixas, limitações de peso total do carregamento, distribuições de peso do carregamento dentro do contêiner, entre outras (Bischoff & Ratcliff, 1995; Silva et al., 2003; Cecílio & Morabito, 2004; Araujo, 2006; Campos, 2008; Junqueira, 2009).

Estas considerações têm motivado o estudo e desenvolvimento de diversos métodos aproximados (heurísticos e metaheurísticos) para resolver os problemas de carregamento de contêineres (Gehring & Bortfeldt, 2002; Bortfeldt et al., 2003; Jin et al., 2004; Mack et al., 2004; Moura & Oliveira, 2005; Yeung & Tang, 2005; Gendreau et al., 2006; Araujo & Armentano, 2007). No entanto, poucos trabalhos na literatura se preocuparam em apresentar modelos matemáticos para representar problemas com estas restrições adicionais. No presente trabalho estamos particularmente interessados na modelagem matemática do problema com as restrições de estabilidade e de empilhamento do carregamento. Não temos conhecimento de outros trabalhos que apresentaram formulações matemáticas considerando explicitamente restrições de estabilidade e de empilhamento.

A estabilidade do carregamento refere-se ao suporte das faces inferiores das caixas, no caso da estabilidade vertical, ou ao apoio das faces laterais das caixas, no caso da estabilidade horizontal. O empilhamento do carregamento, por sua vez, refere-se ao número máximo de caixas que podem ser colocadas umas sobre as outras, ou ainda à pressão máxima que pode ser aplicada sobre a face superior de uma determinada caixa, sem que ocorram alterações na sua forma. A importância prática da incorporação destas considerações no problema está em evitar que os padrões de empacotamento permitam caixas "flutuando" dentro do contêiner, ou que produtos sejam avariados devido a alterações na forma das suas embalagens protetoras (Bischoff & Ratcliff, 1995; Silva et al., 2003; Bischoff, 2006).

Conforme mencionado, nosso objetivo neste trabalho é apresentar modelos de programação linear inteira 0-1 para problemas de carregamento de contêineres, considerando as restrições de estabilidade e de empilhamento do carregamento. Os modelos também podem ser utilizados para problemas tridimensionais de carregamento de caixas retangulares sobre paletes, em que as caixas não precisam ser arranjadas em camadas horizontais sobre o palete (Hodgson, 1982; Lins et al., 2003; Birgin et al., 2010). Para verificar a coerência dos modelos e analisar seus desempenhos computacionais, eles foram codificados na linguagem de modelagem GAMS e resolvidos utilizando-se o software de otimização CPLEX.

Este trabalho está organizado da seguinte maneira. Na seção 2 descrevemos problemas de carregamento de contêineres, bem como restrições práticas que devem ser levadas em consideração para modelar estes problemas. Na seção 3 apresentamos modelos matemáticos para os problemas, considerando as restrições de estabilidade e de empilhamento do carregamento. Na seção 4 analisamos os resultados dos testes computacionais com os modelos propostos, utilizando o aplicativo GAMS/CPLEX e exemplos gerados a partir de dados aleatórios. Finalmente, na seção 5 discutimos as conclusões deste trabalho e algumas perspectivas para pesquisa futura.

2. Descrição do Problema

Pisinger (2002) divide o problema de carregar caixas dentro de contêineres em quatro variantes: o Problema de Carregamento de Contêineres 2.5D - PCC2.5D (Strip Packing Problem), o Problema de Carregamento de Contêineres 3D - PCC3D (Knapsack Loading Problem), o Problema de Carregamento de Bins - PCB (Bin Packing Problem) e o Problema de Carregamento de Múltiplos Contêineres - PCMC (Multi-Container Loading Problem).

No PCC2.5D, o contêiner tem duas dimensões fixas (por exemplo, a largura e a altura), mas uma dimensão variável (por exemplo, o comprimento), e o problema consiste em decidir como carregar todas as caixas dentro do contêiner de modo a minimizar a dimensão variável (o comprimento) necessária. No PCB, todos os contêineres têm as mesmas dimensões e um mesmo custo associado, e o problema consiste em decidir como carregar todas as caixas de modo a minimizar o custo associado à escolha dos contêineres (número de contêineres necessário). No PCMC, os contêineres não necessariamente têm as mesmas dimensões e mesmos custos, e o problema consiste em escolher um subconjunto de contêineres para serem carregados, e decidir como carregar todas as caixas, de modo a minimizar os custos associados à escolha dos contêineres.

No presente trabalho tratamos apenas o PCC3D, em que o contêiner tem três dimensões fixas, cada caixa tem associada a si um valor, e o problema consiste em escolher um subconjunto de caixas para serem carregadas dentro do único contêiner, e decidir como carregar estas caixas, de modo a maximizar o valor total do carregamento. Se o valor associado a uma determinada caixa for proporcional ao seu volume, o problema então consiste em maximizar o volume total das caixas carregadas ou, equivalentemente, minimizar os espaços vazios.

O PCC3D foi estudado por diversos autores, por exemplo, George & Robinson (1980), Morabito & Arenales (1994, 1997), Bischoff & Ratcliff (1995), Ratcliff & Bischoff (1998), Davies & Bischoff (1999), Martello et al. (2000), Bortfeldt & Gehring (2001), Eley (2002), Gehring & Bortfeldt (2002), Lins et al. (2002), Pisinger (2002), Bortfeldt et al. (2003), Li et al. (2003), Cecilio & Morabito (2004), Chien & Deng (2004), Jin et al. (2004), Mack et al. (2004), Lim et al. (2005), Moura & Oliveira (2005), Yeung & Tang (2005), Bischoff (2006), Araujo & Armentano (2007), Wang et al. (2008), Christensen & Rousøe (2009), e Huang & He (2009).

Neste trabalho também abordamos, embora com menor ênfase, o problema tridimensional de carregamento de caixas retangulares sobre paletes. Hodgson (1982) divide o problema de carregar caixas sobre paletes em duas variantes: o Problema de Carregamento de Paletes do Produtor - PCPP (Manufacturer´s Pallet Loading Problem) e o Problema de Carregamento de Paletes do Distribuidor - PCPD (Distributor's Pallet Loading Problem). A diferença entre eles é que no PCPP há apenas um tipo de caixa (isto é, todas as caixas são iguais), enquanto no PCPD há mais de um tipo. Tanto o PCPP quanto o PCPD podem ser resolvidos de maneira bidimensional ou tridimensional, embora a primeira seja a mais comumente encontrada na prática. A diferença entre elas é que no caso bidimensional o padrão de empacotamento é construído em camadas horizontais sobre o palete, enquanto no caso tridimensional o padrão de empacotamento pode ser genérico. Este último pode ser visto como um PCC3D com um único tipo de caixa (Morabito & Arenales, 1994, 1997; Bischoff & Ratcliff, 1995).

Bischoff & Ratcliff (1995) apresentam doze considerações práticas que podem ser levadas em consideração quando se deseja modelar problemas de carregamento de contêineres mais realistas. A Tabela 1 a seguir apresenta uma breve descrição destas considerações práticas, incluindo alguns exemplos de trabalhos que tratam estas considerações. Não foram encontrados trabalhos que tratassem especificamente das considerações de manuseio, prioridades e complexidade do padrão de carregamento.

Estes trabalhos, embora tratem de problemas de carregamento de contêineres com as considerações práticas destacadas, em geral não apresentam formulações matemáticas para as mesmas. Alguns estudos, como Beasley (1985, 2004), Hadjiconstantinou & Christofides (1995) e Martins (2003), apresentaram formulações para problemas de corte e empacotamento bidimensionais, que podem ser facilmente estendidas para tratar o PCC3D. Outras formulações para o PCC3D são apresentadas em Tsai et al. (1993) e Chen et al. (1995). No entanto, todas estas formulações não tratam as considerações práticas destacadas, se limitando apenas a impedir que as caixas se sobreponham dentro do contêiner.

Na próxima seção apresentamos modelos de programação linear inteira 0-1 para o PCC3D com as considerações práticas de estabilidade e de empilhamento do carregamento. Estes modelos ainda podem ser adaptados ou estendidos para considerar outras restrições da Tabela 1, além de estabilidade (linha 4) e empilhamento (linha 2), tais como orientação (linha 1) e limite de peso (linha 11). Por exemplo, a consideração de limite de peso envolve incluir uma restrição linear do tipo mochila (isto é, o somatório dos pesos de todas as caixas carregadas no contêiner deve ser menor ou igual ao limite de peso suportado pelo contêiner) nos modelos.

3. Formulações Matemáticas

Seja um objeto (contêiner, caminhão, vagão ferroviário ou palete) de comprimento L, largura W e altura H conhecidos (no caso de palete, H é a altura máxima permitida do carregamento), que deve ser carregado com caixas de diferentes tipos. Cada tipo de caixa possui comprimento li, largura wi, altura hi, quantidade bi e valor vi, i=1,...,m. Admite-se que as dimensões das caixas são inteiras, que elas só podem ser empacotadas ortogonalmente (isto é, com os seus lados paralelos aos lados do contêiner), e que as suas orientações são fixas (isto é, as caixas não podem girar em torno de nenhum de seus eixos). Esta última suposição pode ser facilmente relaxada nos modelos (seção 4), e é aqui considerada apenas por simplicidade de apresentação das formulações.

Adotando-se um sistema de coordenadas cartesianas com origem no canto inferior frontal esquerdo do contêiner, seja (p,q,r) a posição onde o canto inferior frontal esquerdo de uma determinada caixa é colocado. As possíveis posições, ao longo do comprimento L, da largura W e da altura H do contêiner, onde cada caixa pode ser colocada, podem ser definidas por meio dos conjuntos:

Christofides & Whitlock (1977) observaram que em um dado padrão de corte ou empacotamento, cada caixa empacotada pode ser movida para baixo e/ou para frente e/ou para esquerda, até que suas faces inferior, lateral da frente e lateral esquerda fiquem adjacentes às demais caixas ou ao próprio contêiner. Estes padrões, chamados padrões normais ou combinações cônicas, permitem, eventualmente, sem perda de generalidade, reduzir os conjuntos X, Y e Z para:

A Figura 1 ilustra uma possível disposição de uma caixa do tipo i dentro de um contêiner. De modo a descrever as restrições de não sobreposição das caixas dentro do contêiner, seja a função aipqrstu, i=1,...,m, p,s X, q,t, Y e r Z, definida como:

Note que a função aipqrstu não é uma variável de decisão do modelo, e pode ser computada a priori (isto é, antes da resolução do modelo) da seguinte maneira:

ou seja, se aipqrstu = 1, significa que a posição (s,t,u) está ocupada por uma caixa do tipo i colocada com seu canto inferior frontal esquerdo na posição (p,q,r) do contêiner (Figura 1). Caso contrário, se aipqrstu = 0, significa que esta posição não está ocupada pela caixa. As variáveis de decisão xipqr do modelo são definidas como:

Sejam ainda:

O problema de carregamento de caixas dentro de um único contêiner, sem considerações adicionais de estabilidade e de empilhamento, pode ser formulado como uma extensão direta do modelo de programação linear inteira 0-1 proposto em Beasley (1985) para o problema de corte bidimensional não guilhotinado restrito:

Sujeito a:

Na formulação (10)-(13), a função objetivo (10) visa maximizar o valor total das caixas empacotadas dentro do contêiner (se vi = (li·wi·hi), então (10) corresponde a maximizar o volume total de caixas a serem inseridas no contêiner), as restrições (11) impedem que haja sobreposição entre as caixas, as restrições (12) limitam o número máximo de caixas empacotadas de cada tipo, e as restrições (13) definem o domínio das variáveis de decisão.

Para economizar memória computacional ao compilar o modelo (10)-(13) em GAMS, a expressão (11) pode ser reescrita conforme abaixo, de modo a considerar a função aipqrstu implicitamente, sem precisar computar a priori os valores desta função:

Para fins dos testes computacionais realizados na seção 4, definimos aqui o modelo base como sendo o modelo composto por (10), (12), (13) e (14). Observamos que ao utilizar a expressão (11) nos testes computacionais da seção 4, não foi possível compilar os modelos devido à memória computacional requerida para pré-computar aipqrstu, ao passo que estes mesmos modelos puderam ser compilados e resolvidos utilizando-se a expressão (14).

A estabilidade vertical, como se refere ao suporte da face inferior de cada caixa, trata, portanto, da estabilidade em relação ao eixo z. Assim, de modo a "mapear" o conjunto de pontos que uma determinada caixa pode "oferecer" para suportar caixas colocadas imediatamente sobre sua face superior, seja a função cipqrstu(r+hi), i=1,...m, p,s X, q,t Y e r Z, definida como:

A rigor, o subíndice r + hi em cipqrstu(r+hi) é redundante, mas foi aqui mantido por conveniência de notação. Note que cipqrstu(r+hi), assim como aipqrstu, não é uma variável de decisão do modelo, e também pode ser computada a priori (isto é, antes da resolução do modelo) da seguinte maneira:

Note que cipqrstu(r+hi) é definida analogamente à aipqrstu, com a diferença de que a primeira "mapeia" somente o conjunto de pontos da face superior de uma caixa do tipo i na posição (p,q,r), enquanto que a segunda "mapeia" o conjunto de pontos contidos dentro de uma caixa do tipo i na posição (p,q,r), excetuando-se os pontos contidos nas faces superior, lateral do fundo e lateral direita da mesma.

A Figura 2 ilustra o mapeamento desse conjunto de pontos para duas caixas colocadas dentro de um contêiner, em que a face inferior da caixa menor está parcialmente suportada pela face superior da caixa maior. Este mapeamento significa determinar, para uma caixa do tipo i colocada na posição (p,q,r), todos os possíveis pontos (s,t,r+hi) que esta caixa pode "oferecer" para suporte de uma outra caixa de um tipo j qualquer (inclusive j = i), colocada na posição (p',q',r'), com r' = r + hi, isto é, com as caixas em contato (Figura 2).

Além disso, pode ser definido um parâmetro α [0,1], chamado de parâmetro de estabilidade em relação ao eixo z (ou parâmetro de estabilidade vertical). Este parâmetro é comum na literatura de carregamento de contêineres (Eley, 2002) e indica o percentual de estabilidade vertical que se deseja para todas as caixas. Em um extremo, α = 1 indica que as faces inferiores de todas as caixas devem estar 100% suportadas pelas faces superiores de uma ou mais caixas colocadas imediatamente abaixo delas, e, no outro extremo, α = 0 indica que não há exigências quanto à estabilidade das caixas em relação ao eixo z (por exemplo, as caixas podem estar apenas parcialmente apoiadas, ou mesmo "flutuando" dentro do contêiner).

Considerando-se os conjuntos X, Y e Z definidos conforme (1), (2) e (3), respectivamente, a restrição de estabilidade vertical pode ser formulada como:

ou seja, uma fração mínima α dos pontos "mapeados" da face inferior de uma caixa do tipo j deve estar suportada pelos pontos "mapeados" das faces superiores de caixas do tipo i, que estejam colocadas imediatamente abaixo da caixa do tipo j (inclusive j = i), em contato com esta (Figura 2). Note em (15) que r' Zj/{0}, ao invés de r' Zj, porque uma caixa colocada sobre o piso do contêiner (isto é, r' = 0) sempre tem estabilidade vertical.

Note que a formulação (15) não é válida quando se consideram os conjuntos X, Y e Z definidos conforme (4), (5) e (6), respectivamente (padrões normais), pois com estes pode ocorrer a formação de "buracos" na face superior da caixa do tipo i, passando esta a não mais contribuir com todos os pontos (s,t,r+hi) que a formulação (15) contribui utilizando (1), (2) e (3).

Similarmente ao que foi feito com a expressão (11), a expressão (15) também pode ser reescrita conforme abaixo, de modo a considerar a função cipqrstu(r+hi) implicitamente, e, com isso, não precisar determinar a priori os valores desta função:

que pode ser reescrita como:

ou seja, uma fração mínima α da área da face inferior de uma caixa do tipo j deve estar suportada pelas áreas das faces superiores de caixas do tipo i, que tenham as projeções destas áreas comuns em relação à caixa do tipo j, e que estejam colocadas imediatamente abaixo da caixa do tipo j, em contato com esta. A Figura 3 ilustra a área que uma caixa do tipo i "oferece" para suportar uma caixa do tipo j.

Conforme mencionado, as restrições (16) e (17), ao contrário da restrição (15), são válidas mesmo quando há a formação de "buracos" na face superior da caixa do tipo i, isto é, são válidas para X, Y e Z definidos conforme (4), (5) e (6).

No entanto, as restrições (16) e (17) usando os conjuntos definidos conforme (4), (5) e (6) são válidas apenas para α = 1. A Figura 4 ilustra um exemplo desta situação, com um contêiner (L,W,H) = (12,5,2) e dois tipos de caixas (l1,w1,h1) = (6,3,1) com b1 = 2, e (l2,w2,h2) = (10,5,1) com b2 = 1, em que há perda de generalidade quando se considera o modelo base com a restrição (17) usando (4), (5) e (6) e com α = 0,8. Note que este padrão é pior do que o padrão ótimo deste problema, obtido considerando o modelo base com a restrição (17) usando (1), (2) e (3) e com α = 0,8. O uso de (4), (5) e (6) impede que o padrão ótimo seja obtido, dado que a posição (p,q,r) = (1,0,0), utilizada pela caixa do tipo 2, não é uma combinação cônica.

3.2 Considerando Resistência das Caixas ao Empilhamento

Para o caso do empilhamento, propomos uma nova restrição a ser adicionada ao modelo base. Neste caso, uma caixa do tipo i deve ter um número máximo de caixas colocadas acima dela (não apenas imediatamente acima). Ou, de uma outra maneira, a pressão total que estas caixas exercem sobre a caixa do tipo i não pode exceder a pressão máxima que esta caixa pode suportar na sua superfície, para que não ocorram alterações na forma da caixa e comprometimento do produto dentro dela. Para evitar que haja "buracos" no padrão de empacotamento, admite-se aqui 100% de estabilidade vertical no carregamento (isto é, α = 1). Isto também é considerado em trabalhos da literatura que tratam esse tipo de consideração, como em Ratcliff & Bischoff (1998) e Bischoff (2006).

Assim, seja Pj o peso de uma caixa do tipo j, e σi a pressão máxima admissível que pode ser suportada em qualquer ponto (s,t) da face superior de uma caixa do tipo i. Note que estamos supondo que qualquer ponto da face superior da caixa do tipo i suporta a mesma pressão admissível σi. Também estamos admitindo que a pressão exercida por uma caixa do tipo j seja uniformemente distribuída sobre a área lj·wj da sua face inferior. A Figura 5 ilustra caixas, colocadas acima de uma caixa maior, e que exercem pressão sobre pontos desta caixa. Considerando-se os conjuntos X, Y e Z definidos tanto conforme (1), (2) e (3), quanto conforme (4), (5) e (6), sem perda de generalidade, a restrição de empilhamento pode ser formulada como:

ou seja, o lado direito da restrição (18) verifica, para cada ponto (s,t,u) do contêiner, se existe alguma caixa do tipo i ocupando tal ponto. Se este for o caso, então o lado direito da restrição (18) será igual ao valor da pressão máxima admissível σi que cada ponto da face superior da caixa do tipo i suporta (Figura 5). O lado esquerdo da restrição (18) corresponde à soma da pressão exercida por todas as caixas do tipo j empilhadas acima da caixa do tipo i (r'>u).

Um caso particular de empilhamento é a chamada fragilidade. Neste caso, nenhuma caixa deve ser colocada acima da caixa de referência, pois a face superior desta não pode sofrer nenhuma pressão. Para tratar deste caso, basta considerar σi = 0 para cada caixa frágil do tipo i no lado direito da restrição (18).

Convém observar que o modelo base (isto é, sem estabilidade vertical e sem empilhamento), o modelo base com as restrições (17) (isto é, com estabilidade vertical), e o modelo base com as restrições (17) e (18) (isto é, com estabilidade vertical e com empilhamento), envolvem |Xi|·|Yi|·|Zi| variáveis binárias. Além disso, o modelo base resulta em |X|·|Y|·|Z|+m restrições, as restrições (17) somam |Xi|·|Yi|·(|Zi|-1) restrições ao modelo base, e as restrições (18) somam |X|·|Y|·|Z| restrições ao modelo base com (17).

O modelo base, o modelo base com as restrições (17) e o modelo base com as restrições (17) e (18), foram implementados na linguagem de modelagem GAMS (versão 22.7). O solver CPLEX 11.0 (com parâmetros default) foi utilizado para resolvê-las. Todos os testes foram realizados em um microcomputador PC Pentium D (3,2 GHz, 2,0 GB).

Os modelos foram testados com exemplos gerados a partir de dados aleatórios, que foram divididos de acordo com as seguintes características:

• Quatro quantidades diferentes de tipos de caixas: m=1 (neste caso, as caixas podem girar em torno de todos os seus eixos), m=5, m=10 e m=20 (nestes três últimos casos, as caixas têm orientação fixa).
• Duas maneiras diferentes de gerar as dimensões das caixas: (Am, m=1, 5, 10 e 20) dimensões das caixas variando entre 25% e 75% das dimensões do contêiner, ou seja, li [0,25L, 0,75L], wi [0,25W, 0,75W] e hi [0,25H, 0,75H]; (Bmm=1, 5, 10 e 20) dimensões das caixas variando entre 10% e 50% das dimensões do contêiner, ou seja, li [0,10L, 0,50L], wi [0,10W, 0,50W] e hi [0,10H, 0,50H]. Por simplicidade, em todos os exemplos consideramos contêineres cúbicos, isto é, com dimensões L = W = H.

Para o caso de m=1, foi criada uma variável de decisão adicional para cada possível orientação da caixa, totalizando seis variáveis de decisão, e o modelo base, o modelo base com (17), e o modelo base com (17) e (18), foram modificados apropriadamente para considerar estas novas variáveis. Uma maneira alternativa de se tratar este caso seria considerar cada uma das seis possíveis rotações de uma caixa simplesmente como seis caixas diferentes, isto é, m=6, e limitar o número máximo de caixas empacotadas destes seis tipos artificiais nas restrições (12) dos modelos. Uma motivação dos problemas dos grupos A1 e B1 (sem orientações fixas para as caixas) é que eles podem ser vistos como problemas tridimensionais de carregamento de paletes (do produtor), em que as caixas não precisam ser arranjadas em camadas horizontais sobre o palete.

A Tabela 2 apresenta as dimensões L = W = H dos contêineres, variando de 10 até 100. A primeira coluna destaca as diferentes quantidades de tipos de caixas, e a segunda e terceira colunas destacam, respectivamente, as maneiras Am e Bm de gerar as dimensões das caixas. Os grupos Am envolvem exemplos em geral mais fáceis, quando comparados com os grupos Bm, pois como as dimensões das caixas geradas são, em média, maiores, o número de padrões normais (combinações cônicas) é, em média, bem menor. No caso dos grupos Bm, realizamos testes apenas até dimensões L = W = H iguais a 30, pois, em geral, para valores maiores que 30 (com m = 10 ou 20 tipos de caixas), a memória principal do computador utilizado foi insuficiente para o GAMS compilar os modelos. Assim, para cada um dos valores das dimensões L = W = H dos contêineres, foram gerados 10 exemplos, totalizando 320 exemplos para serem testados com cada um dos modelos.

O valor vi foi definido como a fração de volume ocupado pela caixa do tipo i no contêiner, isto é: vi = [li·wi·hi)/(L·W·H)], i = 1,...,m. A quantidade disponível bi de caixas que podem ser carregadas no contêiner foi definida de duas maneiras diferentes. Para os exemplos com m=5, 10 e 20, o valor de bi foi uniformemente sorteado no intervalo: [1, L/li·W/wi·H/hi], i=1,...,m . Note que, desta maneira, o PCC3D torna-se restrito do ponto de vista de disponibilidade de caixas de cada tipo i (na literatura de corte e empacotamento o problema é chamado restrito se bi < (L·W·H)/(li·wi·hi) para algum i). Para os exemplos com m=1, o valor de bi foi definido como: bi = (L·W·H)/(li·wi·hi), para todo i=1,...,m, o que implica que o problema é irrestrito do ponto de vista de disponibilidade de caixas.

O valor α do parâmetro de estabilidade vertical foi definido como sendo 1, isto é, as faces inferiores de todas as caixas devem estar 100% suportadas pelas faces superiores de uma ou mais caixas colocadas imediatamente abaixo delas (ou pelo piso do contêiner). Note que, no caso do modelo base com (17), a condição α = 1 evita perda de soluções ótimas ao se utilizar combinações cônicas, e no caso do modelo base com (17) e (18), esta condição é necessária para evitar que possam ocorrer "buracos" no padrão de empacotamento, como discutido na seção 3.

Para ilustrar o tamanho dos modelos gerados nos grupos Am e Bm, a Tabela 3 apresenta os tamanhos mínimo, médio e máximo dos conjuntos X, Y e Z, e os números mínimo, médio e máximo de restrições e variáveis (binárias), para cada um dos oito grupos, considerando um contêiner com dimensões L = W = H iguais a 10. Estes números correspondem aos valores reportados pelo CPLEX após o pré-processamento. Observa-se que as porcentagens médias de redução do número de variáveis pelo pré-processamento do CPLEX para cada um dos 8 grupos considerados nesta tabela são, respectivamente, 74,07, 75,23, 70,63, 69,34, 38,36, 40,80, 39,99 e 38,96.

Como pode ser observado na Tabela 3, o número de variáveis e restrições cresce significativamente à medida que m cresce (compare, por exemplo, A5 e A20), e à medida que o tamanho das caixas diminui (compare, por exemplo, A5 e B5). Note que mesmo para problemas com L = W = H pequenos (isto é, iguais a 10), os modelos podem envolver ordem de milhares de variáveis e restrições.

Nos experimentos a seguir, o tempo computacional para resolver cada modelo foi arbitrariamente limitado em 1 hora (3600 segundos) e os gaps de otimalidade foram calculados como:

Assim, quatro situações são possíveis de ocorrer quanto à qualidade da solução obtida pelo aplicativo GAMS/CPLEX: (i) solução ótima, com gap igual a zero; (ii) solução factível (inteira), com gap maior que zero e com o limite de tempo excedido pelo CPLEX; (iii) sem solução factível, sem gap e com o limite de tempo excedido pelo CPLEX; (iv) insuficiência de memória do computador para compilar o modelo pelo GAMS, sem gap e sem informação relevante sobre o tempo. Estas duas últimas situações estão representadas nas tabelas pelo símbolo "".

As tabelas a seguir apresentam os valores mínimo, médio e máximo para: o gap de otimalidade (em %) obtido, o tempo computacional (em segundos) utilizado, e a fração do volume (em %) ocupado pelas caixas carregadas no contêiner. Destacamos aqui que estes valores mínimo, médio e máximo, foram calculados apenas para os exemplos que foram resolvidos na otimalidade, ou para aqueles em que se encontrou uma solução inteira subótima. Note que a primeira coluna das tabelas refere-se à dimensão do contêiner (L = W = H).

4.1 Resultados com Exemplos dos Grupos Am

Para avaliar a qualidade do limitante de relaxação linear dos modelos, tomamos os 50 exemplos do grupo A5 (Tabela 5) e os resolvemos com o modelo base com (17). Os gaps de relaxação linear foram calculados similarmente ao gap de otimalidade, substituindo na expressão anterior o "melhor limitante obtido" pelo "melhor limitante de relaxação linear obtido". O gap médio de relaxação linear obtido destes 50 exemplos foi de 6,706% (mínimo de 0,000% e máximo de 27,216%), o que mostra que o limitante pode ser relativamente apertado, dependendo da classe de exemplos.

4.2 Resultados com Exemplos dos Grupos Bm

Os resultados obtidos com os 120 exemplos dos grupos B1, B5, B10 e B20 para os três modelos estão apresentados nas Tabelas 9 a 12. Várias das observações feitas anteriormente para os resultados das Tabelas 4 a 7 também são válidas para os resultados das Tabelas 9 a 12. Similarmente à Tabela 8, a Tabela 13 apresenta um resumo dos exemplos testados para os grupos Bm. Convém ressaltar que o GAMS/CPLEX tem dificuldades para resolver os modelos dos grupos B10 e B20, mesmo para dimensões L = W = H relativamente pequenas, iguais a 20 ou 30.

A Figura 6 ilustra os padrões de empacotamento obtidos para um dos exemplos testados, respectivamente para o modelo base, para o modelo base com (17), e para o modelo base com (17) e (18). O modelo base empacota 65 caixas em 95,20% do volume do contêiner. Note que o carregamento possui caixas apenas parcialmente apoiadas ou "flutuando" dentro do contêiner, isto é, ele não é 100% estável. O modelo base com (17), por sua vez, empacota 68 caixas nos mesmos 95,20% do volume do contêiner. Note, porém, que os espaços vazios foram "jogados para cima" das caixas, e o carregamento é, portanto, 100% estável. Já o modelo base com (17) e (18), devido a limitações da pressão máxima admissível, empacota apenas 35 caixas em 50,00% do volume do contêiner.

Os resultados computacionais desta seção mostram as limitações do aplicativo GAMS/CPLEX (com parâmetros default) para resolver os modelos com exemplos gerados a partir de dados aleatórios, de tamanhos bem moderados. Isso indica que esta abordagem terá dificuldades para tratar problemas realistas de carregamento de contêineres, envolvendo um grande número de possíveis posições para arranjar as caixas dentro do contêiner (como os problemas em George & Robinson, 1980; Bischoff & Ratcliff, 1995; Cecílio & Morabito, 2004). Por exemplo, testes preliminares foram realizados com o problema real em George & Robinson (1980) e os modelos não compilaram no GAMS por falta de memória computacional. No entanto, convém observar que os exemplos resolvidos nesta seção, envolvendo modelos com milhares de variáveis e restrições, estão longe de serem considerados de fácil resolução.

5. Conclusões

Neste trabalho apresentamos modelos de programação linear inteira 0-1 para representar problemas de carregamento de caixas retangulares dentro de objetos (contêineres, caminhões, vagões ferroviários ou paletes), que consideram restrições práticas de estabilidade e de empilhamento do carregamento. Os modelos ainda podem ser estendidos para considerar outras restrições práticas, como algumas das discutidas na Tabela 1. Testes computacionais foram realizados com os modelos utilizando o aplicativo GAMS/CPLEX e centenas de exemplos gerados a partir de dados aleatórios. Os resultados mostraram que os modelos são coerentes e representam adequadamente as situações tratadas, embora esta abordagem (na sua versão atual) esteja limitada a resolver otimamente apenas problemas de tamanho bem moderado, isto é, em que o número de possíveis posições para se arranjar as caixas dentro do contêiner é relativamente pequeno.

Acreditamos que os modelos apresentados possam ser úteis para motivar pesquisas futuras explorando métodos de decomposição, métodos de relaxação, métodos heurísticos, entre outros, para resolver problemas mais realistas de carregamento de contêineres. Outras perspectivas interessantes para pesquisa futura são: (i) estender os modelos para considerar outras restrições práticas além de estabilidade e de empilhamento do carregamento, (ii) testar em planejamento de experimentos quais as combinações de valores dos parâmetros CPLEX mais adequadas para resolver os problemas (por simplicidade, neste trabalho todos os parâmetros CPLEX foram utilizados nos seus valores default), (iii) explorar nos modelos o uso de restrições para redução de simetria nos padrões de empacotamento, e investigar se os conjuntos normais descritos em (4), (5) e (6) e utilizados nos modelos, podem ser substituídos, sem perda de generalidade, por conjuntos de menor cardinalidade, como os conjuntos de raster points (Scheithauer et al., 1996; Birgin et al., 2010), para reduzir o tamanho dos modelos.

Os autores gostariam de agradecer aos três revisores anônimos pelos úteis comentários e sugestões. Esta pesquisa contou com apoio da FAPESP (processos 06/03496-3, 07/00209-6 e 07/01299-9) e do CNPq (processo 522973/95-7).

Referências Bibliográficas

(1) Araujo, O.C.B. (2006). Problemas de corte e empacotamento tridimensional e integração com roteamento de veículos. 2006. 171p. Tese (Doutorado em Engenharia Elétrica) - Faculdade de Engenharia Elétrica e de Computação, Universidade Estadual de Campinas, Campinas - SP.         [ Links ]

(2) Araujo, O.C.B. & Armentano, V.A. (2007). A multi-start random constructive heuristic for the container loading problem. Pesquisa Operacional, 27(2), 311-331.         [ Links ]

(3) Ballou, R.H. (2002). Gerenciamento de cadeia de suprimentos: planejamento, organização e logística empresarial. 4. ed. Bookman, Porto Alegre. 532p.         [ Links ]

(4) Beasley, J.E. (1985). An exact two-dimensional non-guillotine cutting tree search procedure. Operations Research, 33(1), 49-64.         [ Links ]

(5) Beasley, J.E. (2004). A population heuristic for constrained two-dimensional non-guillotine cutting. European Journal of Operational Research, 156(3), 601-627.         [ Links ]

(6) Birgin, K.J.; Lobato, R.D. & Morabito, R. (2010). An effective recursive partitioning approach for the packing of identical rectangles in a rectangle. Journal of the Operational Research Society, 61(2), 306-320.         [ Links ]

(7) Bischoff, E.E. (2006). Three-dimensional packing of items with limited load bearing strength. European Journal of Operational Research, 168(3), 952-966.         [ Links ]

(8) Bischoff, E.E. & Ratcliff, M.S.W. (1995). Issues in the development of approaches to container loading. Omega, 23(4), 377-390.         [ Links ]

(9) Bortfeldt, A. & Gehring, H. (2001). A hybrid genetic algorithm for the container loading problem. European Journal of Operational Research, 131(1), 143-161.         [ Links ]

(10) Bortfeldt, A.; Gehring, H. & Mack, D. (2003). A parallel tabu search algorithm for solving the container loading problem. Parallel Computing, 29(5), 641-662.         [ Links ]

(11) Bowersox, D.J. & Closs, D.J. (2001). Logística empresarial: o processo de integração da cadeia de suprimento. Atlas, São Paulo. 594p.         [ Links ]

(12) Campos, D.S. (2008). Integração dos problemas de carregamento e roteamento de veículos com janela de tempo e frota heterogênea. 2008. 119p. Tese (Doutorado em Engenharia de Produção) - Departamento de Engenharia de Produção, Universidade de São Paulo, São Paulo - SP.         [ Links ]

(13) Cecilio, F.O. & Morabito, R. (2004). Refinamentos na heurística de George e Robinson para o problema de carregamento de caixas dentro de contêineres. Transportes, 11(2), 32-45.         [ Links ]

(14) Chen, C.S.; Lee, S.M. & Shen, Q.S. (1995). An analytical model for the container loading problem. European Journal of Operational Research, 80(1), 68-76.         [ Links ]

(15) Chien, C.F. & Deng, J.F. (2004). A container packing support system for determining and visualizing container packing patterns. Decision Support Systems, 37(1), 23-34.         [ Links ]

(16) Christensen, S.G. & Rousøe, D.M. (2009). Container loading with multi-drop constraints. International Transactions in Operational Research, 16(6), 727-743.         [ Links ]

(17) Christofides, N. & Whitlock, C. (1977). An algorithm for two-dimensional cutting problems. Operations Research, 25(1), 30-44.         [ Links ]

(18) Davies, A.P. & Bischoff, E.E. (1999). Weight distribution considerations in container loading. European Journal of Operational Research, 114(3), 509-527.         [ Links ]

(19) Eley, M. (2002). Solving container loading problems by block arrangement. European Journal of Operational Research, 141(2), 393-409.         [ Links ]

(20) Eley, M. (2003). A botleneck assignment approach to the multiple container loading problem. OR Spectrum, 25(1), 45-60.         [ Links ]

(21) Gehring, H. & Bortfeldt, A. (2002). A parallel genetic algorithm for solving the container loading problem. International Transactions in Operational Research, 9(4), 497-511.         [ Links ]

(22) Gendreau, M.; Iori, M.; Laporte, G. & Martello, S. (2006). A tabu search algorithm for a routing and container loading problem. Transportation Science, 40(3), 342-350.         [ Links ]

(23) George, J.A. & Robinson, D.F. (1980). A heuristic for packing boxes into a container. Computers and Operations Research, 7(3), 147-156.         [ Links ]

(24) Gilmore, P.C. & Gomory, R.E. (1965) Multistage cutting stock problems of two and more dimensions. Operations Research, 13(1), 94-120.         [ Links ]

(25) Hadjiconstantinou, E. & Chistofides, N. (1995). An exact algorithm for general, orthogonal, two-dimensional knapsack problems. European Journal of Operational Research, 83(1), 39-56.         [ Links ]

(26) Hodgson, T.J. (1982). A combined approach to the pallet loading problem. IIE Transactions, 14(3), 175-182.         [ Links ]

(27) Huang, W. & He, K. (2009). A caving degree approach for the single container loading problem. European Journal of Operational Research, 196(1), 93-101.         [ Links ]

(28) Jin, Z.; Ohno, K. & Du, J. (2004). An efficient approach for the three-dimensional container packing problem with practical constraints. Asia-Pacific Journal of Operational Research, 21(3), 279-295.         [ Links ]

(29) Junqueira, L. (2009). Modelos de programação matemática para problemas de carregamento de caixas dentro de contêineres. 134p. Dissertação (Mestrado em Engenharia de Produção) - Departamento de Engenharia de Produção, Universidade Federal de São Carlos, São Carlos - SP.         [ Links ]

(30) Li, H.L.; Tsai, J.F. & Hu, N.Z. (2003). A distributed global optimization method for packing problems. Journal of the Operational Research Society, 54(4), 419-425.         [ Links ]

(31) Lim, A.; Rodrigues, B. & Wang, Y (2005). 3-D container packing heuristics. Applied Intelligence, 22(2), 125-134.         [ Links ]

(32) Lin, J.L.; Chang, C.H. & Yang, J.Y. (2006). A study of optimal system for multiple-constraint multiple-container packing problems. In: Proceedings of the 19th International Conference on Industrial, Engineering and Other Applications of Applied Intelligent Systems, 4031, 1200-1210, Annecy.         [ Links ]

(33) Lins, L.; Lins, S. & Morabito, R. (2002). An n-tet graph approach for non-guillotine packing of n-dimensional boxes into an n-container. European Journal of Operational Research, 141(2), 421-439.         [ Links ]

(34) Lins, L.; Lins, S. & Morabito, R. (2003). An L-approach for packing (l,w)-rectangles into rectangular and L-shaped pieces. Journal of the Operational Research Society, 54(7), 777-789.         [ Links ]

(35) Mack, D.; Bortfeldt, A. & Gehring, H. (2004). A parallel hybrid local search algorithm for the container loading problem. International Transactions in Operational Research, 11(5), 511-533.         [ Links ]

(36) Martello, S.; Pisinger, D. & Vigo, D. (2000). The three-dimensional bin packing problem. Operations Research, 48(2), 256-267.         [ Links ]

(37) Martins, G.H.A. (2003). Packing in two and three dimensions. Tese de Doutorado, Naval Postgraduate School, Monterey, California.         [ Links ]

(38) Miyazawa, F.K. & Wakabayashi, Y. (1999) Approximation algorithms for the orthogonal Z-oriented three-dimensional packing problem. SIAM Journal on Computing, 29(3), 1008-1029.         [ Links ]

(39) Morabito, R. & Arenales, M. (1994). An And/Or-graph approach to the container loading problem. International Transactions in Operational Research, 1(1), 59-73.         [ Links ]

(40) Morabito, R. & Arenales, M. (1997). Abordagens para o problema do carregamento de contêineres. Pesquisa Operacional, 17(1), 29-56.         [ Links ]

(41) Moura, A. & Oliveira, J.F. (2005). A GRASP approach to the container-loading problem. IEEE Intelligent Systems, 4(20), 50-57.         [ Links ]

(42) Pisinger, D. (2002). Heuristics for the container loading problem. European Journal of Operational Research, 141(2), 382-392.         [ Links ]

(43) Ratcliff, M.S.W. & Bischoff, E.E. (1998). Allowing for weight considerations in container loading. OR Spektrum, 20(1), 65-71.         [ Links ]

(44) Scheithauer, G.; Terno, J.; Riehme, J. & Sommerweiss, U. (1996). A new heuristic approach for solving the multi-pallet packing problem. Technical Report, MATH-NM-03-1996, Technische Universität Dresden, Dresden.         [ Links ]

(45) Silva, J.L.C. & Soma, N.Y. (2003). Um algoritmo polinomial para o problema de empacotamento de contêineres com estabilidade estática da carga. Pesquisa Operacional, 23(1), 79-98.         [ Links ]

(46) Silva, J.L.C.; Soma, N.Y. & Maculan, N. (2003). A greedy search for the three-dimensional bin packing problem: the packing static stability case. International Transactions in Operational Research, 10(2), 141-153.         [ Links ]

(47) Terno, J.; Scheithauer, G.; Sommerweiss, U. & Riehme, J. (2000). An efficient approach for the multi-pallet loading problem. European Journal of Operational Research, 123(2), 372-381.         [ Links ]

(48) Tsai, R.D.; Malstrom, E.M. & Kuo, W. (1993). Three dimensional palletization of mixed box sizes. IIE Transactions, 25(4), 64-75.         [ Links ]

(49) Wang, Z.; Li, K.W. & Levy, J.K. (2008). A heuristic for the container loading problem: a tertiary-tree-based dynamic space decomposition approach. European Journal of Operational Research, 191(1), 86-99.         [ Links ]

(50) Yeung, L.H.W. & Tang, W.K.S. (2005). A hybrid genetic approach for container loading in logistics industry. IEEE Transactions on Industrial Electronics, 52(2), 617-627.         [ Links ]

Recebido em 12/2008; aceito em 06/2009 após 1 revisão
Received december 2008; accepted June 2009

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