UNIVERSIDADE PRESBITERIANA MACKENZIE
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA
Algoritmo de Seleção Clonal para a Minimização de
Rearranjos em Operações de Pilhas de Contêineres
Aluno: Luiz Antonio Carraro
Orientador: Prof. Dr. Leandro Nunes de Castro
São Paulo
2012
Dissertação apresentada à banca de mestrado do
Programa de Pós-Graduação em Engenharia
Elétrica da Universidade Presbiteriana Mackenzie,
como requisito parcial para a obtenção do título de
Mestre em Engenharia Elétrica.
Área de Concentração: Engenharia da Computação.
2
C313p Carraro, Luiz Antonio.
Algoritmo de seleção clonal para a minimização de rearranjos em
operações de pilhas de contêineres / Luiz Antonio Carraro. – 2012.
75 f. : il.; 30 cm.
Dissertação (Mestrado em Engenharia Elétrica) –
Universidade Presbiteriana Mackenzie, São Paulo, 2012.
Bibliografia: f. 71-75.
1. Terminais de contêineres. 2. Planejamento. 3. Otimização.
4. Algoritmo de seleção clonal. 5. Meta-heurística. 6. Algoritmo
bioinspirado. I. Título. CDD 005.1
3
UNIVERSIDADE PRESBITERIANA MACKENZIE
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA
Algoritmo de Seleção Clonal para a Minimização de
Rearranjos em Operações de Pilhas de Contêineres
Aluno: Luiz Antonio Carraro
BANCA EXAMINADORA
__________________________________________________
Prof. Dr. Leandro Nunes de Castro
Universidade Presbiteriana Mackenzie
__________________________________________________
Prof. Dr. Arnaldo de Aguiar Vallim Filho
Universidade Presbiteriana Mackenzie
__________________________________________________
Prof. Dr. Myriam Regattieri Delgado
Universidade Tecnológica Federal do Paraná
São Paulo
2012
Dissertação apresentada à banca de mestrado do
Programa de Pós-Graduação em Engenharia
Elétrica da Universidade Presbiteriana Mackenzie,
como requisito parcial para a obtenção do título de
Mestre em Engenharia Elétrica.
Área de Concentração: Engenharia da Computação.
4
AGRADECIMENTOS
Agradeço ao orientador e amigo, Prof. Dr. Leandro Nunes de Castro, por todas as suas
contribuições à minha formação acadêmica, pelo incentivo, pela sua confiança e pelas
oportunidades proporcionadas.
À minha família, por todos os ensinamentos, amor, incentivo e por tudo que me
proporcionaram durante toda minha vida.
Aos amigos Diego Gadens e Steve Pereira pela amizade e companhia durante o
desenvolvimento deste trabalho.
Ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) pela concessão
da bolsa e ao Mackpesquisa pelo apoio financeiro que possibilitou o desenvolvimento deste
trabalho.
À Universidade Presbiteriana Mackenzie (UPM) e ao Programa de Pós Graduação em
Engenharia Elétrica pela infraestrutura e suporte.
A todos os professores e colegas do Programa de Pós Graduação em Engenharia Elétrica que
contribuíram para minha formação e para este trabalho.
A todos aqueles que contribuíram direta ou indiretamente para a conclusão deste trabalho,
meus sinceros agradecimentos.
5
RESUMO
A utilização de contêineres é uma solução amplamente adotada para o armazenamento da
carga a ser transportada entre portos, tornando-se de grande importância no comércio
internacional e, consequentemente, navios cresceram de tamanho com o objetivo de
transportar a maior quantidade possível de contêineres em cada viagem. Devido à crescente
demanda, terminais de contêineres enfrentam os desafios de aumentar a sua capacidade de
atendimento e otimizar os tempos de carregamento e descarregamento de navios. Problemas
de otimização como estes geralmente apresentam características que inviabilizam a obtenção
de soluções analíticas fechadas, requerendo processos iterativos de busca em espaços de
dimensão muitas vezes elevada, ou ainda sujeitos a explosão combinatória de possíveis
soluções. Esta dissertação apresenta a proposta de uma meta-heurística bioinspirada baseada
no Algoritmo de Seleção Clonal para a minimização de rearranjos em operações que
envolvem pilhas de contêineres, denominado MRC. O desempenho do algoritmo foi avaliado
por meio de simulações e comparação dos resultados com os obtidos por algoritmos da
literatura sob as mesmas condições de teste. Os resultados obtidos permitem concluir que o
MRC possui resultados competitivos em termos de minimização de rearranjos, além de
apresentar um tempo de processamento reduzido quando comparado aos modelos
tradicionalmente empregados na solução desse tipo de problema.
Palavras-chave: terminais de contêineres, planejamento, otimização, algoritmo de seleção
clonal, meta-heurística, algoritmo bioinspirado.
6
ABSTRACT
A container is a broadly used solution for the cargo storage to be transported between ports,
playing a central role in international trade. Consequently, ships grew in size in order to
maximize their container transportation capacity in each trip. Due to increasing demand,
container terminals face the challenges of increasing their service capacity and optimizing the
loading and unloading time of ships. Optimization problems, such as these, often present
features that make it impossible to obtain closed analytical solutions, requiring iterative search
procedures in high-dimensional spaces, or subject to a combinatorial explosion of possible
solutions. This dissertation presents the proposal of a novel meta-heuristic based on the
Clonal Selection Algorithm, named MRC, to minimize the number of reshuffles in operations
involving piles of containers. The performance of the proposed model was evaluated through
simulations and results comparison with those obtained by algorithms from the literature
under the same test conditions. The results obtained show that MRC is competitive in terms of
minimizing the need of reshuffles, besides presenting a reduced processing time compared
with models of similar performance.
Keywords: container terminals, planning, optimization, clonal selection algorithm, meta-
heuristic, bioinspired algorithm.
7
LISTA DE FIGURAS
Figura 2.1: Visão geral de um TECON onde é possível identificar a divisão de blocos em
pilhas de contêineres. (Fonte: DEKKER, 2006) ............................................................. 20
Figura 2.2: Um bloco de contêineres em que a primeira pilha possui cinco fileiras de altura.
(Fonte: WAN et al., 2007)............................................................................................... 21
Figura 2.3: Organização de um TECON (Fonte: BORGMAN et al., 2010). ........................... 22
Figura 2.4: Gantry Crane (GC). (Fonte: VIS & de KOSTER, 2003) ....................................... 22
Figura 2.5: Uma forma de esvaziar uma pilha (Fonte: WAN et al., 2009). ............................. 27
Figura 2.6: Primeira ramificação. ............................................................................................. 32
Figura 2.7. Cenários da Heurística LS em um exemplo de aplicação. (Wan et al, 2009) ........ 35
Figura 2.8: Exemplo de execução da heurística de Índice de Rearranjo. ................................. 36
Figura 2.9: Pilha de tamanho 3×3 onde o contêiner 6 deverá ser rearranjado para a obtenção
do contêiner 3. ................................................................................................................. 38
Figura 3.1: Reconhecimento de um antígeno (Fonte: DE CASTRO, 2006). ........................... 44
Figura 3.2: Seleção Clonal (Fonte: DE CASTRO, 2006)......................................................... 45
Figura 3.3: Maturação de afinidade a sucessivas respostas imunológicas. (Fonte: DE
CASTRO, 2006). ............................................................................................................. 46
Figura 3.4: Diagrama de blocos do Algoritmo de Seleção Clonal ........................................... 49
Figura 4.1: Representação de umacélula (solução candidata). Os índices sobre cada posição
representam cada contêiner que pode ser rearranjado no estágio xi. Cada posição
representa a movimentação do contêiner para a posição exibida, partindo da
configuração inicial da pilha. Posições vazias indicam que não há movimentação para o
contêiner. ......................................................................................................................... 51
Figura 4.2: (a) Pilha inicial. (b) Pilha após o estágio x1. (c) Pilha após o estágio x2. (d) Pilha
após o estágio x3. ............................................................................................................. 51
Figura 4.3: Processo de mutação onde o estágio de início para a mutação foi o x3. Em
consequência, obteve-se a melhora do fitness do indivíduo, uma vez que os contêineres
4, 5 e 6 agora poderão ser retirados sem a necessidade de rearranjos. ........................... 52
Figura 5.1: (a) Instância do problema de desempilhamento com 7 contêineres. (b) pilha vazia.
......................................................................................................................................... 56
Figura 5.2: Normalização de uma pilha infactível de tamanho 3×3 com 5 contêineres criada
pelo algoritmo de geração de dados para experimentos.................................................. 57
8
Figura 5.3: Sequencia de 10 conteineres de entrada e de saída. ............................................... 58
Figura 5.4: Adição de um novo contêiner com prioridade 13. A prioridade do contêiner é
então ajustada para a situação atual da pilha, atualizando-a para 6. ............................... 58
Figura 5.5: Inserção de um contêiner com prioridade existente. Neste caso, a prioridade do
novo contêiner é mantida, e os subsequentes a ele são atualizados para manter a ordem
de retirada. ....................................................................................................................... 59
Figura 5.6: Remoção do contêiner de maior prioridade (1) e atualização dos índices. ............ 59
Figura 5.7: Pilha (P1) tamanho (c,f) = (6,5) contendo 21 contêineres para testes e análise de
sensibilidade paramétrica. ............................................................................................... 60
Figura 5.8: Pilha (P2) de tamanho (c,f) = (8,5) contendo 36 conteinêres para testes e análise de
sensibilidade paramétrica. ............................................................................................... 60
Figura 5.9: Relação entre a quantidade de células no repertório e a qualidade da solução
obtida para a pilha P1 ...................................................................................................... 61
Figura 5.10: Relação entre a quantidade de células no repertório e a qualidade da solução
obtida para a pilha P2 ...................................................................................................... 61
Figura 5.11: Relação entre o tamanho do repertório de soluções candidatas e o tempo de
execução do algoritmo para a pilha P1. ........................................................................... 62
Figura 5.12: Relação entre o tamanho do repertório de soluções candidatas e o tempo de
execução do algoritmo para a pilha P2.. .......................................................................... 62
Figura 5.13: Relação entre a quantidade máxima de clones por célula (Nc) e a qualidade dos
resultados obtidos em rearranjos para P1. ....................................................................... 63
Figura 5.14: Relação entre a quantidade máxima de clones por célula (Nc) e a qualidade dos
resultados obtidos em rearranjos para P2. ....................................................................... 63
Figura 5.15: Relação entre a quantidade máxima de clones por célula (Nc) e o tempo de
execução em segundos para os testes na pilha P1. .......................................................... 64
Figura 5.16: Relação entre a quantidade máxima de clones por célula (Nc) e o tempo de
execução em segundos para os testes na pilha P2. .......................................................... 64
Figura 5.17: Relação entre a inclusão de diversidade (d) e a qualidade dos resultados obtidos
em rearranjos para a pilha P1. .......................................................................................... 65
Figura 5.18: Relação entre a inclusão de diversidade (d) e a qualidade dos resultados obtidos
em rearranjos para a pilha P2. .......................................................................................... 66
Figura 5.19: Relação entre a inclusão de diversidade (d) e o tempo de execução (seg) para P1.
......................................................................................................................................... 66
9
Figura 5.20: Relação entre a inclusão de diversidade (d) e o tempo de execução (seg) para P2.
......................................................................................................................................... 67
Figura 5.21: Relação entre o parâmetro k e a qualidade das soluções obtidas em rearranjos
para P1. ............................................................................................................................ 68
Figura 5.22: Relação entre o parâmetro k e a qualidade das soluções obtidas em rearranjos
para P2. ............................................................................................................................ 68
Figura 5.23: Menor quantidade de rearranjos e média da quantidade de rearranjos do
repertório de soluções ao longo de, aproximadamente, 300 iterações. ........................... 71
Figura 5.24: Estimativa de rearranjos para esvaziar a pilha durante a entrada/saída de 55
contêineres....................................................................................................................... 73
Figura 5.25: Total de rearranjos estimados para cada uma das técnicas durante a simulação. 73
10
LISTA DE TABELAS
Tabela 5.1: Tempo médio de execução/Gerações executadas .................................................. 67
Tabela 5.2: Comparação de desempenho entre o MRC, MRIP, MRIPk=6, SMB, IR e ENAR. 70
Tabela 5.3: Média de rearranjos da simulação e média do tempo de execução para 30
execuções. ................................................................................................................................. 72
11
SUMÁRIO
AGRADECIMENTOS ............................................................................................................... 4
RESUMO ................................................................................................................................... 5
ABSTRACT ............................................................................................................................... 6
LISTA DE FIGURAS ................................................................................................................ 7
LISTA DE TABELAS ............................................................................................................. 10
SUMÁRIO ................................................................................................................................ 11
1 INTRODUÇÃO ................................................................................................................ 14
1.1 MOTIVAÇÃO ................................................................................................ 16
1.2 OBJETIVOS ................................................................................................... 17
1.3 PUBLICAÇÕES RELACIONADAS ............................................................. 18
1.4 ORGANIZAÇÃO DO DOCUMENTO .......................................................... 18
2 BASES CONCEITUAIS .................................................................................................. 19
2.1 PÁTIO DE TERMINAIS DE CONTÊINERES ............................................. 19
2.1.1 Estratégias de Empilhamento .................................................................... 23
2.1.2 Planejamento do Carregamento de Navios e Armazenamento no Pátio ... 25
2.2 DESCRIÇÃO DO PROBLEMA DE EMPILHAMENTO ............................. 26
2.3 TÉCNICAS APLICÁVEIS AO PROBLEMA: PROGRAMAÇÃO
MATEMÁTICA E METAHEURÍSTICAS ......................................................................... 29
2.3.1 Programação Inteira .................................................................................. 29
2.3.2 Branch-and-Bound .................................................................................... 31
2.3.3 Simulated Annealing ................................................................................. 33
2.3.4 MRIP e MRIPk .......................................................................................... 34
2.3.5 Heurística do Slot Mais Baixo .................................................................. 34
2.3.6 Heurística do Índice de Rearranjo (IR) ..................................................... 36
2.3.7 Heurística ENAR ...................................................................................... 36
12
2.4 TRABALHOS RELACIONADOS ................................................................ 38
3 SISTEMAS IMUNOLÓGICOS NATURAIS E ARTIFICIAIS ...................................... 42
3.1 FUNDAMENTOS DO SISTEMA IMUNOLÓGICO .................................... 42
3.1.1 Medula Óssea ............................................................................................ 43
3.1.2 Reconhecimento de Padrões ..................................................................... 43
3.1.3 Princípio da Seleção Clonal ...................................................................... 44
3.1.4 Maturação de Afinidade ............................................................................ 45
3.2 SISTEMAS IMUNOLÓGICOS ARTIFICIAIS ............................................. 46
3.3 O ALGORITMO DE SELEÇÃO CLONAL .................................................. 48
4 UM ALGORITMO DE SELEÇÃO CLONAL APLICADO AO PROBLEMA DE
EMPILHAMENTO E DESEMPILHAMENTO DE CONTÊINERES.................................... 50
4.1 REPRESENTAÇÃO DOS ANTICORPOS .................................................... 50
4.2 MODELAGEM DA MUTAÇÃO .................................................................. 51
4.3 PSEUDOCÓDIGO ......................................................................................... 54
5 ANÁLISE DE DESEMPENHO ....................................................................................... 55
5.1 CENÁRIOS DE TESTE ................................................................................. 55
5.1.1 Caso Estático: Esvaziamento de Pilha ...................................................... 55
5.1.2 Caso Dinâmico: Simulação ....................................................................... 57
5.2 ANÁLISE DE SENSIBILIDADE PARAMÉTRICA .................................... 60
5.2.1 Tamanho do Repertório (R) ...................................................................... 61
5.2.2 Quantidade Máxima de Clones por Célula (Nc) ....................................... 63
5.2.3 Inclusão de Diversidade (d) ...................................................................... 65
5.2.4 Parâmetro k ............................................................................................... 67
5.2.5 Comentários Gerais Sobre a Sensibilidade Paramétrica ........................... 69
5.3 EXPERIMENTOS E RESULTADOS ............................................................ 69
5.3.1 Caso Estático ............................................................................................. 69
5.3.2 Caso Dinâmico .......................................................................................... 71
13
6 CONCLUSÕES E DISCUSSÃO ..................................................................................... 74
REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 76
14
1 INTRODUÇÃO
A partir da década de 1960 os contêineres ganharam muita importância no comércio
internacional como meio para a armazenagem da carga a ser transportada entre portos. Navios
cargueiros cresceram substancialmente de tamanho, chegando a mais de 8.000 TEUs (Twenty
Feet Equivalent Unit)1. Um dos modais que mais se beneficia da utilização do contêiner é o
aquaviário, em específico o marítimo. Segundo Steeken et al. (2004), aproximadamente 60%
do transporte marítimo utiliza contêineres. Um terminal de contêineres (TECON) é o
ambiente no qual são feitos o carregamento e descarregamento de contêineres, além de ser o
local de maior concentração de operações com contêineres na cadeia logística. A alta
utilização de contêineres resulta em uma grande demanda de serviços nestes locais. Por causa
desta alta demanda e da competitividade entre os portos, principalmente os geograficamente
próximos, os terminais devem garantir rapidez e qualidade em seus processos.
Para fazer o transporte da carga eficientemente, o tempo do navio no terminal deve ser
o menor possível. Isso implica que uma grande quantidade de contêineres deve ser
manipulada em um pequeno intervalo de tempo e com um mínimo uso de pátio e
equipamentos (VIS & DE KOSTER, 2003). Em consequência, terminais de contêineres
enfrentam o desafio de aumentar sua capacidade de atendimento (armazenagem,
carregamento e descarregamento) e diminuir os tempos de carregamento e descarregamento
dos navios que atracam no porto. Para atingir essas metas, os terminais devem empregar
equipamentos modernos e otimizar seus processos logísticos.
É possível distinguir três níveis de planejamento e controle de tomada de decisão para
a obtenção de um terminal eficiente (CHEN et al., 2004; LEE et al., 2006):
1. Nível estratégico: Envolve a organização do terminal e equipamentos a serem
usados, como stackers e Rubber Tyred Gantry (RTGs), cujo horizonte de decisão
pode ser da ordem de um a vários anos. As decisões deste nível devem acarretar
restrições que afetarão os níveis tático e operacional;
2. Nível tático: Quais as informações a serem utilizadas e quais as decisões gerais a
serem tomadas. Um exemplo de decisão geral é definir qual a quantidade de
1 Twenty Feet Equivalent Unit (TEU) é uma unidade inexata de capacidade de carga muitas vezes usada para
descrever a capacidade de navios de contêineres e terminais de contêineres. Um TEU representa a capacidade de
15
contêineres que cada bloco comportará. O horizonte de decisão deste nível pode
ser da ordem de dias a meses;
3. Nível operacional: Este nível envolve a solução de problemas diários detalhados,
como, por exemplo, onde alocar os contêineres. O horizonte de decisão deste nível
é da ordem de horas a dias.
O tempo que um navio permanece atracado no porto conta como uma considerável
parte da sua jornada. As linhas normalmente estão preocupadas com o tempo de espera para o
atendimento e o tempo de atendimento no porto. Ao diminuir o tempo de permanência de um
navio no porto reduz-se o tempo total de viagem e, consequentemente, o custo do transporte
será menor. Tendo em vista o objetivo de diminuir o tempo de permanência de navios nos
terminais, vários modelos de planejamento operacional veem sendo estudados, focando
essencialmente os processos de armazenamento, retirada e encaminhamento de contêineres
para o carregamento em navios.
Devido a grande quantidade de estados, o problema de empilhamento de contêineres é
dito ser do tipo intratável do ponto de vista computacional (GAREY & JOHNSON, 1979;
AVRIEL et al., 2000). Este fator implica que a quantidade de soluções candidatas, sendo estas
boas ou não, deve crescer exponencialmente em função do tamanho da instância do problema
(LEWIS & PAPADIMITRIOU, 1998). Como consequência do elevado tempo de
processamento que problemas desta classe demandam em suas execuções, diversas heurísticas
veem sendo desenvolvidas com o objetivo de otimizar resultados.
Algoritmos bioinspirados são modelos computacionais inspirados em fenômenos
biológicos com o objetivo geral de resolver problemas e sintetizar fenômenos naturais (DE
CASTRO, 2006). Existem diversos modelos bioinspirados com foco em otimização, dentre os
mais comuns é possível citar os algoritmos evolutivos, os enxames de partículas, os sistemas
imunológicos artificiais, dentre outros (DE CASTRO, 2007).
Este trabalho propõe o uso de um algoritmo imunológico para resolver o problema de
empilhamento e desempilhamento de contêineres, com foco na otimização (minimização) de
rearranjos (movimentos improdutivos).
16
1.1 MOTIVAÇÃO
O setor portuário, motivado pela Lei de Modernização dos Portos (8630/93) (ANTAQ, 2011),
tem se apoiado na Tecnologia da Informação (TI) como uma das alternativas para desenvolver
estratégias de melhoria operacional (PHONLOR & MAÇADA, 2002). Segundo Caridade
(2000), a gestão logística nos terminais portuários no futuro deverá ser realizada
essencialmente através do gerenciamento da informação e, portanto, as empresas no setor
deverão investir em sistemas de apoio à tomada de decisão de última geração com o objetivo
de oferecer serviços de qualidade competitivos com o mercado. O papel estratégico das
operações em terminais portuários tem ganhado importância devido ao nível de detalhamento
e complexidade das atividades envolvidas. Por consequência, vários setores industriais veem
realizando investimentos significativos em Tecnologia da Informação (TI) visando aumentar a
sua competitividade em relação aos concorrentes.
Um terminal de contêineres trabalha com objetivos operacionais múltiplos e em vários
setores, porém é possível identificar duas tarefas que exercem maior influência para a
efetividade do terminal: minimizar o tempo de permanência dos navios no porto e maximizar
a saída de contêineres. Tais problemas devem ser associados aos contêineres de exportação,
uma vez que estes estão vinculados ao plano de navegação de navios específicos e, portanto,
possuem seu tempo de permanência no terminal pré-estabelecido. Com tais informações é
possível então saber quando estes serão requisitados para o transporte, criando também a
oportunidade de otimizar o processo de armazenamento e manipulação de contêineres.
A pressão competitiva pelo uso do espaço e a competição com outros portos e terminais
forçam os planejadores a usarem otimamente o pátio, o que faz com que o problema de
otimização do pátio de contêineres torne-se crucial para a operação, viabilidade comercial e
lucratividade do terminal. Além disso, quando se busca otimização de um terminal nos níveis
tático e operacional, há varias tarefas a serem otimizadas, como a alocação de berços para os
navios, alocação do pátio de contêineres, organização do pátio, sequenciamento de guindastes,
como stackers e RTGs, sequenciamento de caminhões, sequenciamento das tarefas de
carregamento e descarregamento dos navios, dentre outros (STEENKEN et al., 2004).
Problemas como estes são de natureza combinatória e, portanto, quase sempre podem ser
resolvidos em tempo aceitável por métodos aproximados de busca, tais como o que será
proposto nesse trabalho.
17
Este trabalho investiga o uso de um algoritmo de Seleção Clonal no contexto de
planejamento operacional. Será considerado o problema de empilhamento/desempilhamento
de contêineres em terminais com elevado grau de complexidade computacional, espaço de
busca discreto e de dimensão elevada. Estas propriedades levam a uma explosão combinatória
de candidatos a solução, de modo que uma busca exaustiva pela solução ótima, dentre as
soluções candidatas, representa um procedimento computacionalmente intratável (GAREY &
JOHNSON, 1979). Avriel et al. (2000) verificaram que o problema geral de armazenamento
de contêineres visando à redução da quantidade de movimentos improdutivos é NP-Difícil
para pilhas a partir de quatro colunas e altura arbitrária. Problemas desta classe são
comumente tratados com a utilização de algoritmos de soluções aproximadas que, apesar de
nem sempre fornecerem a melhor solução possível, satisfazem as restrições do problema e
fornecem respostas aceitáveis do ponto de vista operacional.
Quando se opta por obter soluções aproximadas, existe uma diversidade muito grande
de métodos de otimização para instâncias particulares de problemas desta natureza, todos
ocupados em conciliar eficientemente o compromisso existente entre tratabilidade e qualidade
da solução (LEWIS & PAPADIMITRIOU, 1998). É exatamente nesse contexto que se
inserem os métodos computacionais de solução inspirados na biologia, assim como o
algoritmo de Seleção Clonal.
1.2 OBJETIVOS
Tendo em vista a necessidade de desenvolver modelos para otimizar o processo de
empilhamento e desempilhamento de contêineres, esta dissertação possui o objetivo de propor
a utilização de um algoritmo de Seleção Clonal como ferramenta para a obtenção de soluções
para o problema de empilhamento e desempilhamento de contêineres.
Dado o objetivo geral do projeto, esta dissertação possui quatro objetivos específicos:
1. Descrever o problema de empilhamento e desempilhamento de contêineres;
2. Propor a aplicação de um algoritmo de Seleção Clonal ao problema de
empilhamento e desempilhamento de contêineres;
3. Avaliar o desempenho da ferramenta desenvolvida em relação à qualidade dos
resultados obtidos; e
4. Comparar o desempenho desta ferramenta com outras existentes na literatura.
18
1.3 PUBLICAÇÕES RELACIONADAS
CARRARO, L. A.; de CASTRO, L. N.; de RÉ, A. M. A Fuzzy Inference System
to Determine the Number of Clones in the Clonal Selection Algorithm. In: World
Congress on Nature and Biologically Inspired Computing, 2010, Kitakyushu,
Japan, 2010. p. 98-102.
CARRARO, L. A.; de CASTRO, L. N.; A Clonal Selection Algorithm for the
Container Stacking Problem. In: World Congress on Nature and Biologically
Inspired Computing, 2011, Salamanca, Spain, 2011.
CARRARO, L. A.; de CASTRO, L. N.; de RÉ, A. M.; FRANÇA, F. O. A Fuzzy
Inference System to Determine the Number of Clones in a Class of Artificial
Immune Systems. In: International Journal of Computational Intelligence and
Applications (IJCIA), World Scientific Publishing Company, 2011 (Aceito para a
publicação).
1.4 ORGANIZAÇÃO DO DOCUMENTO
Este documento está organizado da seguinte forma. O Capítulo 2 apresenta as bases
conceituais sobre o problema de empilhamento de contêineres, o funcionamento geral das
operações em um pátio de contêineres, estratégias de empilhamento e trabalhos relacionados
existentes na literatura. No Capítulo 3 são apresentados os conceitos que envolvem os
sistemas imunológicos naturais e artificiais e no Capítulo 4 o modelo de otimização proposto
nessa dissertação é apresentado. O Capítulo 5 apresenta e discute a análise de desempenho do
algoritmo, incluindo uma análise de sensibilidade paramétrica e resultados de aplicação em
ambiente estático e dinâmico. Por fim, o Capítulo 6 apresenta as conclusões sobre o
desenvolvimento deste pesquisa, bem como perspectivas de trabalhos futuros.
19
2 BASES CONCEITUAIS
Simplificadamente, um contêiner é uma caixa utilizada para o transporte de mercadorias de
um local a outro. Apesar desta simples descrição, esta caixa foi um dos principais
catalisadores da padronização do transporte de cargas ao redor do mundo (VIS & de
KOSTER, 2003; STEEKEN et al., 2004). Sua utilização é feita há mais de meio século e o
investimento em equipamentos especializados para seu manuseio aumentou significantemente
a produtividade do transporte de mercadorias.
Os contêineres possuem medidas padronizadas, o que facilita sua utilização em
qualquer local do mundo. Dentre outros, o de vinte pés (20') costumava ser o mais utilizado e,
por isso, a unidade TEU (twenty-feet-equivalent unit) tornou-se padrão para mensurar a
quantidade de contêineres movimentados. Atualmente, o contêiner de 40' apresenta maior
utilização, sendo equivalente a 2 TEU (RODRIGUES, 2007).
Como em um terminal normalmente existe a necessidade constante de armazenar uma
grande quantidade de contêineres, estes são posicionados uns sobre os outros. Considerar a
organização de pilhas com altura elevada seria uma alternativa para suprir a demanda por
espaço em um terminal com grande atividade, porém, ao empilhar contêineres corre-se o risco
de empilhar um contêiner sobre outro que possui a data de partida mais próxima. Caso isto
ocorra, será necessário reorganizar a pilha a fim de retirar o contêiner desejado no momento, o
que consumirá tempo e recursos. Portanto, a forma como os contêineres são empilhados e
desempilhados possui grande impacto no tempo de carregamento de um navio e,
consequentemente, no custo de operação e transporte.
2.1 PÁTIO DE TERMINAIS DE CONTÊINERES
Apesar da grande variedade de terminais ao redor do mundo, estes possuem algumas
similaridades. Os TECONs possuem um pátio para o armazenamento temporário de
contêineres (pátio de contêineres ou simplesmente pátio). Usualmente, o pátio é dividido em
regiões conhecidas como blocos ou quadras de armazenamento. Na Figura 2.1 é possível
observar tais regiões, bem como identificar o espaço reservado para o transporte de
contêineres entre os blocos e o cais.
20
Figura 2.1: Visão geral de um TECON onde é possível identificar a divisão de blocos em pilhas de contêineres.
(Fonte: DEKKER, 2006)
A menor unidade de armazenamento em um TECON é o slot (ou posição) para um
contêiner, onde um contêiner permanecerá durante o tempo necessário (Figura 2.2). Vários
slots de contêineres são postos uns sobre os outros para formar uma coluna e colunas são
organizadas lado a lado para formar uma pilha. Um bloco é formado por várias pilhas, onde o
lado contendo as portas dos contêineres de uma pilha deve tanger o lado inverso da pilha
seguinte. Slots de mesmo nível em uma pilha formam uma fileira. As colunas de um bloco
dispostas em sequência formam uma linha. Em geral, a tripla (fileira, coluna, linha) define as
coordenadas (x,y,z) de um slot em um bloco e a dupla (fileira, coluna) define as coordenadas
(x,y) de um slot em uma pilha, onde uma fileira representa contêineres em linha. O tamanho
de uma pilha varia para cada terminal entre dois a oito contêineres de altura e duas a oito
fileiras.
21
Figura 2.2: Um bloco de contêineres em que a primeira pilha possui cinco fileiras de altura. (Fonte: WAN et al.,
2007)
Os navios que atracam em um berço são descarregados ou carregados com a utilização
de Quay Cranes (Guindastes de Cais). Os contêineres que foram descarregados são então
transportados para uma pilha onde serão posicionados através de gruas ou Straddle Carries
(conhecidos como aranhas). Estes contêineres podem posteriormente ser carregados
novamente em navios ou, alternativamente, podem ser transportados em via terrestre por
caminhões ou trens. No segundo caso o contêiner é movido da pilha para um trilho ou é
diretamente posicionado em um caminhão, que deve ter acessado o terminal previamente para
recebê-lo.
A maioria dos terminais é operada manualmente, porém existem alguns terminais que
utilizam equipamentos semiautomáticos, como Veículos Automaticamente Guiados (VAG)
para transportar contêineres internamente, e Gruas de Empilhamento Automático (GEA) para
empilhar contêineres. A Figura 2.3 fornece uma visão esquemática da organização de um
terminal. Neste caso as pistas de pilhas são perpendiculares ao cais. Cada pista possui um
comprimento, uma largura e uma altura.
22
Figura 2.3: Organização de um TECON (Fonte: BORGMAN et al., 2010).
O equipamento comumente utilizado para a movimentação (empilhar ou desempilhar)
de contêineres em um bloco são os Gantry Cranes (GC). De forma geral, os GC são gruas que
se sustentam por duas “pernas” localizadas nas extremidades dos blocos de armazenagem de
contêineres (Figura 2.4). Estas “pernas” permitem ao GC uma movimentação no sentindo das
colunas do bloco. Uma ponte localizada no topo do GC sustenta um “braço”, chamado de
spreader, que coleta os contêineres. Este “braço” se movimenta nos sentidos das linhas e das
colunas do bloco. Desta forma, todos os contêineres são acessáveis pelo GC. Para a
movimentação, os contêineres são travados no spreader.
Figura 2.4: Gantry Crane (GC). (Fonte: VIS & de KOSTER, 2003)
23
Armazenar contêineres no pátio, alocar recursos do terminal e planejar o carregamento
e descarregamento de navios são os principais problemas em terminais de contêineres
intermodais (KOZAN & PRESTON, 1999). Os contêineres devem ser empilhados de forma a
minimizar a quantidade de movimentações necessárias para armazenar e retirar um contêiner
quando necessário.
2.1.1 Estratégias de Empilhamento
Segundo Dekker et al. (2006), vários horizontes de decisão podem ser identificados para
empilhamento:
1. Estratégico de longo prazo: compreendem as decisões envolvendo equipamento,
tamanho do terminal em geral e uma pilha específica;
2. Tático de médio prazo: envolve decisões de capacidade de meses a anos. Nesse nível
de decisão está incluído o uso de operações estratégicas, assim como pré-
empilhamentos ou a aplicação de rearranjos em momentos em que não existam navios
a serem servidos;
3. Operacional de curto prazo: envolve a reserva de espaço para a chegada de navios, a
decisão de guardar um contêiner em uma posição particular, a alocação de
equipamentos para tarefas, a decisão de quais contêineres retirar primeiro, etc.; e
4. Em tempo real para operações diretas: envolve decisões técnicas de sistemas de
controle sendo relevante para equipamentos automáticos.
O foco deste projeto é nas decisões operacionais.
Os principais objetivos de uma estratégia de empilhamento são (DEKKER et al.,
2006):
1. Maximização do aproveitamento do pátio: Uso eficiente do espaço disponível no
pátio;
2. Otimização dos processos de transporte: Eficiência no tempo de transporte do
contêiner do cais para a pilha e destinos seguintes;
3. Minimização dos movimentos improdutivos: Minimizar o rearranjo de contêineres,
reduzindo desta forma o custo operacional.
24
O segundo objetivo sugere que um contêiner que será exportado deve estar
armazenado o mais próximo possível do cais e do berço no qual o navio que o receberá será
carregado, ou seja, o tempo para armazenar o contêiner no navio deve ser o menor possível. O
terceiro objetivo será otimizado toda vez que o contêiner a ser buscado estiver em uma pilha
de apenas um contêiner. Entretanto, esta abordagem acarretaria no uso ineficiente do espaço
disponível no pátio, portanto, é raramente aplicada na prática. Dessa forma, é necessário
decidir quando um contêiner deverá ser ou não empilhado acima de outro.
Os dados a serem considerados em uma estratégia de empilhamento normalmente são
dados disponíveis sobre os contêineres. Estes dados podem ser: tipo (tamanho, refrigeração,
produtos perigosos), importação/exportação e data/hora de saída. Porém, estas informações
podem mudar ou estar incompletas em diversos casos.
Tendo como objetivo melhorar a eficiência do pátio pode-se definir vários tipos de
estratégias de empilhamento (DEKKER et al., 2006; STEENKEN et al., 2004):
1. Empilhamento por categoria: nesse caso é preciso definir categorias para
determinados contêineres com características semelhantes;
2. Empilhamento por tempo de permanência: um contêiner será empilhado acima
de outro se o seu tempo até a partida for menor do que os demais contêineres
abaixo deste (DEKKER et al., 2006);
3. Planejamento de armazenamento: espaços em áreas específicas de uma pilha são
reservados antes da chegada de um navio; e
4. Empilhamento disperso: espaços não são reservados a um navio, mas para um
berço, tal que as posições de empilhamento sejam determinadas em tempo real,
distribuindo os contêineres de forma estocástica pela área. O empilhamento
disperso resulta na maior utilização do pátio e uma significante redução na
quantidade de realocações de contêineres (STEENKEN et al., 2004).
Determinar o tamanho de uma pilha é um dos principais problemas de planejamento
em um terminal, pois o espaço físico que uma pilha requer é normalmente restrito e caro.
Uma alternativa seria trabalhar com pilhas mais altas, porém a quantidade de rearranjos
aumenta drasticamente com a altura da pilha. Comumente pilhas são separadas em partes de
importação e exportação. Contêineres de importação são aqueles que chegam de grandes
navios para continuar o trajeto por terra, sendo que a chegada destes é previsível de várias
formas. Entretanto, a saída de contêineres de importação pode ser imprevisível, o que implica
25
que esses não devem ser armazenados em posições altas da pilha (ZHANG et al., 2003).
Contêineres de exportação chegam por terra e normalmente em momentos aleatórios, porém a
sua data de partida é usualmente conectada a um navio, portanto, podem ser armazenados de
forma mais eficiente do que o contêiner de importação.
2.1.2 Planejamento do Carregamento de Navios e Armazenamento no
Pátio
Todo navio que é carregado em um terminal possui um planejamento de carregamento que é
feito em dois passos: 1) primeiro a linha do navio elabora um plano superficial baseado em
categorias e envia para o terminal; 2) posteriormente, em algum momento antes da chegada
do navio, um plano mais detalhado é feito por um responsável do terminal que preencherá as
categorias com os contêineres detalhados (DEKKER et al., 2006; STEKKEN et al., 2004).
Este planejamento especifica qual contêiner será carregado em determinada posição do navio.
Como contêineres variam em tamanho, peso e tipo, esta distribuição é essencial para a
estabilidade do navio.
Softwares avançados são utilizados para fazer a otimização off-line do plano de
carregamento com o objetivo de minimizar rearranjos. O maior desafio está relacionado à
diminuição do tempo necessário para retirar das pilhas aqueles que serão carregados em um
determinado navio. Estes contêineres são destinados a navios que, seguindo um plano de
navegação, deverão coletá-los em uma data pré-estabelecida. Tendo em vista a importância da
redução do tempo em que um navio deve aguardar para que o seu carregamento esteja
completo, os contêineres de exportação devem ser retirados das pilhas e levados ao cais da
forma mais rápida possível.
Além de receber contêineres para exportação navios também podem entregar contêineres de
importação aos terminais. Nestes casos, o terminal deverá receber os contêineres de
importação e armazená-los no pátio até o momento em que estes serão requisitados a deixar o
terminal por via terrestre (trens e caminhões). Estes contêineres são comumente armazenados
em pilhas para reduzir o espaço utilizado no pátio, implicando que rearranjos podem ser
necessários para acessar determinado contêiner, resultando em um problema de
empilhamento. Este problema de planejamento é considerado de extrema dificuldade, pois
podem existir incertezas acerca de qual contêiner será necessário primeiro como, por
26
exemplo, no caso de caminhões que chegam sem agendamento prévio para a retirada de um
contêiner específico.
2.2 DESCRIÇÃO DO PROBLEMA DE EMPILHAMENTO
Durante um determinado período de trabalho, um GC é requisitado a movimentar diversos
contêineres do bloco de armazenagem para os caminhões e dos caminhões para o bloco. A
utilização de maneira adequada do GC é extremamente crítica para a eficiência na
manipulação de contêineres no pátio, bem como para o desempenho do terminal em geral, que
depende deste e de diversos outros fatores. Portanto, otimizar a utilização do GC é de suma
importância para este ambiente. Neste contexto, o GC pode realizar dois tipos de movimentos
(MURTY et al, 2005):
1. Movimento Produtivo (MP): Neste caso, o contêiner se encontra no topo da pilha,
requisitando apenas a sua movimentação direta para a área de transferência.
2. Movimento Improdutivo (MI) ou Rearranjo: Neste caso, o contêiner a ser
movimentado se encontra abaixo de outros contêineres. Consequentemente, os
contêineres sobre ele deverão ser retirados de sua posição original, colocados em uma
posição vaga próxima do mesmo bloco e posicionados em sua pilha original assim que
o contêiner desejado for levado à área de transferência.
Em geral, deseja-se retirar contêineres de uma pilha com uma determinada
configuração com a menor quantidade possível de movimentos improdutivos. Para ilustrar o
processo, a Figura 2.5 apresenta uma pequena pilha de três colunas e três fileiras na qual sete
contêineres são representados por quadrados numerados. Os contêineres devem ser retirados
em ordem ascendente dos números marcados nos quadrados. A Figura 2.5 demonstra uma
forma de esvaziar a pilha na qual existem três tipos de rearranjo (movimentos improdutivos),
dois para o contêiner 7 e um para o contêiner 6 (WAN et al., 2009).
27
Figura 2.5: Uma forma de esvaziar uma pilha (Fonte: WAN et al., 2009).
Dados s contêineres de exportação armazenados em uma pilha de c colunas e f fileiras,
a Equação 2.1 garante que existirá espaço disponível para o rearranjo, caso necessário (WAN
et al., 2009). Os contêineres podem ser então ranqueados de 1 a s, sendo que o menor deverá
ser retirado primeiro. Durante o processo de retirada de contêineres, aqueles que estavam
sobre os que deveriam ser retirados no momento são rearranjados para outras posições na
pilha. O objetivo é, então, designar os slots para os contêineres rearranjados tal que a
quantidade total de rearranjos ao esvaziar a pilha seja minimizada.
( ) (Eq. 2.1)
O tempo necessário para a retirada de s contêineres de uma pilha está diretamente
relacionado à quantidade de movimentos improdutivos necessários para a retirada dos
contêineres na ordem previamente definida. Portanto, o problema de minimização do tempo
de retirada pode ser reduzido ao problema de minimização de rearranjos (movimentos
improdutivos).
Cada vez que um contêiner é movimentado, o estado da pilha é alterado (Figura 2.5).
Sendo s a quantidade total de contêineres em uma pilha com c colunas e f fileiras, pode-se
definir {x1,x2, ..., xs1} como o conjunto de estágios da pilha durante o processo de retirada de
todos os contêineres. A quantidade de estados que os estágios podem assumir na sequência de
retirada, qesr, de todos os contêineres da pilha é dada pela Equação 2.2 e, segundo Wan et al.
(2009), para uma pilha contendo a quantidade máxima de contêineres, s = (c – 1)f + 1, a
quantidade de possíveis combinações de estados, qe, é da ordem dada pela Equação 2.3.
28
( )
(Eq. 2.2)
(Eq. 2.3)
Por exemplo, para o caso da Figura 2.5a, ter-se-ia uma quantidade de estados
qesr = 252 e uma possível combinação destes estados de qe = 2,82× 10219
.
O crescimento exponencial da quantidade de possíveis combinações de estados em
função do tamanho da pilha é um indicativo claro da ordem de complexidade do problema:
NP-completo.
Considerando a ordem ascendente em que os contêineres devem ser retirados, a
quantidade de rearranjos necessária para a retirada do contêiner i no estado xi é dada pela
Equação 2.4, onde a variável yji representa a necessidade de rearranjar o contêiner j para obter
o contêiner i (Equação 2.5).
∑
(Eq. 2.4)
{
(Eq. 2.5)
Finalmente, o objetivo consiste em minimizar a quantidade total de rearranjos no
processo de retirada de todos os contêineres na ordem pré-estabelecida (Equação 2.6). O
resultado do processo pode ser analisado através da verificação dos estados {xi} resultantes do
modelo.
∑ ∑
∑
(Eq. 2.6)
29
2.3 TÉCNICAS APLICÁVEIS AO PROBLEMA:
PROGRAMAÇÃO MATEMÁTICA E METAHEURÍSTICAS
Problemas de otimização mono-objetivo envolvem basicamente uma função-objetivo a ser
otimizada (maximizada ou minimizada) através da manipulação de um vetor de argumentos e
um conjunto de restrições que devem ser simultaneamente atendidas. A presença de restrições
de diversas naturezas introduz uma complexidade adicional por dividir o espaço de candidatos
solução em duas classes: soluções factíveis (que atendem a todas as restrições
simultaneamente) e soluções infactíveis (que violam uma ou mais restrições) (SHERALI et
al., 1993). Na eventualidade de não haver restrições, o problema é dito ser irrestrito.
Duas etapas estão envolvidas no processo de solução (SHERALI et al., 1993):
1. Formulação matemática do problema: procura descrever todos os aspectos
relevantes do problema, seja em termos de objetivos a serem otimizados ou
restrições a serem atendidas;
2. Obtenção da solução: aplicação de ferramentas de busca ou otimização,
desenvolvidas a partir da formulação matemática do problema.
Dependendo das características do problema, a sua formulação leva a um processo de
solução que pode ser expresso algebricamente, de forma fechada. No entanto, grande parte
dos problemas de otimização apresenta características (por exemplo, não-linearidade e
manipulação de variáveis que assumem apenas valores inteiros) que inviabilizam a obtenção
de uma solução analítica, requerendo a aplicação de processos iterativos de busca em um
espaço X de dimensão elevada e/ou sujeito a uma explosão combinatória de soluções
candidatas. A busca iterativa é geralmente implementada em computador devido ao elevado
custo de processamento associado a sua execução.
2.3.1 Programação Inteira
Em diversas situações, a resposta para determinado problema deve ser dada em números
inteiros. Em tais casos, soluções fracionárias não seriam realistas e inviáveis e, portanto, o
seguinte problema de otimização pode ser considerado (BRADLEY et al., 1977):
30
∑
∑ ( )
( )
( )
onde xj ,j = 1, ..., Q , representam as variáveis a serem determinadas, cj e bi , j = 1, ..., Q e i =
1, ..., m, são os coeficientes, e os valores aij formam a matriz de coeficientes. A expressão a
ser maximizada (ou minimizada) é chamada de função objetivo e as demais equações formam
as restrições do problema.
Um problema de programação inteira é um programa de programação matemática no
qual algumas ou todas as variáveis do problema pertencem ao conjunto dos números inteiros.
Em muitos contextos, o termo refere-se à programação linear inteira, que também é conhecida
como programação inteira mista quando somente algumas variáveis devem ser do conjunto
dos números inteiros.
Modelos de programação inteira estão presentes em várias áreas da programação
matemática. O lado negativo é que os problemas contendo a partir de 40 variáveis podem
estar além da capacidade dos computadores atuais, até mesmo os mais sofisticados. Embora
esses pequenos problemas sejam, de certa forma artificiais, a maioria dos problemas reais com
cem ou mais variáveis não podem ser resolvidos, a menos que demonstrem estruturas
específicas que possam ser exploradas e ajustadas para facilitar a solução (TRICK, 2011).
A primeira aproximação a qualquer solução de um programa inteiro pode ser obtida ao
ignorar as restrições de integralidade e resolver o programa linear resultante utilizando
técnicas como o Simplex (BRONSON, 1997). Se a solução ótima para o problema linear for
inteira, então esta já será também a solução ótima para o problema inteiro original. Caso
contrário, as variáveis da primeira aproximação devem ser arredondadas para os números
inteiros factíveis mais próximos para se obter uma aproximação (BRONSON, 1997). Dentre
31
os algoritmos que resolvem programas inteiros pode-se citar o algoritmo de Branch-and-
Bound, Algoritmos de Corte e o Algoritmo de Transporte (BRONSON, 1997).
2.3.2 Branch-and-Bound
A primeira coisa a ser considerada para resolver problemas com valores inteiros é
simplesmente enumerar todas as possíveis soluções e então escolher a melhor (BRADLEY et
al., 1977). Isso possivelmente funcionará para alguns problemas pequenos, mas rapidamente
se tornará intratável para problemas de médio a grande porte e problemas com escalas
industriais. Como exemplo, considere um problema com vinte variáveis. Este teria então 220
=
1.048.576 soluções para serem enumeradas, o que é possível de se fazer via computação.
Agora, considerando um problema com 100 variáveis, ter-se-ia 2100
= 1.268×1030
soluções
para serem enumeradas, o que dificilmente será resolvido até pelos computadores com maior
poder processamento (SCHRIJVER, 1986). O fato é que enumeração simplesmente não
funcionará para a maioria dos problemas de mundo real, o que torna necessária a busca por
melhores formas de tratar a explosão combinatória.
A técnica Branch-and-Bound é baseada essencialmente em “dividir para conquistar”.
Esta estratégia consiste em particionar a região de satisfatibilidade em sub-regiões menores e
então, se preciso, particionar também as sub-regiões. Por exemplo, considerando o seguinte
problema:
{ }
Ao se desconsiderar a restrição de integralidade das variáveis do problema, obtém-se
um programa linear comum que, consequentemente, aceitará variáveis não inteiras em sua
solução. A esta técnica é dado o nome de relaxamento linear e o problema poderá ser
resolvido pelos mesmos algoritmos de programação linear, como o método Simplex.
32
Resolver o programa linear relaxado resultará em informações sobre o limite do valor
ótimo para a função objetivo (com restrições de integralidade das variáveis) ou até na própria
solução inteira para o problema em casos raros (BRONSON, 1997). Por exemplo, a solução
por relaxamento linear do problema acima é x1 = 1, x2 = 1, x3 = 0.5, x4 = 0 e o valor da função
objetivo desta é 22. Agora sabe-se que nenhuma solução inteira terá valor maior que 22, pois
encontramos um limite. Infelizmente, como x3 não é um número inteiro será preciso procurar
por outra solução. Dessa forma, o próximo passo é forçar x3 a ser inteiro. O próximo passo
então é ramificar o problema atual em dois novos problemas, um com a restrição de x3 = 0 e
outro com restrição de x3 = 1 conforme ilustrado na Figura 2.6.
Figura 2.6: Primeira ramificação.
É possível perceber que qualquer solução ótima para o problema inicial deve ser
factível para os subproblemas. Se os dois subproblemas forem resolvidos as seguintes
soluções serão encontradas:
x3 = 0: função objetivo 21.65, x1 = 1; x2 = 1; x3 = 0; x4 = 0.667
x3 = 1: função objetivo 21.85, x1 = 1; x2 = 0.714; x3 = 1; x4 = 0
Percebe-se que a solução inteira ótima não será maior que 21.85, porém ainda não se tem
uma solução inteira factível. O próximo passo é selecionar um dos subproblemas e, então,
ramificá-lo (branch) criando dois novos subproblemas. O subproblema a ser ramificado deve
ser escolhido com base no valor da solução, sendo o com maior valor para problemas de
maximização e com menor valor para problemas de minimização. O método terá fim ao
encontrar uma solução inteira, ou não apresentar soluções factíveis a serem ramificadas
(BRADLEY et al., 1977).
33
2.3.3 Simulated Annealing
Annealing é o processo utilizado para fundir um metal aquecendo-o a uma temperatura
elevada e logo em seguida resfriando lentamente. Dessa forma o produto final terá uma massa
homogênea. A técnica Simulated Annealing (SA) surgiu no contexto da mecânica estatística,
desenvolvido por Kirkpatrick, Gelatt E Vecchi (1983) e independentemente por Cerny (1985).
A técnica de SA é bastante utilizada em problemas de otimização combinatória, minx
f(x), x S, onde f : S → R e S é finito. Dessa forma, o processo de otimização é realizado por
níveis, simulando os níveis de temperatura de um resfriamento. Em cada nível, é dado um
ponto u S, vários pontos na vizinhança de u são gerados e o valor correspondente da função
objetivo é calculado. Cada ponto gerado é aceito ou rejeitado de acordo com uma
probabilidade. Esta probabilidade de aceitação decresce de acordo com o nível do processo,
ou, equivalentemente, de acordo com a temperatura, T.
O algoritmo a seguir apresenta os passos deste procedimento (HAESER, G. &
GOMES–RUGGIER, 2008). Neste algoritmo, Tk R+ representa a temperatura no nível k e Lk
o número de pontos que serão gerados neste mesmo nível. Inicialmente, T0 e L0 são fixos, e
um ponto inicial u é escolhido em S.
1. procedure [] = SA(u, T0, L0) 2. k = 0; 3. Enquanto condição é false faça 4. Para l = 1 até Lk 5. Gerar w de V(u) 6. Se f(w) ≤ f(u), então u := w
7. Caso contrário, se random[0, 1) < exp ( ( ) ( )
)
8. Então u := w 9. k := k + 1 10. Calcular Lk e Tk
11. Fim
Pseudocódigo 2.1: Simulated Annealing
A ideia do algoritmo é inicialmente aceitar quase todas as transições propostas com o
objetivo de escapar de um mínimo local (para isso, T0 deve ser um valor grande) e, em
seguida, aceitar com probabilidade cada vez menor os pontos que pioram o valor da função
objetivo. No limite, Tk → 0+, só serão aceitos os pontos que melhoram o valor da função
objetivo (HAESER & GOMES–RUGGIER, 2008).
34
2.3.4 MRIP e MRIPk
Em (WAN et al., 2009) os autores propõem um modelo de programação inteira para encontrar
a melhor estratégia de desempilhamento para uma dada pilha, chamado MRIP (Minimal
Reshuffle Integer Programing). O programa capta a evolução de configurações de uma pilha
em função de decisões de rearranjos tomadas e a sua formulação completa pode ser
encontrada no trabalho original de WAN et al, (2009).
Segundo os autores, esta foi a primeira formulação baseada em programação inteira da
versão estática do problema de atribuição de localização para contêineres a serem
rearranjados (WAN et al., 2009). Naturalmente, um modelo de programação inteira, apesar de
ótimo no sentido da programação matemática, pode ter um elevado tempo de computação,
inviabilizando sua aplicação prática. Adicionalmente, neste mesmo trabalho, os autores
apresentaram um método heurístico com variantes do modelo de programação inteira para
resolver a versão estática do problema, então chamado de MRIPk. Esta variação apresenta
menos variáveis, uma vez que não é considerada a retirada de todos os contêineres
simultaneamente. Por exemplo, ao esvaziar uma pilha com dez contêineres, é possível
primeiramente formular e resolver um subproblema MRIP4 que minimize a quantidade total
de rearranjos na retirada dos 4 primeiros contêineres. Durante a retirada do primeiro
contêiner, qualquer contêiner rearranjado é posto em uma posição sugerida pela solução do
problema. Então, para os seis contêineres restantes uma nova execução do MRIPk fornecerá a
solução para a retirada dos contêineres 4 até 4 + k.
Os resultados, quando comparados com os obtidos por heurísticas adotadas na prática
e da literatura, são competitivos para a redução de rearranjos, porém possuem maior tempo de
computação que as heurísticas para maiores instâncias do problema (grandes pilhas).
Resultados similares foram verificados nessa dissertação e serão apresentados e discutidos nas
próximas seções.
2.3.5 Heurística do Slot Mais Baixo
Wan et al (2009) discutem sobre vários pequenos portos na região de Pearl River Delta,
Estados Unidos, que não possuem infraestrutura avançada de informação e, comumente, na
chegada ou rearranjo de um contêiner este simplesmente é posto no slot mais baixo disponível
na pilha. A esta heurística é dada o nome de Heurística do Slot Mais Baixo (Lowest-Slot
Heuristic ou ainda heurística LS).
35
A Figura 2.7 apresenta a evolução de uma configuração ao aplicar a heurística LS na
pilha da Figura 2.5. Sem alternativa para retirar os contêineres 1 e 2, o contêiner 7 será
rearranjado para cima do 2 durante a retirada do 1. Logo após, o contêiner 7 será novamente
rearranjado para a retirada do contêiner 2 (Figura 2.7 a e b). Para retirar o contêiner 3, a
heurística LS colocará o contêiner 6 sobre o 4 ou 7 com probabilidades iguais. No primeiro
caso, após a retirada do contêiner 3, o 6 poderá ser rearranjado para o topo do 5 ou 7 com
probabilidades iguais. No segundo caso, os quatro contêineres restantes são retirados sem
rearranjos adicionais (Figura 2.7c).
Figura 2.7. Cenários da Heurística LS em um exemplo de aplicação. (Wan et al, 2009)
36
2.3.6 Heurística do Índice de Rearranjo (IR)
A heurística LS apresentada anteriormente considera apenas a quantidade de contêineres para
definir as posições de rearranjo. O índice de rearranjo (IR), definido por Murty et al. (2005), é
uma melhoria em relação a heurística LS, considerando também a data em que os contêineres
deverão ser retirados da pilha. Considere uma coluna que possui um slot disponível para
acomodar um contêiner. O IR de uma coluna é a quantidade de contêineres na coluna que
deverão ser retirados antes do contêiner sendo reposicionado (Wan et al, 2009). Um contêiner
sendo rearranjado é colocado na coluna com o menor IR, sendo que a coluna mais alta deverá
ser escolhida no caso de empate no valor de IR e, em caso de empate de alturas, a escolha
deve ser arbitrária.
Se a heurística do índice de rearranjo for aplicada à pilha da Figura 2.8(a) para a
retirada do contêiner 2, então o contêiner 9 deverá ser rearranjado e, neste caso, a heurística
definirá para qual posição com base nos índices de rearranjos de cada coluna disponível. A
coluna contendo os contêineres 5 e 7 terá um índice igual a 2, uma vez que os dois contêineres
da coluna deverão ser retirados antes que o contêiner 9. Já a coluna com os contêineres 10 e 8
terá índice igual a 1, pois apenas o contêiner 8 deverá ser retirado antes que o 9. Finalmente, a
ultima coluna da esquerda possui apenas o contêiner 4, que também deverá ser retirado antes
que o 9, resultando em um índice igual a 1 para a coluna.
Após o calculo dos índices para cada coluna é possível definir para qual coluna o
contêiner será movido. Duas colunas possuem índices iguais a 1 e, neste caso, a pilha com
maior número de contêineres é selecionada para o rearranjo (Figura 2.8b).
Figura 2.8: Exemplo de execução da heurística de Índice de Rearranjo.
2.3.7 Heurística ENAR
37
A heurística ENAR (Expected Number of Additional Relocation) foi apresentada por Kim &
Hong (2006) e possui o objetivo de estimar a futura quantidade de rearranjos em uma coluna
se um contêiner for armazenado ou rearranjado para o topo desta. Dado que os contêineres
estão numerados com prioridades (pela data em que serão retirados da pilha), um rearranjo é
necessário se a prioridade do contêiner sendo movido for menor do que a de algum contêiner
da coluna.
Como é difícil prever qual dos contêineres existentes será rearranjado para uma nova
coluna em qualquer estágio ao esvaziar uma pilha, a heurística ENAR simplesmente assume
que todos os contêineres da pilha que atualmente não estão em uma coluna possuem
probabilidades iguais de serem rearranjados para esta no futuro.
Em uma pilha com s contêineres a heurística ENAR computará um índice para cada
slot vazio (no topo das colunas). O slot vazio com o índice de menor valor é escolhido para
armazenar o contêiner. Quando um contêiner é adicionado a uma coluna, sua quantidade de
slots vazios é reduzida e os índices das colunas deverão ser computados novamente (WAN et
al., 2009). Como definido em (KIM & HONG, 2005), dado que cmaior é o contêiner de maior
prioridade de uma coluna, o ENAR de um slot i pode ser calculado como definido na Equação
2.7.
( ) (Eq. 2.7)
onde pmaior é a probabilidade de que o contêiner rearranjado possua prioridade maior que
cmaior, rmaior representa a quantidade de rearranjos como consequência de mover um contêiner
de prioridade maior para esta coluna, pmenor é a probabilidade de que o contêiner rearranjado
possua prioridade menor que cmaior, e rmenor representa a quantidade de rearranjos como
consequência de mover um contêiner de prioridade menor que cmaior para esta coluna.
Para exemplificar, a Figura 2.9 mostra uma pilha de tamanho 3 × 3 contendo no
momento apenas cinco contêineres. O contêiner a ser retirado no momento (pela ordem) é o
de número 3 e, portanto, o contêiner de número 6 deverá ser rearranjado para um dos slots
disponíveis sobre o contêiner 4 ou 7. Atualmente o ENAR da coluna contendo o contêiner 4 é
(
) ( ) (
) ( )
, uma vez que três dos quatro contêineres que não estão na coluna do
38
contêiner 4 causariam um rearranjo ao retirar o contêiner, caso fossem movidos para esta
coluna. Esta mesma consequência não existirá para a coluna do contêiner 7, pois nenhum
rearranjo será necessário no futuro ao movimentar qualquer um dos contêineres para cima
deste, resultando em um índice equivalente a 0 (zero). Logo, a decisão será mover o contêiner
6 para o slot acima do contêiner 7.
Figura 2.9: Pilha de tamanho 3×3 onde o contêiner 6 deverá ser rearranjado para a obtenção do contêiner 3.
Como documentado em Kim & Hong (2005), a heurística ENAR possui bons
resultados ao esvaziar uma pilha a partir de uma configuração de entrada e o desempenho da
heurística é próximo da solução Branch and Bound apresentada pelos mesmos autores.
2.4 TRABALHOS RELACIONADOS
Os principais problemas de decisão que podem ser encontrados em terminais de contêineres
são descritos em (VIS & DE KOSTER, 2002), onde são destacados modelos quantitativos da
literatura com o objetivo de resolver tais problemas, além de discussões sobre possíveis
tópicos de pesquisa. Em uma revisão recente sobre pesquisa operacional aplicada a terminais
de contêineres, Stahlbock & Voss (2008) enumeraram os aspectos gerais das operações em
terminais. Os tópicos discutidos incluem: planejamento de armazenagem, alocação de berço,
otimização de guindastes, otimização de transporte no terminal e logística de armazenamento
e empilhamento. Este trabalho pode ser considerado uma extensão da revisão anterior
(STEENEN et al. 2004), que também contem diversas informações sobre a operação de
terminais.
O problema de empilhamento de contêineres vem sendo estudado através de diversas
abordagens baseadas essencialmente em simulações, ou seja, modelos fictícios que
representam uma situação do problema tal que a proposta de solução possa ser aplicada e seus
resultados analisados. Borgman et al. (2010) discutem que a literatura acadêmica sobre o
problema de empilhamento de contêineres ainda não é muito comum, o que deve ser
consequência da dificuldade de obtenção de soluções analíticas para o problema. Entretanto,
recentemente o assunto tem atraído mais atenção em consequência da sua importância prática
6
3
5 4 7
39
(STEENKEN et al., 2004), porém, até o momento somente estratégias baseadas em regras
online foram estudadas em análises de simulações (BORGMAN et al., 2010). Estas regras
permitem a operação com informações imperfeitas ou imprecisas sobre a data de saída de
contêineres, porém, o estudo de tais regras demanda muito tempo e os resultados podem ser
dependentes da configuração da simulação.
Segundo Borgman et al. (2010), vários métodos são utilizados para tratar o problema
de empilhamento, porém duas principais abordagens podem ser elencadas. A primeira
envolve cálculos analíticos com informações completas sobre o momento em que um
contêiner será retirado da pilha. Esta abordagem é comumente baseada em programação
inteira (Borgman et al.,2010) e requer uma quantidade relativamente grande de tempo de
processamento para instâncias grandes do problema. A segunda abordagem envolve o estudo
detalhado da simulação que deve validar várias estratégias de empilhamento. Estas estratégias
podem ser online, nas quais a posição de cada contêiner é determinada independentemente
dos outros que chegarão posteriormente, ou offline, nas quais as posições são definidas
simultaneamente para todos os contêineres que serão descarregados de um navio.
Dekker et al. (2006) distinguem dois tipos de estratégias de empilhamento:
empilhamento por categoria e empilhamento por tempo de permanência. A primeira
estratégia consiste em empilhar contêineres da mesma categoria (mesmo tamanho, destino,
peso, etc.) nos topos uns dos outros. Esta proposta assume que os contêineres são
intercambiáveis e, portanto, podem ser empilhados sem o risco de um contêiner da pilha ser
requisitado antes dos outros do topo serem removidos. A segunda estratégia consiste em
verificar a data de partida dos contêineres. Seguindo esta abordagem, um contêiner só poderá
ser empilhado no topo de contêineres que possuam uma data de partida planejada que seja
posterior a data de partida do novo contêiner.
Exemplos recentes de abordagens analíticas incluem Kim & Hong (2006), na qual um
algoritmo branch-and-bound foi utilizado para encontrar uma solução ótima para o problema
de empilhamento e então são propostas várias heurísticas para tentar chegar próximo ao ótimo
e (KANG et al. 2006), que apresentam a utilização de um algoritmo de simulated annealing
para encontrar boas soluções em tempo hábil. Em Caserta et al. (2010) são apresentadas
combinações entre metaheurísticas e programação dinâmica para melhorar os resultados
obtidos por Kim & Hong (2006). Segundo Borgman et al. (2010), a maioria destes métodos
de otimização assumem o total conhecimento prévio sobre a ordem em que os contêineres
40
serão retirados, porém, essa informação normalmente não está disponível a tempo. Ainda
assim, encontrar o ótimo teórico pode ser extremamente útil como benchmark.
Outros problemas importantes de otimização e decisão em terminais de contêineres
estudados incluem a alocação de berços para navios que atracam no porto e a alocação de
guindastes pórticos de cais (quay cranes) a navios ou baias (STEENKEN et al., 2004). Uma
abordagem para a alocação de berços que considera simultaneamente as capacidades dos quay
cranes foi desenvolvida por Park & Kim (2002). O escalonamento do transporte de
contêineres no terminal foi estudado para dois diferentes tipos de equipamento, chamados
straddle carriers (aranhas) e veículos automaticamente guiados (VAG) (BOSE et al., 2000;
KIM & KIM, 1999a; STEENKEN et al., 2004). Além disso, o problema de alocação e
escalonamento de stacking cranes foi considerado por Zhang et al. (2002), no qual o objetivo
foi encontrar tempos e rotas de movimentos dos guindastes entre os blocos, para que o tempo
total utilizado para os movimentos fosse minimizado. Com um objetivo mais abrangente,
Hartmann (2004) propôs um modelo geral para vários problemas de escalonamento que
podem ocorrer em um terminal de contêineres. O escalonamento é feito através da definição
de tarefas (jobs) a recursos alocáveis, considerando também o tempo de execução de tarefas,
possíveis restrições e a sequência de execução. Foram considerados os problemas de
escalonamento para straddle carriers, veículos automaticamente guiados (VAG), guindastes
de empilhamento e trabalhadores que manuseiam os contêineres frigoríficos.
Em Kim & Kim (1999) os autores formularam o problema de roteamento de Straddle
Carries através de um modelo de programação inteira. O objetivo era minimizar o trajeto total
que um Straddle Carrier percorreria em um momento de trabalho. Para tal, a quantidade de
contêineres a ser retirada é definida, assim como a sequencia de baias a ser visitada durante o
percurso. Posteriormente os autores propuseram um método de Beam Search para solucionar
o mesmo problema, onde são realizados experimentos numéricos para a validação do método
(KIM & KIM, 1999b). Em um trabalho anterior a estes, Kim & Kim (1997) propuseram um
modelo de programação inteira para o roteamento de guindastes de transferência (transtêiner).
Um modelo de otimização para a alocação de berços (ou escalonamento de berços) foi
proposto por Kim & Moon (2002). Cada navio requer uma quantidade especifica de espaço
para atracar no porto por um tempo predeterminado para o carregamento e descarregamento
de contêineres. Neste trabalho os autores propuseram um modelo de Programação Inteira
Mista (PIM) como solução para o problema. Para encontrar soluções quase-ótimas (near
optimal) um algoritmo de simulated annealing foi aplicado. Os dois métodos foram
41
comparados com experimentos, resultando que o algoritmo de simualted annealing obtém
soluções que são similares com as soluções ótimas encontradas pelo PIM.
42
3 SISTEMAS IMUNOLÓGICOS NATURAIS E
ARTIFICIAIS
3.1 FUNDAMENTOS DO SISTEMA IMUNOLÓGICO
A imunologia é o ramo da biologia responsável pelo estudo das reações que conferem
resistência às doenças (KLEIN, 1990). A origem desta ciência é atribuída a Edward Jenner
que, em 1796, descobriu que a vacínia2
(ou cowpox) induzia proteção contra a varíola. Este
processo foi batizado de vacinação e até hoje é utilizado para a prevenção de doenças virais
através da submissão de agentes causadores de doenças a sistemas saudáveis.
O sistema que defende o animal contra o ataque constante de microorganismos é
chamado de sistema imunológico, composto por células, moléculas e órgãos específicos
(TIZARD, 1995). No sistema imunológico existem duas linhas de defesa. A primeira é
denominada sistema imune inato e é responsável pela principal proteção contra infecções,
possuindo a capacidade de realizar respostas rápidas contra patógenos invasores. A segunda é
denominada sistema imune adaptativo e também é muito efetiva, porém mais lenta e
duradoura (DE CASTRO, 2006).
O sistema imune inato é a primeira linha de defesa do organismo, disponível a partir
do nascimento do indivíduo. Suas células estão imediatamente disponíveis para o combate a
uma ampla variedade de patógenos, sem exigir prévia exposição aos mesmos (DE CASTRO,
2006). Quando uma célula do sistema imune inato reconhece um patógeno, uma resposta
imunológica é ativada com o intuito de eliminá-lo do organismo. Além disso, o sistema imune
inato também é responsável por enviar sinais co-estimuladores para o sistema imune
adaptativo, caso um ataque ao organismo seja constatado.
Como não são todos os patógenos que podem ser reconhecidos pelo sistema imune
inato, estes podem ser reconhecidos apenas pelo sistema imune adaptativo. Este sistema
adapta-se aos antígenos produzindo anticorpos específicos a um determinado agente
infeccioso. Além disso, este sistema é capaz de desenvolver uma memória imunológica, ou
2 Agente infeccioso da varíola bovina que quando injetado no organismo humano proporciona imunidade
à varíola.
43
seja, reconhecer o mesmo estímulo antigênico caso ele entre em contato com o organismo
novamente. Dessa forma o sistema imunológico é capaz de evitar o re-estabelecimento da
doença no organismo e a resposta do sistema imunológico contra o mesmo agente infectante é
aperfeiçoada (DE CASTRO, 2006).
3.1.1 Medula Óssea
A medula óssea é o tecido encontrado no interior dos ossos, também conhecido popularmente
por tutano, cuja função é produzir células sanguíneas: glóbulos brancos, glóbulos vermelhos e
plaquetas. A célula que origina as células sanguíneas é chamada de célula progenitora ou
célula-mãe. Estas células existem em pequeno número no sangue e em maior quantidade na
medula óssea. As células-mãe se renovam automaticamente ou se diferenciam em leucócitos
(glóbulos brancos) e passam por diversos estágios de maturação, antes de passarem para o
sangue (DE CASTRO & TIMMIS, 2002).
As células que se diferenciam em glóbulos brancos (leucócitos) são responsáveis pela
defesa do organismo contra agentes infecciosos e substâncias estranhas. Para defender o corpo
adequadamente, uma quantidade suficiente de leucócitos deve estimular as respostas
imunológicas apropriadas, em seguida, conter a infecção e eliminar os organismos e as
substâncias prejudiciais (DE CASTRO & TIMMIS, 2002).
As moléculas de anticorpo são geradas na medula óssea através do processo de
recombinação de DNA. Genes de diversas bibliotecas de genes são concatenados com o
objetivo de formar uma molécula de anticorpo (DE CASTRO & TIMMIS, 2002).
3.1.2 Reconhecimento de Padrões
As células existentes no sistema imunológico (inato e adaptativo) possuem em suas
superfícies moléculas receptoras capazes de reconhecer antígenos. O reconhecimento
imunológico ocorre no nível molecular e é baseado na complementaridade entre a região de
ligação da célula receptora e uma proporção do antígeno chamada epítopo. Anticorpos
possuem apenas um único tipo de receptor (Figura 1), enquanto antígenos podem possuir mais
de um epítopo e, dessa forma, um único antígeno pode ser reconhecido por diferentes
anticorpos (DE CASTRO, 2006).
44
Figura 3.1: Reconhecimento de um antígeno (Fonte: DE CASTRO, 2006).
O reconhecimento de padrões antigênicos faz com que o sistema imunológico seja
capaz de combater os agentes causadores de doenças. Quanto melhor o reconhecimento, mais
eficiente será a resposta imunológica. Dessa forma, quando o sistema se recupera de uma
infecção ele adquire imunidade a tal antígeno (DE CASTRO, 2006).
3.1.3 Princípio da Seleção Clonal
Quando o sistema imunológico é exposto a um antígeno que os anticorpos são capazes de
reconhecer, a resposta imunológica é veloz e rapidamente se encarrega de eliminá-lo do
organismo. Porém, isto somente ocorrerá caso o sistema imunológico inato seja capaz de
reconhecer este antígeno ou caso o sistema imune adaptativo já tenha se deparado com este
antígeno em outra ocasião.
O Princípio (ou teoria) da Seleção (ou expansão) Clonal (DE CASTRO, 2006) está
associado às características básicas de uma resposta imune adaptativa a um estímulo
antigênico. Ele estabelece que apenas aquelas células capazes de reconhecer um determinado
estímulo antigênico irão se proliferar (Figura 3.2), sendo, portanto, selecionadas em
detrimento das outras, com o objetivo de eliminar o antígeno do organismo. Estas células
deverão se proliferar para produzir células em quantidade suficiente para combater a infecção.
45
Figura 3.2: Seleção Clonal (Fonte: DE CASTRO, 2006).
Esta proliferação resultará em células filhas (clones) que poderão sofrer mutação. As
células filhas são similares aos pais, podendo possuir leves diferenças em função da mutação,
mas todas devem ser capazes de reconhecer o antígeno que causou a resposta imunológica
(CASTRO & TIMMIS, 2002). Um sistema de seleção garante que as células (resultantes do
processo de clonagem) que melhor reconhecem o antígeno possuam um maior tempo de vida,
sendo chamadas de células de memória. Este é o processo pelo qual o sistema imunológico
tornar-se-á capaz de enfrentar antígenos que encontrou previamente.
3.1.4 Maturação de Afinidade
O aprendizado do sistema imunológico envolve o aumento da população e da afinidade dos
anticorpos que demonstraram capacidade de reconhecer algum antígeno. Durante o tempo de
vida de um ser, possuidor de um sistema imunológico, é muito provável que o mesmo seja
exposto a um antígeno repetidamente. A primeira exposição a um antígeno que ativa uma
resposta imunológica é tratada por poucas células, cada uma produzindo anticorpos com
diferentes afinidades (DE CASTRO, 2006). A efetividade da resposta imunológica em
encontros secundários é consideravelmente melhorada através do acúmulo de anticorpos de
alta afinidade das infecções anteriores (Figura 3). Esta característica sugere que o sistema
imunológico está constantemente melhorando a sua capacidade de reconhecer antígenos.
46
Figura 3.3: Maturação de afinidade a sucessivas respostas imunológicas. (Fonte: DE CASTRO, 2006).
O termo maturação de afinidade é dado ao processo combinado que envolve a
mutação dos receptores celulares (anticorpos) e a seleção que garante a sobrevivência das
células que melhor reconhecem o antígeno. Acredita-se que esta mutação deve ser
inversamente proporcional a afinidade da célula com o antígeno: quanto maior a afinidade,
menor a taxa de mutação e vice-versa (CASTRO & TIMMIS, 2002; BEREK & ZIEGNER,
1993). Dessa forma, o sistema imunológico pode garantir a preservação de células de alta
afinidade, ao mesmo tempo em que fornece uma alta probabilidade de gerar células melhores,
a partir da célula selecionada.
Diferente da taxa de mutação, a taxa de proliferação de um anticorpo é diretamente
proporcional a sua afinidade com o antígeno. Quando um antígeno estranho invade o
organismo, algumas células o reconhecem com diferentes níveis de afinidades. Estas células
passarão pelo processo de seleção clonal e maturação de afinidade. A quantidade de clones
gerados para um anticorpo é proporcional a sua afinidade com o antígeno, ou seja, quanto
maior a afinidade, maior a quantidade de clones gerados e vice-versa.
3.2 SISTEMAS IMUNOLÓGICOS ARTIFICIAIS
Com inspiração no sistema imunológico dos vertebrados, novas técnicas computacionais
estão sendo estudadas e aplicadas para resolver problemas complexos em diversas áreas de
47
conhecimento, da engenharia à própria biologia, o que deu origem a chamada Engenharia
Imunológica (DE CASTRO, 2001).
“A Engenharia Imunológica é um processo de meta-síntese, o qual vai definir a
ferramenta de solução de um determinado problema baseado nas características do próprio
problema e depois aplicá-la na obtenção da solução. Ao invés de buscar a reconstrução parcial
ou total do sistema imunológico tão fielmente quanto possível, a engenharia imunológica
deve procurar desenvolver e implementar modelos pragmáticos inspirados no sistema
imunológico que preservem algumas de suas propriedades essenciais e que se mostrem
passíveis de implementação computacional e eficazes no desenvolvimento de ferramentas de
engenharia.” (DE CASTRO, 2001, p. 44)
Desde sua proposição, em 2001, a engenharia imunológica vem servindo de base
processual para o projeto e desenvolvimento de sistemas imunológicos artificiais. De forma
sucinta, a engenharia imunológica propõe três componentes essenciais ao projeto e
desenvolvimento de sistemas imunológicos artificiais:
1. Uma representação para os componentes do sistema;
2. Um conjunto de mecanismos para avaliar interações, tanto entre os indivíduos,
quanto deles com o ambiente;
3. Procedimentos de adaptação, que governarão a dinâmica e metadinâmica do
sistema, ou seja, como ele varia ao longo do tempo.
Os sistemas imunológicos artificiais surgiram em meados da década de 80 com o
trabalho de Farmer e colaboradores (FARMER et al., 1986) introduzindo um modelo
dinâmico de redes imunológicos e propondo um paralelo do mesmo com os algoritmos
evolutivos. Em 2002 a área se estabeleceu academicamente com o lançamento do livro
“Artificial Immune Systems: A New Computational Intelligence Approach” (DE CASTRO &
TIMMIS, 2002), no qual os autores definiriam a área, seu escopo, metodologia de projeto,
revisaram as principais aplicações até o momento e compilaram os principais algoritmos com
aplicações diversas e genéricas em múltiplas áreas.
Dentre os algoritmos, ganharam muito destaque o Algoritmo de Seleção Negativa (DE
CASTRO & VON ZUBEN, 2002), o Algoritmo de Seleção Clonal (DE CASTRO & VON
ZUBEN, 2002), e os Algoritmos de Redes Imunológicas (DE CASTRO & VON ZUBEN,
2001; NEAL, HUNT & TIMMIS, 1988). Devido ao sucesso de alguns desses algoritmos e ao
48
elevado potencial de aplicação em problemas combinatoriais NP-completos, como o abordado
nessa dissertação, o algoritmo intitulado Algoritmo de Seleção Clonal (CLONALG) foi
escolhido como base para a proposição de uma solução competitiva para o problema de
empilhamento de contêineres. A seção seguinte fará uma breve revisão do algoritmo que será
usado aqui como base para o desenvolvimento da solução a ser proposta.
3.3 O ALGORITMO DE SELEÇÃO CLONAL
A teoria da seleção clonal, discutida anteriormente, é utilizada pelo sistema imunológico
como mecanismo básico de resposta imunológica a um estímulo antigênico. Ela estabelece a
ideia de que somente as células que reconhecem os antígenos são selecionadas para a
proliferação. As células são expostas a um processo de maturação de afinidade, que deve
melhorar suas afinidades ao antígeno ao longo do tempo. O sistema imunológico possui a
capacidade de aprendizado, generalização e aquisição de memória. Baseando-se nesta
premissa, em (DE CASTRO & VON ZUBEN, 2002) os autores propuseram um algoritmo de
seleção clonal levando em conta os seguintes aspectos imunológicos:
Geração e manutenção de células de memória;
Seleção e clonagem de células mais estimuladas;
Eliminação (morte) de células não minimamente estimuladas;
Maturação de afinidade e seleção de clones com maior afinidade com o antígeno;
Geração e manutenção de diversidade; e
Taxa de mutação inversamente proporcional à afinidade da célula.
Este algoritmo mais tarde foi denominado CLONALG e aplicado a reconhecimento de
padrões e otimização (DE CASTRO, 2001). O algoritmo possui a estrutura apresentada no
diagrama de blocos da Figura 3.4 e pode ser descrito pelos seguintes passos:
1. Gere um conjunto (P) de soluções candidatas, composto de um subconjunto de células
de memória (M) e o resto da população (Pr). Ou seja, P = M + Pr;
2. Determine (selecionar) os n melhores indivíduos (Pn) da população, baseando-se na
medida de afinidade;
3. Reproduza (clonar) os n melhores indivíduos da população Pn, gerando uma nova
população de clones (C);
49
4. Submeta o repertório de clones a mutação, onde a taxa de mutação é inversamente
proporcional a afinidade do anticorpo com o antígeno. Uma população de anticorpos
maturados é gerada (C*);
5. Re-selecione os melhores indivíduos de C* para compor o conjunto de memória M.
6. Substitua d anticorpos por novos, causando a introdução de diversidade. Quanto
menor a afinidade da célula, maior a probabilidade de ser substituída.
Figura 3.4: Diagrama de blocos do Algoritmo de Seleção Clonal
O funcionamento do algoritmo de seleção clonal pode ser interpretado com a mesma
dinâmica dos Algoritmos Genéticos, que baseiam-se nos princípios da evolução de Charles
Darwin (CZIKO, 1995). Tal fato se deve a características em comum entre estes dois
modelos, como: diversidade populacional, variação e seleção natural. Os dois processos
centrais envolvidos na produção de anticorpos, recombinação genética e mutação são os
mesmos responsáveis pela evolução biológica de espécies que se reproduzem de forma
sexuada (DE CASTRO & ZUBEN, 2000; HOLLAND, 1995). Essas características do
algoritmo de seleção clonal sugerem que este deve ser capaz de gerar soluções de alta
qualidade para problemas complexos, tais como reconhecimento de padrões, otimização
contínua e otimização combinatória (DE CASTRO & ZUBEN, 2000, 2001; DE CASTRO &
TIMMIS, 2002).
50
4 UM ALGORITMO DE SELEÇÃO CLONAL
APLICADO AO PROBLEMA DE EMPILHAMENTO
E DESEMPILHAMENTO DE CONTÊINERES
Esta dissertação propõe alterações no Algoritmo de Seleção Clonal original com o objetivo de
aplicá-lo ao problema de empilhamento/desempilhamento de contêineres. A representação da
solução (anticorpo) foi modelada para fornecer como resultado toda a sequência de retirada
dos contêineres de uma pilha com o objetivo de esvaziá-la. A inicialização do repertório de
soluções é feita de forma a não criar soluções infactíveis. O processo de mutação foi
modelado de forma que não sejam criadas soluções infactíveis, mantendo ainda o conceito de
mutação inversamente proporcional à qualidade da solução. Finalmente, um mecanismo de
finalização de execução do algoritmo é adicionado, para casos em que a convergência ocorra
em poucas iterações.
4.1 REPRESENTAÇÃO DOS ANTICORPOS
Durante o processo de empilhamento e desempilhamento de contêineres, a pilha pode assumir
vários estados diferentes. Por exemplo, como visto na Figura 2.5f ao mover o contêiner de
número 6 para cima do contêiner de número 7 o estado da pilha foi alterado para um em que é
possível retirar todos os contêineres remanescentes sem a necessidade de outros rearranjos.
Porém, caso o contêiner 6 fosse movido para cima do contêiner 4 ainda seria necessário
rearranjar o contêiner 6 em algum momento para poder esvaziar a pilha. Portanto, cada estado
da pilha influenciará os estados futuros.
Para garantir que o modelo de otimização considere o processo de retirada de todos os
contêineres é necessário representar uma solução candidata como uma sequência de passos,
mais especificamente, uma sequência de movimentações. Considerando uma pilha contendo s
contêineres a serem retirados em ordem crescente, uma célula do repertório é representada
pela movimentação de cada contêiner durante a retirada dos contêineres 1,...,s-1. Quando um
contêiner i estiver para ser removido, deve-se verificar se será necessário rearranjar os
contêineres i+1, i+2,..., s.
51
A Figura 4.1 propõe uma representação de um indivíduo solução para a sequência de
retirada de 7 contêineres, conforme configuração inicial ilustrada na Figura 4.2. O indivíduo é
dividido em 6 estágios, onde cada estágio é constituído por um estado da pilha em que pode
existir a presença ou ausência de rearranjo de um contêiner. Cada estágio i é dependente do
estágio anterior i1, (1 < i < s), portanto, toda alteração em um estágio refletirá diretamente
nos estágios seguintes. A Figura 4.2 demonstra as alterações nos estados da pilha decorrentes
dos estágios x1, x2 e x3 para a retirada dos contêineres 1, 2 e 3. O estágio x3 resultou em um
estado de pilha em que nenhum rearranjo extra será necessário para a retirada dos contêineres
4, 5, 6 e 7.
Figura 4.1: Representação de umacélula (solução candidata). Os índices sobre cada posição representam cada
contêiner que pode ser rearranjado no estágio xi. Cada posição representa a movimentação do contêiner para a
posição exibida, partindo da configuração inicial da pilha. Posições vazias indicam que não há movimentação
para o contêiner.
Figura 4.2: (a) Pilha inicial. (b) Pilha após o estágio x1. (c) Pilha após o estágio x2. (d) Pilha após o estágio x3.
A inicialização de cada célula (solução) é feita com consulta direta à pilha de entrada
(instância do problema), porém as posições de rearranjo são escolhidas de forma aleatória
dentro das possibilidades existentes. Dessa forma é possível criar as soluções com conteúdo
aleatório mantendo a factibilidade.
4.2 MODELAGEM DA MUTAÇÃO
Como apresentado na seção anterior, a modelagem da solução candidata (célula) compreende
em um conjunto de posições para onde contêineres serão rearranjados em cada momento
52
durante o processo de esvaziamento de uma pilha qualquer. Dessa forma, a cada contêiner
sendo retirado da pilha é atribuído um estágio (o número que representa este estágio é
definido de acordo com a ordem de retirada dos contêineres. Por exemplo, o contêiner 2 é
retirado no estágio x2).
Cada estágio xi do processo de esvaziamento está fortemente relacionado com os
estágios subsequentes. Esta relação implica que quaisquer alterações feitas em um estágio xi
poderão criar alterações na configuraçãona pilha sobre a qual os estágios seguintes (xi+1,...,xs-
1) seriam ser gerados. Consequentemente, a alteração de qualquer estágio xi deverá considerar
alterar também os estágios subsequentes com o objetivo de manter a solução factível a cada
mutação.
Na modelagem deste algoritmo, o processo de mutação escolherá (de acordo com a
qualidade da solução em relação a todo o repertório) um dos estágios para modificar seus
parâmetros e então, os estágios seguintes ao escolhido também deverão ser devidamente
modificados com o objetivo de manter a solução factível. Para exemplificar, a Figura 4.3
apresenta a mutação de uma célula, onde o estágio selecionado foi o x3. Neste caso a alteração
das posições para onde os contêineres 4 e 5 no estágio x3 seriam movidos resultou em um
estágio x4 em que nenhum rearranjo fazia-se necessário, melhorando a qualidade da solução
candidata para a instância do problema.
Figura 4.3: Processo de mutação onde o estágio de início para a mutação foi o x3. Em consequência, obteve-se a
melhora do fitness do indivíduo, uma vez que os contêineres 4, 5 e 6 agora poderão ser retirados sem a
necessidade de rearranjos.
No processo de clonagem as células do repertório são clonadas de acordo com a
qualidade da solução (menor quantidade de rearranjos) em relação a todas as outras, ou seja,
quanto melhor a qualidade da solução apresentada pela célula mais clones esta terá. Dado que
Nc é a quantidade máxima de clones que uma determinada célula poderá ter, a Equação 4.1
53
define a quantidade exata de clones para cada célula considerando a sua posição i no ranking
(da melhor para a pior) do repertório
( )
(Eq 4.1)
Por exemplo, se Nc = 20 e uma determinada célula for a segunda no ranking (C2), a
quantidade de clones a ser gerada será de ( )
.
O oposto deverá ocorrer para a taxa de mutação. Quanto melhor a solução apresentada
pela célula, menor deverá ser a taxa de mutação em seus clones gerados e vice-versa. Tendo
em vista o contexto de aplicação deste algoritmo, a taxa de mutação será definida por meio da
escolha do estágio (xi) a ser alterado. Além disso, como discutido anteriormente, uma vez que
cada estágio depende do anterior para manter a factibilidade da solução, toda vez que um
estágio é alterado, os subsequentes devem ser alterados também de acordo com as
configurações que a pilha associada pode assumir. Por exemplo, se o estágio x3 da Figura 4.3
for escolhido para mutação, então os estágios x4, x5 e x6 também serão alterados.
Sendo assim, como os estágios são dependentes, uma alta taxa de mutação deverá
alterar mais estágios enquanto uma baixa taxa de mutação deverá alterar menos estágios. Para
que esta dinâmica opere é somente necessário definir qual dos estágios será escolhido para a
alteração, pois uma vez que este for alterado seus subsequentes também serão. A Equação 4.2
garante que quanto maior a taxa de mutação, mais próximo do primeiro estágio da solução
(x1), e quanto menor a taxa de mutação, mais próximo do último estágio (xs-1). Dessa forma,
será possível manter as boas soluções e melhorar a qualidade das restantes promovendo a
evolução do repertório. Por exemplo, para a célula de posição i = 15 em um ranking de um
repertório contendo R = 20 células resolvendo o problema para uma pilha com s = 7
contêineres, a taxa de mutação para os clones será de ( ) (
) . Isto
implica que os clones da célula na posição i = 15 do ranking terão a partir do estágio x2 para
serem modificadas, modificando também os estágios x3, x4, x5 e x6.
( ) (
)
(Eq 4.2)
54
4.3 PSEUDOCÓDIGO
O algoritmo proposto, denominado Minimal Reshuffle CLONALG (ou MRC), receberá como
entrada a matriz que representa o estado inicial da pilha de contêineres (M), a quantidade R de
células do repertório, a quantidade g de gerações, a quantidade máxima Nc de clones a serem
gerados por cada célula, a quantidade d de piores células a serem substituídas por novas no
repertório a cada iteração e um parâmetro k de controle que irá garantir a finalização do
algoritmo caso este permaneça k iterações sem evoluir a solução. O pseudocódigo do MRC é
apresentado e descrito a seguir:
1 procedure [P] = CLONALG(M,R,g,Nc,d,k)
2 gerações = 0;
3 P = gera(R);
4 Enquanto Condição é falsa faça,
5 gerações = gerações + 1;
6 f* = fitness(P);
7 P = muta(P, Nc);
8 P = seleciona(P,f*);
9 P = gera(d);
10 Se gerações == g 11 Condição = verdadeiro; 12 Se a população não evoluiu por k iterações 13 Condição = verdadeiro; 14 Fim 15 Fim
Pseudocódigo 4.1: Pseudocódigo do MRC.
No cálculo do fitness é computada a quantidade de rearranjos necessária para esvaziar
a pilha utilizando a solução proposta pela célula. No processo de mutação cada célula terá no
máximo Nc clones, sendo que a quantidade de clones é definida pela Equação 4.1. Na função
seleciona(P,f*) os indivíduos da população são selecionados pelos melhores fitness
para permanecer ou não no repertório para a próxima geração. Finalmente, a função
gera(d) substituirá as d piores células do repertório por novas células geradas
aleatoriamente com o objetivo de manter a diversidade de soluções.
O MRC possui dois procedimentos de parada:
1. Número máximo de gerações: O primeiro considera o número de gerações
definido na entrada, ou seja, caso a quantidade máxima de iterações seja atingida o
algoritmo finalizará a execução; ou
2. Estabilização do algoritmo: O segundo método possui o objetivo de finalizar a
execução do algoritmo caso este deixe de evoluir por k iterações.
55
5 ANÁLISE DE DESEMPENHO
A literatura acadêmica sobre o problema de empilhamento de contêineres ainda não é muito
comum, o que é consequência da dificuldade de obtenção de soluções analíticas para esse
problema (BORGMAN et al., 2010). Na área de otimização de processos em terminais de
contêineres os experimentos são, em sua maioria, realizados através de simulações. Este
capítulo possui o objetivo de descrever a metodologia a ser utilizada para a validação do
algoritmo de otimização proposto nesta dissertação. Como a validação da proposta será
realizada através de simulações, serão descritos na sequência dois cenários de simulação e as
medidas de avaliação para cada um. Por fim, são descritos os parâmetros investigados na
análise de sensibilidade do algoritmo e os resultados obtidos nos dois cenários de testes.
5.1 CENÁRIOS DE TESTE
Dois cenários de testes serão introduzidos nesta seção: 1) o caso estático do problema de
desempilhamento; e 2) o caso dinâmico, em que são considerados tanto o empilhamento de
novos contêineres, quanto o desempilhamento (saída do contêiner da pilha). Em ambos os
casos existe um tipo específico de geração de casos de teste. Para o estático os casos de teste
são compostos essencialmente por pilhas a serem esvaziadas com o mínimo de rearranjos
respeitando a ordem de retirada dos contêineres. Já para o caso dinâmico, além das pilhas são
geradas também sequências de entrada de novos contêineres na pilha.
5.1.1 Caso Estático: Esvaziamento de Pilha
Essencialmente, os contêineres são organizados em pilhas para otimizar a utilização de
espaço. As pilhas a serem utilizadas nas simulações deste modelo são geradas aleatoriamente
utilizando dados de tamanho em colunas e fileiras e também a quantidade de contêineres
presentes. Os dados gerados representarão a ordem em que os contêineres estão programados
para a retirada no momento.
Cada instância do problema será representada por uma matriz de tamanho f ×c, onde f
é a quantidade de fileiras e c a quantidade de colunas da pilha. Cada elemento da matriz Mfc
corresponde a um contêiner aij, i = 1, ..., f, j = 1, ..., c, onde a é o seu número na ordem de
retirada dos contêineres e ij é a sua posição na pilha (Equação 5.1). Como espaços deverão
56
estar disponíveis para o rearranjo de contêineres, as posições em branco serão representadas
pelo número 0 (Figura 5.1).
[
] (Eq. 5.1)
Figura 5.1: (a) Instância do problema de desempilhamento com 7 contêineres. (b) pilha vazia.
A geração de dados para os experimentos é feita através de um algoritmo que recebe
como entrada os parâmetros c e f da pilha, a quantidade s de contêineres presentes na pilha e a
quantidade T de casos de testes a serem gerados. A saída do procedimento de geração de
dados de teste é, então, um arquivo contendo T casos de teste. Por exemplo, se a entrada for
c = 3, f = 3, s = 7 e T = 50, então serão geradas 50 pilhas aleatórias de tamanho 33, cada uma
contendo 7 contêineres. A seguir é descrito o pseudocódigo para a geração de dados de teste.
1 procedure [] = geraDados(s,T,c,f)
2 casos = 1;
3 Enquanto casos é diferente de T,
4 casos = casos + 1;
5 pilha[][] = {0};
6 cond = falso;
7 Para i = 1 até i = s faça
8 Enquanto cond é falso faça
9 col = Rand(c);
10 fil = Rand(f); 11 Se pilha[col][fil] == 0 então 12 pilha[col][fil] = i; 13 cond = verdadeiro; 14 Fim 15 Fim 16 Fim 17 pilha[][] = normaliza(pilha[][]); 18 Fim 19 Fim
Pseudocódigo 4.1: Pseudocódigo para a geração de dados para experimentos de simulação.
Inicialmente uma matriz contendo apenas zeros é gerada (Linha 5). Durante a criação
de cada pilha uma posição da pilha é escolhida aleatoriamente para posicionar o contêiner i
(Linhas 9 e 10). Se a posição estiver desocupada, o contêiner é posicionado, caso contrário
57
uma nova posição será escolhida (Linhas 8-13). Após todos os contêineres serem inseridos,
teremos uma matriz contendo números de 1 a s espalhados de forma aleatória. Durante este
processo de atribuição é possível que contêineres sejam atribuídos a posições que não
contenham um contêiner imediatamente abaixo (Figura 5.2), ou seja, como se o contêiner
estivesse “flutuando”, fazendo com que uma rotina de verificação fosse necessária. Na função
normaliza(Pilha[][]) os contêineres que estiverem flutuando serão movidos para posições
abaixo da que se encontram, a fim de tornar factível a instância do problema.
[
] [
]
Figura 5.2: Normalização de uma pilha infactível de tamanho 3×3 com 5 contêineres criada pelo algoritmo de
geração de dados para experimentos.
5.1.2 Caso Dinâmico: Simulação
Embora o caso estático apresentado acima seja importante sob o ponto de vista didático, na
prática ele é pouco utilizado, pois o ambiente de empilhamento e desempilhamento em um
terminal de contêineres é dinâmico, no sentido de que há contêineres continuamente chegando
e saindo. Por essa razão, um algoritmo eficiente de solução do problema deve ser capaz de
operar, principalmente, nessas situações. Tendo em vista o teste do modelo proposto sob estas
condições, esta seção apresenta a descrição de um modelo de simulação de um cenário onde
contêineres novos são inseridos em uma pilha a qualquer momento e contêineres são
requisitados a sair da pilha no momento previsto. O objetivo geral, neste caso, é realizar a
simulação com a menor quantidade possível de rearranjos.
A geração de dados para a configuração dinâmica é mais complexa do que a do
modelo estático (esvaziar uma pilha) devido a diversos fatores. Se a data de chegada e partida
de contêineres na pilha não for atribuída de forma correta pode não haver iteração real do
empilhamento no sentido dinâmico. Além disso, contêineres podem chegar em tamanha
quantidade, de forma que a pilha não possua espaço no momento para acolhê-los. Em outro
extremo, pode haver tão poucos contêineres na pilha de forma que o rearranjo seja pouco
necessário e a avaliação da simulação seja comprometida. Outro caso seria a situação em que
a chegada e partida de contêineres aconteçam em grupos, de forma que toda a configuração da
58
simulação aconteça como um conjunto de pequenos problemas estáticos. Todos estes casos
não são desejáveis como casos de testes para a configuração dinâmica.
Para a validação do MRCLONALG em um ambiente dinâmico serão utilizados os
seguintes padrões de entrada:
Configuração de uma pilha inicial: pilha de tamanho (c,f) contendo s contêineres
numerados na ordem em que deverão ser removidos, gerada de forma aleatória (como
no caso estático);
Sequência de contêineres de entrada e saída: esta sequência deve conter números
inteiros gerados aleatoriamente que representarão novos contêineres a serem inseridos
na pilha ou valores 1, que representarão a operação de retirada do contêiner a ser
removido na pilha no momento (Figura 5.3).
Figura 5.3: Sequência de 10 contêineres de entrada e de saída.
Quando um contêiner adicionado possui prioridade menor do que o ultimo da pilha
este é ajustado para se adequar a ordem (Figura 5.4) e quando o novo contêiner possuir
prioridade igual à de algum contêiner já existente, esta é mantida enquanto a de seus
subsequentes é atualizada para manter a ordem na pilha, como ilustrado na Figura 5.5.
Figura 5.4: Adição de um novo contêiner com prioridade 13. A prioridade do contêiner é então ajustada para a
situação atual da pilha, atualizando-a para 6.
13 4 -1 -1 2 -1 7 9 12 -1
59
Figura 5.5: Inserção de um contêiner com prioridade existente. Neste caso, a prioridade do novo contêiner é
mantida, e os subsequentes a ele são atualizados para manter a ordem de retirada.
Quando um contêiner precisa ser retirado (indicado pela entrada “-1”), o selecionado
deverá ser sempre o com maior prioridade, ou seja, o contêiner 1. Quando o contêiner 1 é
retirado, a pilha imediatamente será atualizada para que os índices de prioridades sejam
ajustados (Figura 5.6). Este ajuste permitira a manutenção da organização da ordem de
retirada dos contêineres a todo o momento durante a simulação.
Figura 5.6: Remoção do contêiner de maior prioridade (1) e atualização dos índices.
O objetivo geral desta simulação será, então, definir as melhores posições disponíveis
para contêineres que necessitem de rearranjos durante a retirada de um contêiner específico e
também a melhor posição disponível para alocar um contêiner que estiver chegando (Figura
5.4 e Figura 5.5). Consequentemente, poderá se avaliar a quantidade total de rearranjos
(movimentos improdutivos) realizados no decorrer da simulação, assim como avaliar a
estimativa de rearranjos para esvaziar a pilha em cada momento da simulação (entrada ou
retirada de um contêiner).
60
5.2 ANÁLISE DE SENSIBILIDADE PARAMÉTRICA
Esta seção possui o objetivo de discutir e analisar a sensibilidade do algoritmo
MRCLONALG aos parâmetros de entrada definidos pelo usuário. Em particular é estudada a
influência dos seguintes parâmetros:
1. R = {10,20,30,40,50}: representa a quantidade de células no repertório de soluções
candidatas (tamanho da população);
2. Nc = {5,10,15,20,25}: representa a quantidade máxima de clones por célula;
3. d = {5,10,20,30,40}: representa a quantidade de piores células a serem substituídas por
novas no repertório;
4. k = {50,100,200,300,400,500}: responsável por finalizar a execução do algoritmo caso
as soluções não tenham melhorado por k gerações.
Para todos os casos de teste são apresentados resultados em termos de média de 30
execuções com a pilha de entrada apresentada na Figura 5.7 e 30 execuções com a pilha
de entrada da Figura 5.8. Os valores padrão utilizados para cada variável não sendo
analisada foram: R = 20; Nc = 10; d = 20 e k = 200.
P1 =
[ ]
Figura 5.7: Pilha (P1) de tamanho (c,f) = (6,5) contendo 21 contêineres para testes e análise de sensibilidade
paramétrica.
P2 =
[
]
Figura 5.8: Pilha (P2) de tamanho (c,f) = (8,5) contendo 36 contêineres para testes e análise de sensibilidade
paramétrica.
61
5.2.1 Tamanho do Repertório (R)
A Figura 5.9 apresenta a relação entre o tamanho do repertório e a quantidade mínima de
rearranjos obtida na execução para a pilha P1. O valor mínimo de rearranjos manteve-se
estável para repertórios contendo a partir de 30 células. O mesmo acontece para a pilha P2
(Figura 5.10). Observa-se, portanto, que o tamanho R do repertório de soluções apresenta
baixa influência na qualidade das soluções obtidas após um determinado número de gerações.
Figura 5.9: Relação entre a quantidade de células no repertório e a qualidade da solução obtida para a pilha P1 .
Figura 5.10: Relação entre a quantidade de células no repertório e a qualidade da solução obtida para a pilha P2 .
12
13
14
15
16
17
18
10 20 30 40 50
Re
arra
njo
s
Tamanho do repertório (R)
24
24,5
25
25,5
26
26,5
27
27,5
28
28,5
29
10 20 30 40 50
Re
arra
njo
s
Tamanho do repertório (R)
62
Embora o aumento no tamanho do repertório impacte pouco a qualidade da solução, o
tempo de execução é fortemente afetado pelo tamanho do repertório, como pode ser
observado na Figura 5.11 (P1) e também na (P2). Nota-se que a complexidade em relação ao
tamanho do repertório possui crescimento aproximadamente linear.
Figura 5.11: Relação entre o tamanho do repertório de soluções candidatas e o tempo de execução do algoritmo
para a pilha P1.
Figura 5.12: Relação entre o tamanho do repertório de soluções candidatas e o tempo de execução do algoritmo
para a pilha P2.
0
0,5
1
1,5
2
2,5
10 20 30 40 50
Tem
po
de
Exe
cuçã
o (
s)
Tamanho do repertório (R)
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
5
10 20 30 40 50
Tem
po
de
Exe
cuçã
o (
s)
Tamanho do repertório (R)
63
5.2.2 Quantidade Máxima de Clones por Célula (Nc)
Como pode ser observado pelo gráfico da Figura 5.13, o número de clones por célula
praticamente não influencia o desempenho do algoritmo quando aplicado à pilha P1. O mesmo
acontece quando aplicado à pilha P2 (Figura 5.14).
Figura 5.13: Relação entre a quantidade máxima de clones por célula (Nc) e a qualidade dos resultados obtidos
em rearranjos para P1.
Figura 5.14: Relação entre a quantidade máxima de clones por célula (Nc) e a qualidade dos resultados obtidos
em rearranjos para P2.
12
13
14
15
16
17
18
5 10 15 20 25
Re
arra
njo
s
Quantidade máxima de clones por célula (Nc)
24
24,5
25
25,5
26
26,5
27
27,5
28
28,5
29
5 10 15 20 25
Re
arra
njo
s
Quantidada máxima de clones por célula (Nc)
64
Semelhante ao caso da quantidade de células no repertório, a quantidade máxima de
clone por célula também possui grande influência no tempo de processamento. Como
apresentado na Figura 5.15 e na Figura 5.16, o crescimento mostrou-se aproximadamente
linear para P1 e P2.
Figura 5.15: Relação entre a quantidade máxima de clones por célula (Nc) e o tempo de execução em segundos
para os testes na pilha P1.
Figura 5.16: Relação entre a quantidade máxima de clones por célula (Nc) e o tempo de execução em segundos
para os testes na pilha P2.
0
0,5
1
1,5
2
2,5
5 10 15 20 25
Tem
po
de
exe
cuçã
o (
s)
Quantidade máxima de clones por célula (Nc)
0
1
2
3
4
5
6
7
1 2 3 4 5
Tem
po
de
Exe
cuçã
o (
s)
Quantidada máxima de clones por célula (Nc)
65
5.2.3 Inclusão de Diversidade (d)
A eliminação dos indivíduos com menor nível de adaptação e inclusão de novos indivíduos na
população é uma importante estratégia para a introdução de diversidade no algoritmo. Foram
feitos experimentos variando-se a quantidade de indivíduos a serem substituídos nas seguintes
quantidades: d = {5%, 10%, 20%, 30%, 40%}. Como pode ser observado na Figura 5.17,
substituir uma maior quantidade de indivíduos da população não implicou em perda de
performance para a aplicação à pilha P1. Já para P2, a inclusão de novos indivíduos implicou
em uma melhor média nas qualidades das soluções (Figura 5.18).
Figura 5.17: Relação entre a inclusão de diversidade (d) e a qualidade dos resultados obtidos em rearranjos para
a pilha P1.
12
13
14
15
16
17
18
5 10 20 30 40
Re
arra
njo
s
Diversidade %
66
Figura 5.18: Relação entre a inclusão de diversidade (d) e a qualidade dos resultados obtidos em rearranjos para
a pilha P2.
O tempo de execução pode variar para os valores de d. Entretanto, como é possível
notar pelo gráfico de tempo de execução de P1 e P2 (Figura 5.19 e Figura 5.20), esta variação é
dependente da dinâmica de busca do algoritmo e tende a aumentar o tempo de processamento.
Como a qualidade da solução praticamente estabiliza para d = 20% o ideal será manter o valor
de d entre 20 e 25%.
Figura 5.19: Relação entre a inclusão de diversidade (d) e o tempo de execução (seg) para P1.
24
24,5
25
25,5
26
26,5
27
27,5
28
28,5
29
5 10 20 30 40
Re
arra
njo
s
Diversidade %
0
0,5
1
1,5
2
2,5
5 10 20 30 40
Tem
po
de
exe
cuçã
o (
s)
Diversidade %
67
Figura 5.20: Relação entre a inclusão de diversidade (d) e o tempo de execução (seg) para P2.
5.2.4 Parâmetro k
O parâmetro k, denominado de janela de estabilização, faz com que o algoritmo finalize a sua
execução após k iterações, caso ele sofra uma estabilização do fitness médio. Assim, o número
de iterações realizadas pelo algoritmo nem sempre será o mesmo, influenciando o tempo de
resposta. A Tabela 5.1 apresenta o tempo médio de execução do algoritmo para os quatro
casos de teste em relação à quantidade média de gerações executadas.
Tabela 5.1: Tempo médio de execução/Gerações executadas
f c Tempo Médio de Execução Gerações executadas
2 6 0.021 200
3 6 0.177 201.46
4 6 0.313 233.64
5 6 1.271 289.56
É possível perceber pela Tabela 5.1que para pilhas com poucas fileiras (2 a 3) são
necessárias poucas iterações para a convergência. Entretanto, para pilhas maiores, como nos
casos de teste P1 e P2, é preciso garantir que pelo menos 200 iterações sejam executadas para
2,7
2,8
2,9
3
3,1
3,2
3,3
5 10 20 30 40
Tem
po
de
Exe
cuçã
o (
s)
Diversidade %
68
finalizar o algoritmo. A partir de k = 200 a quantidade mínima de rearranjos tende a
estabilizar (Figura 5.21 e Figura 5.22).
Figura 5.21: Relação entre o parâmetro k e a qualidade das soluções obtidas em rearranjos para P1.
Figura 5.22: Relação entre o parâmetro k e a qualidade das soluções obtidas em rearranjos para P2.
12
13
14
15
16
17
18
50 100 200 300 400 500
Re
arra
njo
s
k
24
24,5
25
25,5
26
26,5
27
27,5
28
28,5
29
50 100 200 300 400 500
Re
arra
njo
s
Parâmetro k
69
5.2.5 Comentários Gerais Sobre a Sensibilidade Paramétrica
De acordo com os resultados apresentados na análise de sensibilidade paramétrica do
algoritmo, é possível perceber que existe baixa influência dos parâmetros em relação à
qualidade da solução. Entretanto, a análise mostrou que o aumento dos valores de qualquer
um dos parâmetros resulta em aumento, seguindo taxas aproximadamente lineares de
crescimento, do tempo de processamento. Os casos mais críticos em relação ao aumento do
tempo de execução foram encontrados na variação do parâmetro R, referente ao tamanho do
repertório, e ao parâmetro Nc, referente à quantidade máxima de clones por célula. A
conclusão, portanto, é que para o problema em estudo é possível obter bons resultados com
valores paramétricos relativamente baixos frente aos avaliados nessa dissertação.
5.3 EXPERIMENTOS E RESULTADOS
A implementação computacional da ferramenta proposta (MRCLONALG) foi feita utilizando a
linguagem de programação Java. Os experimentos do algoritmo foram realizados no
Laboratório de Computação Natural (LCoN) vinculado ao PPGEE, em máquinas com as
seguintes configurações: Intel Core 2 Duo 2,8 GHz com 4GB de Memória RAM e HD de
250GB.
Os experimentos foram realizados considerando dois cenários distintos:
1. Caso estático, no qual o objetivo é esvaziar uma pilha até o ultimo contêiner; e
2. Caso dinâmico, onde existe uma sequência de chegada e saída de contêineres
para uma determinada pilha inicial.
5.3.1 Caso Estático
Nesta seção são apresentados os resultados obtidos pelo MRCLONALG, comparados com os
resultados obtidos pelo modelo MRIP, MRIPk e heurísticas do Slot Mais Baixo (SMB), Índice
de Rearranjo (IR) e ENAR para as pilhas de mesma configuração (Wan et al., 2009). De uma
forma ou de outra, estas heurísticas assumem diferentes abordagens para aproximar o número
de rearranjos futuros considerando o armazenamento ou retirada de um contêiner.
Dada a ordem em que s contêineres devem ser retirados de uma pilha de c colunas e f
fileiras, procura-se a melhor estratégia para desempilhar os contêineres na ordem pré-
70
estabelecida com o menor custo possível, ou seja, com o mínimo de rearranjos. No algoritmo
MRC, uma solução é representada pela sequência de movimentação dos contêineres até que a
pilha esteja vazia. Dessa forma, o fitness de uma solução é dado pelo inverso da quantidade de
rearranjos apresentada por ela. Consequentemente, em uma situação ideal, o fitness máximo
de uma solução candidata seria obtido quando nenhum rearranjo fosse realizado.
Wan et al. (2009) diferencia o estado de armazenamento de pilhas de contêineres entre
armazenamento leve, médio e pesado, onde cada um estará, respectivamente, com 20%, 50%
e 80% da sua capacidade utilizada. A Tabela 5.2 apresenta a quantidade média de rearranjos
obtidos por cada um dos algoritmos quando aplicados a pilhas com armazenamento pesado
(utilizando a sua capacidade máxima de armazenamento possibilitando rearranjos) e tamanho
62, 63, 64 e 65, cada uma contendo 9, 13, 17 e 21 contêineres respectivamente (os
resutados para os algoritmos MRIP, SMB, IR e ENAR foram retirados da literatura). Para
cada configuração (tipo de pilha) foram gerados 50 casos de teste, totalizando 200
experimentos. Com base na análise de sensibilidade paramétrica da Seção 5.2, os parâmetros
de entrada utilizados para o MRC foram: R = 20 (tamanho do repertório); g = 1000 (gerações);
Nc = 10 (máximo de clones por células); d = 20% (substituição de indivíduos); k = 200.
Tabela 5.2: Comparação de desempenho entre o MRC, MRIP, MRIPk=6, SMB, IR e ENAR.
Média de rearranjos | Média de tempo de execução (seg)
(c,f) = (6,2) (c,f) = (6,3) (c,f) = (6,4) (c,f) = (6,5)
MRC 1.7 ± 0.0 0.02 4.42 ± 1,40 0.17 7.98 ± 2,05 0.31 11.92 ± 2,09 0.57
SMB 1.72 0 5.02 0 9.28 0 15.64 0
IR 1.7 0 4.64 0 7.78 0 12.58 0
ENAR 1.72 0 4.64 0 7.8 0 13.44 0
MRIP 1.7 0,06 5.58 0.43 7.56 85.97 11.68 689.42
MRIP6 1.70 0.18 4.58 0.87 7.56 6.437 11.80 66.80
O MRCLONALG, apesar de possuir um desempenho médio em relação ao número de
rearranjos parecido com o dos outros métodos, apresentou um tempo médio de computação
consideravelmente menor. Mais especificamente, no caso da pilha com configuração 65 e 21
contêineres, o algoritmo MRIP respondeu com tempo médio de 11,5 minutos e o MRIP6 com
tempo médio de 1,1 minuto, enquanto o MRCLONALG executou com tempo médio de menos
de 1 segundo. Segundo Want et al. (2009), os resultados computacionais sugerem que para
operações normais, ou seja, situações de vida real, são necessários métodos mais rápidos do
71
que o MRIP para resolver o problema. O tempo de computação do MRIPk dependerá da
complexidade e da quantidade de programas inteiros a serem resolvidos (k). Em geral o tempo
de computação deste modelo cresce com os parâmetros k (MRIPk), c e f (Pilha de entrada). A
qualidade da média das soluções do MRIPk aumenta com o tamanho de k.
Por se tratar de um algoritmo baseado em um repertório de soluções candidatas, o
MRCLONALG é capaz de gerar múltiplas soluções factíveis de qualidade. A Figura 5.23
apresenta a evolução do número de rearranjos de todo o repertório ao longo de,
aproximadamente, 300 gerações, ilustrando que toda a população está convergindo para
soluções que apresentam menores quantidades de rearranjos para a pilha da Figura 5.7.
Figura 5.23: Menor quantidade de rearranjos e média da quantidade de rearranjos do repertório de soluções ao
longo de, aproximadamente, 300 iterações.
5.3.2 Caso Dinâmico
A simulação foi realizada por meio de 30 execuções de cada algoritmo (MRCLONALG e
heurísticas) com uma sequência de 100 contêineres a serem retirados e inseridos em quatro
configurações de pilhas de armazenamento pesado geradas aleatoriamente (da mesma forma
que no caso estático). Para a realização das simulações de teste e comparação de desempenho
foram implementadas as heurísticas LS e RI apresentadas na Seção 2.3. A Tabela 5.3
14
15
16
17
18
19
20
21
22
23
24
1
15
29
43
57
71
85
99
11
3
12
7
14
1
15
5
16
9
18
3
19
7
21
1
22
5
23
9
25
3
26
7
28
1
29
5
30
9
32
3
Re
arra
njo
s
Média
Menor
72
apresenta a quantidade média de rearranjos necessários no decorrer de 100 operações de
retirada e inserção de contêineres nas pilhas de tamanho (6,5), (6,4), (6,3) e (6,2) contendo
inicialmente e respectivamente 21, 17, 13 e 9 contêineres, valores que representam a
utilização de 80% da capacidade de cada pilha.
Tabela 5.3: Média de rearranjos da simulação e média do tempo de execução para 30 execuções.
Média de rearranjos | Média de tempo de execução (seg)
(c,f) = (6,5) (c,f) = (6,4) (c,f) = (6,3) (c,f) = (6,2)
MRCLONALG 19,73 115,0 12,83 69,00 8,76 42,81 4,33 29,20
LS 29,93 0,005 13,90 0,004 9,03 0,003 5,06 0,001
RI 37,76 0,006 20,86 0,004 9,70 0,003 5,76 0,001
Para as pilhas nas quais f é igual a 2, 3 e 4 a quantidade mínima de rearranjos não
apresentou grande variação entre os três algoritmos avaliados. Entretanto, para a pilha com 5
fileiras a quantidade de rearranjos apresentada pelas soluções do MRCLONALG é 34% menor
do que a apresentada pela heurística LS e 47% menor do que a apresentada pela heurística RI.
Durante a simulação cada operação de entrada ou saída de um contêiner na pilha
resultará em uma execução do algoritmo MRC. Dessa forma, é possível verificar quantos
rearranjos seriam necessários para esvaziar a pilha nesses momentos. Com isso é possível
analisar como a pilha está sendo afetada pelos algoritmos de minimização de rearranjos, pois
com melhores decisões sobre quais posições utilizar ter-se-á uma pilha com melhor
organização quanto à ordem de saída de contêineres. Consequentemente, tais pilhas deverão
ter uma estimativa de rearranjos cada vez menor para o esvaziamento. A Figura 5.24
apresenta a estimativa do total de rearranjos para esvaziar a pilha durante a entrada e saída de
55 contêineres, onde é possível verificar que a pilha tende a se ajustar quando uma regra de
decisão é utilizada para definir onde posicionar contêineres rearranjados.
73
Figura 5.24: Estimativa de rearranjos para esvaziar a pilha durante a entrada/saída de 55 contêineres.
Ainda para o mesmo caso, é possível quantificar o total de rearranjos estimados para
cada uma das técnicas utilizadas (Figura 5.25). Para a heurística LS o valor estimado foi de
303 rearranjos, 327 para a heurística RI e 164 para o MRCLONALG, ou seja, o MRCLONALG
apresentou resultado 25% menor em relação à LS e 52% menor em relação ao RI.
Figura 5.25: Total de rearranjos estimados para cada uma das técnicas durante a simulação.
0
2
4
6
8
10
12
14
16
18
20
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55
Esti
mat
iva
de
Re
arra
njo
s
Operação de Entrada/Saída
LS
IR
Clonalg
0
50
100
150
200
250
300
350
MRCLONALG
LS
RI
74
6 CONCLUSÕES E DISCUSSÃO
O problema geral de empilhamento de contêineres é encontrar um plano de armazenamento
com a menor estimativa de rearranjos possível, uma vez que este tipo de movimentação
resultará na utilização de tempo e recursos do terminal. Em um sentido mais específico,
devem-se definir posições para contêineres em uma pilha de forma que durante a retirada de
um dado contêiner seja necessária a menor quantidade possível de rearranjos.
Como investigado por Avriel et al. (2000), o problema geral de armazenamento de
contêineres visando à redução da quantidade de movimentos improdutivos é NP-Difícil para
pilhas a partir de quatro colunas e altura arbitrária, implicando que resolver este problema por
força bruta não é prático em situações reais. Dessa forma, esta dissertação investigou o uso
de um Algoritmo de Seleção Clonal adaptado especificamente para a solução do problema de
empilhamento e desempilhamento de contêineres, intitulado MRC.
A qualidade das soluções apresentadas pelo MRC foi validada por meio de dois
cenários de simulação: estático e dinâmico. No caso estático verificou-se a capacidade do
modelo oferecer um plano de desempilhamento para uma pilha inteira, ou seja, quando o
objetivo é esvaziar a pilha toda. No caso dinâmico investigou-se a capacidade do modelo
atuar sob condições mais parecidas com a atividade real de um terminal de contêineres, onde
existe a chegada e partida contínua de novos contêineres em vários momentos no decorrer do
tempo.
No caso estático, o desempenho em quantidade de rearranjos do MRC foi comparado
com os resultados do modelo de Programação Inteira proposto por Wan et al., (2009), além
dos resultados das heurísticas de SMB, IR e ENAR obtidos por este mesmo autor. Para pilhas
baixas (poucas fileiras) o resultado mostrou-se equiparado para todas as técnicas, apenas com
variação no tempo de execução. Já para pilhas com cinco fileiras é possível identificar o
ganho de desempenho em tempo, quando comparado com os modelos MRIP e MRIPk, além
do ganho de desempenho em quantidade de rearranjos quando comparado com as heurísticas.
No caso dinâmico, o MRC foi comparado com as heurísticas de SMB e IR. Novamente, o
maior ganho de desempenho se revelou para pilhas com altura de ao menos cinco contêineres.
Evidentemente, o tempo de computação para o MRC é maior do que o apresentado para as
75
heurísticas, no entanto a qualidade das soluções representa um ganho de até 52% na
minimização da quantidade de rearranjos.
Tanto no caso estático quanto dinâmico observa-se que mover o contêiner que deve ser
rearranjado para a posição ideal deve melhorar o resultado final do processo como um todo.
Como as heurísticas SMB, IR e ENAR são baseadas em regras simples de operação, o
resultado nem sempre é o ideal. O modelo MRIP apresentará sempre a solução ótima, porém
seu tempo de computação para grandes instâncias mostrou-se demasiadamente elevado, o que
levou o próprio autor a considerá-lo impraticável do ponto de vista de aplicação real e, então,
estendê-lo para uma heurística denominada MRIPk (Wan et al., 2009). Com a utilização do
MRC é possível obter soluções de qualidade competitiva e com um baixo custo em tempo
computacional.
Dentre as possíveis extensões e trabalhos futuros destacam-se:
Comparação com outros modelos e heurísticas, principalmente métodos não-
determinísticos com elevada capacidade de solução de problemas complexos com
entradas grandes, como algoritmos genéticos e enxame de partículas;
Aplicação a um teste de caso com dados reais de um terminal em operação, e
A criação de um ambiente de simulação mais sofisticado, considerando diversas
outras variáveis que podem influenciar na operação de um terminal de
contêineres.
76
REFERÊNCIAS BIBLIOGRÁFICAS
AVRIEL, M.; PENN, M.; SHPIRER, N. Container ship stowage problem: complexity and
connection to the coloring of circle graphs, Discrete Appl Math 103 , pp. 271–279, 2000.
ANTAQ – Agencia Nacional de Transportes Aquaviários. Lei N8.630 de 25 de Fevereiro de
1993. Disponível em http://www.antaq.gov.br/Portal/Legislacao_LeisDecretos.asp. Acessado
em 23 de maio de 2011.
BACK, T.; FOGEL, D. B.; MICHALEWICZ, Z. Evolutionary Computation 1 Basic
Algorithms and Operators. Bristol and Philadelphia : Institute of Physiscs Publishing (IOP),
2000a.
BACK, T.; FOGEL, D. B.; MICHALEWICZ, Z. Evolutionary Computation 2 Advanced
Algorithms and Operators. Bristol and Philadelphia : Institute of Physiscs Publishing (IOP),
2000b.
BEREK, C.; ZIEGNER, M. The maturation of the immune response. Imm Today 14, p 400-
402, 1993.
BORGMAN, B., Van ASPEREN, E. ;DEKKER, R. Online rules for container stacking. OR
Spectrum: 687–716, 2010.
BÖSE J.; REINERS T; VOß, S.; STEENKEN, D., "Vehicle Dispatching at Seaport Container
Terminals Using Evolutionary Algorithms," hicss, vol. 2, pp.2025, 33rd Hawaii International
Conference on System Sciences-Volume 2, 2000.
BRADLEY; HAX; MAGNANTI. Applied Mathematical Programming. Addison-Wesley,
1977.
BRONSON, R. Schaum's Outline of Operations Research. Govindasami Naadimuthu. – 2nd
ed., 1997.CARIDADE, J. C. Logística e serviços virtuais. Trade and transport. (35): 98, 2000.
Companhias caminham para novas tecnologias. Gazeta Mercantil. São Paulo, 22 de março de
2001.
CASERTA, M; VOß, S; SNIEDOVICH, M. Applying the corridor method to a blocks
relocation problem. OR Spectrum, 2010.
77
CHEN, P.; FU, Z.; LIM, A; RODRIGUES, B. Port Yard Storage Optimization. IEEE
Transactions on Automation Science and Engineering, v. 1, n. 1, p. 26-37. doi:
10.1109/TASE.2004.829412, 2004.
CERNY, V. Thermodynamical approach to the traveling salesman problem: an efficient
simulation algorithm, Journal of Optimization Theory and Applications, 45, pp.41–51, 1985.
CZIKO, G. The Immune System: Selection by the Enemy. The MIT Press, 39-48, 1995.
DE CASTRO, L. N. Fundamentals of natural computing: An overview. Physics of Life
Reviews, v. 4, n. 1, p. 1-36, 2007.
DE CASTRO, L. N. Fundamentals of Natural Computing: Basic Concepts, Algorithms and
Applications. [S.l.]: CRC Press LLC, 2006.
DE CASTRO, L. N.; TIMMIS, J. Artificial immune systems: A new computational
intelligence approach. Springer-Verlag, 2002.
DE CASTRO, L. N. ZUBEN, F. J. The Clonal Selection Algorithm with Engineering
Applications. In Workshop Proceedings of GECCO, pp. 36-37, Las Vegas, USA, 2000.
DE CASTRO, L. N. ZUBEN, F. J. Learning and Optimization Using the Clonal Selection
Principle. IEEE Transactions on Evolutionary Computation, Special Issue on Artificial
Immune Systems, 2001.
DE SOUSA, J. S., GOMES, L. DE C. T., BEZERRA, G. B., DE CASTRO, L. N.; VON
ZUBEN, F. J., An Immune-Evolutionary Algorithm for Multiple Rearrangements of Gene
Expression Data, Genetic Programming and Evolvable Machines, 5, pp. 157-179, 2004.
DEKKER, R.; VOOGD, P.; ASPEREN, E. Advanced methods for container stacking. OR
Spectrum, v. 28, n. 4, p. 563-586. doi: 10.1007/s00291-006-0038-3, 2006.
GAREY, M. R.; JOHNSON, D. S. Computers and Intractability: A Guide to the Theory of
NP-Completeness (Series of Books in the Mathematical Sciences). First Edit ed. W. H.
Freeman, 1979.
GOMES, L.; SOUSA, J. S.; BEZERRA, G. B. copt-ainet and the gene ordering problem.
Revista Tecnologia da Informação, v. 3, n. 2, p. 27–34, 2004.
78
GLOVER, F.; G. A. KOCHENBERGER. Handbook of Metaheuristics, Kluwer Academic
Publishers, 2002.
HAESER, G.; GOMES–RUGGIER, M. Aspectos Teóricos de Simulated Annealing e um
Algoritmo duas Fases em Otimização Global. TEMA Tend. Matemática Aplicada e
Computacional, 9, No. 3, 395-404, 2008.
HARTMANN, S.. A general framework for scheduling equipment and manpower at container
terminals. Springer-Verlag, OR Spectrum 26: 51–74, 2004.
HERDY, M. Application of the Evolution Strategy to Discrete Optimization Problems.
Proceedings of the First International Conference on Parallel Problem Solving from Nature
(PPSN), Lecture Notes in Computer Science: Springer-Verlag, pp. 188-192, 1990.
Holland, J. H. Adaptation in Natural and Artificial Systems, 4 th Ed., MIT Press,
1995.
KANG, J; RYU K.R.; KIM, K.H. Deriving stacking strategies for export containers with
uncertain weight information, Journal of Intelligent Manufacturing 17, pp. 399–410, 2006.
KIM, K. Y.; KIM, K. H. A routing algorithm for a single straddle carrier to load export
containers onto a containership. International Journal of Production Economics, v. 59, n. 1-3,
p. 425-433, 1999a.
KIM, K. Y.; KIM, K. H. Routing straddle carriers for the loading operation of containers
using a beam search algorithm. Computers & Industrial Engineering, v. 36, n. 1, p. 109-136,
1999b.
KIM, K. Y.; KIM, K. H. A routing algorithm for a single transfer crane to load export
containers onto a containership. Computers & Industrial Engineering, v. 33, n. 3-4, p. 673-
676, 1997.
KIM, H. K; HONG, G.P. A heuristic rule for relocating blocks, Computer Operations
Research 33, pp. 940–954, 2006.
KIRKPATRICK, S; GELATT, C. D.; VECCHI, M.P. Optimization by simulated annealing,
Science, 220, 671–680, 1983.
KLEIN, J. Immunology. Blackwell Scientific Publications, cap. 6. p. 102-160, 1990.
79
KOZAN, E.; PRESTON, P. Genetic algorithms to schedule container transfers at multimodal
terminals, International Transactions in Operational Research 6, 311-329, 1999.
LEE, L. H.; CHEW, E. P.; TAN, K. C.; HAN, Y. An optimization model for storage yard
management in transshipment hubs. OR Spectrum, v. 28, n. 4, p. 539-561, 2006.
LEWIS H.R. & PAPADIMITRIOU, C. Elements of the Theory of Computation. Prentice-
Hall, 1998.
TRICK, M. A Tutorial on Integer Programming. The Operations Research Faculty of GSIA.
Disponível em http://mat.gsia.cmu.edu/classes/integer/integer.html. Acessado em 12 de
Dezembro de 2011.
MURTY, K. G.; LIU, JIYIN; WAN, Y.-WAH; LINN, RICHARD. A decision support system
for operations in a container terminal. Decision Support Systems, v. 39, n. 3, p. 309-332. doi:
10.1016/j.dss.2003.11.002, 2005.
NEAL, M.; HUNT, J.; TIMMIS, J. Augmenting an artificial immune network. Proc. of Int.
Conf. Systems and Man and Cybernetics (IEEE), San Diego, California, U.S.A., p. 3821-
3826, 1998.
PHONLOR, P. R.; MAÇADA, A. C. G. - O Uso Estratégico de um Sistema de Informação
Web em um Terminal de Containers. Anais XXI ENANPAD, 2002.
PARK K. T. & KIM K. H.. Berth Scheduling for Container Terminals by Using a Sub-
Gradient Optimization Technique. The Journal of the Operational Research Society. Vol. 53,
No. 9, pp. 1054-1062, 2002.
RODRIGUES, P. Introdução aos sistemas de transporte no Brasil e à logística internacional.
São Paulo: Aduaneiras, 2007.
SCHRIJVER, A. Theory of linear and integer programming. Wiley-lnterscience Series in
Discrete Mathematics and Optimization, 1986.
SHERALI, H. D.; BAZARAA, M. S.; SHETTY, C. M. Nonlinear Programming: Theory and
Algorithms. John Wiley and Sons, 1993.
80
SOUSA J. S.; GOMES, L. C. T.; BEZERRA, G, B.; de CASTRO, L. N.; Von Zuben, F. An
immune-evolutionary algorithm for multiple rearrangements of gene expression data. Genetic
Programming and Evolvable Machines, v. 5, p. 157-179, 2004.
STEENKEN, D.; VOB, S.; STAHLBOCK, R. Container terminal operation and operations
research - a classification and literature review. OR Spectrum, v. 26, n. 1, p. 3-49. doi:
10.1007/s00291-003-0157-z, 2004.
STAHLBOCK R, VOSS S. Operations research at container terminals: a literature update.
OR Spectr 30:1–52, 2008. TIZARD, I. R. Immunology. An Introduction. Saunders College
Publishing, 4 ed, 1995.
VIS, I. F. A.; KOSTER, D. E.; R. Transshipment of Containers at a Container Terminal : An
Overview. European Journal of Operational Research, v. 147pp, p. 1-16, 2003.
ZHANG, C.; LIU, J.; WAN, Y.; MURTY, K.; LINN, R. Storage space allocation in container
terminals. Transportation Research Part B: Methodological, v. 37, n. 10, p. 883-903, 2003.
ZANG C. ; WAN, Y; LIU, J. LINN, R. J. Dynamic crane deployment in container storage
yards, Transportation Research Part B: Methodological, Volume 36, Issue 6, pg. 537-555,
2002.
WAN, Y.; LIU, J.; TSAI, P. C. The assignment of storage locations to containers for a
container stack. Naval Research Logistics (NRL), 56: 699–713, 2009.