A LGORITMO DE G EORGE & R OBINSON
Algoritmo 12: George & Robinson
Entradas: Um conjunto de caixas disponíveis para serem empacotadas dentro do contêiner, com tipos, dimensões e quantidades conhecidos.
Saídas: Um conjunto de caixas empacotadas dentro do contêiner, com posições e orientações determinadas.
1. Aplique o Algoritmo Seleciona 1.
2. enquanto sobrar alguma caixa e algum espaço faça
3. se algum tipo de caixa não fechado couber no espaço selecionado então
4. Aplique o Algoritmo Dimensões. 5. Aplique o Algoritmo Cria Espaços. 6. fim se
7. Aplique o Algoritmo Novo Espaço. 8. se for uma nova camada então
9. Aplique o Algoritmo Seleciona 1.
10. se não for possível inserir uma nova camada então
11. Aplique o Algoritmo Seleciona 2. 12. fim se
13. se não
14. Aplique o Algoritmo Seleciona 2. 15. fim se
16. fim enquanto
A seguir é apresentado um exemplo didático que ilustra a execução deste algoritmo. Neste exemplo, apresentado no artigo original de George e Robinson (1980), o único contêiner possui dimensões “úteis” ( , , ) (5793,2236,2261)L W H , e há 8 tipos de caixas disponíveis, totalizando 784 caixas. A Tabela 38 apresenta as dimensões de comprimento, largura e altura, bem como as quantidades disponíveis e prioridades para cada tipo de caixa para o exemplo de George e Robinson (1980).
Tabela 38. Tipos, dimensões, quantidades e prioridades das caixas do exemplo de George e Robinson (1980). Tipo
Dimensão
Quant.
Prioridade Comp. Larg. Alt. 1 2 3 1 785 139 273 400 5 1 3 2 901 185 195 160 4 2 2 3 901 195 265 40 3 4 2 4 1477 135 195 40 6 4 1 5 614 480 185 8 4 6 4 6 400 400 135 16 6 5 5 7 264 400 400 80 2 3 5 8 385 365 290 40 1 4 6
A Figura 54 ilustra estes 8 tipos de caixas. Nas Figuras 55 a 74, as imagens a esquerda ilustram o contêiner visto da perspectiva do fundo para frente (onde está a porta), enquanto as imagens a direita ilustram o contêiner visto da perspectiva do alto. Estas figuras
também apresentam uma pequena tabela contendo, para cada tipo de caixa, a quantidade disponível, a quantidade empacotada e o status ao término do preenchimento de cada camada. As camadas são ilustradas na parte lateral das imagens a direita por setas na cor vermelha e, quando relevante, a largura flexível é indicada na parte superior desta mesma imagem por uma seta na cor azul.
Figura 54. Os 8 tipos de caixas presentes no exemplo de George e Robinson (1980).
(Figura 55) No início do algoritmo todos os tipos tem status “não aberto”. Para iniciar a primeira camada do contêiner é selecionado e aberto o tipo i8, pois é o tipo (dentre os não abertos) com maior prioridade (maior das menores dimensões, i.e., h8 290).
A maior dimensão deste tipo (i.e., l8 385) define o comprimento da primeira camada. Como o número de caixas disponível é suficiente para preencher ao menos uma coluna completa usando qualquer uma das duas dimensões restantes, uma combinação de w8 365 permite
mínima perda ao longo da altura do espaço. Como o número de colunas não excede a largura flexível neste momento (+inf), são empacotadas tantas colunas completas quanto possível (i.e., 6 colunas, 36 caixas).
(Figura 56) Para os espaços que sobraram na primera camada, é selecionado e aberto o tipo i2, pois é o tipo (dentre os não abertos e os abertos) que melhor preenche o comprimento do espaço a partir de uma combinação de uma de suas dimensões (i.e.,
2 185
w ). Como uma das duas dimensões restantes (i.e., l2 901) não é possível ao longo da largura do espaço, as caixas são ajustadas como possível. Como o número de colunas não excede a largura flexível neste momento (+inf), são empacotadas tantas colunas completas quanto possível (i.e., 4 colunas, 8 caixas).
Em seguida é selecionado o tipo i8, pois é o tipo (dentre os não abertos e os abertos) que melhor preenche a área da base do espaço. Como o número de colunas não excede a largura flexível neste momento (+inf), são empacotadas tantas colunas completas quanto possível (i.e., 1 coluna, 1 caixa).
Figura 56. Após terminar o preenchimento da primeira camada.
(Figura 57) Como não é possível incluir mais nenhuma caixa na primeira camada, é selecionado o tipo i8 para iniciar a segunda camada do contêiner, pois é o tipo (dentre os abertos) com maior prioridade (maior das menores dimensões, i.e., h8 290). A
maior dimensão deste tipo (i.e., l8 385) define o comprimento da segunda camada. Como o
número de caixas disponível não é suficiente para preencher ao menos uma coluna completa usando qualquer uma das duas dimensões restantes, a maior dimensão (i.e., w8 365) é
posicionada ao longo da largura do espaço, e é empacotada a quantidade completa (3 caixas), com o que o tipo é fechado.
Figura 57. Após iniciar o preenchimento da segunda camada.
(Figura 58) Para os espaços que sobraram na segunda camada, é selecionado e aberto o tipo i1, pois é o tipo (dentre os não abertos e os abertos) que melhor preenche o comprimento do espaço a partir de uma combinação de uma de suas dimensões (i.e.,
1 273
h ). Como uma das duas dimensões restantes (i.e., l1 785) não é possível ao longo da
largura do espaço, as caixas são ajustadas como possível. Como o número de colunas não excede a largura flexível neste momento (+inf), são empacotadas tantas colunas completas quanto possível (i.e., 2 colunas, 2 caixas).
Em seguida é selecionado o tipo i2, pois é o tipo (dentre os não abertos e os abertos) que melhor preenche o comprimento do espaço a partir de uma combinação de uma de suas dimensões (i.e., w2 185). Como o número de caixas disponível é suficiente para preencher ao menos uma coluna completa usando qualquer uma das duas dimensões restantes, uma combinação de h2 195 permite mínima perda ao longo da altura do espaço. Como o
número de colunas excede a largura flexível neste momento (i.e., 1375), é empacotado um conjunto de colunas completas que ultrapassa minimamente este valor de largura flexível (i.e., 4 colunas, 44 caixas).
Figura 58. Após terminar o preenchimento da segunda camada.
(Figura 59) Como não é possível incluir mais nenhuma caixa na segunda camada, é selecionado o tipo i2 para iniciar a terceira camada do contêiner, pois é o tipo (dentre os abertos) com maior prioridade (maior das menores dimensões, i.e., w2 185). A
maior dimensão deste tipo (i.e., l2 901) define o comprimento da terceira camada. Como o
número de caixas disponível é suficiente para preencher ao menos uma coluna completa usando qualquer uma das duas dimensões restantes, uma combinação de w2 185 permite mínima perda ao longo da altura do espaço. Como o número de colunas excede a largura flexível neste momento (i.e., 365), é empacotado um conjunto de colunas completas que ultrapassa minimamente este valor de largura flexível (i.e., 2 colunas, 24 caixas).