SciELO - Scientific Electronic Library Online

 
vol.30 número3Avaliação dos custos operacionais eficientes das empresas de transmissão do setor elétrico Brasileiro: uma proposta de adaptação do modelo dea adotado pela ANEELModelagem probabilística de setores de um sistema elétrico índice de autoresíndice de assuntospesquisa de artigos
Home Pagelista alfabética de periódicos  

Serviços Personalizados

Journal

Artigo

Indicadores

Links relacionados

Compartilhar


Pesquisa Operacional

versão impressa ISSN 0101-7438

Pesqui. Oper. vol.30 no.3 Rio de Janeiro set./dez. 2010

https://doi.org/10.1590/S0101-74382010000300003 

Resolução do problema de alocação de berços através de uma técnica de geração de colunas

 

 

Geraldo Regis MauriI*; Alexandre César Muniz de OliveiraII; Luiz Antonio Nogueira LorenaIII

IDep. de Engenharia Rural / Centro de Ciências Agrárias Universidade Federal do Espírito Santo (UFES)Alegre - ES mauri@cca.ufes.br
IIDepartamento de Informática Universidade Federal do Maranhão (UFMA) São Luís - MA acmo@deinf.ufma.br
IIILab. Associado de Computação e Matemática Aplicada Instituto Nacional de Pesquisas Espaciais (INPE) São José dos Campos - SP lorena@lac.inpe.br

 

 


RESUMO

O Problema de Alocação de Berços (PAB) aborda a programação e a alocação de navios às áreas de atracação ao longo de um cais. Neste trabalho, o PAB é modelado como um Problema de Roteamento de Veículos com Múltiplas Garagens e Janelas de Tempo, e para resolvê-lo, é utilizado um método proposto recentemente denominado ATP/PL. Este método consiste na aplicação do Algoritmo de Treinamento Populacional (ATP) juntamente com a Programação Linear (PL) para Geração de Colunas. Estes métodos são aplicados de maneira interativa, onde o ATP, através de informações da relaxação da PL, é responsável pela geração de boas colunas, e a PL pela resolução de um Problema de Particionamento de Conjuntos, com uma restrição adicional (PPC+), formado por essas colunas. Os resultados computacionais são obtidos através de instâncias utilizadas em um trabalho recente sobre o problema e comparados com os resultados obtidos pelo CPLEX e por outro método encontrado na literatura.

Palavras-chave:  problema de alocação de berços; algoritmo de treinamento populacional; geração de colunas.


ABSTRACT

The Berth Allocation Problem (PAB) consists of ships programming and allocation to the mooring areas along a quay. PAB is modeled as a Multi-Depot Vehicle Routing Problem with Time Windows. A recently proposed method denominated ATP/PL is used to solve it. This method consists of the application of the Population Training Algorithm (ATP) with Linear Programming (PL) for Column Generation. These methods are applied in an interactive way, where ATP uses PL relaxation information for the generation of good columns, and PL is used for solving a Set Partitioning Problem, with an additional restriction (PPC+), formed by these columns. The computational results are obtained through instances used in a recent work and compared against results from CPLEX and other method found in literature.

Keywords:  berth allocation problem; population training algorithm; column generation.


 

 

1. Introdução

O constante crescimento econômico, o volume crescente do comércio entre os diversos países, e os aumentos dos avanços na tecnologia de construção de grandes navios, induzem ao aumento da frequência de transportes entre portos, e consequentemente ao aumento da importância desses portos na economia de um país.

Segundo Hansen et al. (2008), um porto deve operar de forma eficiente para competir neste ambiente. Além disso, de acordo com Imai et al. (2003), a alocação e a programação de navios a berços têm um impacto primário na eficiência dessas operações. Uma discussão a respeito dos problemas de decisão que surgem em um porto é apresentada em Vis & Koster (2003). Steenken et al. (2004) apresentam uma classificação dos principais processos e operações em um porto. O problema crucial no gerenciamento de um porto é a otimização do equilíbrio entre os proprietários dos navios, que exigem serviços rápidos, e o uso econômico dos recursos disponíveis no porto (Dragovic et al., 2005).

O Problema de Alocação de Berços (PAB) reflete as principais decisões referentes aos recursos de custo mais importante no gerenciamento de portos de cargas. Assim, uma boa distribuição dos navios aos berços aumentará a satisfação dos proprietários dos navios e aumentará a produtividade do porto, conduzindo a rendas mais altas para ambas as partes (Imai et al., 2003).

Neste artigo, o problema é tratado em sua forma discreta, considerando como objetivo principal a minimização do tempo total gasto pelos navios dentro do porto, que segundo Hansen et al. (2008), é uma função objetivo apropriada para o PAB. Essa abordagem é baseada nos trabalhos apresentados por Imai et al. (1997, 2001, 2003) e Cordeau et al. (2005).

Para resolver o PAB, aplica-se um método proposto recentemente, denominado ATP/PL (ver Mauri & Lorena, 2004), que é baseado na técnica de geração de colunas. É utilizado um modelo matemático baseado em um problema de roteamento de veículos para representar o problema, e o ATP/PL é utilizado para tratá-lo, ou seja, alocar e programar as atracações dos navios aos berços de forma a reduzir o tempo de permanência dos navios no porto.

O artigo está organizado como segue. A Seção 2 apresenta uma breve descrição do problema. A modelagem do problema é apresentada na Seção 3. Já a Seção 4 descreve o método utilizado para resolver o PAB. Os resultados computacionais obtidos são apresentados na Seção 5, e as conclusões são resumidas na Seção 6.

 

2. Descrição do problema

O Problema de Alocação de Berços (PAB) consiste em atribuir os navios que chegam a um determinado porto para as "posições" de atracação disponíveis ao longo de um cais (berços). As principais decisões a serem tomadas neste processo envolvem a escolha de onde e quando os navios deverão atracar (Cordeau et al., 2005).

Em relação ao local de atracação, existem restrições relativas à profundidade da água, à distância máxima em relação ao local mais favorável ao longo do cais, e também ao tamanho dos navios. Já em relação ao horário de atracação dos navios, as restrições são expressas como janelas de tempo para conclusão de seu atendimento (Cordeau et al., 2005).

O tempo de atendimento de um navio depende de seu ponto de atracação (berço), e é uma função da distância do berço até a área de carga e descarga de containeres no pátio do porto. Como mencionado em Cordeau et al. (2005), esta dependência afeta fortemente o desempenho das operações no porto.

Os dados referentes ao tempo de serviço dependem de outra decisão, que é o número de guindastes no cais que estão disponíveis aos navios que chegam. Essa decisão é conhecida como Problema de Atribuição de Guindastes - PAG (ver Lee et al., 2008) e afeta o tempo de serviço dos navios. Consequentemente, o PAG tem um impacto no PAB. Em um sistema complexo, como um porto de transferência de cargas, o processo de tomada de decisão é frequentemente hierárquico, e o PAG é resolvido antes do PAB.

O objetivo então é minimizar os custos referentes ao porto e ao navio, que é relacionado ao tempo de serviço dos navios. O objetivo do PAB normalmente é minimizar o tempo de serviço total de todos os navios. Caso os navios não tenham a mesma importância, uma soma dos tempos de serviços dos navios, considerando uma penalização para indicar a sua devida importância, pode refletir melhor a prática de gerenciamento de alguns portos. Os pesos nesta soma podem representar um esquema do valor estimando da carga ou do número de containeres movimentados. Em algumas variantes do problema também podem ser incluídas outras condições de penalidade na função objetivo, como prioridade de atendimento, valor de carga movimentada, e outras (ver Imai et al., 2008).

O PAB pode ser modelado como um problema discreto se o cais for visto como um conjunto finito de berços. Neste caso, os berços podem ser descritos como segmentos de comprimento fixos, ou, se a dimensão de espaço for ignorada, como pontos. Já os modelos contínuos consideram que os navios podem atracar em qualquer lugar ao longo do cais. No caso discreto, o PAB pode ser modelado como um Problema de Programação de Máquinas Paralela Sem Conexão (Pinedo, 1995), onde um navio é tratado como um trabalho e um berço como uma máquina. O PAB ainda pode ser modelado como um Problema de Roteamento de Veículos com Múltiplas Garagens e Janelas de Tempo (Legato et al., 2001), onde os navios são tratados como clientes e os berços como garagens. Já no caso contínuo, o PAB pode ser representado como um Problema de Corte e Estoque Bidimensional com algumas restrições adicionais. Em ambos os casos, o PAB é NP-Hard (Garey & Johnson, 1979).

 

3. Modelagem do problema

Neste trabalho, o Problema de Alocação de Berços (PAB) é tratado em sua forma discreta, onde o cais é dividido em um conjunto finito de berços, e a dimensão espacial é ignorada. Assim, deve-se observar, para cada navio, os tempos descritos na Figura 1.

 

 

Como observado por Legato et al. (2001), o PAB pode ser modelado como um Problema de Roteamento de Veículos com Garagens Múltiplas e Janelas de Tempo (ver Cordeau et al., 2001). Neste trabalho, o PAB é representado inicialmente através do modelo matemático proposto por Cordeau et al. (2005).

Nesse modelo, os navios são tratados como clientes e os berços como garagens (cada uma com seu veículo específico). Existem então m veículos "fictícios" (um para cada garagem), sendo que cada um inicia e termina sua "rota" na sua própria garagem. Os navios são modelados como vértices em um multigrafo, onde cada garagem (berço) ainda é dividida em um vértice de origem e um de destino. Nos vértices de origem e destino, as janelas de tempo correspondem ao período de funcionamento dos berços.

O modelo então é dado por um multigrafo e . As variáveis e parâmetros usados para representar o problema são:

Parâmetros:

N: conjunto de navios, n = |N|;
M: conjunto de berços, m = |M|;
tki: duração do atendimento do navio i no berço k;
ai: horário de chegada do navio i;
sk: horário de abertura do berço k;
ek: horário de fechamento do berço k;
bi: horário de término da janela de tempo para serviço do navio i;
vi: valor (custo) do tempo de serviço do navio i;

Variáveis:

se o navio j é atendido pelo berço k após o navio i;
é o horário que o navio i atracou no berço k;
é o horário em que o primeiro navio atracou no berço k;
é o horário em que o último navio saiu do berço k;

O modelo do PAB proposto por Cordeau et al. (2005) é escrito da seguinte forma:

Minimizar:

 

 

Sujeito a:

 

 

 

 

 

 

 

 

 

 

 

A função objetivo Z minimiza o tempo decorrido desde o momento em que os navios chegam, atracam e são atendidos, considerando um custo de serviço para esse tempo. A restrição (2) garante que cada navio é atendido por apenas um berço. As restrições (3) e (4) garantem, respectivamente, que um navio será o primeiro a ser atendido em cada berço, e outro será o último. A restrição (5) garante a conservação do fluxo (atendimento) para os demais navios. A restrição (6) faz o cálculo do horário de atracação dos navios. Nessa restrição são considerados apenas os arcos Ak válidos para cada berço k, ou seja, alguns navios não podem ser atendidos em determinados berços, pois por exemplo, o tipo de equipamento disponível no berço pode não ser apropriado para o atendimento de determinados tipos de carga. A possibilidade de atendimento ou não dos navios pelos berços é determinada através dos dados encontrados nas instâncias utilizadas (o tempo de atendimento é zero). As restrições (7) e (8) garantem, respectivamente, que o horário de atracação seja após a chegada do navio, e que o horário do término do atendimento do navio seja anterior ao horário limite do navio (janela de tempo). As restrições (9) e (10) garantem a não violação das janelas de tempo nos berços. E por fim, a restrição (11) garante que as variáveis de decisão sejam binárias.

 

4. ATP/PL

Proposto inicialmente por Mauri & Lorena (2004), o ATP/PL é baseado na aplicação do Algoritmo de Treinamento Populacional (ATP) juntamente com a Programação Linear (PL) através da técnica de Geração de Colunas. O ATP e a PL são aplicados de maneira interativa, sendo o ATP, através de informações da relaxação PL, responsável pela geração de boas colunas (baixo custo e boa cobertura dos navios), e a PL pela resolução de um Problema de Particionamento de Conjuntos (PPC) formado por essas colunas. O PPC é formulado da seguinte maneira:

Minimizar:

 

 

Sujeito a:

 

 

 

Na formulação acima, o problema é descrito como o de formação de uma matriz, onde as colunas representam os berços, e as linhas os navios. Cada elemento aij {0,1}, sendo iN={1..n} e jP={1..p}, n é o número de navios (linhas) e p o número de colunas geradas, onde aij1 se a coluna j atender o navio i, e 0 caso contrário. Esta é uma formulação clássica e constantemente utilizada em diversos trabalhos encontrados na literatura (Desrochers & Soumis, 1989; Wilhelm, 2001). cj representa o custo da coluna j (eq. 16) e xj é igual a 1 se a coluna  j pertencer à solução do problema e 0 caso contrário.

No caso específico do PAB, ainda deve-se considerar que cada berço possui suas próprias características, podendo não ter a capacidade de atender a um determinado navio. Nesse caso, deve-se garantir que seja utilizado nenhum ou apenas um berço de cada "tipo" disponível no cais, ou seja, cada coluna pertencente à solução final do problema deverá representar um berço distinto, e sem repetições. Para isso, deve-se inserir uma nova restrição no PPC (eq. 15), formando assim um problema de particionamento de conjuntos com uma restrição adicional (PPC+).

 

 

Cada elemento bij {0,1}, sendo iM={1..m} e jP={1..p}, m é o número de berços disponíveis, onde bij = 1 se a coluna j representar o berço i. Cada coluna é representada através de um "indivíduo" formado por números inteiros, onde a primeira posição indica o berço referente à coluna, e as demais posições representam os navios atendidos por esse berço (coluna). A sequência de atendimento de um berço k qualquer é dada por:

 

 

O indivíduo representado acima indica que o berço k atenderá os navios 10, 3, 1 e 5, nessa ordem. O custo de cada coluna (indivíduo) é dado pela equação (16). Para calcular o custo das colunas, as restrições referentes às janelas de tempo (7-10) são alocadas na função objetivo, juntamente com fatores de penalização (vetor w = [w0,w1,w2]). Dessa forma, as colunas são avaliadas de forma relaxada, e nos casos de violações nas janelas de tempo, o custo da coluna receberá uma penalização elevada.

 

 

A geração das colunas necessárias para resolver o PPC+ (eq. 12-15) pode ser um desafio. Assim, a relaxação de PL é utilizada juntamente com o ATP para gerar um conjunto de colunas mais "tratável" por softwares comerciais. Maiores detalhes sobre o ATP/PL podem ser vistos em Mauri & Lorena (2007).

4.1 Algoritmo de Treinamento Populacional

O Algoritmo de Treinamento Populacional (ATP) é um tipo de técnica evolutiva empregado inicialmente por Oliveira (2002) e Oliveira & Lorena (2002), e foi derivado do Algoritmo Genético Construtivo (AGC). O AGC foi proposto por Lorena & Furtado (2001) e possui várias características inovadoras comparadas aos algoritmos genéticos tradicionais. Uma dessas características é a utilização de uma população ordenada, de tamanho dinâmico, e composta de "esquemas" (soluções incompletas) e "estruturas" (soluções completas). O aspecto construtivo do AGC está relacionado ao fato de que, ao longo do processo evolutivo, uma população de esque-mas é utilizada como base para a construção de uma população de estruturas. Tanto esquemas quanto estruturas competem entre si durante o processo evolutivo, e ambos são avaliados diretamente em uma base comum, usando um processo duplo de aptidão, chamado aptidão-fg.

Os esquemas não são usados no ATP, e a aptidão-fg é executada através de heurísticas. Um indivíduo é considerado bem adaptado se a heurística de treinamento utilizada não for capaz de melhorá-lo. A adaptação no treinamento da população é usada para guiar a busca para áreas promissoras.

As duas funções usadas no treinamento evolutivo são definidas através de g(k) = "qualidade" do indivíduo (coluna) k (ver eq. 19 e 20), e f(k) = Melhor g(k') | k' Vizinhança (k). O valor de f(k) é obtido através da heurística de treinamento (ver Figura 4). O processo evolutivo é desenvolvido privilegiando os indivíduos de menor diferença [g(k) - f(k)] e menor g(k), atribuindo a eles os seguintes ranks:

 

 

 

gmax é o custo (alto) do pior indivíduo criado na população inicial e d é um percentual constante de gmax. A população é controlada dinamicamente por um parâmetro de evolução, denominado a, que é atualizado por:

 

 

Step é uma constante que controla a velocidade do processo evolutivo, PS é o tamanho da população corrente, é a variação, no momento, entre os ranks do melhor e do pior indivíduo, respectivamente, e RG é o número de gerações que faltam para terminar o processo.

O parâmetro a é comparado aos ranks (eq. 17), e se α ≥ o indivíduo k é eliminado da população. A população no momento de evolução a é dinâmica em tamanho e pode ser esvaziada durante o processo.

A solução inicial é gerada através de duas heurísticas: heurística de distribuição e heurística de programação. A heurística de distribuição é responsável pela atribuição dos navios aos berços. Essa heurística é baseada na heurística de distribuição apresentada em Mauri e Lorena (2006) e na heurística FCFS-G, apresentada em Cordeau et al. (2005). Já a heurística de programação determina o horário de atendimento dos navios nos berços. A heurística de distribuição é executada para cada indivíduo da população inicial.

Na heurística de distribuição são criadas m colunas (berços) vazias. Os n navios são organizados por ordem de chegada ao porto, e são distribuídos sequencialmente aos berços, que são selecionados de forma aleatória, porém sempre verificando se este poderá atender o navio em questão. Após essa distribuição, fica garantido que cada navio foi atribuído a um berço que poderá atendê-lo.

O horário em que o navio será atendido ainda poderá ser incoerente, podendo apresentar sobreposição e/ou violações nas janelas de tempo, tanto dos navios quanto do berço. A Figura 2 apresenta a heurística de distribuição.

Na heurística de programação, são efetuados os cálculos do horário de atracação de cada navio, do custo da coluna k (ck), das funções g(k) e f(k) e do rank da coluna δ(k). A Figura 3 apresenta a heurística de programação.

 

 

Como função de treinamento f(k), é utilizada uma heurística de busca local simples, que é responsável por avaliar vários indivíduos (colunas) alternativos em uma vizinhança. Essa heurística é descrita na Figura 4.

A mutação utilizada também é baseada em uma busca local, implementada através de uma simples troca das posições de atendimento de dois navios (selecionados aleatoriamente) atendidos por uma coluna (indivíduo). Esse processo é descrito na Figura 5.

 

 

O cruzamento é responsável por gerar novos indivíduos da seguinte maneira: dois indivíduos são selecionados (base e guia). A partir de então, é criado um novo indivíduo semelhante à base. Assim, cada navio atendido pelo indivíduo guia é inserido nesse novo indivíduo, caso o berço correspondente ao novo possa atender ao navio em questão. Feito isso, a sequência de atendimento do novo indivíduo é ordenada pelo horário de chegada dos navios ao porto. O cruzamento é descrito na Figura 6.

Esses operadores são incorporados ao ATP, cujo pseudocódigo é mostrado na Figura 7. É interessante notar que, utilizando esses processos, o ATP formará populações de vários tamanhos, guiados pelo objetivo de selecionar colunas de baixo custo e com uma cobertura suficiente dos navios. As melhores colunas deverão incluir um número de navios diversificado, caracterizado pela heurística de treinamento (função de treinamento) que guiará o processo evolutivo.

 

 

4.2 Interação ATP e PL

Definida a implementação do ATP, tal metodologia é incorporada à ATP/PL. A interação do ATP com a PL é baseada principalmente na definição da função de adaptação (função g) dos indivíduos no ATP. Essa função é definida com o uso de informações das variáveis duais retiradas da PL. A função g é definida da seguinte maneira:

 

 

 

ck é o custo da coluna k (eq. 16); li é a variável dual para a para a restrição i. Através dos conceitos da técnica de geração de colunas, pode-se calcular o custo reduzido da k-ésima coluna inserida no PPC+, denotado por θk, através da equação:

 

 

A partir das equações (19), (20) e (21), pode-se notar que para custos reduzidos negativos (θk< 0), o valor da função g estará dentro do intervalo [0,1], fazendo com que a heurística de treinamento, que define o valor da função f correspondente (melhor g em uma vizinhança), proporcione uma pequena diferença (g - f) para colunas que tenham custo reduzido negativo. Para custos reduzidos positivos (θk ³ 0) o valor da função g será igual ao custo, ou seja, um valor "elevado". Assim, a população é treinada indiretamente para indivíduos com custo reduzido negativo, melhorando a cobertura dos navios para o PPC+ e evitando a geração de um número excessivo de colunas, e consequentemente acelerando o processo de geração de colunas. A Figura 8 apresenta o pseudocódigo da ATP/PL.

Um conjunto inicial de colunas é gerado aleatoriamente, porém de forma direcionada ao problema, ou seja, contendo colunas que formem uma solução para o PPC+. Essas colunas são geradas através de uma única execução da heurística de distribuição (Figura 2) seguida pela execução da heurística de programação (Figura 3) para cada coluna. É interessante destacar que a solução formada por essas colunas provavelmente será inválida, pois as colunas podem apresentar violações nas janelas de tempo, porém devido ao seu alto custo (devido às penalizações), essas colunas deixarão de pertencer à solução à medida que novas colunas forem criadas.

A partir do conjunto inicial de colunas gerado é formado um PPC+, que é resolvido através da PL. Feito isso, novas colunas são geradas através do ATP, considerando os valores das variáveis duais, para construir as funções de adaptação. As colunas válidas (que não apresentam violações nas janelas de tempo) e com custo reduzido negativo são adicionadas ao atual PPC+, e este é resolvido novamente através da PL. Esse processo é repetido por um determinado número de iterações ou enquanto um número máximo de colunas não for gerado.

Finalmente, terminada essa interação, a PL é convertida em Programação Linear Inteira - PLI e resolvida através do software CPLEX, a qual apresenta uma solução viável para o PPC+, e consequentemente para o PAB.

 

5. Resultados computacionais

Para avaliar o desempenho do ATP/PL, foram utilizadas 30 instâncias distintas, cada uma com 60 navios e 13 berços. Essas instâncias foram geradas aleatoriamente por Cordeau et al. (2005). Todos os testes foram realizados em um PC com processador AMD Athlon· 64 3500 de 2.2 GHz e 1GB de memória RAM. Toda a implementação foi desenvolvida na linguagem C++.

Os parâmetros utilizados pelo ATP/PLsão apresentados na Tabela 1. Além disso, em todos os experimentos, os valores de gmax utilizados foram obtidos a partir da maior função g dos indivíduos gerados na população inicial. Já o valor de α, inicialmente, foi igual a 0. As penalizações utilizadas foram w = [1,10,10].

 

 

A Tabela 2 apresenta alguns detalhes da atuação do ATP/PL. Nessa tabela, pode-se notar que o número médio de colunas geradas para cada instância é relativamente baixo em relação ao número máximo de colunas previsto. Pode-se notar também que o valor da solução do último PPC+ (formado por todas as colunas geradas) foi o mesmo em todos os casos, sendo resolvido tanto através da PL quanto da PLI, o que indica a obtenção da solução ótima para o PPC+ formado pelas colunas geradas. O tempo de interação entre o ATP e a PL também é baixo, assim como o tempo para resolução do PPC+ final através da PLI, o que resulta em um tempo total de processamento competitivo para o ATP/PL.

As soluções obtidas pelo ATP/PL foram comparadas com as melhores soluções conhecidas para as instâncias utilizadas. Essas melhores soluções foram obtidas através de uma heurística baseada na Busca Tabu, apresentada em Cordeau et al. (2005). Além disso, o CPLEX 10.0.1 (Ilog, 2006), também foi utilizado, de forma isolada, para resolver o modelo descrito na Seção 3. Foi utilizado um limite máximo de processamento de 1 hora para cada instância. A Tabela 3 apresenta essas comparações.

A função objetivo (1) do modelo original do problema (ver Seção 3) pode ser reescrita como apresentado a seguir (eq. 22). Assim, pode-se notar que esta apresenta um termo constante (somatórios de viai) que é subtraído. Como o CPLEX não "aceita" a inclusão de valores constantes na função objetivo dos modelos, estes foram resolvidos sem considerar o termo constante, e os gaps apresentados na Tabela 3 foram obtidos dessa forma. Porém, quando o termo constante é subtraído do valor da solução obtida pelo CPLEX, tem-se o valor da solução para o problema.

 

 

Considerando a instância i02, por exemplo, o valor do termo constante é 33215. Já a solução factível obtida pelo CPLEX é 35821, e o limitante inferior é 34451,58. Calculando o gap então, tem-se:

 

 

Entretanto, o valor da solução do problema dever considerar o termo constante, logo, seria 35821 - 33215 = 2606 (Z), e consequentemente, o limitante inferior seria 34451,58 - 33215 = 1236,58, que obviamente é inferior às soluções do ATP/PL e BT, e indica que a solução obtida pelo ATP/PL (1261), por exemplo, está próxima da solução ótima para a instância i02 (que será entre 1237 e 1261). Como pode ser observado na Tabela 3, esse fato se repete para as demais instâncias.

Ainda na Tabela 3, a coluna "A" apresenta a melhoria obtida pelo ATP/PL em relação à Busca Tabu (BT). Já a coluna "B" apresenta a melhoria do ATP/PL em relação ao CPLEX. As soluções obtidas pelo ATP/PL foram 0,21% melhores em relação às obtidas pela Busca Tabu proposta por Cordeau et al. (2005). A Busca Tabu obteve apenas uma solução melhor do que o ATP/PL, para a instância i10. Já em relação ao CPLEX, pode-se notar que este não foi capaz de obter soluções para várias instâncias (em 1 hora), e nos casos em que foram encontradas soluções, os resultados foram expressivamente piores do que os apresentados pelo ATP/PL, em média 170,46% piores.

Em relação ao tempo para obtenção das soluções, o CPLEX utilizou 1 hora para cada instância (3600 seg.). A Busca Tabu utilizou aproximadamente 120 segundos para cada instância, como descrito em Cordeau et al. (2005). Já o ATP/PL, utilizou um tempo médio de 93,99 segundos para cada instância, o que mostra a competitividade do método em relação à Busca Tabu e a superioridade em relação ao CPLEX.

 

6. Conclusões

Foi utilizado um modelo matemático baseado em um problema de roteamento de veículos para representar o PAB. Para resolvê-lo, foi proposta a aplicação de um método denominado ATP/PL, que foi proposto recentemente, e é baseado na técnica de geração de colunas.

O ATP, integrado com uma técnica tradicional de geração de colunas, foi capaz de resolver o subproblema que gera novas colunas de uma forma implícita. Isso foi feito através da definição da aptidão-fg utilizando informações dos valores duais. Dessa forma, esse método mostrou ser adequado para outros problemas para os quais a geração de colunas seja indicada. Os resultados computacionais do ATP/PL foram excelentes e obtidos em tempos razoáveis de processamento, comparados à Busca Tabu e ao CPLEX.

O ATP/PL foi capaz de obter, em todos os casos, e com pouco tempo de processamento, soluções válidas para o problema. Além disso, o método proposto se mostrou extremamente eficiente, pois como podem ser observadas na Tabela 3, as soluções foram superiores às obtidas pelo CPLEX, que por sua vez apresentou gaps relativamente baixos, indicando uma grande proximidade com as soluções ótimas para o problema. Os operadores genéticos e a heurística de treinamento utilizada pelo ATP na fase de geração de colunas foram adequados e eficientes para exploração do espaço de soluções.

Os resultados obtidos mostram que o ATP/PL foi capaz de gerar soluções de boa qualidade para todas as instâncias em tempos computacionais expressivamente baixos, e ainda foram comparados com uma abordagem recente encontrada na literatura, e a qualidade das soluções encontradas foi ligeiramente superior. Além disso, os resultados obtidos ainda foram comparados com o CPLEX, e nesse caso, nota-se claramente a superioridade do método proposto tanto na qualidade das soluções quanto no tempo de processamento.

Enfim, os resultados mostram claramente o potencial da abordagem apresentada, onde soluções de alta qualidade são obtidas, para problemas relativamente grandes e em tempos de processamento expressivamente baixos. A continuação deste trabalho será voltada para o tratamento do problema em sua forma contínua, e para a aplicação do método proposto a problemas reais encontrados em portos brasileiros.

 

Agradecimentos

Os autores agradecem aos revisores anônimos pelos comentários e sugestões, e à Fundação de Amparo à Pesquisa do Estado de São Paulo - FAPESP (processo 04/11053-9) e ao Conselho Nacional de Desenvolvimento Científico e Tecnológico - CNPq (processos 300692/2009-9, 470813/2010-5, 473205/2008-4 e 558084/2009-5) pelo apoio financeiro parcial dado ao desenvolvimento deste trabalho.

 

Referências Bibliográficas

(1) Cordeau, J.F.; Laporte, G. & Mercier, A. (2001). A unified tabu search heuristic for vehicle routing problems with time windows. Journal of the Operational Research Society, 52, 928-936.         [ Links ]

(2) Cordeau, J.F.; Laporte, G.; Legato, P. & Moccia, L. (2005). Models and tabu search heuristics for the berth allocation problem. Transportation Science, 39, 526-538.         [ Links ]

(3) Desrochers, M. & Soumis, F. (1989). A column generation approach to the urban transit crew scheduling problem. Transportation Science, 23, 1-13.         [ Links ]

(4) Dragovic, B.; Park, N.K. & Radmilovic, Z. (2005). Simulation modelling of ship-berth link with priority service. Maritime Economics & Logistics, 7, 316-335.         [ Links ]

(5) Garey, M.R. & Johnson, D.S. (1979). Computers and intractability: a guide to the theory of np-completeness. Freeman, San Francisco, USA.         [ Links ]

(6) Hansen, P.; Oğuz, C. & Mladenović, N. (2008). Variable neighborhood search for minimum cost berth allocation. European Journal of Operational Research, 191, 636-649.         [ Links ]

(7) Ilog (2006). ILOG CPLEX 10.0: user's manual. France, 478 p.         [ Links ]

(8) Imai, A.; Nagaiwa, K. & Chan, W.T. (1997). Efficient planning of berth allocation for container terminals in Asia. Journal of Advanced Transportation, 31, 75-94.         [ Links ]

(9) Imai, A.; Nishimura, E. & Papadimitriou, S. (2001). The dynamic berth allocation problem for a container port. Transportation ResearchPart B, 35, 401-417.         [ Links ]

(10) Imai, A.; Nishimura, E. & Papadimitriou, S. (2003). Berth allocation with service priority. Transportation Research Part B, 37, 437-457.         [ Links ]

(11) Imai, A.; Nishimura, E. & Papadimitriou, S. (2008). Berthing ships at a multi-user container terminal with a limited quay capacity. Transportation Research Part E, 44, 136-151.         [ Links ]

(12) Lee, D.; Wang, H.Q. & Miao, L. (2008). Quay crane scheduling with non-interference constraints in port container terminals. Transportation Research Part E, 44, 124-135.         [ Links ]

(13) Legato, P.; Monaco, F. & Tigani, N. (2001). Berth planning at Gioia Tauro's maritime terminal by logistic distribution models. AIROAnnual Conference, Cagliari, Italy.         [ Links ]

(14) Lorena, L.A.N. & Furtado, J.C. (2001). Constructive genetic algorithm for clustering problems. Evolutionary Computation, 9, 309-327.         [ Links ]

(15) Mauri, G.R. & Lorena, L.A.N. (2004). Método interativo para resolução do problema de escalonamento de tripulações. XXXVI SBPO - Simpósio Brasileiro de Pesquisa Operacional, São João del Rei.         [ Links ]

(16) Mauri, G.R. & Lorena, L.A.N. (2006). Simulated annealing aplicado a um modelo geral do problema de roteirização e programação de veículos. XXXVIII SBPO - Simpósio Brasileiro de Pesquisa Operacional. Goiânia.         [ Links ]

(17) Mauri, G.R. & Lorena, L.A.N. (2007). A new hybrid heuristic for driver scheduling. International Journal of Hybrid Intelligent Systems, 4, 39-47.         [ Links ]

(18) Oliveira, A.C.M. (2002). Treinamento populacional em heurísticas - aplicações em otimização. Proposta de tese de Doutorado. Instituto Nacional de Pesquisas Espaciais (INPE).         [ Links ]

(19) Oliveira, A.C.M. & Lorena, L.A.N. (2002). 2-opt population training for minimization of open stack problem. In: Advances in Artificial Intelligence [edited by G. Bittencourt and G.L. Ramalho], Springer Lecture Notes in Artificial Intelligence Series, 2507, 313-323.         [ Links ]

(20) Pinedo, M. (1995). Scheduling: theory, algorithms and systems. Prentice-Hall, Englewood Cliffs, NJ.         [ Links ]

(21) Steenken, D.; Voss, S. & Stahlbock, R. (2004). Container terminal operation and operations research - a classification and literature review. OR Spectrum, 26, 3-49.         [ Links ]

(22) Vis, I.F.A. & Koster, R.D. (2003). Transshipment of containers at a container terminal: an overview. European Journal of Operational Research, 147, 1-16.         [ Links ]

(23) Wilhelm, W.E. (2001). A technical review of column generation in integer programming. Optimization and Engineering, 2, 159-200.         [ Links ]

 

 

Recebido em 08/2007; aceito em 12/2009 após 1 revisão
Received August 2007; accepted December 2009 after one revision

 

 

*  Corresponding author / autor para quem as correspondências devem ser encaminhadas

Creative Commons License Todo o conteúdo deste periódico, exceto onde está identificado, está licenciado sob uma Licença Creative Commons