JIM 2014 - V Jornada de Informática do Maranhão GRASP Aplicado Ao Problema de Alocação de Berços em Terminais Portuários Graneleiros Igor L. C. Lima1 , Dayson Nywton C. R. do Nascimento1 Marcelo B. do Nascimento1 , Alexandre C. Muniz de Oliveira1 1 Departamento de Ciência da Computação – Universidade Federal do Maranhão (UFMA) São Luis, Brasil [email protected] Abstract. In port terminals, ship’s awaiting time is one of the main operational problems that may apply. Assigning a ship to an available berth is a decision which considers specific elements such as loading/unloading time, stock in the port’s yard, fines for delays, and tide changes. In order to better use the resources offered by the port, the sequence of berths assigned to each ship must be planned. That planning is based on a queue of ships with their arrival time. To solve it, it is defined a sequence of ships to be allocated to a berth and the result is: less time of total operation, considering loading/unloading and awaiting time. In this paper presents the meta-heuristic GRASP (Greedy Randomized Adaptive Search Procedure) as a minimizing solution to the problem. The results show that the GRASP is a robust algorithm to solve this problem. Resumo. Em terminais portuários, o tempo de espera dos navios é um dos principais problemas operacionais identificados. Atracar o navio em um berço disponı́vel é uma decisão que leva em conta fatores como: seu tempo de carga/ descarga, estoque no pátio, multas sobre atrasos, além de influência de marés. O planejamento, para melhor aproveitamento de recursos do porto, baseia-se na ideia da existência de uma fila de navios, onde são conhecidos os seus tempos aproximados de chegada. Resolver o problema é definir uma sequência de atracação que resulte em menor tempo de operação total do porto, levando em consideração os tempos de carga/descarga e espera. Este artigo propõe a utilização da meta-heurı́stica GRASP (Greedy Randomized Adaptive Search Procedure) como solução de minimização do tempo total de serviço que o navio passa no atendimento do berço. Os resultados mostram que o GRASP é um algoritmo robusto para resolver esse problema. 1. Introdução No Maranhão, o complexo portuário marı́timo de São Luı́s, formado pelos terminais do Itaqui, Ponta da Madeira e da ALUMAR (Consórcio de Alumı́nio do Maranhão) são responsáveis pela segunda maior movimentação de carga no Brasil. A ALUMAR movimenta matérias primas como coque, piche, soda e bauxita, empregados no processo de produção de alumina e alumı́nio. A mineradora Vale, por sua vez, detém a administração do terminal da Ponta da Madeira por onde é exportado minério de ferro proveniente da jazida da Serra de Carajás. Além desses, o Porto do Itaqui, administrado pela Empresa JIM, 2014. ISSN: 2358-8861 JIM 2014 - V Jornada de Informática do Maranhão Maranhense de Administração Portuária (EMAP), movimenta vários tipos de cargas, tais como: derivados de petróleo, fertilizante, manganês, ferro gusa, e soja [Barros 2010]. Os portos tem importante valor na competição econômica entre os paı́ses. É pelas águas marinhas que se escoa mais da metade da produção mundial. Os navios tendem a aumentar de capacidade com o avanço da tecnologia, exigindo que os portos se adequem cada vez mais a esses avanços. É nesse cenário que surge a necessidade de explorar a maior capacidade possı́vel do porto e a diminuição dos custos de espera e manutenção [Silva 2008]. O porto ideal seria capaz de atender navios de grande porte, com alto nı́vel de mecanização, oferecendo fluidez ao transporte e elevada produtividade [Barros 2010]. Os complexos portuários de todo o mundo tem por objetivo fundamentalmente realizar carga e descarga de navios em locais para tais propósitos conhecidos como berços [Barros 2010]. Para essas operações acontecerem com eficiência, existe uma série de equipamentos que precisam estar disponı́veis e condições que precisam ser cumpridas. O Problema de Alocação de Berços (PAB) consiste em minimizar o tempo total das operações no porto. Dada uma fila de navios e conhecidos os seus tempos estimados de chegada, o problema se resume a definir uma sequência de atracação que resulte no menor tempo de serviço de cada navio. Este trabalho tem por objetivo propor a meta-heurı́stica GRASP para a resolução do PAB, com condições restritas ao complexo portuário do Itaqui. O restante deste trabalho está organizado da seguinte forma: o Problema de Alocação de Berços é descrito na Seção 2; na Seção 3 é apresentado o GRASP e como ele foi aplicado ao PAB; os resultados são discutidos na Seção 4; e na Seção 5 são tiradas algumas conclusões em relação a utilização do GRASP para este problema. 2. Problema de Alocação de Berços O problema de alocação de berços com restrição de estoque foi modelado levando em consideração a quantidade de navios N e a quantidade de marés L, com base em uma análise discreta do tempo em relação a janelas de horizonte M chamadas de Tidal Time Windows (TTW), como mostra a Figura 1. A fundamentação matemática foi baseada no modelo de heterogeneidade dos berços [Barros 2010], onde cada berço tem uma velocidade de atendimento diferente nas operações com os navios. Este fator de heterogeneidade está diretamente ligado à infraestrutura dos berços, pois diferentes estruturas resultam em vazões ou velocidades de atendimentos diferentes. Nesse modelo, “o objetivo é minimizar o custo acumulado sobre todas as operações em um horizonte de planejamento dado. Sendo assim, apenas o tempo de serviço total é utilizado, obtido com base na utilização de TTW’s por cada navio”[Barros 2010]. A função objetivo consiste em minimizar os tempos de serviço de cada navio, como mostra a fórmula a seguir: min N X M X L X j − ai + 1 i=1 j=ai l=1 JIM, 2014. ISSN: 2358-8861 hij × yijl (1) JIM 2014 - V Jornada de Informática do Maranhão Figura 1. Demonstração do PAB. [Barros 2010] Onde: • • • • N : número de navios, n = |N |; M : número de TTW’s, m = |M |; L: conjunto de posições de atracação, l = |L| ai : TTW de chegada do navio i; A variável de decisão assume os seguintes valores: 1, se o navio i estiver alocado na T T W j e atracado no berço l yijl = 0, de outra f orma Na modelagem do problema é utilizado um parâmetro que consiste no tempo de processamento de um navio em um berço, representado pela variável hil , que é descrito da seguinte forma: & P|Q| hil = q=1 wiq vl ' (2) No qual vl representa o tempo de carregamento/descarregamento [Fernandes 2001] no berço l, Q representa a quantidade total de materias-primas operadas no porto e wiq a quantidade de matéria-prima q em um navio i. 3. GRASP O GRASP é aplicado em problemas de otimização combinatória onde cada iteração consiste em duas fases: a construção de uma solução inicial de forma gulosa, aleatória e adaptativa e um procedimento de busca local que tem o objetivo de aprimorar a solução gerada na primeira fase [Gonçalves 2004]. Apesar de semelhante a várias outras heurı́sticas gulosas, o GRASP diferencia-se pela geração da primeira solução aleatória, que é realizada por algum tipo de construção randômica gulosa ou algum esquema de perturbação [Freddo 2008]. JIM, 2014. ISSN: 2358-8861 JIM 2014 - V Jornada de Informática do Maranhão O GRASP, apesar de ser uma heurı́stica gulosa, ainda tem sido muito utilizado para resolver grandes problemas de otimização combinatória, sendo, segundo [Lopes 2013], responsável por produzir algumas das melhores soluções conhecidas para muitos problemas. Outro ponto importante é a fácil implementação da meta-heurı́stica, que necessita de apenas dois parâmetros iniciais ι e α, sendo ι responsável pelo número de iterações e α pela taxa de “gulosidade” do esquema construtivo. Segue um esquema do pseudo algoritmo GRASP. Para aplicar o GRASP ao PAB, é necessário que se definam os esquemas de busca local e a heurı́stica gulosa a ser utilizada. A seguir, serão abordados os tópicos referente a aplicação do algoritmo exposto no trabalho ao problema. Algoritmo 1: GRASP 1 2 3 4 5 enquanto h o u v e r n a v i o s a s e r e m a l o c a d o s f a ç a x <− g e r a S o l u ç ã o A l e a t ó r i a G u l o s a ( ) ; buscaLocal ( x ) ; s e x < x ∗ e n t ã o x ∗ <− x ; 3.1. Algoritmo Construtivo Guloso Aleatório O GRASP se utiliza de uma heurı́stica aleatória e gulosa para a construção da solução inicial. Existem várias formas de se chegar a uma boa heurı́stica para um dado problema, uma delas é a Construção Semigulosa proposta por [Lopes 2013]. Essa construção foi escolhida pela fácil adaptação ao problema aqui tratado, porém outras construções são sugeridas pelo mesmo autor. A Construção Semigulosa é uma heurı́stica baseada em uma lista restrita de candidatos chamada de LRC. O algoritmo funciona da seguinte forma: a cada iteração um novo elemento, dentre os mais promissores, é adicionado à solução, alterando dessa forma o cenário; novamente são estimados os pesos dos candidatos e um, dentre os mais promissores, é adicionado à solução. A construção é adaptativa por se tratar de um algoritmo que calcula novos pesos para cada nova inserção de candidato, redefinindo assim os valores e pesos, e adaptando-se ao problema. É aleatória porque o próximo candidato a entrar na lista é escolhido aleatoriamente dentre os mais promissores. Uma função avaliadora estima o peso de todos os candidatos da LRC baseado no impacto que irá causar ao entrar na solução naquele ponto da construção. Após avaliar cada candidato, é feita uma seleção aleatória, onde o parâmetro α é o ponto de corte dessa seleção. Estarão aptos a entrar na solução somente os α primeiros candidatos da lista. Esse parâmetro, como já dito anteriormente, determina a “gulosidade” do algoritmo. O termo semiguloso é aplicado devido ao fato de o algoritmo utilizar-se de uma função estimadora, um percentual de corte e uma lista restrita. Portanto, por mais que seja guloso, o algoritmo utiliza-se de uma estratégia para fugir de soluções muito ruins. Um esquema do pseudo algoritmo da construção gulosa é mostrado a seguir. Algoritmo 2: Algoritmo Construtivo Guloso Aleatório 1 2 3 4 enquanto l i s t a de c a n d i d a t o s n ã o f o r v a z i a f a ç a a v a l i a C a n d i d a t o s (C ) ; c i = s e l e c i o n a A l e a t o r i a m e n t e U m C a n d i d a t o (C ) ; a d i c i o n a C a n d i d a t o N a S o l u ç ã o ( c i ) ; JIM, 2014. ISSN: 2358-8861 JIM 2014 - V Jornada de Informática do Maranhão Para aplicar a Construção Semigulosa ao PAB é necessário que se defina a função avaliadora que será capaz de estimar pesos para os candidatos da LRC. Sendo assim, a função avaliadora para este trabalho baseia-se na quantidade de carga trazida por cada navio relacionada às marés crı́ticas de suas matérias. Entende-se como um bom navio a entrar na solução aquele que traz maior quantidade de matéria e o consumo dessa matéria pelo porto é alto. Além disso, um esquema de matérias crı́ticas é tratado no algoritmo. A criticidade de uma matéria prima é calculada em função de seu estoque atual e o consumo. A cada TTW um consumo pelo porto é realizado sobre as matérias no estoque. Em uma determinada TTW o consumo da matéria irá superar o seu nı́vel de estoque, resultando no que aqui é chamada de maré crı́tica. Todas as matérias terão uma maré crı́tica, que é aquela TTW em que a quantidade da matéria estará em um nı́vel abaixo do requerido pelo porto. Para cada navio é estimada, no caso de trazer mais de uma matéria, a sua maré mais crı́tica. Portanto, o potencial de entrada do navio na construção semigulosa é avaliado como um fator proporcional à criticidade da matéria da carga trazida por ele. O potencial do navio aumenta com a proximidade da maré (tempo) na qual o estoque atinge o valor mı́nimo (maré crı́tica). A seguir, está definida a função avaliadora, onde d é a distância da maré de chegada do navio à maré crı́tica da matéria prima que ele carrega, e e é a quantidade de carga trazida por ele. Vale ressaltar que g(ck ) avalia a matéria k de cada navio resultando em pesos diferentes quando o navio estiver carregado com mais de uma matéria. Nesse caso, aquela matéria que apresentar maior peso determinará o peso total do navio. 1 g(ck ) = ¯ × e d (3) 3.2. Busca Local Um esquema de busca local pode ser definido como uma estrutura de vizinhança, onde cada vizinho é obtido por um movimento na solução [Freddo 2008]. Esses movimentos podem ser pequenas alterações na solução, como relata [Lopes 2013]. A busca local parte de um ponto no espaço de solução à procura de soluções vizinhas melhores que a atual onde, encontrada uma solução melhor, a busca reinicia recursivamente sobre a mesma. Algoritmo 3: Busca Local 1 2 enquanto e x i s t i r s p e r t e n c e n t e a N( t ) t a l que f ( s ) < f ( t ) f a ç a t <− s ; No caso especı́fico do PAB, um esquema de busca local é definido como movimentos de trocas ou alterações no vetor solução. Dada uma solução, buscar um vizinho desta significa alterar posições de navios ou trocar berços entre dois ou mais navios. Esses movimentos produzem outras soluções que podem ser melhores ou piores que a solução corrente. Outros esquemas de buscas locais mais elaborados podem ser tratados no PAB, mas este não é o enfoque deste trabalho. JIM, 2014. ISSN: 2358-8861 JIM 2014 - V Jornada de Informática do Maranhão 4. Resultados Para concluir e confirmar as pesquisas deste trabalho, foi necessária a realização de diversos testes com instâncias do PAB. Os resultados consolidaram a heurı́stica gulosa, que se mostrou efetiva e apresentou boas soluções, conseguindo alcançar a solução ótima em muitos casos. O esquema de construção gulosa gerou boas soluções iniciais. Além disso, o procedimento de busca local mostrou-se robusto e bastante eficiente na exploração do espaço de busca. Tabela 1. Resultados computacionais obtidos por Greedy Randomized Adaptive Search Procedure (GRASP). Instância 10-15-3A 10-15-4A 10-15-4B 10-20-3A 10-20-3B 10-25-2A 10-25-2B 15-20-4A 15-25-3A 15-30-2A 15-30-4A 15-35-3A 15-40-2A 20-40-3A 20-40-4A 20-55-2A 30-70-4A 30-75-3A 30-80-2A Navios Berços 10 10 10 10 10 10 10 15 15 15 15 15 15 20 20 20 30 30 30 3 4 4 3 3 2 2 4 3 2 4 3 2 3 4 2 4 3 2 TTW’s Ótimo 15 15 15 20 20 25 25 20 25 30 30 35 40 40 40 55 70 75 80 31 29 21 44 27 43 33 40 55 77 86 121 107 108 297 208 - Média 31 30 21 44 27 44 83 40 55 110 77,93 87,2 125 110,46 108,26 319,7 208,86 216,76 809,26 Desvio Ótimo Taxa Padrão (GRASP) 0 31 1 0 30 0 0 21 1 0 44 1 0 27 1 0 44 1 0 83 1 0 40 1 0 55 1 0 110 0,26 77 0,066 0,81 86 0,233 0 125 0 0,74 109 0 0,46 108 0,733 1,52 317 0 1,97 206 1,87 212 0 30,81 772 - As instâncias do problema têm tamanhos variados para avaliar de maneira adequada a performance do algoritmo, sendo essas compostas por dados de entrada baseados em estimativas de condições reais do porto. Para a produção dessas instâncias foram tomados horizontes de planejamentos previamente estudados e estruturados, que possibilitassem a resolução computacional com o ideal de aproximar os dados tratados pelo algoritmo do cenário real. Os resultados ótimos conhecidos foram obtidos por programas solucionadores comerciais, porém algumas instâncias possuem valores ótimos desconhecidos, como no caso das instâncias “15-30-2A”,“30-70-4A” e“30-80-2”. A tabela de resultados (Tabela 1) abaixo foi obtida após a execução do algoritmo, fazendo uso das instâncias citadas acima. Além disso, apresenta dados como média - resultado médio alcançado taxa - porcentagem de resultados econtrados igual ao ótimo - e ótimo (GRASP) - melhor (e consequentemente menor) valor encontrado por esse algoritmo para aquela instância. Essas informações são necessárias uma vez que o GRASP é um algoritmo estocástico, JIM, 2014. ISSN: 2358-8861 JIM 2014 - V Jornada de Informática do Maranhão gerando, dessa forma, soluções variadas em cada iteração e que serve, portanto, para que se verifique o quão eficaz ele se mostrou. Os tempos de execução foram abaixo do estipulado para a heurı́stica, que é de 3600 segundos, e cada instância foi executada trinta vezes. 5. Conclusão Este artigo apresentou uma metodologia de resolução de problemas de otimização combinatória tomando o PAB como objeto de estudo e aplicação do método (GRASP). Foram tratados os cenários do problema, bem como o algoritmo e esquema utilizados na resolução do mesmo. Os resultados do algoritmo mostraram-se bons reflexos da heurı́stica gulosa proposta pelo problema, bem como do esquema de busca local e atribuição de pesos aos navios. O presente trabalho pode ainda estender-se visto que grandes instâncias do PAB ainda podem ser resolvidas pelo GRASP. Algumas mudanças na busca local e na heurı́stica gulosa podem trazer resultados ainda melhores, como a dissolução da função objetivo no algoritmo, que seria dar o fitness da solução em tempo de construção da mesma. Até o presente trabalho as pesquisas não avançaram devido a complexidade dos estudos. Pode-se ainda testar as variações de GRASP que tiveram bons resultados em outros trabalhos, como cita [Lopes 2013]. Outro ponto importante a ser ressaltado é a melhoria na geração da solução inicial. Foi constatado que se houver um método para unir a heurı́stica gulosa à função objetivo, podem-se obter soluções que se utilizam de táticas para um melhor ordenamento dos navios, bem como atrasar um navio para gerar um ganho na solução total. O GRASP conseguiu mostrar a eficiência da metaheurı́sitica para resolver problemas de otimização linear, uma vez que produziu soluções muito boas e com baixo custo computacional. Referências Barros, V. H. (2010). Problema de alocação de bercos em portos graneleiros com restricão de estoque e condições favoraveis de maré. Dissertação (Mestrado em Engenharia Elétrica), UFMA, São Luis, MA. Fernandes, M. G. (2001). Modelo econômico-operacional para análise e dimensionamento de terminais de contêineres e veı́culos, USP, São Paulo. Freddo, A. R., . B. R. C. (2008). Implementação da metaheurı́stica grasp para o problema do caixeiro viajante simétrico, Universidade Federal do Paraná. Gonçalves, L. B., M. S. L. . O. L. (2004). Uma heurı́stica grasp para o problema do caixeiro viajante periódico. Anais do XXXVI SBPO. Lopes, H. S., R. L. C. . S. M. T. (2013). Meta-heurı́sticas em pesquisa operacional. Omnipax, Curitiba, PR. Silva, V. M. (2008). Um modelo heurı́stico para alocação de navios em berços. Dissertação (Mestrado em Engenharia Elétrica), USP, São Paulo. JIM, 2014. ISSN: 2358-8861