• Nenhum resultado encontrado

George & Robinson

No documento I NTEGRADOS DE R (páginas 196-200)

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 i8, 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 i2, 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 i8, 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 i8 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 i1, 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 i2, 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 i2 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).

No documento I NTEGRADOS DE R (páginas 196-200)

Documentos relacionados