• Nenhum resultado encontrado

Abordagens para o Problema do Carregamento de Contêineres

N/A
N/A
Protected

Academic year: 2021

Share "Abordagens para o Problema do Carregamento de Contêineres"

Copied!
29
0
0

Texto

(1)

Abordagens para o Problema do Carregamento de Contêineres

Reinaldo Morabito

Universidade Federal de São Carlos Departamento de Engenharia de Produção

13565-905 - São Carlos, São Paulo e-mail: morabito@power.ufscar.br

Marcos N. Arenales Universidade de São Paulo

Departamento de Ciências de Computação e Estatística Instituto de Ciências Matemáticas de São Carlos

13560-970 - São Carlos, São Paulo e-mail: arenales@icmsc.sc.usp.br

Resumo

O problema do carregamento de contêineres consiste em arranjar itens (caixas) de diferentes tamanhos dentro de objetos maiores (contêineres), de maneira a otimizar uma função objetivo, p.e., maximizar o volume carregado. Neste artigo estamos interessados no caso especial de arranjar o máximo volume de uma carga, composta de caixas de baixa densidade, dentro de um único contêiner, safistazendo restrições de estabilidade do carregamento. Revemos algumas abordagens conhecidas da literatura, tais como os procedimentos em duas etapas de carregar as caixas em camadas horizontais e em pilhas verticais, a aplicação de técnicas de programação dinâmica e, em particular, métodos de busca baseados na representação do espaço de soluções num grafo-e/ou. Algumas destas abordagens foram implementadas em micromputador para resolver um exemplo real com 784 caixas, e um exemplo pequeno mas difícil, com apenas 17 caixas, cuja solução ótima é do tipo não-guilhotinado.

Palavras-chave: carregamento de contêineres, problemas de corte e empacotamento, busca em grafo-e/ou, padrões de corte tridimensionais.

Abstract

The container loading problem consists of arranging items (boxes) of different sizes

inside large objects (containers), in such a way as optimizing an objective function, e.g.,

maximizing the volume loaded. In this paper we are interested in the special case of

arranging the maximum volume of a cargo, composed of low density boxes, in a single

container, satisfying stability constraints for the cargo loading. We review approaches

known in the literature, such as the two-phase procedures of loading boxes in either

(2)

horizontal layers or vertical stacks, the application of dynamic programming techniques and, in particular, search methods based on an and/or-graph representation of the solution space. Some of them were implemented in a microcomputer to solve a large real-life example of 784 boxes, and a hard small example of only 17 boxes, whose optimal solution is known to be of nonguillotine type.

Keywords: container loading, cutting and packing problems, and/or-graph search, three-dimensional cutting patterns

1. Introdução

O problema do carregamento de contêineres (container loading problem) consiste em carregar caixas de diversos tamanhos dentro de contêineres, de maneira a otimizar um certo objetivo, por exemplo, maximizar o aproveitamento do espaço disponível. Além das restrições geométricas envolvidas (o carregamento deve caber dentro do contêiner, duas caixas não podem ocupar o mesmo espaço), outras restrições devem ser eventualmente consideradas, como a estabilidade do carregamento.

Ao estudar o problema, Bischoff e Marriott (1990) distinguiram casos em que uma grande carga deve ser transportada, combinando-se vários contêineres em função do custo-benefício, e casos em que o máximo possível de uma carga deve ser carregada dentro de um único contêiner. Os autores ainda distinguiram casos em que o peso da carga e sua distribuição dentro do contêiner governam as opções de carregamento e casos em que o objetivo é maximizar a utilização do contêiner em termos do volume e do valor da carga carregada. Aspectos de fragilidade e manuseio da carga também podem vir a ser considerados. Em particular, Gehring et al (1990) abordaram um caso com restrições de balanceamento e localização das caixas dentro do contêiner.

Restrições de peso podem ser até certo ponto compensadas pela possibilidade de escolha das dimensões dos contêineres (contêineres menores são escolhidos para cargas mais densas). Uma escolha adequada do tamanho do contêiner em função da densidade da carga permite que sua capacidade volumétrica seja melhor utilizada. Haessler e Talbot (1990) abordaram o problema do carregamento de vagões ferroviários considerando apenas caixas de baixa densidade. Em muitos casos, a capacidade volumétrica limita a quantidade de caixas a ser carregada, antes que as restrições de peso sejam encontradas (George e Robinson, 1980). No presente artigo admitimos que a carga tem baixa densidade.

A figura 1a ilustra dois contêineres e três caixas de tamanhos diferentes. Suponha,

por exemplo, que dispomos de apenas um contêiner de cada tamanho e de duas caixas do

tamanho 1, duas caixas do tamanho 2 e uma caixa do tamanho 3, e que os dois

(3)

contêineres juntos sejam suficientes para arranjar todas estas cinco caixas. Considere o seguinte problema de otimização combinatória:

Como carregar todas as caixas dentro dos contêineres,

tal que o volume total dos contêineres utilizados seja mínimo? (1) Um subconjunto de contêineres deve ser escolhido para carregar todas as caixas.

A figura 1b ilustra uma solução para este simples exemplo, com todas as cinco caixas arranjadas dentro do contêiner menor. Note que se os contêineres forem idênticos, então o problema (1) consiste em minimizar o número de contêineres utilizados.

Suponha agora que dispomos de cinco caixas do tamanho 1, três caixas do tamanho 2 e dez caixas do tamanho 3, e assim, os dois contêineres juntos não são mais suficientes para arranjar todas estas 18 caixas. Considere este segundo problema de otimização combinatória:

Como carregar o máximo volume de caixas dentro dos contêineres disponíveis? (2) Um subconjunto de caixas deve ser escolhido e arranjado dentro dos contêineres disponíveis. A figura 1c ilustra uma possível solução, com parte das 18 caixas carregadas nos dois contêineres. Um caso importante do problema (2) é quando temos um único contêiner disponível.

Os problemas (1) e (2) podem ser vistos como problemas de corte e empacotamento (PCE) tridimensionais (Dyckhoff, 1990). Há décadas muitos autores têm apresentado diferentes abordagens para resolver os PCE; entretanto, poucos autores se preocuparam com os casos tridimensionais. Para uma lista de referências, veja os exames de Dyckhoff e Finke (1992), Dowsland e Dowsland (1992), Sweeney e Paternoster (1992) e Morábito e Arenales (1992); veja também a edição especial recente dos PCE em EJOR (1995). Para uma discussão da relação entre problemas de carregamento de contêineres e de carregamento de paletes do distribuidor, veja p.e. Bischoff e Ratcliff (1995) e as referências lá citadas.

Neste artigo estamos particularmente interessados no problema (2) com um único

contêiner disponível. Admitimos que a carga tenha baixa densidade e consideramos

restrições espaciais (restrições geométricas das caixas dentro do contêiner) e de

estabilidade do carregamento (veja figura 8). Restrições de estabilidade do carregamento

são difíceis de serem modeladas (os autores não têm conhecimento de qualquer tentativa

na literatura)---na prática, elas são verificadas movimentando-se o carregamento

produzido. Apesar de uma definição formal de estabilidade do carregamento estar além

do escopo deste trabalho, nas abordagens a serem apresentadas discutiremos brevemente

como certas regras podem produzir carregamentos com maior chance de estabilidade,

pois permitem um rearranjo de peças sobrepostas de modo que soluções alternativas

podem ser submetidas à prática de movimentação do carregamento.

(4)

Na seção 2 modelamos (2) como um subproblema de (1) (conforme Gilmore e Gomory, 1965), distinguindo os casos irrestrito e restrito (veja problemas (3)-(4) e (5)- (7) na seção 2). Também apresentamos um programa linear 0-1 para estes casos, que é uma extensão do modelo de Beasley (1985b) originalmente proposto para um PCE bidimensional.

Para resolver o problema irrestrito, três métodos aproximados são apresentados nas seções 3, 4 e 5, respectivamente. Os dois primeiros são generalizações do método em duas etapas de Gilmore e Gomory (1965): o primeiro arranja as caixas em camadas e o segundo, em pilhas. Ambos os métodos em geral produzem carregamentos estáveis. O terceiro é uma generalização das fórmulas recursivas de programação dinâmica de Beasley (1985a), e não tem garantia de estabilidade do carregamento.

Para resolver tanto o problema irrestrito quanto o restrito, apresentamos na seção 6 a abordagem em grafo-E/OU (Morábito e Arenales, 1994), que é um método aproximado que realiza uma busca num grafo-E/OU para tentar encontrar um bom carregamento estável. No final do artigo (seção 7) apresentamos alguns resultados computacionais de um exemplo real e de um exemplo construído, comparando as soluções produzidas pelos métodos (exceto programação dinâmica).

2. Modelagem do problema

Considere um conjunto de caixas agrupadas em m tipos. Para cada tipo i, caracterizado pelo comprimento, largura e altura (l

i

, w

i

, h

i

), temos uma quantidade b

i

de caixas. Considere também um conjunto de contêineres agrupados em n tipos. Para cada tipo k, caracterizado pelas dimensões (L

k

, W

k

, H

k

), estão disponíveis B

k

contêineres. As caixas devem ser carregadas ortogonalmente dentro dos contêineres. Por simplicidade e sem perda de generalidade, admita que as caixas sejam carregadas com uma orientação fixada, isto é, com l

i

, w

i

e h

i

paralelos a L

k

, W

k

e H

k

, respectivamente.

Gilmore e Gomory (1963, 1965) apresentaram um método para resolver o problema (1) baseado no método simplex (dado que ele pode ser modelado como um programa linear) e num subproblema que deve ser resolvido em cada iteração do simplex para produzir um padrão de carregamento. Este subproblema é dado por:

max v a

i i

i 1 m

=

(3) s.a.: (a

1

, a

2

, ..., a

m

) corresponde a um padrão de carregamento tridimensional (4) onde a

i

é uma variável inteira representando o número de caixas do tipo i no padrão, e v

i

é o multiplicador simplex (ou uma função dele) associado com uma base particular. Seja

  z denotando o maior inteiro menor ou igual a z. Este método funciona bem quando b

i

é

(5)

consideravelmente maior do que o produto  L / l W / w

k i

 

k i

  H / h

k i

 , que corresponde ao número máximo de caixas do tipo i no contêiner (L

k

, W

k

, H

k

).

Considere agora apenas um contêiner de tamanho (L, W, H). Note que se v

i

em (3) for o volume da caixa do tipo i, então o problema (3)-(4) é o caso particular do problema (2) com um único contêiner disponível. Se a quantidade b

i

não for suficientemente grande (i.e. b

i

<  L / l

k i

  W / w

i

  H / h

i

 ), então a variável a

i

deve ser limitada superiormente por b

i

. Neste caso o problema (3)-(4) é chamado restrito, dado por:

max v ai i

i 1 m

=

(5)

s.a.: (a

1

, a

2

, ..., a

m

) corresponde a um padrão de carregamento tridimensional (6) com: a

i

≤ b

i

, i= 1, ..., m (7) A restrição adicional (7) impõe consideráveis dificuldades para resolver o problema acima, em relação ao problema (3)-(4), conforme será visto.

Tanto o problema (3)-(4) quanto o problema (5)-(7) podem ser escritos como um programa 0-1, estendendo-se para o caso tridimensional o programa 0-1 proposto originalmente em Beasley (1985b) para o caso bidimensional. Cada variável 0-1 do programa representa a decisão de colocar ou não uma caixa do tipo i na coordenada (x,y,z) dentro do contêiner. Sem perda de generalidade, pode ser mostrado que x, y e z pertencem respectivamente aos conjuntos de discretização (veja seção 6.3.1):

X= x| x

i i

l , x L l ,

0 i

0, inteiro

i 1 m

= ≤ − ≥

 

 

=

α α

(8)

Y= y| y

i

w , y W w ,

i 0 i

0, inteiro

i 1 m

= ≤ − ≥

 

 

=

β β

(9)

Z= z|z

i i

h , z H h ,

0 i

0, inteiro

i 1 m

= ≤ − ≥

 

 

=

γ γ

(10)

onde l

0

= min{l

i

, i = 1, ..., m} (similarmente para w

0

e h

0

).

No texto que segue denotamos por |A| o número de elementos do conjunto A.

Sejam x

j

o j-ésimo elemento do conjunto X, y

k

o k-ésimo elemento do conjunto Y, e z

l

o

l-ésimo elemento do conjunto Z (note que x

j

, y

k

e z

l

não são incógnitas, isto é, são

determinados a priori). Se decidirmos colocar uma caixa do tipo i, com o canto conforme

a figura 2 na posição (x

j

, y

k

, z

l

), então não podemos colocar outra caixa em qualquer

(6)

posição (x

p

, y

q

, z

r

) satisfazendo x

j

≤ x

p

≤ x

j

+ l

i

- 1, y

k

≤ y

q

≤ y

k

+ w

i

- 1 e z

l

≤ z

r

≤ z

l

+ h

i

- 1, com p = 1, ... , |X|, q = 1, ..., |Y| e r = 1, ..., |Z| (verifique na figura 2).

Para evitar a sobreposição de caixas, definimos a matriz de incidência g

ijklpqr

como:

g

x x x l 1, y y y w 1 e z z z h 1

ijklpqr

j p j i k q k i , l r l i

=  ≤ ≤ + − ≤ ≤ + − ≤ ≤ + −

  1 0

se

caso contrario

, .

que deve ser computada a priori para cada caixa do tipo i (i = 1, ..., m), para cada posição (x

j

, y

k

, z

l

) (j = 1, ..., |X|, k = 1, ..., |Y| e l = 1, ..., |Z|), e para cada posição (x

p

, y

q

, z

r

) (p = 1, ..., |X|, q= 1, ..., |Y| e r= 1, ..., |Z|).

Sejam J(i) = arg max

j=1, ..., |X|

{x

j

| x

j

L - l

i

}, K(i) = arg max

k=1,...,| Y|

{ y

k

| y

k

W - w

i

} e L(i) = arg max

l=1,...,|Z|

{z

l

| z

l

H - h

i

}, e as variáveis de decisão a

ijkl

definidas como:

a

x , y , z

ijkl

j k l

= 

  1 0

se uma caixa do tipo e colocada na caso contrario

i ' posicao ( )

.

Note que, necessariamente, a

ijkl

= 0 para todo j>J(i), ou k>K(i), ou l>L(i).. O problema pode ser formulado como:

max v a

i ijkl

l 1 L(i)

k 1 K(i)

j 1 J(i)

i 1 m

=

=

=

=

∑ ∑ ∑

(11)

s a . .: g

ijklpqr

a

ijkl

1, p 1, ..., | | , q 1, ..., | | , r 1, ..., | |

l 1 L(i)

k 1 K(i)

j 1 J(i)

i 1 m

=

=

=

=

∑ ∑ ∑

= X = Y = Z (12)

a

ijkl

b , i

i

1, ..., m

l 1 L(i)

k 1 K(i)

j 1 J(i)

≤ =

=

=

=

∑ ∑

(13)

com: a

ijkl

∈ {0, 1}, i=1, ..., m, j=1, ..., J(i), k=1, ..., K(i), l=1, ..., L(i) (14) O modelo (11)-(14) contém O(m|X| |Y| |Z|) variáveis e O(|X| |Y| |Z|) restrições. Se uma orientação não for fixada para carregar as caixas dentro do contêiner, o modelo acima pode ser estendido porém com um número ainda maior de variáveis e restrições.

Nos casos práticos estes números chegam facilmente a ordem de milhões, o que

desestimula o emprego das técnicas usuais de programação linear inteira. Além disso, a

solução do modelo (11)-(14) não tem garantia de produzir um carregamento estável.

(7)

Outro modelo 0-1 para os problemas (3)-(4) e (5)-(7) pode ser encontrado em Tsai et al (1993), porém, com número de variáveis e restrições que cresce exponencialmente com o número de caixas a serem carregadas e também sem garantia de produzir um carregamento estável. Estas dificuldades em parte justificam a coleção de métodos heurísticos encontrados na literatura, como por exemplo em George e Robinson (1980), Han et al (1989), Correia et al (1992), Mohanty et al (1994), Morabito e Arenales (1994) e Bischoff et al (1995). Algoritmos de aproximação com limite de desempenho assintótico também são encontrados; veja p.e. Miyazawa (1997) e as referências nele citadas.

Os métodos das próximas três seções tratam apenas o problema (3)-(4), enquanto que o método da seção 6 trata ambos os problemas (3)-(4) e (5)-(7). Todos os métodos são heurísticos.

3. Carregamento em camadas

A seguir apresentamos um procedimento em duas etapas para se obter padrões de carregamento tridimensional em geral estáveis. Na primeira etapa, camadas horizontais são formadas arranjando-se caixas de mesma altura (i.e. no máximo m problemas bidimensionais são resolvidos) e na segunda etapa, estas camadas são escolhidas para serem empilhadas ao longo da altura do contêiner (i.e. um problema da mochila unidimensional é resolvido).

3.1. Etapa 1

Na primeira etapa, caixas com altura h

j

são escolhidas e arranjadas para formar camadas de dimensões (L, W, h

j

) (veja figura 3a). Seja λ

ij

o número de caixas do tipo i na camada j (i.e. uma camada com dimensões (L, W, h

j

)) e:

H

j

= { i | h

i

= h

j

, i = 1, ... , m }

Se h

k

= h

j

, k j, então a camada k pode ser desconsiderada. Seja V

j

definido como:

V

j

v

i ij

i Hj

=

max λ (15)

s.a.: ( λ λ

1j, 2j

,..., λ

mj

) corresponde a um padrão de carregamento bidimensional, onde

retângulos (l

i

, w

i

), i ∈ H

j

são escolhidos e arranjados em (L, W) (16)

(8)

3.2. Etapa 2

Na segunda etapa, camadas j com valor V

j

são escolhidas e empilhadas ao longo da altura H do contêiner (figura 3b). Seja µ

j

o número de vezes que a camada j é utilizada. O seguinte problema da mochila deve ser resolvido:

max V

j j

j 1

m

µ

=

(17)

s a . .: h

j j

H

j 1

m

µ ≤

=

(18)

com: µ

j

0 e int eiro , j = 1, ..., m (19) O valor da variável a

i

em (3)-(4) é finalmente obtido por:

a

i ij j

, i 1, ..., m

j 1 m

= =

=

λ µ

Este procedimento generaliza o método de Gilmore e Gomory (1965) proposto para problemas bidimensionais com padrões de corte em 2-estágios. Cada problema bidimensional (15)-(16) da primeira etapa ainda pode ser resolvido heuristicamente por meio da solução de um conjunto de problemas da mochila (Gilmore e Gomory, 1965), e assim, as duas etapas envolvem apenas problemas unidimensionais. Na seção a seguir apresentamos uma outra maneira de generalizar o método de Gilmore e Gomory.

4. Carregamento em pilhas

Outro procedimento em duas etapas, similar ao procedimento da seção 3, pode ser definido para resolver (3)-(4). Na primeira etapa, pilhas com altura máxima H do contêiner são formadas empilhando-se caixas, uma sobre a outra (i.e. vários problemas da mochila unidimensionais são resolvidos) e na segunda etapa, estas pilhas são escolhidas para serem arranjadas sobre a base (L,W) do contêiner (i.e. um problema de carregamento bidimensional é resolvido). Os padrões de carregamento obtidos em geral são estáveis.

4.1. Etapa 1

Admita sem perda de generalidade que l

1

l

2

≤ ... ≤ l

m

. Na primeira etapa, pilhas de dimensões (l

j

, w

k

,, H) são formadas com caixas (l

i

, w

i

, h

i

), i ∈ LW

jk

, empilhadas uma sobre a outra, onde:

LW

jk

= { i | l

i

l

j

e w

i

w

k

, i = 1, ..., m }, j = 1, ..., m, k = 1, ..., j (20)

(9)

Note em (20) que não precisamos considerar LW

jk

, k>j, uma vez que: (a) as caixas do tipo i, i>j, não cabem na pilha (l

j

, w

k

,, H) quando l

i

> l

j

, e (b) tal pilha não deixa de ser considerada em (20) quando l

i

= l

j

.

No caso de resultarem pilhas com mesmas dimensões, apenas uma pilha é considerada. Por exemplo, se w

k

= w

j

, k < j, então a pilha (l

j

, w

k

, H) pode ser desconsiderada, uma vez que ela é igual à pilha (l

j

, w

j

, H). Se o número de pilhas ainda for muito grande, podemos reduzí-lo, sob pena de perder soluções melhores, ao considerar apenas as m pilhas (l

j

, w

j

, H), j = 1, ..., m (conforme figura 4a).

Seja λ

ijk

o número de caixas do tipo i na pilha jk (i.e. uma pilha com dimensões (l

j

, w

k

, H)). Definimos V

jk

como:

V

jk

v

i ijk

i LWjk

=

max λ (21)

s a . .: h

i ijk

H

i LWjk

λ

(22)

com : λ

ijk

≥ 0 e int eiro , i = 1, ..., m (23) 4.2. Etapa 2

Na segunda etapa, pilhas jk com valor V

jk

são escolhidas e arranjadas sobre a base (L,W) do contêiner (figura 4b). Seja µ

jk

denotando o número de vezes que a pilha jk é utilizada neste arranjo. O seguinte problema bidimensional deve ser resolvido:

max V

jk jk

k 1 j

j 1 m

µ

=

=

(24)

s.a.: ( µ

jk

, j=1, ..., m, k=1, ..., j) corresponde a um padrão de carregamento bidimensional, onde os retângulos (l

j

, w

k

), j=1, ..., m,

k=1, ..., j são escolhidos e arranjados em (L, W) (25)

O valor da variável a

i

em (3)-(4) é finalmente obtido por:

a

i ijk jk

, i 1, ..., m

k 1 j

j 1

=

m

=

=

=

λ µ

Note que tanto o carregamento em camadas (15)-(19) quanto o carregamento em

pilhas (21)-(25) são métodos heurísticos para o problema irrestrito (3)-(4), e que ambos

envolvem resolver problemas unidimensionais e bidimensionais. Se os problemas

(10)

bidimensionais forem aproximados por um conjunto de problemas unidimensionais (Gilmore e Gomory, 1965), então os dois métodos envolvem resolver apenas problemas da mochila.

Convém salientar que, para estender o carregamento em pilhas para resolver o problema restrito (5)-(7), precisamos incorporar no modelo (21)-(25) as restrições não- lineares:

λ µ

ijk jk i k 1

j

j 1 m

b , i 1, ..., m

≤ =

=

=

(26)

e isto dificulta significativamente a aplicação do procedimento em duas etapas (similarmente para o carregamento em camadas (15)-(19)).

5. Programação dinâmica

Beasley (1985a) propôs uma fórmula recursiva de programação dinâmica para o problema bidimensional com cortes guilhotinados (um corte é guilhotinado se, ao ser realizado sobre um retângulo, produz dois retângulos). Esta fórmula pode ser estendida para resolver o problema (3)-(4) ao impormos artificialmente a restrição de cortes guilhotinados (ao ser produzido sobre o paralelepípedo, o corte guilhotinado produz dois paralelepípedos). A solução obtida não tem garantia de estabilidade (veja p.e. as figuras 8a e 8b). Note também que, mesmo que a solução seja estável, ela não tem garantia de otimalidade, uma vez que o carregamento ótimo para o problema (3)-(4) pode ser não guilhotinado.

Seja F(x,y,z) o valor do melhor carregamento tridimensional (guilhotinado) para um paralelepípedo de dimensões (x,y,z), dado por (para maiores detalhes veja Beasley, 1985a):

F(x,y,z) = max{H(x,y,z); (27)

F(x

1

,y,z) + F(x x

1

x

, y, z), x

1

X, 0 < x

1

x-1; (28) F(x,y

1

,z) + F(x,y y

1

y

, z), y

1

Y, 0 < y

1

y-1; (29) F(x,y,z

1

) + F(x,y,z z

1

z

, y, z), z

1

Z, 0 < z

1

z-1} (30) x ∈ X {L}, y Y {W}, z Z {H} (31) onde

H(x, y,z) max v x l y

w z h

i 1,...,m i

i i i

= 

  

  

  

  

  

 

 

 

=

 (32)

  x

x

max{x | x =

1 1

x, x

1

X } (33)

(11)

  y

y

max{y | y =

1 1

y, y

1

Y } (34)   z max{z | z

z

=

1 1

z, z

1

Z } (35) e X, Y e Z são definidos conforme (8)-(10) na seção 2.

Note que F(L,W,H) requer memória computacional de O(|X| |Y| |Z|), o que nos casos práticos dificulta sua computação. Uma maneira de reduzir o esforço da computação de F(L,W,H) sob pena de perder a otimalidade é utilizar a heurística H4 descrita na seção 6.4.3, que reduz os conjuntos X, Y e Z. Esta abordagem, no entanto, possui uma deficiência em relação à abordagem da próxima seção, conforme mostrado em Morábito e Arenales (1995).

A fórmula recursiva (27)-(31) pode ser estendida para tratar o problema restrito (5)-(7) definindo-se F(x,y,z,c) de maneira similar à F(x,y,z), onde c denota qualquer elemento do conjunto C = {(c

1

, c

2

, ..., c

m

) | 0 c

i

b

i

e inteiro, i = 1, ..., m} que permita produzir um padrão factível para o paralelepípedo (x,y,z) (veja Christofides e Hadjiconstantinou, 1995). Entretanto, devido ao número exponencial de elementos deste conjunto, o cálculo de F(L,W,H, C) torna-se inviável computacionalmente. A heurística H3 (seção 6.4.3) reduz a busca a um pequeno subconjunto de C.

6. Abordagem em grafo-E/OU

Um grafo G = (V, E) consiste de um conjunto finito e não vazio V = {1, 2, ..., r } e um conjunto E = {e

1

, e

2

, ..., e

s

} cujos elementos são subconjuntos de V de tamanho 2, isto é, e

u

= (i, j), onde i, j V. Os elementos de V são chamados vértices (ou nós), e os elementos de E são chamados arestas (ou arcos).

Uma maneira de generalizar um grafo é permitir arcos em E de qualquer tamanho; por exemplo, um arco e

u

= (i, j, k) onde i, j, k V. Para esta generalização, G

= (V, E) é chamado hipergrafo. Uma outra maneira de generalizar um grafo é definir os arcos como pares e

u

= (i, V

u

), onde i ∈ V e V

u

V; por exemplo, um arco e

u

= (i, {j, k}) onde i ∈ V e {j, k} ⊂ V. Se V

u

tem cardinalidade maior do que 1, então e

u

é chamado de arco-E e G de grafo-E/OU (caso especial de um hipergrafo orientado). Note que um arco de um grafo define uma relação entre dois nós, um arco de um hipergrafo define uma relação entre um subconjunto de nós, e um arco de um grafo-E/OU define uma relação entre um nó e um subconjunto de nós. Para maiores detalhes de grafos, hipergrafos, e grafos-E/OU, veja por exemplo Berge (1973) e Pearl (1984).

A seguir definimos um grafo-E/OU particular para representar todos os possíveis

padrões de carregamento tridimensional guilhotinados. Ambos os casos irrestrito e

restrito (seção 2) são abordados.

(12)

6.1. Padrão guilhotinado irrestrito

A figura 5a esquematiza uma sequência de cortes guilhotinados feitos sobre o contêiner (L,W,H) (A na figura), para produzir o padrão de carregamento guilhotinado da figura 5b. Primeiro, um corte é feito no comprimento L do contêiner (corte 1 da figura), produzindo duas caixas intermediárias B e C, chamadas sucessoras de A. Em seguida, ambas B e C são cortadas independentemente. A caixa B é cortada na sua altura H (corte 2), produzindo D e E. A caixa C é cortada na sua largura W (corte 3), produzindo F e G.

Note neste exemplo que as caixas B e C são caixas intermediárias e não aparecem na figura, enquanto que as D, E, F e G são supostas caixas (l

i

, w

i

, h

i

), i=1, ..., m, ou caixas que correspondem a espaço não utilizado no padrão.

Definimos o 0-corte como a opção de não cortar uma caixa, ou seja, ao ser aplicado sobre a caixa, deixa-a intacta. Obviamente, outros cortes alternativos poderiam ter sido feitos sobre cada caixa da figura 5, gerando diferentes padrões de carregamento.

Se todas estas alternativas de corte fossem consideradas, incluindo o 0-corte, poderíamos ter gerado todos os padrões guilhotinados irrestritos (note que nenhuma consideração foi feita com respeito às quantidades disponíveis b

i

, i = 1, ..., m). Para cada caixa sucessora, um subproblema similar ao original é obtido (mas com tamanho menor).

As caixas e os cortes ilustrados na figura 5a podem ser representados respectivamente como nós e arcos num grafo-E/OU orientado (i.e. uma árvore-E/OU neste exemplo particular). A caixa (L,W,H) corresponde ao nó inicial e as caixas após o 0-corte, aos nós finais. Cada corte guilhotinado feito sobre um nó não final corresponde a um arco-E ligando o nó aos seus dois sucessores. Além disto, cada 0-corte aplicado sobre um nó não final corresponde a um arco ligando o nó e uma réplica de si mesmo. Note que um nó não final (l,w,h) tal que l < l

0

ou w < w

0

ou h < h

0

aceita apenas o 0-corte --- tal nó representa o espaço vazio no padrão de carregamento, onde l

0

= min{l

i

, i = 1, ..., m}

(similarmente para w

0

e h

0

).

Considere agora a seguinte sequência de arcos (ou cortes): A partir do nó inicial, escolhemos um arco-E (corte guilhotinado) ou o 0-corte e, a partir de cada nó sucessor, escolhemos um arco-E ou o 0-corte, e assim por diante, até que todos os nós sejam finais.

Esta sequência é chamada caminho completo no grafo-E/OU (note que todos os nós finais

do caminho completo são obtidos por 0-cortes). Para cada padrão de carregamento existe

pelo menos um caminho completo no grafo-E/OU cuja sequência de arcos (cortes) resulta

no padrão de carregamento. Se o nó final corresponde a uma caixa do tipo i (i.e. o nó

corresponde a (l

i

, w

i

, h

i

)), então o seu valor é v

i

; caso contrário é nulo. O valor do

caminho completo é definido como a soma dos valores dos seus nós finais. Portanto, o

melhor padrão guilhotinado irrestrito corresponde ao caminho completo mais valioso do

grafo-E/OU descrito.

(13)

6.2. Padrão guilhotinado restrito

Se existe um limite b

i

para o número de caixas do tipo i no padrão e

     

b

i

< L / l

i

W / w

i

H / h

i

, então o problema é restrito (seção 2). Considere um nó N do grafo. Note agora que a decisão de produzir caixas do tipo i a partir de N não é mais independente da decisão de produzir outras caixas do tipo i a partir de outros nós que pertencem ao mesmo caminho que inclue N.

Seja b (N)

i

o máximo número de caixas do tipo i que podem ser produzidas a partir de N. Se N for um nó inicial, então b (N)

i

= b

i

, i=1, ..., m. Seja (N

1

, N

2

) um par de sucessores de N, obtidos por um corte guilhotinado. O seguinte problema deve ser resolvido:

max v a

i

( a )

i 1 m

i 1

i 2

=

+ (37)

s.a.: ( a , a , ..., a

11 21 m1

) é um padrão guilhotinado para N

1

(38) ( a , a , ..., a

12 22 m2

) é um padrão guilhotinado para N

2

(39) ( a

i

a

i

b N

i

( ), i , ..., m )

1 2

+ ≤ = 1 (40)

Não é uma tarefa trivial resolver este problema. Note que se b (N), i

i

= 1, ..., m , for grande o suficiente, a restrição (40) será redundante e o problema (37)-(39) pode ser decomposto em dois problemas independentes para N

1

e N

2

, e voltamos ao caso anterior do problema irrestrito.

Uma estratégia de busca é uma maneira particular de percorrer o grafo-E/OU (ou

enumerar seus nós). Nos casos práticos a enumeração completa dos nós é, em geral,

computacionalmente infactível. Uma maneira de reduzir a busca é evitar os padrões

equivalentes, isto é, padrões diferentes que resultam no mesmo número de peças do tipo

i, i=1, ..., m (figura 6). Na seção 6.3 descrevemos algumas regras para evitá-los e

incluímos regras para garantir a estabilidade do carregamento. A busca também pode ser

reduzida utilizando limitantes para evitar caminhos ruins ou pouco promissores (método

branch-and-bound). Entretanto, mesmo utilizando regras e limitantes, a busca ainda

assim pode ser inviável, e heurísticas precisam ser definidas para reduzí-la. Na seção 6.4

apresentamos limitantes, heurísticas e uma estratégia de busca que, combinados, nos

permite encontrar soluções boas e computacionalmente factíveis para os problemas

guilhotinados irrestrito e restrito.

(14)

6.3. Regras para evitar padrões equivalentes e tentar produzir padrões estáveis

Nesta seção apresentamos resumidamente algumas regras para evitar os padrões equivalentes. Para maiores detalhes, veja Herz (1972), Christofides e Whitlock (1977) e Morabito e Arenales (1994). No final da seção incluímos regras para tentar garantir que os padrões sejam estáveis.

6.3.1. Padrões normais

Herz (1972) e depois Christofides e Whitlock (1977) mostraram que, sem perda de generalidade, os cortes guilhotinados podem ser reduzidos às combinações lineares não negativas e inteiras dos tamanhos das caixas. Isto é, podemos reduzir os cortes ao longo do comprimento L, da largura W e da altura H do contêiner pelos elementos contidos nos conjuntos de discretização X, Y e Z em (8)-(10). Os padrões obtidos por cortes contidos nestes conjuntos são chamados padrões normais.

6.3.2. Exclusão

Christofides e Whitlock (1977) também mostraram que, sem perda de generalidade, o conjunto X pode ser reduzido definindo para cada nó N o conjunto X(N), considerando os efeitos de exclusão. Admita que N representa uma caixa de tamanho (x, y, z). Note que se uma caixa (l

i

, w

i

, h

i

) é tal que w

i

> y ou h

i

> z, então seu comprimento l

i

pode ser desconsiderado ao gerar X(N) (veja na figura 7 um exemplo com h

i

> z). O conjunto X(N) é definido por:

}

X (N) x | x l ( w y ou h z 0

1 x x l , 0 b

1 1 i i i i i

i 1 m

1 0 i i

=  = > > ⇒ =

 

≤ ≤ − ≤ ≤

=

{ ),

int

α α

α e se

e eiro

(41)

(similarmente para Y(N) e Z(N)).

A fórmula proposta por Christofides e Whitlock (1977) para o problema bidimensional pode ser aqui estendida para gerar os conjuntos X(N), Y(N) e Z(N).

Primeiro, os conjuntos são determinados para o nó inicial e depois, são facilmente

determinados para cada nó N. Admita que l

1

l

2

... l

m

. Para cada combinação dos

comprimentos que somam x

1

, considere a máxima largura. Seja F

i

(x

1

) a menor entre as

(15)

máximas larguras das caixas 1, 2, ..., i cujos comprimentos combinados somam x

1

. Assim,

F

i

(x

1

)= min{F

i-1

(x

1

); max{w

i

; min ρ {F

i-1

(x

1

- ρ l

i

), 1 ≤ ρ ≤ min x l

1

, b

i i

  

 

 

 

 e ρ inteiro}}}, l

i

x

1

L - l

0

F

i

(x

1

)= F

i-1

(x

1

), x

1

< l

i

onde F

0

(x

1

) = , x

1

= 1, 2, ..., L - l

0

, e F

i

(0) = 0, i = 0, 1, ..., m (similarmente, seja G

i

(x

1

) a menor das máximas alturas das caixas 1, 2, ..., i cujos comprimentos combinados somam

x

1

).

Se F

i

(x

1

) < e G

i

(x

1

) < , então x

1

= ∑

ij 1=

α

i j

l , 0 ≤ α

j

b

j

e inteiro;

consequentemente, x

1

X(N). Uma vez que F

i

(x

1

) é independente do nó, ela pode ser gerada antes do início da busca. Depois disso, o conjunto X(N) pode ser facilmente obtido usando F

m

(x

1

) e G

m

(x

1

): Se F

m

(x

1

) y e G

m

(x

1

) z, então x

1

X(N). Podemos reescrever X(N) em (41) como:

X(N) = {x

1

| F

m

(x

1

) ≤ y e G

m

(x

1

) z, 1 x

1

x - l

0

} (42) (similarmente para Y(N) e Z(N)).

6.3.3. Simetria e ordenação de cortes

Considere novamente o nó N representando uma caixa de tamanho (x,y,z). Note que para cada corte x

1

∈ X(N), se (x-x

1

) ∈ X(N) então um deles pode ser desconsiderado, uma vez que ambos, ao serem aplicados sobre (x, y, z), produzem as mesmas caixas (x

1

, y, z) e (x-x

1

, y, z). Isto pode ser feito simplesmente substituindo 1 x

1

x - l

0

por 1 ≤ x

1

x 2



 em X(N) (42).

Considere que a caixa (x, y, z) seja cortada em x

1

X(N), produzindo (x

1

,y,z) e (x- x

1

,y,z). Depois disto, considere que (x-x

1

, y,z) seja cortado em x

2

∈ X(N), produzindo (x

2

, y, z) e (x-x

1

-x

2

, y, z). Note que estes três nós também poderiam ter sido produzidos cortando (x,y,z) em x

2

e depois disto, cortando (x-x

2

, x, z) em x

1

. Christofides e Whitlock (1977) observaram que, sem perda de generalidade, esta duplicação pode ser evitada simplesmente introduzindo uma ordem (arbitrária) na sequência dos cortes ao longo de x (similarmente nos cortes ao longo de y e z).

Se o problema for irrestrito conforme (3)-(4), então as regras de simetria e

ordenação de cortes podem ser aplicadas sem perda de generalidade. Se o problema for

(16)

restrito conforme (5)-(7), então estas regras tornam-se heurísticas quando combinadas com a heurística gulosa H3, apresentada na seção 6.4.3 para resolver o problema (37)- (40).

6.3.4. Estabilidade do carregamento

Também é necessário considerar a estabilidade das caixas que são empilhadas. A figura 8a ilustra um carregamento instável devido ao espaço vazio debaixo da caixa 3.

Note que os métodos apresentados nas seções 3 e 4 em geral produzem carregamentos estáveis, por outro lado, o método na seção 5 pode produzir um carregamento como o da figura 8a.

Uma regra heurística adicional pode ser imposta no processo de busca para tentar evitar carregamentos instáveis: (i) Após um corte ao longo da altura, todas as caixas sucessoras só podem ser cortadas ao longo de suas alturas, para garantir que tenhamos camadas (caixas intermediárias) compostas apenas de uma ou várias caixas iguais (veja padrão homogêneo descrito na seção 6.4.1). (ii) Se o carregamento não for estável, permutar estas camadas entre si na tentativa de obter um carregamento estável.

A parte (i) da regra acima evita o carregamento instável da figura 8a, uma vez que após o corte zz', a caixa intermediária que resulta abaixo de zz' não pode sofrer o corte xx' (note na figura que esta caixa corresponde à camada composta de caixas diferentes 1 e 2).

Por outro lado, apenas a parte (i) da regra não evita o carregamento instável da figura 8b (note o espaço vazio debaixo da camada z

2

, composta de duas caixas iguais). Ao aplicar a parte (ii), as camadas z

1

, z

2

e z

3

são permutadas e obtemos um carregamento equivalente estável (figura 8c). Notamos, entretanto, que apesar da regra proposta acina, carregamentos instáveis podem ainda ocorrer, bem como no método de carregamento em pilhas (seção 4).

6.4. Limitantes, heurísticas e estratégia de busca

Considere o nó N representando uma caixa (x, y, z) e seja M(N) = { i | l

i

x, w

i

y, h

i

z, i = 1, ..., m } o conjunto de tipos de caixas que podem ser carregados na caixa do nó N.

6.4.1. Limitantes inferior e superior

Um simples limitante inferior para o nó N pode ser definido a partir de padrões

triviais que utilizam apenas um tipo de caixa (padrões homogêneos):

(17)

L(N) max v min x l

y w

z

h , b (N) v min x

l y w z

h , b (N)

i M(N) i

i i i

i

j

j j j

j

= 

  

  

  

  

  

 

 

 

 



 



= 

 

 

 

 

 

 

 



 



(43)

onde b (N)

j

é definido conforme apresentado na seção 6.2. Note, entretanto, que se b (N)

j

é muito menor do que o produto x l y

w z

j j

h

j

 

 

 

 

 

 

 , o padrão homogêneo conterá muito espaço vazio. Neste caso outros limitantes inferiores, combinando padrões homogêneos, podem ser descritos (veja Morábito e Arenales, 1994, 1996).

Um simples limitante superior para o nó N usado por outros autores (p.e. Beasley, 1985a) também pode ser aqui utilizado. Considere a relaxação do problema (5)-(7) levando em conta apenas a restrição de volume. Temos o seguinte limitante superior:

U(N) max v a

i i

i M(N)

=

(44)

s a . .: (l w h )a xyz

i i i i

i M(N)

(45)

com : 0a

i

b (N)

i

e int eiro , i ∈M (N) (46) Relaxando as condições a

i

b

i

(N) e inteiro em (46), obtemos um limitante superior fácil de ser computado:

U (N) max v x M

l y w

z

h , i (N)

i

i i i

= 

  

  

  

  

  

  ∈

 

 

Apesar de serem simples, os limitantes L(N) e U(N) são efetivos, conforme resultados computacionais em Morabito e Arenales (1994).

6.4.2. Método branch-and-bound

Os limitantes inferior e superior da seção anterior podem ser usados para enumerar implicitamente os nós do grafo. Seja V(N) o melhor valor atual obtido para o nó N. V(N) é dado por um limitante inferior ou por algum caminho completo conhecido a partir do nó N, e é atualizado assim que uma solução melhor for obtida por meio dos sucessores de N. Por exemplo, se V(N) < L(N

1

) + L(N

2

), onde (N

1

, N

2

) é um par de sucessores de N, então V(N) é atualizado para L(N

1

) + L(N

2

).

Além disso, se V(N) ≥ U(N

1

) + U(N

2

), então N

1

e N

2

não precisam ser

explicitamente considerados. Note que se V(N) = U(N), então V(N) fornece o melhor

(18)

valor para o nó N. Estas observações caracterizam um método branch-and-bound onde a ramificação foi definida nas seções 6.1-6.3. Existem várias estratégias para percorrer o grafo-E/OU, isto é, diferentes maneiras para escolher um nó a ser ramificado. Antes de descrever uma estratégia de busca, discutimos outras heurísticas para descartar caminhos não promissores durante a busca.

6.4.3. Heurísticas

Três heurísticas apresentadas em Morábito e Arenales (1994), além de uma heurística devida a Beasley (1985a), podem ser utilizadas para reduzir o espaço de busca.

Heurística H

1

Considere o nó N e um par de sucessores (N

1

, N

2

), e seja λ

1

uma fração previamente definida. A heurística H

1

pode ser definida como:

Se (1 + λ

1

) V(N) ≥ U(N

1

) + U(N

2

)

Então: Abandone a ramificação que leva a N

1

e N

2

. Note que se λ

1

= 0, o procedimento acima deixa de ser heurístico.

Heurística H

2

Seja λ

2

uma outra fração previamente definida. A heurística H2 é definida como:

Se λ

2

L(N) ≥ L(N

1

) + L(N

2

)

Então: Abandone a ramificação que leva a N

1

e N

2

. Note que se λ

2

= 0, o procedimento acima deixa de ser heurístico.

Heurística H

3

Esta é uma heurística gulosa para tratar o problema (37)-(40). Inicialmente consideramos o nó N

1

com o limite b

i

(N), i=1, ..., m e, após determinar um padrão de carregamento para a caixa representada por N

1

, consideramos o nó N

2

com o limite b

i

(N) -

a , i

i

1

= 1,...,m, onde a

i

1

é a quantidade de caixas do tipo i utilizadas em N

1

. Observe que

as regras de simetria e ordenação de cortes (seção 6.3.3), em conjunto com H3, tornam-se

uma nova heurística, dado que a ordem em que os nós são percorridos agora é relevante

para se obter uma solução.

(19)

Heurística H

4

Seja M um limite para o número de elementos a ser considerado do conjunto X em (8).

Beasley (1985a) propôs um simples procedimento para garantir que esse número seja menor ou igual a M (similarmente para Y e Z). Este procedimento também pode ser aplicado para o problema restrito determinando X conforme (42).

6.5. Estratégia de busca

Uma estratégia de busca híbrida pode ser utilizada para percorrer o grafo-E/OU, que combina duas estratégias básicas: back-tracking (BT) e hill-climbing (HC) (Morábito et al, 1992; Morábito e Arenales, 1994). Seja DB um inteiro positivo denotando o limite de profundidade para a estratégia BT. Por simplicidade, o algoritmo descrito a seguir foi implementado como uma busca em árvore-E/OU:

Algoritmo BT-HC

1. Defina DB para cada árvore-E/OU a ser gerada. Seja RAIZ uma lista que inicialmente contém apenas o nó inicial.

2. Enquanto RAIZ não for vazia, faça:

3. Seja s o primeiro nó de RAIZ. Gere uma árvore-E/OU a partir do nó raiz s, utilizando a estratégia BT. Retire s de RAIZ.

4. Escolha o caminho mais valioso a partir de s e descarte os demais (estratégia HC). Se houverem nós neste caminho que não sejam finais e cuja profundidade seja DB, então inclua-os em RAIZ.

No passo 3 a geração dos sucessores de s deve considerar as regras discutidas na seção 6.3, o método branch-and-bound da seção 6.4.2 e eventualmente as heurísticas discutidas na seção 6.4.3. No passo 4 cada caminho escolhido a partir de s corresponde a um trecho (com profundidade no máximo igual a DB) do caminho completo desde o nó inicial até os nós finais. Observe que a estratégia HC, baseada em otimização local em cada trecho, não garante encontrar o caminho mais valioso (i.e. o padrão de carregamento ótimo para os problemas (3)-(4) ou (5)-(7)).

Note que o algoritmo BT-HC não requer grande quantidade de memória computacional, dado que ele armazena apenas o melhor caminho percorrido até então.

Por outro lado, abordagens baseadas em programação dinâmica, como a da seção 5,

requerem memória computacional de O(|X| |Y| |Z|) (veja também Gilmore e Gomory,

1965).

(20)

7. Resultados computacionais

Os três métodos descritos nas seções 3 (carregamento em camadas), 4 (carregamento em pilhas) e 6 (abordagem em grafo-E/OU) foram implementados em linguagem Pascal (compilador Turbo-Pascal v5.5) num microcomputador PC-486DX2 (relógio de 66 Mherz, 640 Kbytes RAM, DOS 5.0). Para resolver os problemas unidimensionais (problemas da mochila) e bidimensionais envolvidos nos dois primeiros métodos, utilizamos respectivamente o algoritmo de busca em profundidade primeiro proposto em Gilmore e Gomory (1963) e o algoritmo BT-HC conforme Morábito et al (1992). Outros algoritmos poderiam ter sido escolhidos.

A título de ilustração, escolhemos um exemplo real introduzido por George e Robinson (1980) referente ao carregamento de um contêiner numa companhia da Nova Zelândia. A tabela 1 apresenta os dados da carga composta de 784 caixas (com volume 26,325 m

3

) de m=8 tamanhos diferentes, que deve ser carregada num contêiner de tamanho (L,W,H) = (5793, 2236, 2261) milímetros (com volume 29,287 m

3

). Por conveniência, consideramos que cada caixa do tipo i, i = 1, ..., m, tem valor v

i

= (l

i

w

i

h

i

)/(L W H). O carregamento deve ser estável e cada caixa pode ser arranjada sobre qualquer uma de suas seis faces dentro do contêiner (i.e. nenhuma orientação é fixada).

i l

i

w

i

h

i

b

i

1 785 139 273 400

2 901 185 195 160

3 901 195 265 40

4 1477 135 195 40

5 614 480 185 8

6 400 400 135 16

7 264 400 400 80

8 385 365 290 40

784 caixas

Tabela 1 - Dados do exemplo de George e Robinson (1980)

A melhor solução obtida pela heurística proposta por George e Robinson (1980) carregou 783 caixas (com valor 0,8974 e volume 26,283 m

3

), deixando apenas uma caixa do tipo 7 para fora do contêiner (i.e. 0,0422 m

3

).

Ao relaxarmos as quantidades disponíveis b

i

da tabela 1, obtemos um problema

irrestrito. Resolvendo-se este problema por meio dos métodos de carregamento em

camadas ou carregamento em pilhas, as soluções obtidas não satisfazem as restrições a

i

b

i

, i = 1 , ..., m, e portanto, são infactíveis para o problema original. Por exemplo, ao

fixarmos uma orientação para as caixas, o valor da solução do modelo (15)-(19)

(carregamento em camadas) é 0,9597 (obtido em menos de 1 segundo), e do modelo (21)-

(25) (carregamento em pilhas) é 0,9655 (obtido em 96 segundos). Entretanto, estas

(21)

soluções são infactíveis pois, envolvem mais de 40 caixas do tipo 8 (e portanto violam as restrições (26)).

Fixando uma orientação para carregar as caixas

Mesmo fixando uma orientação para as caixas, os conjuntos de discretização X, Y e Z em (8)-(10) resultam extremamente grandes (i.e., |X| = 2655, |Y| = 1316 e |Z| = 1128, incluindo o elemento 0). Isto desencoraja qualquer tentativa de resolver otimamente o modelo (11)-(14), com ordem de bilhões de variáveis. Uma alternativa então é utilizar a abordagem em grafo-E/OU para o caso restrito (algoritmo BT-HC da seção 6), com a regra de estabilidade do carregamento da seção 6.3.4.

A tabela 2 apresenta as soluções obtidas para diferentes valores de M (heurística H4) e do limite de profundidade DB (veja algoritmo BT-HC). Conforme indicam as colunas da tabela 2, estas soluções foram obtidas aplicando-se a heurística gulosa H3, porém desconsiderando as heurísticas H1 (i.e., λ

1

= 0), H2 ( λ

2

=0), e as regras de simetria e ordenação de cortes (seção 6.3.3).

M DB Heur.

H3

λ

1

λ

2

Simetria e ordenação

Valor da Solução

Número de caixas

Tempo (seg)

Número de nós

10 3 Sim 0 0 Não 0,8097 709 1 4.065

20 3 Sim 0 0 Não 0,8907 778 23 85.277

50 3 Sim 0 0 Não 0,8840 776 733 2.736.123

20 2 Sim 0 0 Não 0,8533 748 2 6.471

20 4 Sim 0 0 Não 0,8927 778 299 1.260.813

Tabela 2 - Soluções do exemplo de George e Robinson (1980) com orientação fixada Note que ao fixarmos a orientação das caixas, nenhuma solução foi superior à solução obtida por George e Robinson (1980). Note também que, a medida que aumentamos os valores de M e DB, esperamos encontrar uma solução melhor. No entanto, devido à presença das outras heurísticas envolvidas, não temos garantia de que esta solução será de fato melhor (compare p.e. a segunda e terceira linhas da tabela 2, com M=20 e M=50, respectivamente).

Carregando as caixas sobre qualquer uma de suas faces

Ao considerarmos o problema sem nenhuma orientação para carregar as caixas,

devemos fazer algumas adaptações nas regras e expressões descritas nas seções

anteriores, como por exemplo redefinir os conjuntos X, Y e Z da seção 6.3.2 e os

limitantes inferior e superior da seção 6.4.1. A tabela 3 apresenta as soluções obtidas

com a abordagem em grafo-E/OU ao carregarmos as caixas sobre qualquer uma de suas

faces dentro do contêiner.

Referências

Documentos relacionados

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

17 CORTE IDH. Caso Castañeda Gutman vs.. restrição ao lançamento de uma candidatura a cargo político pode demandar o enfrentamento de temas de ordem histórica, social e política

A tabela a seguir resume as frequências em que os pacientes apresentaram pelo menos uma reação adversa não solicitada, foi registrada dentro de 28 dias após a vacinação de

A maioria dos casos de doença está associada a ambientes sujeitos a intervenção humana onde temperatura da água é superior, alterando a concentração quer das bactérias quer dos

Janeiro para o Espírito Santo e depois para Santa Catarina, buscando novos negócios, foi outro fator de diferenciação entre Victorino e muitos dos outros

2006 investigando a composição químicas de farinha de sementes de abóbora obtidas em diferentes temperaturas de secagem 60 e 70 °C, constataram que o aumento da temperatura de

Dessa maneira relacionamos este fato com a teoria de jogos de Nobert Elias, pois nesta cadeia de interdependência se revela a quebra de um acordo, onde os

PROMOÇÃO DA SAÚDE ESCOLAR NA ULSM -ORGANIZAÇÃO USP Gestão local do PNSE - Equipa multidisciplinar (3 Enfermeiros Especialistas em Enfermagem Comunitária) Equipas