Sie sind auf Seite 1von 12

XLII SBPO

30/08 a 03/09
Bento gonalves rs

RESOLUO DO PROBLEMA DE CARREGAMENTO E DESCARREGAMENTO DE CONTINERES EM TERMINAIS PORTURIOS VIA BEAM SEARCH
Cassilda Maria Ribeiro FEG - Faculdade de Engenharia de Guaratinguet - UNESP Av. Ariberto Pereira da Cunha 333. Pedregulho Guaratinguet SP CEP: 12516-410 cassilda@feg.unesp.br Anibal Tavares Azevedo FEG - Faculdade de Engenharia de Guaratinguet - UNESP Av. Ariberto Pereira da Cunha 333. Pedregulho Guaratinguet SP CEP: 12516-410 anibal@feg.unesp.br

RESUMO
Neste artigo apresentado um algoritmo do tipo beam search para resolver o problema de carregamento e descarregamento de contineres num terminal porturio. Num navio porta continer os contineres so colocados em pilhas verticais, localizadas em diversas sees. O acesso aos contineres feito somente atravs do topo da pilha. Muitas vezes para se descarregar um continer num determinado porto j, necessrio remover o continer cujo destino o porto j+1, porque ele est acima do continer que se deseja descarregar. Esta operao chamada de remanejamento. Um navio porta continer transportando carga para vrios portos necessita de muitas operaes de remanejamento. Esses remanejamentos possuem custo e despendem tempo. possvel evitar alguns remanejamentos atravs de um planejamento eficiente. Aqui apresentado um algoritmo do tipo beam search para resolver esse problema. O algoritmo apresentado utiliza uma representao bastante compacta da soluo do problema assegurando que elas sejam factveis. PALAVRAS CHAVES. Carregamento de Continer. Beam Search. Mtodo heurstico Otimizao Combinatria.

ABSTRACT
This paper proposes a Beam Search method to solve the Container Ship Stowage Problem. Containers on board a container ship are placed in vertical stacks, located in different sections. The access to the containers is done only through the top of the stack. Many times to unload a container at a given port j, it is necessary to remove the container whose destination is the port j +1, because it is above the container we want to download. This operation is called shifting. A ship container carrying cargo to several ports may require a large number of shifting operations. These operations have spent time and cost and it can be avoided by efficient stowage planning. A key objective of stowage planning is to minimize the number of container movements. Here is presented a beam search method to solve this problem. The method presented uses a very compact representation of the solution and ensures that all solutions are feasible. KEYWORDS. Container Ship Stowage Problem. Beam Search. Heuristic Method Combinatorial Optimization.

XLII SBPO
1. Introduo

30/08 a 03/09
Bento gonalves rs

Navios porta contineres so navios que possuem uma estrutura que facilita a movimentao de contineres de carga, pois em cada porto ao longo de uma viagem, contineres so descarregados e contineres adicionais, destinados aos portos subseqentes so carregados. A eficincia de um terminal porturio depende de uma adequada programao da movimentao de contineres, especialmente durante o processo de carregamento dos navios, uma vez que a programao poder refletir em reduo de tempo e conseqentemente reduo de custo. A estiva e o plano de carregamento associado so determinados fundamentalmente por dois critrios: estabilidade do navio e nmero mnimo de remanejamento requerido nos diversos pontos de entrega (AVRIEL et al., (2000); WILSON e ROACH, (2000); AMBROSINO et al., (2006)). O ltimo critrio baseado no fato de que muitos navios possuem uma estrutura celular, conforme pode ser observado na Figura 1, e os contineres devem ser carregados de modo a formarem pilhas verticais, o que acarreta, em muitos casos, a necessidade de movimentar contineres na parte superior da pilha a fim de se descarregar os contineres que esto posicionados na parte inferior. A este tipo de movimentao d-se o nome de remanejamento. Os remanejamentos so necessrios porque os contineres que esto numa pilha s podem ser acessados pelo topo.

Figura 1: Estrutura celular de um navio. Fonte: WILSON e ROACH (2000).

O problema de carregamento de contineres em terminais porturios (PCCTP) consiste em determinar como carregar um conjunto de contineres de diferentes tipos em um navio portacontiner (containership), respeitando restries operacionais relacionadas aos contineres e navio de modo a minimizar o tempo de carregamento e posterior descarregamento, ou seja, o remanejamento. O artigo de AVRIEL et al.,(2000) mostra que este problema NP-Completo. Neste artigo ser apresentado um algoritmo do tipo Beam Search para a soluo do PCCTP. A abordagem aqui apresentada para resolver esse problema inovadora porque ela reduz consideravelmente o nmero de variveis do problema e tambm permite que seja utilizada a experincia do profissional porturio atravs de uma representao adequada dos seus conhecimentos. Este artigo est organizado do seguinte modo: a seo 2 apresenta a formulao matemtica do problema; a seo 3 contm a representao matricial utilizada na resoluo do problema; seo 4 apresenta o algoritmo de Beam Search; a seo 5 apresenta os resultados computacionais obtidos e a seo 6 as concluses.

2. Modelo Matemtico do Problema


Navios porta contineres so navios que possuem uma estrutura que facilita a movimentao de contineres. De fato, eles possuem uma estrutura celular (vide Figura 1) onde

XLII SBPO

30/08 a 03/09
Bento gonalves rs

so alojados os contineres. Essas clulas em geral, tm 20 ps de comprimento e 8 ps de largura. Os contineres so empilhados nas clulas formando pilhas verticais. O conjunto de pilhas que compreende toda a largura do navio chamado de baia, em ingls bays. Ento, uma baia um agrupamento de clulas com capacidade para se empilhar um certo nmero de contineres. Na Figura 1 tem-se o corte lateral da baia 12 de um navio. Em geral cada baia tem capacidade para alocar quarenta contineres de vinte ps de comprimento. A baia tem ento linhas horizontais numeradas r = 1, 2, ...R, (a linha 1 a linha que est em baixo na pilha, e a linha R a linha do topo da pilha) e colunas numeradas c= 1, 2, ..., C (coluna 1 a primeira coluna da esquerda). A capacidade do navio porta continer medida em TEU (Twenty-foot Equivalent Units) ou Unidade Equivalente de Vinte ps. Por exemplo, um navio com capacidade de 8000 TEUs pode carregar 8000 contineres de vinte ps. A formulao matemtica aqui apresentada para o PCCTP respeita as restries operacionais relacionadas aos contineres, navio e ptio do terminal porturio e aparece de modo mais detalhado em AVRIEL at al (1998). Considere um navio porta contineres que possui uma nica baia. A baia tem R linhas horizontais numeradas r = 1, 2, ...R, (a linha 1 a linha que est em baixo, e a linha R a linha do topo da pilha) e C colunas verticais numeradas c= 1, 2, ..., C (coluna 1 a primeira coluna da esquerda). Apesar de a baia ter um formato tridimensional, a mesma pode ser representada, sem perda de generalidade, por um formato bidimensional, em particular uma matriz. Ento, uma baia pode alocar no mximo RxC contineres. assumido tambm que todos os contineres tem o mesmo tamanho. O navio chega no porto 1 completamente vazio e seqencialmente ele visita os portos 2, 3, ..., N. Em cada porto i=1,...,N-1, o navio recebe o carregamento de contineres com destino aos portos i+1,...,N. No ltimo porto ele descarrega os contineres e fica totalmente vazio. Seja T=[Tij] a matriz de transporte de dimenso (N-1)(N-1), onde Tij o nmero de contineres com origem em i e destino em j. Esta matriz triangular superior porque Tij=0 para todo i j. Seja xijv ( r , c) a varivel binria que assume o valor 1 se existir um continer no compartimento (r, c) que foi ocupado no porto i e tem como destino final o porto j e movido no porto v; caso contrrio assume valor zero. Por compartimento (r,c) entende-se a linha r e a coluna c no compartimento de carga do navio. necessrio salientar que a numerao das linhas feita de baixo para cima. Assim a linha de nmero 5 est acima da linha de nmero 4, e a numerao das colunas feita da esquerda para a direita. Seja yi (r , c) a varivel binria que possui valor 1 se saindo do porto i o compartimento (r, c) for ocupado por um continer; caso contrrio assume valor 0. A formulao em programao linear inteira do PCCTP dada pelas Eqs. (1)-(6). Min
s.a: f ( x) =
j

N 1 N

xijv (r , c)
i =1 j =i +1 v =i +1 r =1 c =1
i 1 R C

j 1 R C

i = 1,L, N 1, j = i + 1,L, N ;
i = 1,L, N 1, j = i + 1,L, N ;
i = 1,L, N 1, r = 1,L, R; c = 1, L , C ;

(1)

v =i +1 r =1 c =1 j N j

xijv (r , c) xkji (r , c) = Tij


k =1 r =1 c =1

R C

(2)

k =1 j =i +1 v =i +1

xkjv (r , c) = yi (r , c)
yi (r , c) yi (r + 1, c) 0
j 1 N j 1 N p

(3)

i = 1,L, N 1, r = 1,L, R 1; c = 1, L , C ; (4) (5) (6) i = 2,L, N , r = 1,L, R 1; c = 1, L , C ;

xipj (r , c) + xipv (r + 1, c) 1
i =1 p = j i =1 p = j +1 v = j +1

xijv (r , c) = 0 ou 1 ; yi (r , c) = 0 ou 1

A Eq. (1) fornece o custo total de movimentao dos contineres em todos os portos,

XLII SBPO

30/08 a 03/09
Bento gonalves rs

assumindo que a movimentao de um continer possui um custo unitrio e igual para todos os portos. A restrio (2) a restrio de conservao de fluxo de contineres para cada porto i, onde Tij o elemento da matriz de transporte que representa o nmero de contineres que embarcam no porto i com destino ao porto j. A restrio (3) garante que cada segmento de rota tem pelo menos um nico continer. A restrio (4) necessria para garantir que existem contineres embaixo do continer que ocupa o compartimento (r, c). A restrio (5) responsvel por definir a movimentao dos contineres: se um continer que ocupa a posio (r, c) descarregado no porto j, ento, ou no existem contineres acima dele, ou o ndice v do continer que ocupa o compartimento (r+1, c) no maior que j. O tamanho que o problema assume com a formulao dada pelas Eqs. (1)-(6) proibitivo para problemas reais e s pode ser resolvido, de maneira tima, para problemas pequenos.

3. Representao matricial do PCCTP


A seguir ser apresentada a representao matricial desenvolvida para a resoluo do PCCTP. Esta representao tem a vantagem de ser bastante compacta e de assegurar que todas as solues geradas pelo mtodo do Beam Search sejam factveis. Na Figura 1 viu-se que os navios possuem uma estrutura celular de modo que os locais onde os contineres sero alocados so pr-determinados fazendo com que os contineres sejam empilhados verticalmente. Este empilhamento sugere uma representao matricial dos contineres no navio. Deste modo pode-se definir uma matriz de ocupao B que fornece a quantidade de espaos disponveis e a localizao dos contineres no navio em cada porto. Para tanto, cada elemento da matriz Brc representa o estado de uma clula (r,c), isto se Brc=0 significa que a clula (r,c) est vazia e se Brc= j significa que a clula (r,c) contm um continer cujo destino o porto j. Assim, no exemplo da Figura 2, o elemento B1,1 igual a 5 significando que neste local existe um continer que ser descarregado no porto 5. De modo anlogo, o elemento B3,3=0 significa que esta clula est vazia. Lembrando que a linha 5 representa o topo da pilha de carregamento e a linha 1 representa a parte inferior da pilha.
2 4 5 5 2 3 2 5 0 0 3 4 0 5 4 2

Figura 2: Matriz de Ocupao, considerando um navio com capacidade de 16 contineres e transporte para 5 portos.

Em todos os portos a matriz B de ocupao modificada devido entrada e sada de novos contineres no porto. Isto porque, quando o navio chega num porto j, os contineres cujo destino o porto j, sero descarregados e depois sero carregados os contineres com destinos aos portos j+1, j+2,...,N. Portanto podem ser identificados duas classes de operaes com contineres que modificam a matriz B de ocupao do navio no porto j: carregamento e descarregamento. possvel elaborar diferentes estratgias para se carregar e descarregar o navio. Por exemplo, o carregamento de um navio pode ser feito com a formao de pilhas verticais ou ainda formao de camadas horizontais. O mesmo pode ser realizado para o descarregamento. O produto da transformao de uma estratgia, para realizar carregamento ou descarregamento, em um algoritmo denominado de regra de carregamento e descarregamento, respectivamente. Assim possvel incorporar o conhecimento do planejador, sob a forma de regras, na resoluo do problema. Neste artigo foram criadas 8 regras, sendo quatro para o carregamento (Rc1, Rc2, Rc3 e Rc4) e duas para o descarregamento (Rd1, Rd2). Essas regras foram combinadas de modo que a

XLII SBPO

30/08 a 03/09
Bento gonalves rs

combinao de uma regra de carregamento com uma de descarregamento fornea uma regra k, para o porto j. A Tabela 1, mostrada a seguir fornece as 8 regras (regras k) a serem utilizadas nos portos j, oriundas da combinao das regras de carregamento e descarregamento. Observe na Tabela 1 que a regra 2 foi obtida utilizando a regra Rc1 para o carregamento dos contineres e a regra Rd2 para o descarregamento. Alm do mais, esta forma de combinar regras permite uma representao compacta da soluo, pois para se determinar o nmero de movimentos basta ter a informao de qual regra k ser aplicada em cada porto j e a conseqente atualizao da matriz de ocupao B. Inicialmente a matriz B est com todos os elementos iguais a zero e ela comea a ser preenchida no porto 1.
Regra k usada Regra de Regra de Regra k usada Regra de Regra de no porto j carregamento descarregamento no porto j carregamento descarregamento 1 Rc1 Rd1 5 Rc3 Rd1 2 Rc1 Rd2 6 Rc3 Rd2 3 Rc2 Rd1 7 Rc4 Rd1 4 Rc2 Rd2 8 Rc4 Rd2 Tabela 1: Regras k, a serem utilizadas em cada porto j.

Para melhor ilustrar o uso dessas regras, ser utilizada uma matriz de transporte T, que fornece a quantidade de contineres que devem ser embarcados no porto i com destino ao porto j, tal como dado na Figura 3. Ento, no exemplo da Figura 3, T12= 2, significa que no porto 1, sero embarcados 2 contineres com destino ao porto 2 e T24=3, significa que no porto 2, sero embarcados 3 contineres com destino ao porto 4. Observe que a primeira coluna de T tem todos os elementos iguais a zero porque o porto 1 sempre o porto de onde o navio parte, logo no existe o destino D1. Neste exemplo considerou-se que o navio tem capacidade para transportar 16 contineres, num roteiro de 5 portos. Suponha agora que em cada porto i o navio deve ser carregado de acordo com uma regra de carregamento e ao chegar no porto j ele deve ser descarregado de acordo com uma regra de descarregamento. As regras de descarregamento (Rd) e carregamento (Rc) adotadas para se montar a matriz B de ocupao so apresentadas a seguir.
D1 D2 D3 D4 D5
O1 O2 O3 O4 0 0 0 0 2 0 0 0 5 3 0 0 0 2 2 0 0 1 2 3

Figura 3: Matriz de transporte T.

Regras de Descarregamento Regra Rd1: Nesta regra quando o navio chega a um porto p, so descarregados todos os contineres cujo destino p e todos os contineres que esto acima dos contineres do porto cujos destinos so os portos p+1,..., N. Suponha, por exemplo, que ao se chegar no porto 2 a matriz de ocupao B seja a da Figura 4(a) mostrada a seguir. De acordo com esta regra de descarregamento a matriz B antes de se carregar os contineres que devem ser embarcados no porto 2 ficaria como mostrada na Figura 4(b). A Figura4(c) mostra os contineres que estavam no navio com destino aos demais portos e tiveram que ser remanejados. Esses contineres sero reembarcados juntamente com os contineres que sero embarcados nesse porto.
0 0 0 0 5 5 2 2 3 2 3 5 2 3 3 4 Figura 4(a): matriz B antes da aplicao da regra Rd1. 0 0 0 0 0 0 0 0 0 0 3 5 0 3 3 4 Figura 4(b): matriz B depois da aplicao da regra Rd1. 5 5 3

Figura 4(c): Vetor contendo os contineres do ptio de remanejamento

Regra Rd2: Nesta regra quando o navio chega ao porto p, remove-se completamente todas as pilhas que contenham um continer cujo destino o porto atual. A seguir, os contineres que

XLII SBPO

30/08 a 03/09
Bento gonalves rs

foram removidos neste porto, mas cujos destinos so os portos p+1, p+2,...N, sero reembarcados de acordo com a regra de embarque que foi adotada no porto. Suponha por exemplo que ao se chegar no porto 2 a matriz de ocupao B seja a da Figura 5(a). De acordo com esta regra a matriz de ocupao ficaria vazia e todos os contineres que devem seguir viagem iriam para o ptio de remanejamento para que eles sejam recarregados juntamente com os contineres que devem ser embargados no porto 2. A Figura 5(b) mostra os contineres do ptio de remanejamento.
0 0 0 0 5 5 2 2 5 5 5 4 3 3 3 3 3 2 3 5 2 3 3 4 Figura 5(a): Matriz B antes de Rd2. Figura5 (b): Vetor contendo os contineres do ptio de remanejamento

Regras de Carregamento Regra Rc1: Esta regra preenche a matriz de ocupao B (no porto p) por linha, da esquerda para a direita, colocando na parte inferior da pilha as cargas cujo destino mais distante. A Figura 6, a seguir, fornece um exemplo da aplicao da regra Rc1, considerando que o navio est no porto 1. Observe na Figura 6 que os elementos B11, B12, B13, B14 e B21 so iguais a 3, e os elementos B22, B23 so iguais a 2 porque no porto 1 so embarcados respectivamente 5 contineres com destino ao porto 3 e dois contineres com destino ao porto 2.
0 0 3 3 0 0 2 3 0 0 2 3 0 0 0 3

Figura 6: Matriz de Ocupao no porto 1, aps a aplicao da regra Rc1

Regra Rc2: Nesta regra o preenchimento da matriz de ocupao B em um porto p feito por coluna at uma linha p, comeando pela coluna da esquerda e colocando-se em primeiro lugar os contineres cujos destinos so os portos mais distantes. A linha p calculada pegando-se a funo teto, resultante da soma do total de contineres que estavam no navio vindos dos portos anteriores; menos a quantidade de contineres que sero desembarcados em p, mais a quantidade de contineres que sero embarcados em p, dividido pelo nmero de colunas da matriz B. O nmero dessa linha pode ser calculado sobre a matriz de transporte T, atravs da equao (7).
p N Tij i =1 j = p +1 p = C

(7)

onde: p o porto atual do navio, Tij o nmero total de contineres a serem embarcados no porto i com destino ao porto j e C o nmero total de colunas da matriz B de ocupao do navio. Supondo que a matriz de ocupao B quando o navio chega ao porto 2 seja a da Figura 6. Ao se descarregar os contineres cujo destino o porto 2, a matriz de ocupao passa a ser a da Figura 7(a), mostrada a seguir. Aplicando-se agora a regra de carregamento Rc2, a matriz de ocupao B ser preenchida at a linha 3, tal como mostrado na Figura 7(b). O objetivo dessa regra ao se calcular p, se obter de pilhas de contineres mais homogneas e assim tentar diminuir o nmero de remanejamentos (BISCHOFf e RATCLIFF (1995)).

XLII SBPO

30/08 a 03/09
Bento gonalves rs

0 0 0 0 0 0 0 0 0 0 0 0 5 4 3 0 3 0 0 0 3 4 3 3 3 3 3 3 3 3 3 3 Figura 7(a): Matriz de ocupao B no porto 2 antes Figura 7(b): Matriz de ocupao B no porto 2 aps a aplicao da regra Rc2. a aplicao da regra Rc2.

Regra Rc3: Esta regra o espelho da regra Rc1, isto , no porto p a matriz de ocupao B ser preenchida por linha, da direita para a esquerda, colocando na parte inferior da pilha as cargas cujo destino mais distante. Regra Rc4: Esta regra tambm o espelho da regra Rc2. Ela faz o preenchimento da matriz de ocupao B em um porto p preenchendo cada coluna at a linha p, comeando pela coluna da direita e colocando-se em primeiro lugar os contineres cujos destinos so os portos mais distantes. A linha p calculada pela equao (7), de modo idntico ao calculado na regra Rc1. A utilizao de regras de carregamento e descarregamento possui algumas vantagens tais como: A facilidade de incorporar conhecimento prvio do planejador sob a forma de regras. Todas as matrizes de ocupao produzidas pelas regras so factveis. Isto facilita e garante que todas as solues obtidas pelo mtodo heurstico so factveis. Neste trabalho a heurstica utilizada o Beam Search, mas futuramente sero utilizadas outras heursticas para que se possa fazer uma comparao entre elas. A codificao da soluo que determina como ser realizado o carregamento e o descarregamento de um navio para N portos um vetor de tamanho N-1. Esta representao muito mais compacta se comparada com outras abordagens da literatura, como por exemplo, a utilizada em AVRIEL et all., (2000).

4. O Algoritmo do tipo Beam Search


O algoritmo do Beam Search um mtodo do tipo Enumerao Implcita para resolver problemas de Otimizao Combinatria (SABUNCUOGLU E BAVIZ (1999); DELLA CROCE E T'KINDT (2000); FOX (1983); VALENTE E ALVES, (2005)). Pode-se dizer que ele uma adaptao do mtodo de Branch and Bound onde somente os ns mais promissores de cada nvel da rvore de decises (atribuies) so guardados na memria para serem visitados, enquanto que os demais ns so descartados permanentemente. Como uma grande parte dos ns da rvore de atribuies descartada, sem ser analisado, o tempo de execuo do Beam Search polinomial com relao ao tamanho do problema. Em resumo pode-se dizer que o Beam Search uma tcnica de busca em rvore de deciso que em cada nvel da rvore analisado um nmero fixo de ns e, por conseguinte um nmero fixo de solues. O nmero de ns analisados em cada nvel chamado de largura da busca e denotado por . Para se construir a rvore de decises necessrio estabelecer as seguintes definies: (D.1) (D.2) (D.3) A rvore construda por nvel e em cada nvel i feita atribuio de uma regra k ao isimo porto. Os ns que esto no nvel 1 da rvore so chamados de ns semente porque cada um deles vai gerar uma sub-rvore de decises. A cada nvel i, ao se realizar a atribuio no i-simo porto de uma regra k, so contabilizados os movimentos de carregamento e descarregamento da regra k adotada no porto i mais os movimentos de carregamento e descarregamento das regras utilizadas nas (i-1) atribuies anteriores.

XLII SBPO

30/08 a 03/09
Bento gonalves rs

Tendo em vista que a rvore possui N-1 nveis (D.1), onde N o nmero total de portos, uma soluo completa s ser obtida ao se definir as atribuies at o nvel N-1 da rvore. No porto N (ltimo porto) no feita a atribuio de nenhuma regra porque neste porto s existe descarregamento. Observe agora que a quantidade de ns da rvore tem uma relao direta com o nmero de regras que sero utilizadas e com o nmero de portos. Na realidade o tamanho do problema a ser resolvido, com esta forma de representao, exponencial com o nmero de portos. Assim o nmero total de ns (Qn) da rvore de decises ser dado por:
Qn = m(m ( N 1) 1) , onde m= nmero de regras e N= nmero total de portos. (m 1)

O nmero total de solues factveis (Fs) ser dado por: Fs = m ( N 1) . Assim para o exemplo o utilizado neste artigo, que tem 8 regras e 5 portos, a rvore de decises teria 32760 ns. Est rvore iria gerar 4096 solues sendo todas elas factveis. Mas, vale lembrar que, o Beam Search no vai analisar todas as solues possveis, ele utiliza uma largura de busca = m. O mtodo gera ento uma rvore de decises cujo nmero total de ns dado por Qn = m( N 1) e o nmero de total de solues factveis analisadas dado por Fs = . Antes de apresentar o algoritmo proposto, ser utilizado um exemplo para mostrar como seria a rvore de decises (atribuies) se fossem enumeradas todas as solues possveis. Neste exemplo sero consideradas somente duas regras para carregamento (Rc1 e Rc2) e uma nica regra para o descarregamento, a Rd1, cujas combinaes resultam em R1 e R2. O nmero de portos considerado N = 5. Considere tambm que a matriz de transporte T a da Figura 3 e que cada navio tem uma capacidade de 16 contineres. A Figura 9 a seguir, mostra a rvore de decises para o exemplo dado, com todas as decises possveis. Cada n da rvore representa a aplicao de uma regra. Assim os ns com o nmero 1 representam a aplicao da regra 1, (Rc1 e Rd1) e os ns com o nmero 2 representam a aplicao da regra 2 (Rc2 e Rd1). Observe que a rvore foi construda por nvel. O nvel 1 tem dois ns. So os chamados ns sementes. A construo da rvore inicia-se no n semente e a partir da segue-se para os demais nveis, criando um n para cada regra e considerando todas as combinaes possveis de regras em cada nvel. Como neste exemplo existem duas regras, ento existem 2 ns sementes. Cada n semente gera ento uma sub-rvore. Para cada sub-rvore e em cada nvel i so decididas as atribuies de cada uma das regras a um porto i de modo que: no nvel 1 tm-se as atribuies das regras 1 e 2 ao porto p1; no nvel 2 tm-se as atribuies das regras 1 e 2 ao porto p2, considerando-se as atribuies que foram feitas no nvel 1; no nvel 3 so feitas as atribuies das regras 1 e 2 ao porto 3 levando-se em conta as atribuies feitas nos nveis anteriores, e assim sucessivamente.

Figura 9: rvore com todas solues factveis considerando os ns semente da regra R1 (subrvore da esquerda) e da regra R2 (sub-rvore da direita) no Nvel 1.

Observe na Figura 9 que ao lado de cada n so apresentados dois valores que indicam (da esquerda para a direita): o nmero de remanejamentos feitos no n, decorrente da aplicao

XLII SBPO

30/08 a 03/09
Bento gonalves rs

da regra em questo e o nmero de remanejamentos parcial, isto , o total de remanejamentos feitos at aquele ponto. O clculo desses remanejamentos feito atravs da matriz de ocupao, ou seja, em cada porto i obtida a matriz de ocupao B, levando-se em conta a regra que est sendo empregada naquele porto. A soluo completa do problema s obtida no ltimo nvel quando for adicionado ao ltimo remanejamento parcial, o nmero de contineres que sero desembarcados no ltimo porto. No nosso exemplo, no porto 5 sero desembarcados 6 contineres. Ento, a melhor soluo obtida , por exemplo, a soluo obtida na sub-rvore da esquerda, com a aplicao das regras 2-1-2-1, cujo nmero total de remanejamentos 36 + 6 = 42. Observe tambm que neste problema obteve-se mais 3 outras solues com o mesmo nmero de remanejamentos (2-1-1-1; 2-1-1-2 e 2-1-2-2). rvore de Solues Gerada pelo Beam Search O algoritmo proposto no cria todos os ns da rvore como foi feito no exemplo mostrado e por esta razo no feita uma enumerao completa de todas as solues factveis. Isso evita o crescimento exponencial da rvore. Para se criar os ns, o algoritmo segue algumas regras que so mostradas a seguir: Inicio nvel = 0 Enquanto (nvel < nmero de portos N-1) faa: 1 Passo: Faa nvel = nvel + 1 P1.1. Criar os ns deste novo nvel, um n para cada regra. P1.2. Para cada n criado no nvel i, faz-se: Armazenar a identificao da regra e do porto; Armazenar a matriz B de carregamento antes da aplicao da regra. No nvel 1, B comea com zero em todas as posies. Calcular o nmero de descarregamento e carregamento relativos regra aplicada ao n. Atualizar a matriz B de carregamento aps a aplicao da regra. Calcular o custo parcial da soluo, isto , o nmero de movimentos de descarregamento e carregamento relativos atribuio realizada do n semente at o n criado; Se (nvel < nmero de portos N-1) Ento 2 Passo. Para cada n criado no 1. Passo (P1.1) e considerando-se os custos calculados at ento, ache uma soluo gulosa para o problema, atravs de uma busca em profundidade na rvore, partindo deste n. 3o. Passo Conserve na rvore, neste nvel, os ns que geraram as melhores solues gulosas. Descarte os demais ns. Fim Enquanto Inicialmente o algoritmo encontra-se no nvel zero de soluo, pois as atribuies comearo a serem feitas agora. A seguir faz-se nvel = 1 e comeam a serem criados os ns deste nvel (P1.1). Os ns do nvel 1 so os ns sementes e criado um n semente para cada regra. Em (P1.2), para cada n criado em (P1.1) atribuda uma regra. A seguir calculam-se o nmero de movimentos de descarregamento e carregamento do n, considerando a matriz de carregamento antes da aplicao da regra. A seguir, feita a atualizao da matriz de carregamento. A busca em profundidade realizada no 2 Passo feita utilizando um algoritmo do tipo guloso e ela visa escolher, no 3o. Passo, quais os ns, do nvel i, devem permanecer na rvore de solues factveis, de modo a respeitar a largura de busca . Por exemplo, se =2, em cada nvel vo permanecer somente dois ns. A busca em profundidade feita do seguinte modo: Busca em Profundidade do Passo2- Algoritmo Guloso.

XLII SBPO

30/08 a 03/09
Bento gonalves rs

Para cada n j criado no 1. passo (P1.1) fazer uma arborescncia em profundidade, a partir deste n, descendo at o ltimo nvel, isto : Seja um n j criado no nvel i com custo de soluo parcial Sj, calculada at o nvel i. Escolha para fazer parte desta soluo o n q do nvel i+1 que factvel e que gere a menor soluo parcial Sq, onde Sq= Sj + nmero de movimentos de descarregamento +nmero de movimentos de carregamento relativa atribuio efetuada no n q. Repetir este processo a partir do n q, descendo at o ltimo nvel. Somente aps descer no ltimo n do ramo que se ter o custo total de uma soluo gulosa.

Como j foi dito anteriormente as solues gulosas servem para escolher dentre os ns, do nvel i que foram criados no 1o. passo, aqueles que vo permanecer na rvore. Essa escolha feita da seguinte maneira: Ordenar os ns criados no nvel i, em ordem crescente, de acordo com os resultados dos custos das solues gulosas que cada um deles gerou. Entre os ns do nvel i escolher para permanecer na rvore os ns que geraram as solues gulosas de menor custo, Cortar os demais ns do nvel i, isto : Se largura de busca =2, s vo continuar a fazer parte da rvore os dois ns que geraram as duas solues gulosas de menor custo. O valor da menor soluo gulosa calculada no 2o. Passo, tambm usado como limitante superior (corte) para se gerar ou no os outros ns da rvore, no 1. passo. Este limitante superior deve ser atualizado medida que forem encontradas solues gulosas menores. Com isto tm-se como critrio de corte o custo da menor soluo gulosa, isto , se o custo parcial da soluo no n que acabou de ser criado, for maior que o custo da melhor soluo gulosa, este n deve ser excludo da soluo. Depois de terminada a Busca em Profundidade deve-se verificar se o nvel da rvore de decises igual (N-1). Se este for o caso, o algoritmo termina, pois j se chegou ao final da rvore. Seno, o algoritmo volta ao 1o. passo para gerar os ns do prximo nvel. O mtodo de soluo do PCCTP apresentado neste artigo combina uma representao compacta da soluo do problema com o esquema de regras descrito na Seo 3. Deste modo s solues obtidas so sempre factveis e possvel o tratamento de problemas de maior porte em tempo computacional razovel, visto que neste mtodo de soluo a dimenso do problema cresce exponencialmente com do nmero de regras e no com a quantidade de contineres.

5. Resultados obtidos
Para testar o algoritmo, foram geradas automtica e aleatoriamente 45 instncias. Essas instncias so classificadas de acordo com o nmero de portos e o tipo da matriz de transporte. Para cada instncia gerada uma matriz de transporte T, tal que a capacidade do navio no ser excedida em nenhum porto, isto , o valor de p dado pela equao (7) deve ser menor ou igual a R para todo porto p, isto porque a matriz de transporte factvel se:
Tij i =1 j = p +1

R C para todo p = 1, K , N

(8)

onde: R o nmero de linhas e C o nmero de colunas da matriz de ocupao B. De acordo com AVRIEL et al. (1998) foram geradas trs tipos de matriz de transporte: 1-Mista, 2-Longa distncia e 3-Curta distncia. A matriz do tipo 3 transporta contineres que vo percorrer poucos portos antes de serem desembarcados, a matriz do tipo 2 transporta contineres que vo percorrer muitos portos antes de serem desembarcados. A matriz do tipo mista mistura os dois tipos anteriores. As instncias foram classificadas de acordo com a quantidade de portos a serem percorridos, os tipos de matriz de transporte e capacidade do navio. Aqui foram supostos navios com as seguintes dimenses RxC: 6x50, 6x100, 6x150, resultando respectivamente nas seguintes capacidades mximas: 300, 600 e 900 contineres.

XLII SBPO

30/08 a 03/09
Bento gonalves rs

A Tabela 2 mostra os resultados obtidos com o Beam Search, utilizando =8 (nmero de regras) para as 45 instncias. Na primeira coluna est o nmero da instncia (I), na segunda coluna esto as capacidades dos navios em termos do nmero de linhas e colunas (RxC), na terceira coluna o tipo da matriz de transporte (M), na quarta coluna o nmero de portos N, na quinta coluna o nmero mnimo de movimentos (NMim) serem feitos com os contineres, na sexta coluna os valores da funo objetivo (F.O) em termos do nmero total de movimentos realizados com os contineres at a chegada no porto de destino, na stima coluna est o Tempo computacional (T) em segundos, na oitava coluna esto os desvios percentuais (DP) das melhores solues obtidas em relao ao nmero mnimo de movimentos. O nmero mnimo de movimentos obtido multiplicando-se por dois o valor do somatrio de Tij calculado de acordo com a equao (8). Observe que esse valor limitante inferior para o nmero total de movimentos a serem realizados ao longo do percurso do navio. Os resultados foram obtidos com um programa desenvolvido em Matlab 7.0, Processador Intel Core Duo 1.66 GHz, memria RAM de 2 GB e Sistema Operacional Windows Vista com Service Pack 2.
I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 RxC 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x50 6x100 6x100 6x100 6x100 6x100 6x100 6x100 6x100 M 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 N 10 10 10 15 15 15 20 20 20 25 25 25 30 30 30 10 10 10 15 15 15 20 20 NMin 1322 750 2282 1580 778 3024 1990 784 4880 1664 944 5492 2262 1030 6380 2878 1436 5354 3532 1656 6296 4138 1942 F.O 1366 1050 2282 1730 980 3024 2204 962 4880 1882 1198 5492 2700 1554 6380 3010 1698 5354 3874 2498 6304 4806 3028 T (s) 18.73 17.76 15.12 69.32 63.56 54.23 175.43 147.32 155.17 321.85 290.36 297.74 576.99 551.36 495.64 24.99 25.88 21.76 99.28 99.65 86.47 253.31 247.24 DP 3.33 40.00 0.00 9.49 25.96 0.00 10.75 22.70 0.00 13.10 26.91 0.00 19.36 50.87 0.00 4.59 18.25 0.00 9.68 50.85 0.13 16.14 55.92 I 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 RxC 6x100 6x100 6x100 6x100 6x100 6x100 6x100 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 6x150 M 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 N 20 25 25 25 30 30 30 10 10 10 15 15 15 20 20 20 25 25 25 30 30 30 NMin 8714 4390 2410 12236 4654 2204 14432 3222 2238 5882 4562 2212 7672 5470 3000 13190 5516 2868 16864 7130 2104 21342 F.O 8716 4932 3418 12236 5246 3286 14434 3640 2274 5882 4878 3446 7672 6316 4194 13190 6006 3294 16864 7538 2710 21342 T (s) 214.50 455.39 502.25 431.21 827.05 802.41 726.01 34.14 23.76 26.77 114.73 131.15 84.34 294.72 292.70 259.60 560.40 436.54 560.49 1025.74 754.69 1116.36 DP 0.02 12.35 41.83 0.00 12.72 49.09 0.01 12.97 1.61 0.00 6.93 55.79 0.00 15.47 39.80 0.00 8.88 14.85 0.00 5.72 28.80 0.00

Tabela 2: Resultados obtidos com o Beam Search

A primeira observao importante acerca dos resultados da Tabela 2 sobre o tempo computacional gasto pelo Beam Search. importante observar que para a formulao dada pelas equaes (1)-(6) as instncias com 30 portos, 6 linhas e 150 colunas so problemas com 27000 variveis inteiras. Para estas instncias o Beam Search consegue produzir solues com um tempo computacional em torno de 965 segundos. Levando-se em conta que este valor foi obtido com a implementao em Matlab, espera-se ento que futuras implementaes em linguagem C venham a reduzir ainda mais esse tempo. Observe agora, na coluna 7 (DP) que para problemas cuja matriz de transporte do tipo curta distancia (tipo 3), as solues encontradas so quase todas timas, visto que os valores das F.O so iguais ao nmero de movimentos mnimos, isto o valor de DP igual a zero. Isto ocorre mesmo para problemas grandes, como o caso da instncia de nmero 45 que tem 30 portos e capacidade para 900 contineres. Pode-se ento concluir que o conjunto de regras adotadas excelente quando se trata desse tipo de matriz. No caso dos problemas cuja matriz de transporte do tipo mista (tipo 1) as solues encontradas esto bem prximas do limite mnimo. O desvio percentual (DP) ficou, em mdia, em torno de

XLII SBPO

30/08 a 03/09
Bento gonalves rs

10%, donde se pode concluir que o conjunto de regras adotadas bastante eficiente para este tipo de matriz. No caso das instncias com matriz de transporte do tipo longa distncia (tipo 2) o desvio percentual da soluo ficou, em mdia, em torno de 31%. Estes resultados indicam a necessidade de se incorporar ao sistema um nmero maior de regras que levem em considerao a arrumao dos contineres que permanecero um longo perodo de tempo dentro do navio.

6. Concluses e Trabalhos Futuros


Este artigo tem duas inovaes, a saber: a primeira delas que ele apresenta uma nova maneira de se representar s solues para o problema de carregamento de contineres em terminais porturios (PCCTP). Esta nova representao permite reduzir consideravelmente o nmero de variveis do problema reduzindo assim a quantidade de informaes necessrias para se representar uma soluo. Na formulao dada pelas Eqs. (1)-(6) as informaes devem ser armazenadas num vetor de tamanho (RC)(N+N3). Na representao aqui utilizada o tamanho do vetor N-1. Tendo em vista que RC expressa o nmero de contineres que podem ser armazenados em um navio e que N representa o nmero de portos, a representao da soluo aqui utilizada permite uma enorme reduo do tempo computacional para instncias com grande nmero de portos. Para tanto, a representao emprega regras que definem como ser carregado e descarregado o navio e as regras garantem que as solues obtidas so sempre factveis. A segunda inovao que a utilizao de regras de carregamento e descarregamento permite a incorporao, no sistema computacional, do conhecimento do profissional responsvel por esse servio no porto. Esta incorporao feita atravs da criao e implantao de novas regras. Esta maneira de representar o PCCTP em conjunto com a aplicao de regras, uma alternativa promissora na resoluo deste problema, at porque assim como se podem acrescentar novas regras, tambm se podem utilizar outras heursticas, como por exemplo, os algoritmos genticos. Futuramente pretende-se fazer uma abordagem tridimensional da matriz de ocupao do PCCTP para se levar em conta o centro de massa do navio. Agradecimentos ao suporte financeiro do CNPq e da FAPESP a este trabalho.

Referncias
AMBROSINO, D., SCIOMACHEN A.,TANFANI, E. A decomposition heuristics for the container ship stowage problem, J. Heuristics, v.12, p. 211233, 2006. AVRIEL, M.; PENN, M.; SHPIRER, N.; WITTENBOON, S. (1998), Stowage planning for container ships to reduce the number of shifts, Annals of Operations Research, v. 76, p. 55-71. AVRIEL, M.; PENN, M.; SHPIRER, N. (2000), Container ship stowage problem: complexity and connection to the coloring of circle graphs, Discrete Applied Mathematics, v.103, p. 271-279. BISCHOFF, E.E. & RATCLIFF, M.S.W. (1995). Issues in the development of approaches to container loading", Omega, 4, 377-390. DELLA CROCE, F.; T'KINDT, V.(2002), A Recovering Beam Search Algorithm for the OneMachine Dynamic Total Completion Time Scheduling Problem, Journal of the Operational Research Society, vol 54, pp. 1275-1280. FOX, M.S., Constraint-Directed Search: A case Study of Job-Shop Scheduling, PhD. thesis, Carnegie-Mellon University, USA, 1983. SABUNCUOGLU, I., BAVIZ, M., (1999), Job Shop Scheduling with Beam Search, European Journal of Operational Research, vol. 118, pp. 390-412.
WILSON, I.; ROACH, P. Container stowage planning: a methodology for generating computerised solutions, Journal of the Operational Research Society, v. 51, p. 1248-1255, 2000. VALENTE, J. M. S, ALVES, R. A. F. S., (2005), Filtered and Recovering Beam Search Algorithm for the Early/Tardy Scheduling Problem with No Idle Time, Computers & Industrial Engineering, vol. 48, pp. 363-375.

Das könnte Ihnen auch gefallen