• Nenhum resultado encontrado

UM ALGORITMO GENÉTICO PARA O PROBLEMA DE CARREGAMENTO DE CONTAINER

N/A
N/A
Protected

Academic year: 2021

Share "UM ALGORITMO GENÉTICO PARA O PROBLEMA DE CARREGAMENTO DE CONTAINER"

Copied!
12
0
0

Texto

(1)

UM ALGORITMO GENÉTICO PARA O PROBLEMA DE CARREGAMENTO DE CONTAINER

Lúcio Lopes Rodrigues Neto

Universidade Federal do Rio de Janeiro – UFRJ/ COPPE lucio.lopes@bol.com.br

Amit Bhaya

Universidade Federal do Rio de Janeiro – UFRJ/ COPPE/ NACAD amit@nacad.ufrj.br

Eugenius Kaszkurewicz

Universidade Federal do Rio de Janeiro – UFRJ/ COPPE/ NACAD eugenius@nacad.ufrj.br

Resumo

Este trabalho apresenta uma solução para o problema de carregamento de container através de algoritmo genético, utilizando algumas características reais e adaptadas do processo de carregamento e dos dados das cargas de uma empresa de produto eletrônico. O algoritmo desenvolvido propõe dois modelos de carregamento (preenchimento do container), unificando duas propostas feitas anteriormente na literatura. São realizados testes com os dois modelos de carregamento com diferentes configurações de cargas disponíveis, que colaboram para as conclusões apresentadas no trabalho.

Palavras-Chaves: Algoritmo Genético, Carregamento de Container.

Abstract

This work presents a genetic algorithm to find a solution to the container loading problem, using some real features of a container loading problem as well as real cargo data from an electronics factory. Two loading models are proposed and used in the algorithm that is developed. This permits the unification of two earlier proposals in the literature. Tests are performed with different available cargo data, confirming conclusions that are presented in this work.

Key words: Genetic Algorithms, Container Loading.

Agradecimentos: Os autores gostariam de agradecer o trabalho minucioso realizado pelo revisor do manuscrito: suas sugestões contribuíram significativamente para a melhoria do mesmo. Este trabalho contou com o apoio da SUFRAMA, que financiou o mestrado do primeiro autor, bem como CAPES, CNPq e FAPERJ que apóiam a pesquisa do segundo e terceiro autor.

1 Introdução

O carregamento de containers é um problema clássico em pesquisas de otimização, cujo objetivo, em geral, é determinar uma configuração de carga tal que o volume utilizado em relação ao volume total disponível do container seja maximizado. A melhor utilização do volume disponibilizado pelo container e a menor quantidade de containers utilizados reduz despesas com o transporte de mercadorias, o que reflete no preço dos produtos e nos resultados financeiros das companhias.

Contudo, a solução para esse problema não é trivial. Várias restrições com relação ao empilhamento de cargas, pesos, centro de gravidade, orientação do posicionamento das cargas, valores monetários e outros, dependendo da característica da carga, são fatores que dificultam a determinação de uma solução ótima. A solução do problema não pode ser determinada analiticamente, e, em termos computacionais, é pouco provável que exista um algoritmo de baixa complexidade, com base em uma abordagem matemática e determinística (FAINA, 2000).

A evolução das pesquisas e as restrições peculiares a cada tipo de itens, de operação de carregamento e de transporte, como o tipo de produto, seu formato geométrico e a quantidade de carga, levam a adequações diferenciadas das técnicas de otimização e ao desenvolvimento de heurísticas

(2)

adaptativas a cada problema específico. Neste contexto, o estudo e o emprego de algoritmos genéticos em problemas práticos de otimização, como o de carregamento de container, é cada vez maior.

O trabalho aqui apresentado baseia-se no problema de carregamento de uma empresa fabricante de produtos eletrônicos. O seu processo de carregamento, as dimensões e características de suas caixas e restrições inspiram o problema estudado, que, por sua vez, é simplificado em relação ao problema original da empresa em questão, apresentando como características principais: as caixas, que são objetos tridimensionais regulares e retangulares e possuem uma dimensão vertical de orientação fixa, denominada de altura; apenas um único container é carregado por vez; as restrições de posicionamento são as mesmas para todas as caixas; e existência de um estoque de produtos (caixas).

A configuração de carga a ser determinada deve atender a quatro objetivos: maximização do volume utilizado; do peso da carga; do equilíbrio (centro de gravidade) e do valor monetário associado à carga.

Considerando os objetivos acima, o problema, em questão, deveria ser tratado como um problema de otimização multi-objetivo (DEB, 2001; ESPEJO e GALVÃO, 2004). Contudo, um problema dessa natureza, com quatro objetivos, tornaria a busca por sua solução demasiadamente complexa, uma vez que a determinação numérica da fronteira eficiente é difícil. A interpretação e visualização desta fronteira é uma tarefa não trivial que talvez não fosse facilitar o processo decisório.

Para tanto, optou-se por tratar o problema como um problema de um único objetivo, para o qual, a avaliação das características do padrão de carregamento é feita por uma única função de aptidão, também chamada de aptidão total, que deve ser maximizada. Esta, por sua vez, é construída como combinação convexa dos quatro objetivos descritos acima. Os pesos da combinação convexa são apontados conforme as prioridades definidas pela empresa.

O algoritmo genético deverá apresentar dois tipos de formação de carga, sempre através da formação de camadas de caixas: a primeira, através de um preenchimento que começa horizontalmente e segue-se no espaço vertical disponível, vindo do fundo do container para parte frontal do mesmo; a segunda, através de formação de torres de caixas, onde as mesmas preencherão o espaço disponível da esquerda para a direita do container e de trás para frente.

Em resumo, o algoritmo apresentado neste artigo, embora baseado no artigo HE e CHA (2002), apresenta algumas novidades: considera-se uma variável adicional (valor monetário) na função de aptidão e, além disso, permite-se um novo padrão de carregamento, propício para a formação de torres de caixas. Esta segunda modificação, por sua vez, permite um analogia com o trabalho de BORTFELDT e GEHRING (2001) que propuseram uma outra metodologia para obter um padrão de carregamento baseado na formação de torres estáveis. Mostra-se que nenhum dos dois padrões é sempre superior ao outro: dependendo do problema, um ou outro padrão gerará o melhor resultado, conforme mostrado através de exemplos.

2 Abordagem Clássica e Metaheurística para o Problema de Carregamento de Container Na literatura técnica clássica, existem duas versões do problema do carregamento do container que recebem, respectivamente, as denominações bin packing e knapsack problem (MICHALEWICZ, 1994; RAIDL, 1999). O bin packing é um problema de determinação de configuração de carregamento cujo objetivo é determinar o menor número de containers que possa armazenar todos os itens do carregamento. O knapsack problem, no contexto do problema de carregamento, por sua vez, tem por objetivo encontrar uma configuração de carregamento para um único container tal que o volume utilizado do container seja maximizado, considerando as restrições dimensionais do mesmo. O problema combinando knapsack e bin packing é denominado Multiple Container Packing Problem (MCPP) ou Problema de Empacotamento em Múltiplos Containers (RAIDL, 1999), onde se tem o objetivo múltiplo de maximizar o espaço utilizado e minimizar o número de containers.

Ainda que o referente problema esteja normalmente associado a carregamento de itens tridimensionais regulares (CHIEN e WU, 1998; HOPPER e TURTON, 1997), como é o caso do trabalho aqui apresentado, existem estudos para problemas de utilização de espaço disponível em uma dimensão (CSIRIK et al., 1999) e duas dimensões (HOPPER e TURTON, 1997).

Alguns estudos propõem modelos de programação matemática para o problema do carregamento de containers, outros propõem modelos geométricos e analíticos (MARQUES e

(3)

ARENALES, 2002; LI et al., 2003; FAINA 2000), utilizando diferentes técnicas. CHEN et al. (1995) desenvolveram um modelo analítico para o problema de carregamento de container, utilizando variáveis inteiras e binárias, onde são consideradas caixas retangulares e de tamanhos não uniformes e é previsto um carregamento em diferentes containers de dimensões possivelmente diferentes entre si.

2.1 Formulação Matemática para o Problema de Carregamento de Container

Uma adaptação da formulação matemática apresentada por CHEN et al. (1995) para as características do problema aqui apresentado, ou seja, com um único container para o carregamento e orientação fixa da dimensão vertical da caixa, pode ser descrita abaixo:

i N

i

i i

i q r s

p H W

Min L

=1

Sujeito a

(Evitar sobreposição de caixas no container) k i k, i, , ).

1 ( .

. + ≤ + − ∀ <

+p l q w x c M

xi i xi i xi k ik (01)

k i k, i, , ).

1 ( .

. + ≤ + − ∀ <

+p l q w x d M

xk k xk k xk i ik (02)

k i k, i, , ).

1 ( .

. + ≤ + − ∀ <

+p l q w y a M

yi i yi i yi k ik

(03) k

i k, i, , ).

1 ( .

. + ≤ + − ∀ <

+p l q w y b M

yk k yk k yk i ik

(04) k

i k, i, , ).

1 ( .

.

. + + ≤ + − ∀ <

+p l q w r h z e M

zi i zi i zi i zi k ik (05)

k i k, i, , ).

1 ( .

.

. + + ≤ + − ∀ <

+p l q w r h z f M

zk k zk k zk k zk i ik (06)

M é um número arbitrariamente grande.

(Garantir que o par de caixas avaliados nas equações 01 a 06 está no container) k

i k, i,

1 ∀ <

− +

≥ + + + +

+ ik ik ik ik ik i k

ik b c d e f s s

a (07)

(Garantir que o posicionamento das caixas obedeça às limitações físicas dimensionais do container)

i , ).

1 ( .

. + ≤ + − ∀

+p l q w L s M

xi i xi i xi i (08)

i , ).

1 ( .

. + ≤ + − ∀

+p l q w W s M

yi i yi i yi i

(09) i

, ).

1 ( .

.

. + + ≤ + − ∀

+p l q w r h H s M

zi i zi i zi i zi i (10)

Onde, descrevem-se as variáveis e notações acima:

N – número de caixas disponíveis para carregamento;

si – variável binária, que indica se a caixa foi posicionada no container. Quando isso ocorre, si= 1, caso contrário, si= 0;

(L, W, H) – triplo que indica comprimento, largura e altura do container, respectivamente;

(pi, qi, ri) – triplo que indica comprimento, largura e altura da caixa, respectivamente;

(xi, yi, zi) – triplo que indica a locação da caixa pelo canto inferior esquerdo traseiro;

(lxi, lyi, lzi) – triplo binário que indica para qual eixo o comprimento da caixa está em paralelo.

Como a altura da caixa sempre está em paralelo com a altura do container, tem-se: (lxi, lyi, 0);

(wxi, wyi, wzi) – variável binária que indica para qual eixo a largura da caixa está em paralelo.

Como a altura da caixa sempre está em paralelo com a altura do container, tem-se (wxi, wyi, 0);

(hxi, hyi, hzi) – triplo binário que indica para qual eixo a altura da caixa está em paralelo. Como a altura da caixa sempre estará em paralelo com a altura do container, tem-se: (0, 0, 1);

Para indicar o posicionamento das caixas em relação a outras caixas:

aik – caso seja 1, indica que a caixa i está à esquerda da caixa k;

bik – caso seja 1, indica que a caixa i está à direita da caixa k;

cik – caso seja 1, indica que a caixa i está atrás da caixa k;

dik – caso seja 1, indica que a caixa i está à frente da caixa k;

eik – caso seja 1, indica que a caixa i está abaixo da caixa k;

fik – caso seja 1, indica que a caixa i está acima da caixa k;

(4)

A formulação acima indica a complexidade do problema. De fato, o problema de carregamento de container é classificado como um problema de classe NP-Difícil (Non-deterministic Polynomial-time Difficult) (RODRIGUES, 2000; LITVINENKO et al., 2002). O significado prático desta constatação é que a solução do problema utilizando a formulação acima para um problema de grande porte não seria eficiente (FAINA, 2000), motivo pelo qual abordagens utilizando algoritmos metaheurísticos se justificam para esta classe de problemas.

2.2 Soluções Metaheurísticas Gerais e Algoritmo Genético

Métodos metaheurísticos têm sido cada vez mais utilizados em problemas complexos (NP- difíceis). Metaheurísticas de otimização apresentam como características principais um componente probabilístico e propõem uma heurística geral que independe da natureza do problema específico a ser tratado. Algumas das técnicas classificadas como metaheurística desenvolvidas e utilizadas são:

Algoritmos Genéticos (MICHALEWICZ, 1994; SOUZA, 2002; BAILER-JONES, 2002), Busca Tabu (GLOVER, 1989; GLOVER, 1990; SOUZA, 2002), Simulated Annealing (KIRKPATRICK et al., 1983; SOUZA, 2002; BAILER-JONES, 2002), e Grasp (SOUZA, 2002).

Os algoritmos genéticos estão entre as metaheurísticas mais utilizadas, devido a sua flexibilidade, facilidade de programação, possibilidade de busca de solução em um espaço grande de soluções (HE e CHA, 2002). São baseados na evolução natural da espécie, cuja idéia por trás dos algoritmos genéticos é o de busca de soluções sempre melhores que o subconjunto de soluções atuais.

Nesse contexto, BORTFELDT e GEHRING (2001) propõem em seu trabalho uma solução combinando uma heurística para a formação de torres independentes de caixas regulares com um algoritmo genético cujo objetivo é otimizar a disposição das torres no chão do container. Busca-se uma série de caixas para o carregamento que maximize o valor total das caixas no container.

HE e CHA (2002), por sua vez, desenvolvem um algoritmo genético para solucionar o problema de carregamento de container, cujos objetivos da solução são maximizar o volume de utilização e o peso de utilização do container e minimizar a altura do centro de gravidade, através da determinação de uma seqüência de caixas para o carregamento, resultante da decomposição dos cromossomos, denominada “padrão de carregamento”. As caixas do padrão de carregamento preenchem os subespaços disponíveis de forma sistemática e seqüencial.

Na seção abaixo é descrito o algoritmo genético desenvolvido para o problema de carregamento do container.

3 O Algoritmo Genético Proposto

O algoritmo genético desenvolvido inspirou-se no algoritmo de HE e CHA (2002), adequado às características e ao contexto do problema real, com possibilidade de escolha entre dois métodos de preenchimento, um dos quais se assemelha ao método de preenchimento adotado por HE e CHA (2002) (Lateral, Superior e Frontal, respectivamente) e o outro que se aproxima a uma combinação entre os métodos de preenchimento utilizado por HE e CHA (2002) e por BORTFELDT e GEHRING (2001) (Superior, Lateral e Frontal), através de formação de torres de caixas no preenchimento do container, possibilitada por uma alteração na determinação dos subespaços e na ordem dos preenchimentos da solução originalmente proposta por HE e CHA (2002).

3.1 Objetivos do Algoritmo Desenvolvido

A solução do algoritmo desenvolvido deve atender basicamente quatro objetivos:

1. Maximizar o volume de utilização do container.

2. Maximizar o peso permitido de utilização do container.

3. Maximizar a estabilidade da carga, através da minimização da altura do centro de gravidade.

4. Maximizar o valor monetário final da carga, considerando um limite dado.

O atendimento aos quatro objetivos é feito através da avaliação pela função de aptidão, tratando o problema como um problema de um único objetivo, conforme poderá ser observado.

(5)

3.2 Estrutura de Dados e População Inicial de Cromossomos

A estrutura de dados utilizada no referente trabalho segue o que JAKOBS (1996) propõe: uma representação para um padrão de carregamento (P), determinado a partir de um cromossomo da população, formada por índices de caixas bi: P={b1, b2, b3, ..., bn}, onde i = 1, ..., n são índices das caixas. A seqüência b1, b2,..., bn representa a ordem com que as caixas devem ser posicionadas no container, seguindo as regras de preenchimento previamente definidas.

O cromossomo, que por sua vez irá determinar o padrão de carregamento, é formado por genes que representam os índices das caixas disponíveis para o carregamento.A população inicial de cromossomos, no algoritmo desenvolvido, é determinada de forma aleatória e garantindo que o tamanho dos cromossomos será determinado pelo número de caixas disponibilizadas para o carregamento.

3.3 Função de Aptidão

A avaliação do padrão de carregamento é feita através da função de aptidão total ou somente função de aptidão, que avalia a configuração da carga carregada conforme o volume ocupado, o peso dos produtos carregados, o centro de gravidade e o valor total dos produtos. Essas avaliações específicas são feitas por meio de sub-funções de aptidão.

Cada sub-função de aptidão específica da função de aptidão total possui um peso associado que prioriza os objetivos mais importantes em detrimento a outros objetivos. O objetivo é obter o valor máximo da função de aptidão, descrita abaixo, conforme os carregamentos avaliados.

4 3 2 1

4 3

2 1

k k k k

V k G k W k R k

+ + +

× +

× +

× +

= × ϖ

As sub-funções de aptidão para as restrições são as seguintes:

R – Sub-função de aptidão do volume;

W – Sub-função de aptidão do peso;

G – Sub-função de aptidão do centro de gravidade e

V – Sub-função de aptidão ao máximo valor dos produtos carregados.

Os pesos são determinados por k1, k2, k3 e k4, que estão associados às sub-funções de aptidão do volume (R), do peso (W), do centro de gravidade (G) e do valor da carga (V), respectivamente.

Três sub-funções de aptidão, do volume, do peso e do centro de gravidade, são as mesmas utilizadas por HE e CHA (2002).

Sub-função de Aptidão do Volume (R)

Essa sub-função avalia o padrão de carregamento conforme o volume ocupado em relação ao volume disponibilizado pela carreta, conforme expressão abaixo.

1 ×100

=

= C m

i Bi

R R R

Na expressão, RBi é o volume de cada caixa carregada, onde i determina o índice da caixa, e RC

é o volume disponibilizado pelo container.

Sub-função de Aptidão do Peso (T)

A sub-função de aptidão ao peso (T) avalia o peso total das caixas do padrão de carregamento em relação ao peso máximo permitido pelo container. Considerando que o peso da carga, que é determinado pela somatória dos pesos das caixas do carregamento, não pode ultrapassar o peso máximo permitido do container, a sub-função (T) recebe o valor “0” (zero), quando essa restrição é violada, conforme abaixo:

(6)

×

>

=

∑ ∑

=

=

=

C m

i Bi C

m

i Bi

C m

i Bi

T T T

T

T T T

1 1

1

100 0

TC é o peso máximo suportado pelo container, TBi é o peso da caixa de índice i e m representa o número de caixas da carga.

Sub-função de Aptidão do Centro de Gravidade (G)

O objetivo é que o centro de gravidade seja o mais baixo possível. Para tanto, a avaliação da sub-função é realizada conforme a fórmula abaixo, onde TBi representa o peso da cada caixa carregada, GBi representa o centro de gravidade de cada caixa, conforme índice i, e assume-se que o valor médio da altura da caixa é o seu centro de gravidade, e HC é a altura do container.

Considera-se como ideal um centro de gravidade no centro geométrico do container (metade da altura). Caso o centro de gravidade esteja abaixo do valor médio da altura do container, o valor de G será maior que 100 e, no caso contrário, G assumirá um valor abaixo de 100.

100 /

5 . 1

1

1 ×

×

×

=

=

= m C

i Bi m

i

Bi Bi

C H

T G T H

G

Sub-função de Aptidão do Valor (V)

A somatória dos valores atribuídos a cada caixa deve ser igual ou inferior ao valor máximo previamente determinado. A sub-função de aptidão do valor recebe zero quando o valor total dos produtos carregados for superior ao limite estabelecido, quando essa restrição não é violada, o valor de V é determinado pela relação entre o valor da carga e valor máximo estipulado, conforme abaixo:

⎪⎪

×

>

=

∑ ∑

=

=

=

C m

i Bi C

m

i Bi

C m

i Bi

V V V

V

V V V

1 1

1

100 0

VBi é o valor associado a cada produto e VC é o valor monetário máximo que a carga do container deve possuir.

3.4 Operadores do Algoritmo Genético

A obtenção de nova população de cromossomos, que dará origem a novas configurações de carregamento possíveis, é feita por meio dos operadores de cruzamento, de mutação e de seleção.

Os operadores de cruzamento e de mutação foram desenvolvidos especificamente para a aplicação no algoritmo genético aqui apresentado. Cabe enfatizar que estes operadores, embora se assemelhem aos operadores “clássicos” de cruzamento e mutação, apresentam importantes diferenças impostas pelo problema específico sendo estudado.

Cruzamento

O operador de cruzamento executa o cruzamento de um par de cromossomos (pais) para gerar dois novos cromossomos (filhos) que irão formar uma nova geração e que possuirão os mesmos números de genes dos cromossomos pais. Esses novos cromossomos gerados pelo operador cruzamento contêm informações dos dois cromossomos geradores.

(7)

Os pares de cromossomos para o cruzamento são formados aleatoriamente e a determinação de quais pares farão efetivamente o cruzamento é determinado também de forma aleatória associando a um termo probabilístico pc (probabilidade de cruzamento).

O processo do cruzamento dos pares inicia-se pela determinação da posição (x) do primeiro elemento oriundo de um dos cromossomos pais e do número de genes (y) provenientes desse mesmo cromossomo pai, que a partir do elemento inicial (x), deverá compor um dos novos indivíduos. Os elementos restantes são oriundos do outro cromossomo pai, seguindo a seqüência dos elementos desse cromossomo e não repetindo nenhum elemento que já tenha sido originado do primeiro cromossomo pai, mantendo a mesmas características da estrutura de dados dos cromossomos pai. Os valores de x e y são determinados aleatoriamente como no operador de cruzamento de HE e CHA (2002).

Na figura 1 é apresentado um exemplo do mecanismo utilizado no operador de cruzamento para geração de dois novos cromossomos a partir de um par de pais geradores.

Figura 1 - Exemplo da operação de cruzamento para obtenção de dois novos cromossomos a partir de um par de cromossomos.

Mutação

O operador de mutação gera um novo membro da mesma classe, a partir de uma modificação nos genes do cromossomo original. O processo de mutação de cromossomos se dá através da mudança aleatória das posições dos genes de um cromossomo. Essa mudança aleatória ocorre através da determinação do número aleatório de genes que sofrerão mutação, esse número é associado a um fator de probabilidade fixo pm, sendo 0 ≤ pm ≤ 1, que limita o número de genes que participarão do processo.

Na execução do operador de mutação, é feita a determinação aleatória do número de genes que participarão da mutação (x), em seguida, determinam-se quais os genes que participarão da mutação.

Os genes participantes deverão trocar as posições entre eles.

Na figura 2, é possível verificar um exemplo da execução do processo de mutação, onde o número aleatório de genes (x) é 3.

Figura 2 - Exemplo da operação de mutação que resulta em novo cromossomo pela troca de posição de genes de um cromossomo original.

x = 3 y = 4

1 2 3 4 5 6 7 8 9 10 Pai 1

2 4 6 8 10 1 3 5 7 9 Pai 2

1 2 3 4 5 6 7 8 9 10 Pai 1

2 4 6 8 10 1 3 5 7 9 Pai 2

3 4 5 6 2 8 10 1 7 9 Filho 1

6 8 10 1 2 3 4 5 7 9 Filho 2

1 5 7 3 10 8 4 2 9 6 10 5 7 3 4 8 1 2 9 6

1 5 7

1 5 7

5 7 1

Posição:

Genes Originais:

Cromossomo Original Cromossomo Novo

Mask: Ref:

X = 3

Número de genes do cromossomo que sofrerá

mutação

Genes que sofrerão mutação

Novas posições para os genes:

originalmente nas posições 1, 5 e 7, genes mudarão de posição para, respectivamente, 5, 7 e 1.

(8)

Seleção

O operador de seleção é executado após os dois operadores anteriormente descritos. No processo de seleção é feita uma classificação dos cromossomos novos gerados, a partir do cruzamento e mutação, juntamente com os cromossomos que deram origem aos novos. Essa classificação toma como referência o valor da função de aptidão associado a cada cromossomo. Após isso, seleciona-se os cromossomos para a nova população obedecendo ao seguinte critério: no máximo, 80% do tamanho da população de cromossomos é formada pelos melhores cromossomos, conforme função de aptidão, e o restante é formado pelos piores cromossomos, mantendo-se a característica do processo de evolução.

3.5 Decodificação para Obtenção do Padrão de Carregamento

A decodificação do cromossomo para obtenção da configuração do carregamento é realizada através do preenchimento do espaço do container seguindo a seqüência dos genes dos cromossomos.

O processo decorre de um método sistemático de preenchimento de subespaços, considerando as restrições que as caixas e o container apresentam, como limites dimensionais e de rotação (mudança de orientação), até que todo o espaço do container esteja preenchido ou que não haja mais caixas que possam ocupar o espaço restante.

A decodificação é determinada através de um processo de decomposição de espaços, onde originalmente o espaço disponível é dado pelo volume do container. Seguindo a ordem do cromossomo, verifica-se a primeira caixa que não viola as restrições dimensionais do container, a mesma é selecionada para o carregamento, sendo posicionada no canto inferior esquerdo, que será chamado de origem do container. A caixa selecionada determina uma decomposição do espaço restante do container em três subespaços: lateral, superior e frontal. Os subespaços devem ser preenchidos, conforme a seqüência dos genes, até que todo o espaço esteja preenchido ou que não haja mais caixa que possa atender às restrições dimensionais do espaço restante. A cada seleção de uma nova caixa para o preenchimento, as dimensões dos subespaços devem ser atualizadas.

As figuras 3 e 4 demonstram como os subespaços são determinados.

Conforme mencionado, foram desenvolvidas duas metodologias de preenchimento, que se diferenciam na obtenção dos subespaços e na ordem de preenchimento dos mesmos. Uma delas segue a mesma metodologia utilizada por HE e CHA (2002), cuja ordem de preenchimento é lateral, superior e frontal (figura 3); e a outra aqui apresentada é originada de uma modificação nos subespaços e na ordem de preenchimento dos mesmos, que passa a ser: superior, lateral e frontal (figura 4). Este último apresenta uma restrição quanto ao posicionamento das caixas no subespaço superior, onde as caixas posicionadas acima não podem apresentar dimensões horizontais superiores às dimensões horizontais da caixa posicionada logo abaixo, possibilitando a formação de torres de caixas. Assim, consegue-se unificar duas metodologias de soluções distintas através da mudança da ordem de preenchimento dos subespaços e da modificação de obtenção dos mesmos.

Figura 3 – Decomposição do espaço do container, a partir do posicionamento da primeira caixa, para o preenchimento Lateral, Superior e Frontal, respectivamente.

Figura 4 – Decomposição do espaço do container, a partir do posicionamento da primeira caixa, para o preenchimento Superior, Lateral e Frontal, respectivamente.

W (Largura) H (altura)

L (Comprimento)

Superior

Frontal

Lateral W (Largura)

H (altura)

L (Comprimento)

Frontal Superior

Lateral

(9)

As caixas que foram selecionadas para o preenchimento do container formam o “padrão de carregamento”. É por esse padrão que a configuração será avaliada, através da função de aptidão total.

4 Testes e Resultados

O algoritmo genético desenvolvido foi testado com diferentes dimensões de container e diferentes configurações de caixas disponíveis para o carregamento.

O algoritmo foi desenvolvido em Matlab 5.3 e os testes foram realizados em PC AMD Atlon (2.8 GHz) / 192 MB de memória RAM, com sistema operacional Windows XP Ver. 2002.

Os parâmetros do algoritmo genético foram previamente definidos, tendo sido realizado DOE (Design of Experiment) para determinação de dois dos parâmetros: número de gerações e probabilidade de mutação (pm). Os pesos associados às sub-funções por sua vez foram determinados conforme prioridade definida pela empresa, onde o problema se inspira.

4.1 Teste com 100 Caixas

No primeiro grupo de testes foram realizados testes com 100 caixas, de dimensões similares, extraídas de valores reais de dimensões de aparelhos de áudio, conforme tabela 1.

Tabela 1 - Dados dimensionais, pesos e valores das caixas do teste com 100 caixas de áudio.

Modelo Altura (cm) Compr. (cm) Largura (cm) Volume (cm3) Peso Bruto (kg) Valor (R$) Qtd

A 47.7 46 36 78991.2 14.1 1253 20 B 41.9 56.3 35.8 84451.1 9.6 626 25 C 41.9 56.3 35.8 84451.1 10 704 20 D 41.9 56.3 35.8 84451.1 10.6 791 15 E 41.9 56.3 35.8 84451.1 10.6 1018 10 F 45.6 47.3 38.2 82392.8 13.7 1488 5 G 44.5 44.1 33.5 65742.1 10.7 1096 5

As dimensões do container eram, 1.35m, 5m, 1.08m, respectivamente, altura, comprimento e largura. Tinha como peso máximo de carregamento 18070 kg, e o valor monetário máximo para a carga era de R$ 300000.00. Os principais parâmetros do algoritmo genético eram número de cromossomos por população igual a 100, probabilidade de cruzamento (pc) igual a 0.8, probabilidade de mutação (pm) igual a 0.1 e número de gerações igual a 200. Os pesos associados às sub-funções de aptidão eram: k1 = 7, k2 = 0.5, k3 = 0.5 e k4 = 2.

Resultados dos Testes com 100 Caixas

O teste com 100 caixas para o preenchimento Lateral, Superior e Frontal, apresentou como média e desvio padrão respectivos à função de aptidão total e as sub-funções de aptidão os resultados demonstrados na tabela 2, bem como, o valor máximo para função de aptidão total e os respectivos valores das sub-funções.

Tabela 2 - Média e desvio padrão e melhor resultado dos valores dos testes com 100 caixas da tabela 1 (preenchimento Lateral, Superior e Frontal).

Função de Aptidão - ϖ (%) R (%) T (%) G (%) V (%)

Média 73.40 82.26 8.13 133.77 43.60 Desv.Pad 0.36 0.41 0.08 0.05 0.72

Melhor Resultado 74.34 83.20 8.31 133.70 44.99

Para a mesma configuração de caixas e container foram realizados os testes com o preenchimento seqüencial Superior, Lateral e Frontal, obtendo os resultados apresentados na tabela 3.

(10)

Tabela 3 - Média e desvio padrão e melhor resultado dos valores dos testes com 100 caixas da tabela 1 (preenchimento Superior, Lateral e Frontal).

Função de Aptidão - ϖ (%) R (%) T (%) G (%) V (%)

Média 50.80 55.07 5.09 134.15 26.42 Desv.Pad 0.38 0.70 0.07 0.11 1.05 Melhor Resultado 51.48 56.36 5.04 134.34 25.31

Nota-se nas tabelas 2 e 3 que para o grupo de testes descritos acima, os valores associados ao preenchimento da seqüência Lateral, Superior e Frontal foram superiores ao preenchimento Superior, Lateral e Frontal. A diferença nos resultados é explicada pela combinação de uma série de fatores, como, a diferença na obtenção dos subespaços e, por conseqüência, no preenchimento dos mesmos, bem como as próprias dimensões das caixas e do container, que favoreceram ao preenchimento Lateral, Superior e Frontal, dificultando a formação de torres do outro modelo de preenchimento.

O tempo médio de execução do algoritmo genético nos dois modelos de preenchimento para os testes com 100 caixas e 200 gerações foi de 13.15 minutos.

4.2 Teste com Grupo de 285 Caixas

Um novo grupo de testes foi realizado com 285 caixas, que representavam caixas de diferentes produtos: Áudio, Tvs e DVDs, conforme pode ser observado na tabela 4, onde também podem ser observados os valores associados às caixas e as quantidades respectivas a cada grupo. Para esse grupo de caixas, as dimensões e parâmetros do container são descritos na tabela 5.

Tabela 4 - Dados dimensionais, pesos e valores das caixas do teste com 285 caixas de Áudio, Tv e DVD.

Modelo Altura (cm) Compr. (cm) Largura (cm) Volume (cm3) Peso Bruto (kg) Valor (R$) Qtd

A 18.3 50.0 38.2 34953.00 4.2 548 55 B 15.6 50.0 38.2 29796.00 3.9 508 30 C 69.6 59.3 86.9 358660.63 53.0 1410 68 D 69.6 57.6 89.8 360004.61 82.0 3135 26 E 41.9 56.3 35.8 84451.126 9.6 626 45 F 41.9 56.3 35.8 84451.126 10.6 791 43 G 41.9 56.3 35.8 84451.126 10.6 791 18

Tabela 5 - Dimensões e Parâmetros do Container nos testes com 285 caixas.

Altura (m) Compr. (m) Largura (m) Volume (m3) Peso Bruto Max (Kg) Valor Max (R$) 2.352 5.899 2.388 33.1321818 18070 300000.00

Por sua vez, os parâmetros do algoritmo genético foram: número de cromossomos por população igual a 100; probabilidade de cruzamento (pc) igual a 0.8; probabilidade de mutação (pm) igual a 0.1. Os pesos associados às sub-funções foram respectivamente: k1 = 6, k2 = 1, k3 = 1 e k4 = 2.

Resultados dos Testes com 285 caixas

No modelo de preenchimento Lateral, Superior e Frontal, as médias e desvios padrões das sub-funções e da função de aptidão total são apresentados na tabela 6, bem como, o valor máximo obtido para a função de aptidão total e os valores respectivos a cada sub-função de aptidão.

Tabela 6 - Média e desvio padrão e melhor resultado dos valores dos testes com 285 caixas da tabela 4 (preenchimento Lateral, Superior e Frontal).

Função de Aptidão - ϖ (%) R (%) T (%) G (%) V (%)

Média 66.58 67.57 20.29 136.55 51.77 Desv.Pad 1.92 2.45 0.76 0.11 2.71 Melhor Resultado 69.00 70.19 21.48 136.64 55.42

(11)

Para a mesma configuração de 285 caixas, do container respectivo e mantendo todos os parâmetros do algoritmo genético, foram realizados os testes com o preenchimento na seqüência Superior, Lateral e Frontal. Os resultados são apresentados na tabela 7.

Tabela 7 - Média e desvio padrão e melhor resultado dos valores dos testes com 285 caixas da tabela 4 (preenchimento Superior, Lateral e Frontal).

Função de Aptidão - ϖ (%) R (%) T (%) G (%) V (%)

Média 72.72 74.49 22.26 136.87 60.54 Desv.Pad 0.17 0.07 0.25 0.06 0.68 Melhor Resultado 72.97 74.50 22.46 136.88 61.68

Diferentemente do que aconteceu no teste com 100 caixas, cujas dimensões eram semelhantes entre elas, no teste com 285 caixas, com 7 grupos distintos de dimensões de caixas, o preenchimento cuja seqüência é Superior, Lateral e Frontal apresentou melhores resultados para a função de aptidão total comparando-se ao modelo Lateral, Superior e Frontal. Na tabela 08 é possível observar o resultado do teste estatístico de diferença entre médias, realizado através de um software estatístico SSS_Stat, utilizado para comprovar estatisticamente a diferença entre os resultados dos testes dos modelos de preenchimento.

Tabela 8 - Teste estatístico de diferença entre médias dos testes com 285 caixas entre os preenchimentos Superior, Lateral e Frontal (S-L-F) e Lateral, Superior e Frontal (L-S-F).

S-L-F L-S-F Diff (X1-X2)

Média 72.71586 66.57916 6.1367

Desvio Padrão:n 0.1731391 1.923305811 -1.750166711 Estatística 10.0492559

0.5-% ponto 3.24984285 Valor P 1.7174E-06

Para essa configuração de caixas e de container, combinada a forma de obtenção dos subespaços e a seqüência de preenchimento dos mesmos, o preenchimento Superior, Lateral e Frontal foi favorecido apresentando melhores resultados médios.

O tempo médio de execução do algoritmo genético nos dois modelos de preenchimento para os testes com 285 caixas e 350 gerações foi de 3.55 horas.

5 Conclusões

Como observado, algoritmos genéticos demonstraram ser técnicas eficientes para problemas complexos e com múltiplas restrições, como o problema de carregamento de containers, demonstrando flexibilidade ao se adaptar ao problema específico estudado.

Comparando os dois modelos de preenchimento, o modelo de seqüência Lateral, Superior, Frontal apresentou resultado melhor que o modelo Superior, Lateral, Frontal nos testes com 100 caixas, onde os grupos apresentavam semelhanças nas dimensões das caixas. Entretanto, nos testes com 285 caixas, o modelo de preenchimento Superior, Lateral, Frontal apresentou resultados mais satisfatórios que o modelo Lateral, Superior, Frontal, conforme condições descritas nos comentários dos testes.

Percebe-se, portanto, que o resultado dos dois modelos de preenchimento é influenciado pelas dimensões e pelas quantidades de caixas disponíveis para a formação do padrão de carregamento, bem como pelas dimensões do container. O que leva a concluir que dependendo das características e da quantidade das caixas, um modelo pode ser mais adequado que o outro.

No problema real, onde algumas restrições não são rigorosamente obedecidas e existem algumas características adicionais, a taxa de ocupação do volume estava em 84.5%, e nos testes apresentados neste trabalho chegou-se a 83.20% (para teste de 100 caixas) e 74.05% (para 285 caixas).

Por fim, comprovou-se que dois tipos de padrões de carregamento, oriundos de duas metodologias de soluções distintas, dos autores HE e CHA (2002) e BORTFELDT e GEHRING (2001) respectivamente, puderam ser unificadas fazendo uma alteração no processo de obtenção dos

(12)

subespaços e na ordem de preenchimento dos mesmos, acrescentando uma restrição específica para a seleção de caixas no preenchimento Superior, Lateral e Frontal que permitisse a formação de torres.

6 Referências Bibliográficas

BAILER-JONES, D. M., BAILER-JONES, C. A. L.. “Modelling Data: Analogies in Neural Networks, Simulated Annealing and Genetic Algorithms”. In: Model-Based Reasoning: Science, Technology, Values, L. Magnani and N. Nersessian (eds). New York, Kluwer Academic/ Plenum Publishers, 2002.

BORTFELDT, A., GEHRING, H.. “A Genetic Algorithm for Solving the Container Loading Problem”, European Journal of Operational Research, v. 131, pp. 143-161, 2001.

CHEN, C. S., LEE, S. M., SHEN, Q. S.. “An Analytical Model for the Container Loading Problem”, European Journal of Operational Research, v. 80, pp. 68-76, 1995.

CHIEN, C. F., WU, W. T.. “A Recursive Computational Procedure for Container Loading Problem”, Computers Industry Engineering, v. 35, n. 1-2, pp. 319-322, 1998.

CSIRIK, J., JOHNSON, D. S., KENYON, C., SHOR, P. W., WEBER, R. R.. “A Self Organizing Bin Packing Heuristic”, Algorithm Engineering and Experimentation, pp. 246-265, 1999.

DEB, K.. Multi-Objective Optimization Using Evolutionary Algorithms. 1 ed. Chichester, John Wiley

& Sons, 2001.

ESPEJO, L. G. A., GALVÃO, R. D.. “Uma Aproximação da Fronteira Eficiente para um Problema de Localização Hierárquico de Máxima Cobertura”, Pesquisa Operacional, v. 24, n. 2, pp. 303-321, 2004.

FAINA, L.. “A Global Optimization Algorithm for Three-Dimensional Packing Problem”, European Journal of Operational Research, v. 126, pp. 340-354, 2000.

GLOVER, F.. “Tabu Search, Part I”. ORSA Journal on Computing, v.1, pp. 190-206, 1989.

GLOVER, F.. “Tabu Search, Part II”. ORSA Journal on Computing, v.2, pp. 4-32, 1990.

HE, D. Y., CHA, J. Z.. “Research on Solution to Complex Container Loading Problem Based on Genetic Algorithm”. In: Proceeding of First International Conference on Machine Learning and Cybernetics, v. 1, pp. 78-82, Beijing, November, 2002.

HOPPER, E., TURTON, B.. “Application of Genetic Algorithms to Packing Problems – A Review”, In: Proceedings of the 2nd On-line World Conference on Soft Computing in Engineering Design and Manufacturing, pp. 279-288, London, 1997.

JAKOBS, S.. “On Genetic Algorithms for the Packing of Polygons”, European Journal of Operational Research, v. 88, pp. 165-181, 1996.

KIRKPATRICK, S., GELATT, C. D., VECCHI, M. P.. “Optimisation by Simulated Annealing”, Science, v. 220, pp. 671-680, 1983.

LI, H.-L., TSAI, J.-F., HU, N.-Z.. “A distributed global optimization method for packing problems”.

Journal-of-the-Operational-Research-Society, v. 54, pp. 419-425, 2003.

LITVINENKO, V. I., BURGHER, J. A., et al. ”The Application of the Distributed Genetic Algorithm to the Decision of the Packing in Containers Problem”, In: Proceeding of the 2002 IEEE International Conference on Artificial Intelligence Systems (ICAIS’02), v.1, Divnomorskoe, September, 2002.

MARQUES, F. P., ARENALES, M. N.. “O problema da Mochila Compartimentada e Aplicações”, Pesquisa Operacional, n. 3, v. 22, pp. 285-304, 2002.

MICHALEWICZ, Z.. Genetic Algorithms + Data Structure = Evolution Programs. 2 ed. New York, Springer-Verlag, 1994.

RAIDL, G. R.. “A Weight-Coded Genetic Algorithm for the Multiple Container Packing Problem”. In:

Proceeding of the 14th ACM Symposium on Applied Computing, v. 1, pp. 596-603, San Antonio, July, 1999.

RODRIGUES, R. F.. Complexidade Computacional – NP-Completude. ICE – Departamento da Ciência da Computação, 2000.

SOUZA, M. J. F.. Inteligência Computacional para Otimização. ICEB, Universidade Federal de Ouro Preto, 2002.

Referências

Documentos relacionados

0,00 284, 286 a  289 ‐172,20 Justina Luiza dos Santos ‐ set/19 Forro Energia elétrica UC 6/2538023‐9 DESPESA ‐ SEDE SOCIAL DESPESA ‐ SEDE CAMPESTRE

O pastor Felipe Silva de Oliveira da Terceira Igreja Batista em Jardim Bom Retiro (São Gonçalo/RJ), é convidado para apresentar uma reflexão bíblica baseada na

desenvolvimento de suas carreiras nesse contexto, bem como os fatores que são mais valorizados por eles. Assim, o presente estudo tem como objetivo geral investigar a percepção

O sistema de coordenadas planas é naturalmente usado para a representação da superfície terrestre num plano, ou seja, confunde-se com aquilo que se chama de sistema de coordenadas

Da FRS (nível regional) o discurso se deslocou para os sindicatos (nível municipal) e associações (nível dos assentamentos e comunidades). Foi com base nessas limitações que se

Como futuros desdobramentos deste trabalho se pode: Ajustar o algoritmo proposto para trabalhar com outros tipos de atributos que não sejam somente

Assim como o diálogo com os adultos permitiu que aprendessem a falar, a interação com o livro infantil contribui para que as crianças aprendam a ler. A presença de estruturas

O AGC apresenta algumas características inovadoras em relação aos algoritmos genéticos tradicionais (AGT), tais como, população formada apenas de estruturas e/ou esquemas,