You are on page 1of 119

Universidade de Trás-os-Montes e Alto Douro

PLANEAMENTO DE TRANSPORTES ESCOLARES BASEADO EM OPTIMIZAÇÃO DE COLÓNIA


DE FORMIGAS

DISSERTAÇÃO DE MESTRADO EM INFORMÁTICA

DISSERTAÇÃO
para obtenção do grau de mestre em Informática,
da Universidade de Trás-os-Montes
e Alto Douro

submetido por
Rodrigo David Teixeira Henriques

Vila Real, 2010

1 / 119
2 / 119
DECLARAÇÃO

Rodrigo David Teixeira Henriques

Endereço electrónico: r.henriques@me.com

Titulo da Dissertação: Planeamento de Transportes Escolares baseado em Optimização


de Colónia de Formigas

Orientador(es): Professor Doutor António Cunha, Professor Doutor Paulo Alexandre


Cardoso Salgado

Ano de Conclusão: 2010

Vila Real, 2010

3 / 119
4 / 119
Abstract
Transport planning has always presented itself as a complex problem,
given the number of sites and possible routes, time and trajectory cons-
traints. The complexity of transportation planning is due to the large
number of possible combinations of routes. This problem is similar to the
traveling salesman problem, where several sites must to be visited only
once in the most eficiente way.
In recent years there has been the use of concepts of Artificial Intelli-
gence, namely Evolutionary Computing and Swarm Intelligence in fin-
ding solutions for the trajectory planning. The Ant Colony Optimization,
a branch of Swarm Intelligence, presents itself as an interesting solution
to the problem of transport planning.
This thesis proposes an algorithm capable of solving effectively the
school transport planning problem. Therefore we have developed a
method, based on Ant Colony Optimization strategies, computationally
and structurally efficient.
Based on the paradigm of Ant Colony Optimization, an algorithm
adapted to the problem of transport planning was developed, built to al-
low the inclusion of new and more complex constraints. The result is an
algorithm capable of solving the problem proposed in this dissertation.
The results in the multiple graphs in which the algorithm was tested are
quite satisfactory.

5 / 119
6 / 119
Resumo
O planeamento dos transportes sempre se apresentou como um pro-
blema complexo, tendo em conta o número de locais e rotas possíveis,
condicionantes temporais e dos trajectos. A complexidade do planeamen-
to dos transportes deve-se ao elevado número de combinações possíveis
de trajectos sendo este problema semelhante ao problema do caixeiro via-
jante, ou seja, vários locais que devem ser visitados apenas uma vez da
forma mais eficiente.
Nos últimos anos tem-se verificado o uso de conceitos da Inteligência
Artificial, designadamente a Computação Evolutiva e Inteligência Colec-
tiva na procura de soluções para o planeamento de trajectórias. A Opti-
mização de Colónias de Formigas, um ramo da Inteligência Colectiva,
apresenta-se como uma solução interessante para o problema do plane-
amento de transportes.
Nesta dissertação é proposto um algoritmo capaz de solucionar efi-
cazmente o problema de planeamento de transportes escolares. Para tal
foi construído um método, baseado nas estratégias de Optimização por
Colónias de Formigas, computacionalmente e estruturalmente eficaz.
Baseado no paradigma da Optimização de Colónia de Formigas des-
envolveu-se um algoritmo adaptado ao problema do planeamento de
transportes, construído de modo a permitir a inclusão de novas e mais
complexas restrições. O resultado presente é já um algoritmo capaz de
solucionar o problema proposto nesta dissertação. Os resultados obtidos
são bastante satisfatórios nos mais diversos grafos em que o algoritmo foi
testado.

7 / 119
8 / 119
De!co esta obra à minha namorada e à minha família, que são a minha

in#iração e razão para continuar nos momentos ma$ !fíce$.

9 / 119
10 / 119
Agradecimentos

‹‹Toda a acção humana, quer se torne positiva ou negativa, precisa depender de motivação.››
(Dalai Lama)

No desenvolvimento de qualquer obra encontramos as mais diversas dificuldades. É através


das palavras de incentivo e encorajamento das pessoas que nos são próximas que somos
capazes de continuar. Desta forma gostaria de agradecer aos meus familiares, amigos e em
especial à minha namorada pelo incentivo e pela compreensão demonstrado no decorrer
de todo este processo.

Gostaria de agradecer também ao professor António Cunha e ao professor Paulo Salgado


pelo tempo despendido e orientação. Graças à sua colaboração foi possível ultrapassar al-
guns dos obstáculos que surgiram.

Finalmente gostaria de agradecer a todos aqueles que directa ou indirectamente contribuí-


ram para que fosse possível concluir esta obra.

A todos muito obrigado.

Rodrigo Henriques

11 / 119
12 / 119
Índice Geral

Índice Figuras 15

Índice Tabelas 17

Acrónimos 19

1. Introdução 21

2. Planeamento de Transportes 25
2.1. Problema do Planeamento de Veículos com Janelas de Tempo .........................................32
2.2. Problema do Planeamento de Veículos com Entrega e Recolha ........................................33
2.3. Problema do Planeamento de Veículos com Capacidade ..................................................34
2.4. Problema do Planeamento de Transportes Escolares ........................................................34
2.5. Problema do Caixeiro Viajante ..........................................................................................35
2.5.1. Múltiplos Caixeiros Viajantes ...................................................................................36
2.5.2. Aplicações .................................................................................................................37

3. Introdução à Optimização 39
3.1. Optimização Contínua e Optimização Discreta ................................................................41
3.2. Optimização Restrita e Não Restrita .................................................................................42
3.3. Optimização Estocástica e Determinística .........................................................................43
3.4. Algoritmos de Optimização ................................................................................................43
3.5. Pesquisa Local .....................................................................................................................44

4. Computação Evolutiva e Inteligência Colectiva 47


4.1. Computação Evolutiva .......................................................................................................48
4.1.1. Vantagens e Aplicações da Computação Evolutiva ..................................................51
4.1.2. Algoritmos Genéticos ................................................................................................53
4.2. Inteligência Colectiva .........................................................................................................58
4.2.1. Optimização de Enxame de Partículas ....................................................................59
4.2.2. Optimização de Colónia de Abelhas ........................................................................61
4.2.3. Optimização Colónia de Formigas ...........................................................................62

5. Caso de Estudo 71
5.1. Caracterização do Problema ..............................................................................................72
5.1.1. Restrições do problema .............................................................................................73
5.2. Abordagem com Algoritmos Genéticos .............................................................................74
5.2.1. Representação dos dados ..........................................................................................74
5.2.2. População inicial .......................................................................................................76
5.2.3. Determinar aptidão dos indivíduos ..........................................................................77
5.2.4. Operadores genéticos ................................................................................................77
5.3. Abordagem com Optimização de Colónia de Formigas ....................................................78

13 / 119
5.3.1. Representação dos dados ..........................................................................................78
5.3.2. Posicionamento inicial das formigas .........................................................................80
5.3.3. Calcular o percurso das formigas .............................................................................80
5.3.4. Actualizar as feromonas ............................................................................................82
5.3.5. Determinar o custo dos percursos ............................................................................84
5.3.6. Determinar a solução ideal .......................................................................................85
5.4. Resultados ..........................................................................................................................86
5.4.1. Exemplo 1 - Grafo 5/9 .............................................................................................86
5.4.2. Exemplo 2 - Grafo 10/16 .........................................................................................91
5.4.3. Exemplo 3 - Grafo 20/26 .........................................................................................97
5.4.4. Exemplo 4 - Grafo 36/55 .......................................................................................103

6. Considerações Finais 105


6.1. Conclusões ........................................................................................................................105
6.2. Sugestões para Trabalhos Futuros ....................................................................................107

Apêndices 113
A - Distribuição dos locais de recolha/entrega, obtido através do Google Earth ................................115
B - Ligações entre os locais do exemplo 3 e respectivos tempos de ligação ..........................................117
C - Ligações entre os locais do exemplo 4 e respectivos tempos de ligação .........................................119

14 / 119
Índice Figuras

-------------------------------------------------------------------------------------------------------------------------------
Figura 1 - Representação gráfica de vários tipos de cruzamentos.....................................................56
Figura 2 - Representação gráfica de vários tipos de mutações..........................................................57
Figura 3 - Elementos fundamentais no calculo do deslocamento de uma partícula.........................60
Figura 4 - Comportamento natural das formigas perante um obstáculo..........................................63
Figura 5 - Algoritmo genérico baseado em formigas.........................................................................64
Figura 6 - Representação gráfica da lista ligada vei...........................................................................74
Figura 7 - Representação gráfica da lista ligada loc...........................................................................75
Figura 8 - Representação gráfica da lista ligada pop..........................................................................75
Figura 9 - Melhor rota encontrada pelo algoritmo para o exemplo 1.a............................................88
Figura 10 - Desempenho e custo do exemplo 1.a no decorrer das iterações.....................................89
Figura 11 - Melhor rota encontrada pelo algoritmo para o exemplo 1.b..........................................90
Figura 12 - Desempenho e custo do exemplo 1.b no decorrer das iterações....................................91
Figura 13 - Melhor rota encontrada pelo algoritmo para o exemplo 2.a..........................................94
Figura 14 - Desempenho e custo do exemplo 2.a no decorrer das iterações.....................................95
Figura 15 - Melhor rota encontrada pelo algoritmo para o exemplo 2.b..........................................96
Figura 16 - Desempenho e custo do exemplo 2.b no decorrer das iterações....................................97
Figura 17 - Melhor rota encontrada pelo algoritmo para o exemplo 3.a..........................................99
Figura 18 - Desempenho e custo do exemplo 3.a no decorrer das iterações...................................100
Figura 19 - Melhor rota encontrada pelo algoritmo para o exemplo 3.b........................................102
Figura 20 - Desempenho e custo do exemplo 3.b no decorrer das iterações..................................102
Figura 21 - Melhor rota encontrada pelo algoritmo para o exemplo 4...........................................104
Figura 22 - Desempenho e custo do exemplo 4 no decorrer das iterações.....................................104
-------------------------------------------------------------------------------------------------------------------------------

15 / 119
16 / 119
Índice Tabelas

-------------------------------------------------------------------------------------------------------------------------------
Tabela 1 - Intervalos de tempo e respectivos nós associados.............................................................86
Tabela 2 - Tempos de ligação entre nós............................................................................................86
Tabela 3 - Parâmetros do exemplo 1.a..............................................................................................87
Tabela 4 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos..............................87
Tabela 5 - Custo, folga e tempo de viagem do exemplo 1.a..............................................................88
Tabela 6 - Parâmetros do exemplo 1.b..............................................................................................89
Tabela 7 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos..............................90
Tabela 8 - Custo, folga e tempo de viagem do exemplo 1.b..............................................................91
Tabela 9 - Intervalos de tempo e respectivos nós associados.............................................................92
Tabela 10 - Tempos de ligação entre nós..........................................................................................92
Tabela 11 - Parâmetros do exemplo 2.a............................................................................................93
Tabela 12 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos............................93
Tabela 13 - Custo, folga e tempo de viagem do exemplo 2.a............................................................94
Tabela 14 - Parâmetros do exemplo 2.b............................................................................................95
Tabela 15 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos............................96
Tabela 16 - Custo, folga e tempo de viagem do exemplo 2.b............................................................97
Tabela 17 - Intervalos de tempo e respectivos nós associados...........................................................98
Tabela 18 - Parâmetros do exemplo 3.a............................................................................................99
Tabela 19 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos............................99
Tabela 20 - Custo, folga e tempo de viagem do exemplo 3.a..........................................................100
Tabela 21 - Parâmetros do exemplo 3.b..........................................................................................101
Tabela 22 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos..........................101
Tabela 23 - Custo, folga e tempo de viagem do exemplo 3.b..........................................................101
Tabela 24 - Parâmetros do exemplo 4.............................................................................................103
Tabela 25 - Custo, folga e tempo de viagem do exemplo 4.............................................................103
-------------------------------------------------------------------------------------------------------------------------------

17 / 119
18 / 119
Acrónimos

Nesta dissertação são utilizadas abreviaturas de designações comuns apenas apresentadas


aquando da sua primeira utilização:

IA - Inteligência Artificial

CE - Computação Evolutiva

IC - Inteligência Colectiva

AG - Algoritmos Genéticos

OCF - Optimização de Colónia de Formigas

PPV - Problema de Planeamento de Veículos

PCV - Problema do Caixeiro Viajante

PPVJT - Problema de Planeamento de Veículos com Janelas de Tempo

PPVED - Problema de Planeamento de Veículos com Entrega Dividida

PPVC - Problema de Planeamento de Veículos com Capacidade

PMCV - Problema dos Múltiplos Caixeiros Viajantes

AANSC - Associação de Assistência de Nossa Senhora das Candeias

19 / 119
20 / 119
I
‹‹Reparta o seu conhecimento. É uma forma de alcançar
a imortalidade.››

Dalai Lama

1.INTRODUÇÃO

Nos últimos anos foi possível assistir a um interesse crescente entre os gestores e os profissi-
onais dos transportes em explorar a viabilidade da aplicação de paradigmas de Inteligência
Artificial (IA) para melhorar a eficiência, segurança e qualidade de serviço em sistemas de
transporte. O valor acrescentado e o impacto da ciência, metodologias e técnicas da IA
nesta área é inegável [1].

A engenharia de transportes e o planeamento de transportes são duas faces da mesma mo-


eda, visando a concepção de uma infra-estrutura eficiente e serviços para satisfazer as nos-
sas necessidades em termos de acessibilidade e mobilidade. Muitos sistemas de transporte
concebidos tendo em conta essas necessidades, são baseados numa boa compreensão do
comportamento humano. Por exemplo, em ergonomia 1, modelos de acção-reacção são uti-

1 disciplina científica relacionada com o entendimento das interacções entre seres humanos e outros elementos de
um sistema.
21 / 119
lizados para se certificar de que as máquinas (por exemplo, automóveis) são projectadas
para corresponder a características humanas. De forma semelhante, quando planeamos as
cidades e os serviços prestados aos seus habitantes, é um elemento chave compreender o
comportamento humano e o que move a maioria das decisões no planeamento. Uma vez
que os sistemas de transporte são a espinha dorsal de uma cidade, interconectando as suas
partes vitais, a compreensão aprofundada da natureza humana é essencial para o planea-
mento, projecto e análise operacional de sistemas de transporte [2].

O Problema do Planeamento de Transportes é um problema bastante complexo que por


vezes se assemelha ao Problema do Caixeiro Viajante (PCV), ou seja, um caixeiro viajante
tem que visitar um determinado número de locais, apenas uma vez, da forma mais eficien-
te. Este parece um problema relativamente simples de resolver, contudo quando lidamos
com um elevado número de locais, o número de combinações possíveis aumenta exponen-
cialmente. Quando a estas condicionantes adicionarmos vários caixeiros viajantes, horários
a cumprir, capacidade dos veículos, o problema assume cada vez mais uma complexidade
cuja resolução exige o recurso a sistemas computacionais. Com o recurso à utilização de
sistemas computacionais é possível obtermos soluções, contudo o tempo despendido no
processamento dos dados, em muitos dos casos, continua sendo muito elevado. Desta for-
ma procuraram-se novas formas de abordar o problema. O recurso à Computação Evolu-
tiva (CE) e à Inteligência Colectiva (IC) apresenta-se como uma possível solução, que será
devidamente explorada neste trabalho.

Muitas aplicações dão origem a problemas de optimização irrestritos com múltiplas variá-
veis. Problemas deste tamanho podem ser resolvidos de forma eficiente somente se o arma-
zenamento e custo computacional do algoritmo de optimização forem mantidos a um nível
tolerável. Um conjunto diversificado de métodos de optimização em larga escala foi desen-
volvido para atingir esse objectivo, cada um sendo particularmente eficaz para tipos de de-
terminados problema [3].

A optimização é um processo que já existe à bastante tempo. A natureza optimiza sistemas


físicos de forma a tenderem para um estado de energia mínima, as moléculas de um siste-
ma químico isolado reagem umas com as outras até que a energia potencial total de seus
eléctrons seja minimizada, raios de luz seguem caminhos que minimizam o tempo de via-
gem [3]. Estes são apenas alguns exemplos de optimização que ocorre na Natureza.

22 / 119
Nas últimas décadas temos assistido a uma crescente utilização de pacotes de optimização,
baseados em operações de pesquisa e técnicas de programação, para a gestão efectiva do
fornecimento de bens e serviços em sistemas de distribuição [4].

Um algoritmo de optimização pode ser definido como um conjunto de instruções claras


especificando como proceder, a partir de certas condições iniciais, até que alcancemos a
meta final imposta inicialmente. Um ponto importante a acrescentar é que na maioria das
vezes o algoritmo não consegue atingir o objectivo exactamente pré-determinado, em vez
disso chega a uma aproximação do objectivo [5].

Nesta dissertação é estudado o problema de organização dos transportes de uma institui-


ção, sendo apresentada uma solução computacional cujo objectivo é a optimização do pla-
neamento dos transportes escolares. Tal problema configura um conjunto alargado e variá-
vel de locais a visitar pelos autocarros escolares visando a recolha de alunos para a institui-
ção escolar. No exemplo real estudado existem cerca de setenta e nove locais, pelo que exis-
tem aproximadamente 7,156945118 combinações possíveis. A recolha dos alunos é efectua-
da através da utilização simultânea de vários veículos, podendo, após descarga, serem de
novo utilizados em nova recolha de passageiros. Devido ao elevado número de locais e às
múltiplas possibilidades, torna-se muito difícil efectuar um planeamento óptimo dos trans-
portes apenas baseados em conhecimentos empíricos, bem como o cálculo computacional
de todas as possíveis ocorrências, pelo que se pretende desenvolver um algoritmo que efec-
tue esse mesmo planeamento de forma automática e optimizada. O planeamento dos
transportes deve, também, respeitar um conjunto de restrições. Este conjunto de restrições
aumenta ainda mais a complexidade do problema.

Numa primeira abordagem procurou-se solucionar o problema recorrendo a Algoritmos


Genéticos (AG). Obtiveram-se alguns resultados positivos, contudo surgiram alguns pro-
blemas que, juntamente com a complexidade do algoritmo, obrigaram a encontrar outra
forma de solucionar o problema, recaindo a escolha na Optimização de Colónia de Formi-
gas (OCF) pelas razões que serão constatadas na apresentação do algoritmo. A OCF apre-
senta características diferentes dos AG, contudo a sua implementação é bastante mais sim-
plificada.

O presente capítulo procura incorporar todo o projecto. A descrição da organização da


dissertação, aqui a ser apresentada, encerram o capítulo inicial.
23 / 119
No segundo capítulo é apresentada uma introdução ao tema do Planeamento de Transpor-
tes, abordando o Problema do Planeamento de Veículos (PPV) bem como apresentadas as
noções e características do PCV.

No terceiro capítulo é apresentada uma breve introdução ao tema da Optimização, área


onde se insere o problema abordado no Caso de Estudo.

O quarto capítulo apresenta a IA e dois dos seus ramos: a CE e a IC. São apresentados
também alguns dos algoritmos da CE e da IC, realçando os AG e a OCF. Os AG foram
inicialmente sugerido para solucionar o problema, enquanto a OCF é a base da solução
apresentada.

No quinto capítulo é apresentado o caso de estudo, bem como as abordagens efectuadas ao


problema proposto. Numa primeira abordagem foi desenvolvida uma solução parcial com
AG, esta representa um investimento de tempo considerável e através da qual se obtiveram
conhecimentos para o desenvolvimento da solução final. A segunda abordagem, e possível
solução para o problema, tem por base a OCF.

O sexto capítulo termina esta dissertação, contendo a discussão dos resultados e sugestões
para trabalhos futuros.

24 / 119
2
‹‹Parte da ausência de humanidade do computador deve-
se a que, competentemente programado e trabalhando
bem, é completamente honesto››

Isaac Asimov

2.PLANEAMENTO DE TRANSPORTES

Nas últimas décadas tem-se assistido a uma crescente utilização de pacotes de optimização,
baseados em Operações de Pesquisa e técnicas de Programação para a gestão efectiva do
fornecimento de bens e serviços em sistemas de distribuição. O grande número de aplica-
ções do mundo real, tanto na América do Norte como na Europa, têm demonstrado que a
utilização de procedimentos informatizados para o planeamento do processo de distribui-
ção resulta em economias substanciais (geralmente de 5% a 20%) nos custos de transporte
global. É fácil ver que o impacto destas economias no sistema económico mundial é signifi-
cativa. Na verdade, o processo de transporte envolve todas as fases da produção e sistemas
de distribuição e representa um componente importante (geralmente de 10% para 20%) do
custo final das mercadorias [4].

O sucesso da utilização de técnicas de Pesquisa Operacional deve-se ao desenvolvimento de


sistemas informáticos, tanto do ponto de vista do hardware como do software e à crescente
integração dos sistemas de informação nos processos produtivos e comerciais [4]. Outro
25 / 119
factor de sucesso, tão importante quanto os outros, é o desenvolvimento de ferramentas de
modelação e algoritmos eficazes desenvolvidos nos últimos anos. De facto, os modelos pro-
postos têm em conta todas as características dos problemas decorrentes da distribuição de
aplicações do mundo real, e os algoritmos correspondentes e suas implementações informá-
ticas encontram boas soluções para situações do mundo real em tempos computacionais
aceitáveis [4].

O PPV remonta ao final dos anos cinquenta do século passado quando Dantzig e Ramser
definiram a formulação matemática de programação e a abordagem algorítmica para re-
solver o problema de fornecimento de gasolina às estações de serviço. Desde então o inte-
resse no PPV evoluiu de um pequeno grupo de matemáticos para o grande número de
pesquisadores e profissionais de diferentes disciplinas [6]. Passaram mais de 40 anos desde
que Dantzig e Ramser [7] introduziram o PPV. No seu estudo, os autores descrevem a apli-
cação do mundo real (referente à entrega de gasolina para postos de gasolina) e propuse-
ram a primeira formulação matemática de programação e uma abordagem algorítmica
para a solução do problema. Alguns anos mais tarde, Clarke e Wright [8] propuseram uma
heurística eficaz que melhorou a abordagem de Dantzig e Ramser. Após estes dois traba-
lhos seminais 2, muitos modelos e algoritmos heurísticos e exactos foram propostos para a
solução óptima e aproximada das diferentes versões do PPV [4].

Existem vários trabalhos sobre o tema do PPV. Um sistema de classificação foi dado por
Desrochers, Lenstra, e Savelsbergh [9]. Nobert e Laporte [10] apresentaram uma extensa
pesquisa, que foi inteiramente dedicada aos métodos exactos para o PPV, fornecendo uma
análise completa e detalhada do estado da arte até o final dos anos 80. Outras pesquisas
abrangendo algoritmos exactos, mas frequentemente dedicadas aos métodos heurísticos,
foram apresentadas por Christofides, Mingozzi, e Toth [11], Magnanti [12], Bodin et al.
[13], Christofides [14], Laporte [15], Fisher [16], Toth e Vigo [17], e Golden et al. [18].

Uma lista bibliográfica foi proposta por Laporte [19], e um extenso levantamento biblio-
gráfico foi apresentado por Laporte e Osman [20]. Um livro sobre o assunto foi editado
por Golden e Assad em 1988 [21]. Modelos e algoritmos para a solução do chamado Pro-
blema do Planeamento de Arcos (variante do problema que surge quando os clientes não
estão localizados nos vértices, mas ao longo dos arcos do grafo) estão descritos no livro edi-

2 foram a origem, a semente.


26 / 119
tado por Dror [22]. O caso particular do PPV que surge quando existe apenas um único
veículo disponível no depósito e sem restrições operacionais adicionais impostas é ampla-
mente descrito no clássico livro editado por Lawler et al. em 1985 [23].

O PPV é um dos problemas de optimização combinatória mais estudados e diz respeito ao


planeamento de rotas para serem utilizadas por uma frota de veículos de forma a servirem
um conjunto de clientes. Desde que foi primeiramente proposto por Dantzig e Ramser [7],
centenas de trabalhos têm sido dedicados à busca pela solução exacta e aproximada das
muitas variantes do problema, tais como o Problema do Planeamento de Veículos com Ca-
pacidade (PPVC), ou o PPVJT [24].

O PPV contribui directamente para reduzir custos na importante área da logística. Logísti-
ca pode ser grosseiramente descrito como a entrega de mercadorias de um lado (fornece-
dor) para outro (os consumidores). Transporte de gestão e mais especificamente de plane-
amento de veículos, tem um considerável impacto económico em todos os sistemas de lo-
gística [6].

A definição do PPV estabelece que m veículos inicialmente localizado num depósito forne-
cem quantidades distintas de produtos para n clientes. Determinar a melhor rota utilizada
por um grupo de veículos que serve um grupo de utilizadores representa um PPV. O objec-
tivo é minimizar o custo do transporte em geral. A solução clássica do PPV é um conjunto
de rotas que começa e termina no depósito e que satisfaça a restrição de que todos os clien-
tes são servidos apenas uma vez (semelhante ao PCV). O custo do transporte pode ser me-
lhorado através da redução da distância total percorrida e reduzindo o número de veículos
necessários [6].

Devido à natureza do problema, não é viável a utilização de métodos exactos para grandes
instâncias do PPV. Portanto, a maioria das abordagens dependem de heurísticas que forne-
cem soluções aproximadas. Alguns métodos específicos foram desenvolvidos para este pro-
blema. Outra opção é aplicar técnicas de optimização padrão, tais como a programação
por restrições, AG e os sistemas de formigas [6].

A maioria dos problemas do mundo real são geralmente muito mais complexos do que o
PPV clássico. Portanto, na prática, o PPV clássico é mais complexo devido às restrições,
tais como a capacidade do veículo ou intervalo de tempo em que cada cliente tem para ser

27 / 119
servido, revelando o Problema de Planeamento de Veículos com Capacidade (PPVC) e o
Problema de Planeamento de Veículos com Janelas de Tempo (PPVJT), respectivamente.
Nos últimos cinquenta anos, muitos problemas do mundo real tem exigido acrescida for-
mulação, o que resultou no Problema de Planeamento de Veículos com Múltiplos Depósi-
tos, Problema de Planeamento de Veículos Periódico, o Problema de Planeamento de Veí-
culos com Entrega Dividida (PPVED), Problema de Planeamento de Veículos Estocástico3,
Problema de Planeamento de Veículos com Recolha e Entrega (PPVRE) e muitos outros
[6].

O PPV apenas pode ser resolvido para instâncias pequenas do problema, sendo um pro-
blema de optimização combinatorial NP-hard4. Embora a abordagem heurística5 não ga-
ranta a optimalidade, na prática produz resultados satisfatórios. Nos últimos vinte anos, a
meta-heurística emergiu como a mais promissora direcção de investigação para a família
PPV [6].

O PPVED é uma variação do clássico PPV, onde cada cliente pode ser servido por mais de
um veículo. Assim, para o PPVED, além das rotas de entrega, o montante a ser entregue a
cada cliente em cada veículo também deve ser determinado. A opção de dividir o pedido
torna possível fornecer o serviço a um cliente cujo pedido excede a capacidade do veículo.
Dividir também pode permitir reduzir os custos. O Problema de Planeamento de Veículos
com Entrega Dividida e Janelas de Tempo é uma extensão do PPVED, acrescentando-lhe
os apoios das janelas de tempo [6].

Lenstra Rinnooy e Kan [25] analisaram a complexidade do problema de planeamento e


concluíram que praticamente todos os problemas de planeamento de veículos são NP-hard
(entre eles o clássico PPV), uma vez que não são resolvidos em tempo polinomial.

Segundo Solomon e Desrosiers [26], o PPVJT também é NP-hard, porque é uma extensão
do PPV. Apesar do PPVJT ser uma simplificação do PPV, ainda é NP-hard [22] [27].

3 diz-se que depende das leis do acaso.

4 problemas que não podem ser resolvidos de forma optimizada num tempo de computação limitado polinomial-
mente

5 hipótese que, numa pesquisa, levam a uma descoberta científica; método analítico para a descoberta de verdades
científicas.
28 / 119
Para aplicações do mundo real que resolvem PPV é essencial efectuar uma rápida selecção
de métodos (heurísticas construtivas, operadores de vizinhança e mecanismos de fuga), que
produzam a desejada melhoria da função objectivo. As aplicações comerciais do PPV con-
vergem principalmente para procedimentos auto-adaptativos com a necessária robustez
para resolver o problema com a mínima intervenção humana no ajuste dos algoritmos. Por
outro lado soluções feitas à medida precisam de ferramentas de prototipagem fáceis de
usar, com as medidas de desempenho bem definidas para estimar o número ideal de re-iní-
cios e iterações dos algoritmos implementados [6].

As aplicações típicas do PPV tipo são, por exemplo, recolha de resíduos sólidos, limpeza de
ruas, planeamento de transportes escolares, o transporte de pessoas com deficiência, o pla-
neamento de vendedores e planeamento de unidades de manutenção [4].

A distribuição dos produtos diz respeito ao serviço, num determinado período de tempo,
de um conjunto de clientes através de um conjunto de veículos, que estão localizados num
ou mais depósitos, são operados por um conjunto de tripulações (motoristas) e movem-se
usando uma rede rodoviária adequada. Em particular, a solução do PPV requer a determi-
nação de um conjunto de rotas, cada uma realizada por um único veículo, que começa e
termina no seu próprio depósito, de modo que todos os requisitos dos clientes sejam satis-
feitos, todas as restrições operacionais sejam satisfeitas e os custos de transporte global seja
minimizado [4].

A rede rodoviária, utilizada para o transporte de mercadorias, é geralmente descrita através


de um grafo, cujos arcos representam os troços de estrada e cujos vértices correspondem
aos cruzamentos, o depósito e os locais dos clientes. Os arcos podem ser direccionados ou
não direccionados, consoante se podem ser percorridos em apenas uma direcção (por
exemplo, devido à presença de ruas de sentido único, típico de redes urbanas ou de auto-
estradas) ou em ambas as direcções, respectivamente. A cada arco está associado um custo,
que geralmente representa o seu comprimento e um tempo de viagem (duração), que é
possivelmente dependente do tipo de veículo ou do período durante o qual o arco é percor-
rido. As características típicas dos clientes são [4]:

- vértice do gráfico da estrada em que o cliente se encontra;

- quantidade de produtos (procura), possivelmente de tipos diferentes, que devem ser


entregues ou recolhidos no cliente;
29 / 119
- períodos do dia (janelas de tempo) durante o qual o cliente pode ser servido (por
exemplo, períodos específicos durante o qual o cliente está disponível ou o local
pode ser alcançado, devido às limitações de tráfego);

- tempos necessários para entregar ou recolher a mercadoria no local do cliente


(tempo de descarga ou carga, respectivamente), possivelmente dependente do tipo
de veículo,

- subconjunto dos veículos disponíveis que podem ser usados para servir o cliente
(por exemplo, devido às limitações de acesso possível ou requisitos de carga e des-
carga).
Às vezes, não é possível satisfazer plenamente o pedido de cada cliente. Nestes casos as
quantidades a serem entregues ou recolhidas podem ser reduzidas ou um subconjunto dos
clientes pode ser deixado sem atendimento. Para lidar com essas situações, diferentes prio-
ridades ou penalizações associadas à falta parcial ou total do serviço podem ser atribuídas
aos clientes [4].

As rotas realizadas para atender os clientes começam e terminam em um ou mais depósi-


tos, localizados nos vértices do grafo. Cada depósito é caracterizada pelo número e tipos de
veículos a ele associados e pelo montante global de produtos com os quais podem lidar. Em
algumas aplicações do mundo real, os clientes são divididos à priori entre os depósitos e os
veículos têm de regressar ao seu depósito no final de cada percurso. Nestes casos, o PPV
global pode ser decomposto em vários problemas independentes, cada um associado a um
depósito diferente [4].

Transporte de mercadorias é efectuado usando uma frota de veículos, cuja composição e


tamanho pode ser fixo ou pode ser definido de acordo com as exigências dos clientes. As
características típicas dos veículos são [4]:

- depósito inicial do veículo e a possibilidade de terminar o serviço num depósito que


não o inicial;

- capacidade do veículo, expressa em termos de peso máximo, volume ou qualquer


outra forma de quantificação da capacidade que o veículo pode carregar;

- subdivisão do veículo em compartimentos, cada um caracterizado pela sua capaci-


dade de e pelo tipo de bens que pode transportar;
30 / 119
- dispositivos disponíveis para as operações de carga e descarga;

- subconjunto de arcos do grafo que pode ser percorrido pelo veículo;

- custos associados com a utilização do veículo (por unidade de distância, por unida-
de de tempo, por rota, etc.)
As rotas devem satisfazer diversas restrições operacionais, que dependem da natureza das
mercadorias transportadas, da qualidade do nível de serviço, das características dos clientes
e dos veículos. Alguns constrangimentos típicos operacionais são [4]:

- ao longo de cada percurso, a actual carga do veículo associado não pode exceder a
capacidade do veículo, os clientes servidos numa rota podem exigir apenas a entre-
ga ou a recolha de bens, ou ambas as possibilidades podem existir,

- os clientes apenas podem ser servidos na respectiva janela de tempo e nos períodos
de trabalho dos condutores associados aos veículos.
Restrições de precedência podem ser impostas sobre a ordem em que os clientes servidos
por uma rota são visitados. Um tipo de restrição de precedência exige que um determinado
cliente seja servido na mesma rota que é servido um determinado subconjunto de outros
clientes e que o cliente deve ser visitado antes (ou depois) dos clientes pertencentes ao sub-
conjunto associado. Este é o caso, por exemplo, dos chamados problemas de entrega e/ou
recolha, onde os percursos podem realizar a recolha e entrega de mercadorias, e os produ-
tos recolhidos dos clientes de recolha devem ser entregues aos clientes de entrega pelo
mesmo veículo. Outro tipo de restrição de precedência impõe que se os clientes de diferen-
tes tipos são servidos na mesma rota sendo a ordem na qual os clientes são visitados fixa
[4].

A avaliação do custo global das rotas e a verificação das restrições operacionais impostas
sobre elas, requer o conhecimento do custo e do tempo de viagem entre cada par de clien-
tes e entre os depósitos e os clientes. Para este fim, o grafo original (que muitas vezes é mui-
to disperso) é geralmente transformado num grafo completo, cujos vértices são os vértices
do grafo correspondente aos clientes e depósitos. Para cada par de vértices i e j do grafo
completo é definido um arco (i, j) cujo custo cij é determinado pelo custo do caminho mais
curto a partir do vértice i e a chegar ao vértice j do grafo. O tempo de viagem tij, associado
a cada arco (i, j) do grafo completo, é calculado como a soma dos tempos de viagem dos
arcos que pertencem ao caminho mais curto de i para j no grafo. Em vez do grafo original,
31 / 119
é considerado o grafo associado completo, que pode ser direccionado ou não direccionado,
dependendo da propriedade do correspondente custo e o tempo de viagem, matrizes assi-
métricas ou simétricas, respectivamente [4].

Vários objectivos, muitas vezes contrastantes, podem ser considerados para o PPV. Objecti-
vos típicos são [4]:

- minimização do custo global de transporte, dependente da distância percorrida


global (ou sobre o tempo de viagem global) e os custos fixos associados com os veí-
culos usados (e com os condutores correspondentes);

- minimização do número de veículos (ou condutores) necessários para servir todos os


clientes;

- balanceamento das rotas, quer em termos de tempo de viagem quer em carga dos
veículos;

- minimização das sanções associadas ao serviço parcial dos clientes;

- ou qualquer combinação ponderada desses objectivos.


Em algumas aplicações, cada veículo pode operar mais de uma rota no período de tempo
considerado ou as rotas podem durar mais de um dia. Além disso, por vezes, é necessário
considerar versões estocásticas ou dinâmicas tempo-dependentes do problema, ou seja,
problemas para os quais, à priori, há apenas um conhecimento parcial da procura dos clien-
tes ou dos custos (e os tempos de viagem) associados com os arcos do grafo [4].

2.1. Problema do Planeamento de Veículos com Janelas de


Tempo

Um PPV geral pode ser formalmente definido como se segue: dado um número fixo N ou
um número infinito de veículos com capacidade limitada cv (medida em peso ou volume) e
M' pedidos dos clientes, em que cada pedido rqj exige um serviço de entrega para Qj quan-
tidade de produtos/serviços, para diferentes locais. A distância, geralmente medida em mi-
nutos ou horas necessária para a viagem, entre dois possíveis pontos de entrega também é
fornecida, geralmente como uma matriz de distância. Então, nossa tarefa é aperfeiçoar de-
terminados critérios definidos pelo utilizador sujeito às seguintes restrições básicas [6]:

- qualquer pedido rqj do cliente só deve ser servido por um único veículo;
32 / 119
- para cada veículo v, a soma Qv da quantidade de mercadorias a ser entregues pelo
veículo v deve ser menor ou igual a cv.
Além das restrições base acima apresentadas, em muitas aplicações da vida real, como a
entrega de supermercado, cada cliente pode solicitar que os itens sejam entregues num de-
terminado período (janela de tempo). Assim, um PPVJT tem uma restrição adicional, a
janela de tempo a ser aplicada para cada entrega [6]:

- quando uma janela de tempo com o tempo inicial Ej e o tempo final Lj, é especifi-
cada para cada entrega num PPVJT, o tempo de chegada Tvj do veículo v para ser-
vir o pedido rqj do cliente deve encontrar-se dentro do tempo especificado, que é Ej
≤ Tvj ≤ Lj.
Um dos objectivos mais comuns para a minimização de PPVJT é TV*TD, onde TV é o
número de veículos usados, e TD é a distância total percorrida por todos os veículos. Exis-
tem muitas variantes do PPVJT, com objectivos diferentes, como o tempo total de viagem
de todos os veículos ou o tempo total de espera de todos os clientes [6].

Uma vez que o espaço de busca para todas as possíveis rotas (viáveis ou ligeiramente inviá-
veis) no PPVJT pode ser bastante grande, mesmo para casos envolvendo 100 clientes [28]
ou mais [29] e as restrições das janelas de tempo no PPVJT podem ser difíceis de satisfazer.
Acresce ainda o facto da escolha adequada de uma heurística que retorne somente soluções
viáveis pode ser importante para a optimização [6].

Para resolver os PPVJT tem sido propostos uma grande variedade de algoritmos. Métodos
antigos são descritos nos inquéritos [30] e [15]. Os métodos em que se aplicou a aborda-
gem de duas fases para solucionar o PPVJT são os mais bem sucedidos [31]. Durante a
primeira fase o algoritmo heurístico construtivo é usado para gerar uma solução viável ini-
cial. Na segunda fase, uma heurística de melhoramento iterativo é aplicada à solução inici-
al. O “mecanismo de fuga” para escapar do óptimo local é frequentemente implementado
na segunda fase[6].

2.2. Problema do Planeamento de Veículos com Entrega e Re-


colha

Na versão básica do PPVRE, cada cliente i está associado a duas quantidades di e pi, repre-
sentando a procura por produtos homogéneos para serem entregues e/ou recolhidos no
33 / 119
cliente i, respectivamente. Às vezes, apenas uma quantidade Di=di-pi é usada para cada cli-
ente i, indicando a diferença líquida entre o fornecimento e a procura (sendo assim possível
valores negativos). Para cada cliente i, Oi indica o vértice que está na origem do pedido de
entrega e Di representa o vértice, que é o destino do pedido de recolha [4].

Supõe-se que, em cada local do cliente a entrega é feita antes da recolha, onde a carga de
um veículo antes de chegar num determinado local é definida pela carga inicial menos to-
dos os pedidos já entregues mais todos os pedidos recolhidos [4].

O PPVRE consiste em encontrar um conjunto de exactamente K circuitos simples com um


custo mínimo de tal forma que [4]:

- cada circuito visite o vértice depósito,

- cada vértice do cliente é visitado por exactamente um circuito,

- a carga do veículo ao longo do circuito deve ser sempre positiva e nunca pode exce-
der a capacidade C do veículo;

- para cada cliente i, o cliente Oi, quando diferente do depósito, deve ser servido no
mesmo circuito, e antes do cliente i,

- para cada cliente i, o cliente Di, quando diferente do depósito, deve ser servido no
mesmo circuito e depois do cliente i.

2.3. Problema do Planeamento de Veículos com Capacidade

Na versão básica do PPVC apenas são consideradas as restrições de capacidade dos veícu-
los e o objectivo é minimizar o custo total (ou comprimento) das rotas. O Problema do Pla-
neamento de Veículos com Capacidade e Janelas de Tempo, que é uma generalização do
PPVC, é uma das variantes mais estudadas do PPV. No Problema do Planeamento de Veí-
culos com Capacidade e Janelas de Tempo, os veículos devem respeitar restrições de janelas
de tempo associadas a cada cliente, além das restrições da capacidade [6].

2.4. Problema do Planeamento de Transportes Escolares

Planeamento de Transportes Escolares é uma aplicação primária do PPV, sendo seu objec-
tivo determinar como transportar os alunos para a escola de uma forma optimizada [32]
[33]. As crianças são atribuídas a paragens de autocarro e uma sequência de paragens in-
34 / 119
dividuais formará uma rota de autocarro. Pela manhã, os autocarros recolhem os alunos
das paragens de autocarro e transportam-nos para a escola, com o processo revertido no
final da tarde[32] [34]. Cada Problema de Planeamento de Transportes Escolares tem ob-
jectivos diferentes e/ou restrições:

- capacidade de autocarro,

- número máximo de paragens por autocarro,

- comprimento máximo (ou duração) de cada viagem,

- tempo de permanência no autocarro por parte dos alunos.

O Problema de Planeamento de Transportes Escolares, geralmente, possui os seguintes


objetivos [33] [35]:

- minimização dos custos de transporte,

- minimização do tempo de transporte,

- minimização do tempo que um estudante permanece no autocarro,

- minimização do número de autocarros necessários,

- minimização do tempo de viagem da frota,

- balanceamento da carga do autocarro e comprimentos da rota.

2.5. Problema do Caixeiro Viajante

No contexto da optimização de trajectórias o PCV tem merecido toda a atenção por inves-
tigadores por constituir um problema raiz na área dos problemas de transporte. Algoritmos
adaptados das soluções encontradas para o problema do PCV tem servido para solucionar
outros tipos de problemas de transportes.

O PCV consiste em encontrar uma rota através de um número de locais definidos, visitan-
do cada local apenas uma vez e retornando ao local de partida, da forma mais eficiente, ou
seja, em menor tempo e com a rota mais pequena. Existem muitos estudos sobre soluções
eficazes para o PCV. No entanto, encontrar a melhor solução de uma tarefa NP-hard requer
enormes recursos e quantidade de tempo de computação [36].

Ao longo dos anos o PCV e suas variantes foram alvo de estudo ao longo do tempo. Bektas
[37] destaca as seguintes possíveis variações do PCV :
35 / 119
- depósito único contra depósitos múltiplos: no caso do depósito único, todos os cai-
xeiros viajantes iniciam e terminam as suas rotas num único ponto. Por outro lado,
se existem vários depósitos com um número de caixeiros viajantes situados em cada
um, os caixeiros viajantes podem regressar ao seu depósito original depois de con-
cluir a sua tarefa ou retornar para qualquer depósito com a restrição de que o nú-
mero inicial de caixeiros viajantes em cada depósito continue o mesmo após as via-
gens. O primeiro é conhecido como o caso destino fixo enquanto o segundo é no-
meado como o caso destino não fixo.

- número de vendedores: O número de caixeiros viajantes no problema pode ser de-


finido como variável ou fixo.

- custos fixos: quando o número de caixeiros viajantes do problema não é fixo, cada
vendedor tem geralmente um custo fixo associado, usado sempre que este caixeiro
viajante é utilizado na solução. Neste caso, a minimização do número de caixeiros
viajantes usados na solução também pode ser motivo de preocupação.

- janelas de tempo: nesta variação, determinados nós precisam ser visitados em perí-
odos específicos, nomeados como janelas de tempo ou intervalos de tempo. Esta é
uma extensão importante do Problema dos Múltiplos Caixeiros Viajantes (PMCV)
e referida como o Problema dos Múltiplos Caixeiros Viajantes com Janelas de
Tempo. O Problema dos Múltiplos Caixeiros Viajantes com Janelas de Tempo tem
aplicações imediatas em problemas de planeamento de trajectos de autocarros esco-
lares, navios e aviões.

- outras restrições especiais: estas restrições podem consistir de limites sobre o núme-
ro de visitas a cada nó por cada caixeiro viajante, o valor máximo ou mínimo de
distância percorrida pelo caixeiro viajante ou outras restrições especiais.

2.5.1. Múltiplos Caixeiros Viajantes


O PMCV é uma extensão do PCV [38]. Ao contrário do PCV que tem sido amplamente
pesquisado nos últimos anos, o PMCV, não é tão apelativo nem tão intensamente estudado.
Contudo, o PMCV pode ser usado para modelar muitas aplicações do mundo real [39]. O
PMCV é ainda mais difícil do que o PCV e com mais complexidade combinatória [39].

36 / 119
Este facto deve-se à existência de múltiplos veículos para solucionar o grafo aumentando o
número de combinações possíveis.

O PMCV pode ser especificado da seguinte forma: existem m vendedores que devem visi-
tar um conjunto de n cidades, com cada vendedor a iniciar e terminar no mesmo local.
Neste problema, cada cidade deve ser visitada exactamente uma vez por um único vende-
dor [38] e o custo total de todas as rotas deve ser minimizado. O custo pode ser definido
em termos da distância, do tempo, e outros [39].

Extensas bibliografias e pesquisas podem ser encontradas nos livros escritos por Toth e Vi-
go [40] e por Ball, Magnanti, Monma e Nemhauser [41]. Aristidis Likas, Nikos Vlassis,
Jakob J. Verbeek abordaram a divisão das cidades em clusters e a atribuição de cada agru-
pamento a cada vendedor, sugerindo o agrupamento dos pontos de dados usando k-means.
O k-means é um algoritmo para classificar ou agrupar os objectos com base em atributos/
características em k grupos. O k é um número inteiro positivo. O agrupamento é feito atra-
vés da minimização da soma dos quadrados das distâncias entre os dados e o cluster central
correspondente [42]. Vários conceitos de análise de clusters têm sido discutidos em [43].

A. Rizzoli et. al. centraram-se sobre a aplicação da OCF ao PPV e sua aplicação no mun-
do real [44]. Arthur E. Carter e Cliff T. Ragsdale desenvolveram uma nova abordagem
para resolver o PMCV. O método propõe um novo conjunto de cromossomas e operadores
comparando as propriedades teóricas e o desempenho computacional da técnica proposta
[45].

2.5.2. Aplicações
As aplicações do PCV e suas variantes vão muito além do problema de planeamento de
rotas de um caixeiro viajante e estende-se por diversas áreas de conhecimento, incluindo
matemática, ciência da computação, pesquisa operacional, genética, engenharia e electró-
nica [46]. De acordo com Gutin [46] o PCV pode ser utilizado para solucionar, entre ou-
tros, problemas das áreas de planeamento de máquinas, atribuição de frequências, estrutu-
ração de matrizes, redes de telecomunicações e inteligência artificial.

37 / 119
38 / 119
3
‹‹ O conhecimento nos faz responsáveis.››

Ernesto Che Guevara

3.INTRODUÇÃO À OPTIMIZAÇÃO

Grosseiramente falando podemos considerar a optimização como uma metodologia que


requer dois elementos fundamentais: (1) a adaptação e a finalidade. Estritamente falando,
podemos definir a optimização como: a mudança, modificação, adaptação sistemática, de
um processo que visa (2) alcançar um objectivo pré-determinado. Este efeito pode ser o va-
lor máximo/mínimo de uma função numérica definida pelo utilizador. Em outras palavras,
a optimização deve envolver um elemento teológico de saber o que vamos fazer (maximizar
uma função), mas uma ignorância da forma, o percurso geral conducente à meta. A reso-
lução prática desta situação paradoxal é a essência de toda a área de pesquisa chamada
teoria de optimização [5].

Com base neste entendimento um algoritmo de optimização pode ser definido como um
conjunto de instruções claras especificando como proceder, a partir de certas condições ini-
ciais, até que alcancemos a meta final imposta inicialmente. Um ponto importante a acres-
centar é que na maioria das vezes o algoritmo não consegue atingir exactamente o objecti-
39 / 119
vo pré-determinado, em vez disso chega a uma aproximação do objectivo. Em aplicações
científicas e de engenharia, há sempre um grau de tolerância e de erros, permitindo-nos
aceitar como certas soluções quasi-óptimas. Isto significa que o objectivo da optimização per-
feita é sempre ideal, porquanto os modelos matemáticos não traduzem na plenitude a na-
tureza das coisas [5].

Em muitas aplicações, não precisamos optimizar uma função objectivo de forma explícita
mas antes encontrar os valores das variáveis de um modelo que satisfaça uma série de res-
trições dadas, expressas através de relações matemáticas. Quando essas relações tomam a
forma de n igualdades não-correlacionadas para igual número de variáveis do problema-
modelo uma solução existe, sendo esta única [3].

A optimização é uma ferramenta importante na ciência e na análise de sistemas físicos.


Para fazer uso dessa ferramenta, é preciso primeiro identificar uma medida quantitativa do
desempenho do sistema em estudo, um objectivo. Este objectivo poderá ser o lucro, o tem-
po, a energia potencial, ou qualquer quantidade ou combinação das quantidades que po-
dem ser representados por um único número. O objectivo depende de certas características
do sistema, chamadas de variáveis ou incógnitas. O objectivo é encontrar os valores das
variáveis que optimizam o objectivo. Muitas vezes, as variáveis são limitadas, ou restritas,
de alguma forma. Por exemplo as quantidades, como a densidade de eléctrons numa molé-
cula e a taxa de juros de um empréstimo não podem ser negativas [3].

Problemas de optimização combinatória são intrigantes porque são frequentemente fáceis


de declarar, mas muito difíceis de resolver. Muitos dos problemas relacionados com as apli-
cações são do tipo NP-hard, ou seja, acredita-se fortemente que não podem ser resolvidos de
forma optimizada num tempo de computação limitado polinomialmente. Desta forma
para resolver casos de grandes instancias muitas vezes tem que se usar métodos aproxima-
dos que retornam soluções quasi-óptima num tempo relativamente curto. Algoritmos deste
tipo são vagamente chamados de heurística. Costumam usar conhecimentos de problemas
específicos para construir as melhores soluções [47].

Recentemente muitos investigadores têm focado a sua atenção numa nova classe de algo-
ritmos, chamados de meta-heurísticas. Uma meta-heurística é um conjunto de conceitos de
algoritmos que podem ser usados para definir os métodos heurísticos aplicáveis a um vasto
conjunto de problemas diferentes. Em outras palavras, uma meta-heurística pode ser vista
40 / 119
como um método heurístico de uso geral destinado a orientar um problema subjacente
específico para regiões promissoras do espaço de busca contendo soluções de alta qualida-
de. A meta-heurística pode ser aplicada a diferentes problemas de optimização com poucas
modificações para torná-los adaptados a um problema específico. O uso de meta-heurísti-
cas tem aumentado significativamente a capacidade de encontrar soluções de qualidade
elevada em problemas de optimização combinatória, teoricamente difíceis de obter num
tempo razoável [47].

Meta-heurísticas ou métodos gerais de pesquisa local tem merecido uma crescente atenção
pela comunidade científica: as conferências mais importantes de pesquisa operacional têm
uma ou várias sessões inteiramente dedicadas a meta-heurísticas e também existem diversas
revistas científicas inteiramente dedicadas a elas. Na literatura de pesquisa operacional
muitos modelos matemáticos elegantes e métodos de solução têm sido desenvolvidos para
lidar com os problemas do mundo real. Apesar de algumas abordagens específicas de su-
cesso como algoritmos limitados e programas dinâmicos, propostas para resolver os pro-
blemas da optimilidade em problemas combinatórios de alta dimensionalidade apresentam
grande dificuldade na obtenção de soluções óptimas no espaço de solução. A alternativa
está na pesquisa de soluções aproximadas, em tempo e com recursos viáveis [47].

Apesar de muitos problemas de optimização discreta serem lineares, há também um gran-


de número de problemas práticos que são do tipo não-lineares. Por exemplo, num proble-
ma de alocação linear, pode ser necessário levar em consideração os custos não-lineares da
função objectivo, então este problema torna-se um problema de alocação não-linear. Uma
versão conhecida não-linear de um problema de alocação linear é o problema quadrático
de alocação [48].

3.1. Optimização Contínua e Optimização Discreta

Em alguns problemas de optimização as variáveis só fazem sentido se assumirem valores


inteiros. Por exemplo, uma variável xi pode representar o número de centrais eléctricas do
tipo I, que devem ser construídas por um fornecedor de electricidade durante os próximos
cinco anos, ou poderia indicar se uma fábrica especial, deve ou não ser localizada numa
determinada cidade. Problemas deste tipo são chamados de problemas de programação
inteira. Se alguma das variáveis do problema não está restrita a ser inteira ou variáveis bi-

41 / 119
nárias, então, os problemas, são às vezes chamados de problemas de programação inteira
mista [3].

Problemas de programação inteira são um tipo de problema de optimização discreta. Ge-


ralmente, os problemas de optimização discreta podem conter não apenas números inteiros
e variáveis binárias, mas também variáveis objecto mais abstractas, tais como permutações
de um conjunto ordenado. A característica que define um problema de optimização discre-
ta é que o x desconhecido é tirado de um conjunto finito (mas muito grande). Em contra-
partida o conjunto de soluções viáveis para problemas de optimização contínua geralmente
são infinitos sendo x um número real. Problemas de optimização contínua são normalmen-
te mais fáceis de resolver porque as funções tornam possível a utilização de informações
objectivas e de restrições num determinado ponto x para deduzir informações sobre a fun-
ção, o comportamento em todos os pontos perto de x. Em problemas discretos, por contras-
te, o comportamento do objectivo e restrições podem alterar-se significativamente à medida
que se deslocam de um ponto viável para o outro, mesmo se os dois pontos são próximos,
por alguma medida. Os conjuntos de soluções viáveis para problemas de optimização dis-
creta podem ser pensados como possuindo uma forma extrema de não convexidade [3].

3.2. Optimização Restrita e Não Restrita

Problemas com a forma geral podem ser classificados segundo a natureza da função objec-
tivo e restrições (linear, não linear), o número de variáveis (grande ou pequeno), o tipo de
funções (diferenciáveis ou não diferenciáveis) e assim por diante. Uma distinção importante
é entre os problemas que têm restrições sobre as variáveis e os que não têm. Problemas de
optimização irrestrita surgem directamente em muitas aplicações práticas. Mesmo para
alguns problemas com os condicionalismos naturais sobre as variáveis, pode ser seguro ig-
norá-las pois elas não afectam a solução e não interferem com os algoritmos. Problemas
sem restrições surgem também como reformulações de problemas de optimização restrita,
em que as restrições são substituídas por termos de penalização adicionados à função ob-
jectivo que têm o efeito de desencorajar violações de restrição [3].

Problemas de optimização restrita surgem a partir de modelos em que as restrições desem-


penham um papel essencial, por exemplo, na imposição de restrições orçamentais num
problema económico ou restrições na forma de um problema de design. Estas restrições po-
dem ser simples, tais como limites 0 ≤ x1 ≤ 100, ou desigualdades não-lineares que repre-
42 / 119
sentam relações complexas entre as variáveis. Quando a função objectivo e as restrições são
funções lineares de x, o problema é um problema de programação linear. Problemas deste
tipo são provavelmente os mais amplamente formulados e resolvidos de todos os problemas
de optimização, especialmente na gestão financeira, económica e aplicações. Problemas de
programação não-linear em que pelo menos algumas das restrições ou o objectivo são fun-
ções não-lineares, tendem a surgir naturalmente nas ciências físicas e engenharia, sendo
utilizadas cada vez mais na administração e ciências económicas [3].

3.3. Optimização Estocástica e Deter minística

Em alguns problemas de optimização, o modelo não pode ser completamente especificado,


pois depende das quantidades que são desconhecidas no momento da formulação. Esta
característica é compartilhada por muitos modelos de planeamento económico e financei-
ro, que pode depender, por exemplo, das taxas de juros futuras, a procura futura de um
produto, os preços das comodidades futuras, mas a incerteza pode surgir naturalmente em
quase qualquer tipo de aplicação [3].

Ao invés de usar apenas uma "melhor estimativa" para as quantidades incertas, é possível
obter mais soluções úteis, incorporando novos conhecimentos sobre essas quantidades no
modelo. Por exemplo, eles podem conhecer uma série de cenários possíveis para a procura
incerta, juntamente com as estimativas das probabilidades de cada cenário. Algoritmos de
optimização estocástica utilizam essas quantificações de incerteza para produzir soluções
que optimizam o desempenho esperado do modelo [3].

3.4. Algoritmos de Optimização

Os algoritmos de optimização são processo iterativos. Eles começam com um valor inicial
da variável x e geram uma sequência de estimativas melhoradas, até terminar, possivelmen-
te com uma solução. A estratégia utilizada para passar de uma iteração para a próxima dis-
tingue um algoritmo do outro. A maioria das estratégias faz uso dos valores da função ob-
jectivo f, as funções de restrição de ci, e possivelmente a primeira e segunda derivadas des-
sas funções. Alguns algoritmos acumulam informação recolhida em iterações anteriores,
enquanto outros utilizam apenas as informações obtidas no ponto actual. Independente-
mente das especificidades, bons algoritmos devem possuir as seguintes propriedades [3]:

43 / 119
- robustez - devem executar bem numa variedade de problemas da sua classe, para
todos os valores razoáveis do ponto de partida.

- eficiência - não devem necessitar de tempo excessivo do computador ou de arma-


zenamento.

- precisão - devem ser capazes de identificar uma solução com precisão, sem ser ex-
cessivamente sensíveis a erros nos dados ou a erros de aritmética de arredondamen-
to que ocorrem quando o algoritmo é executado num computador.
Esses objectivos podem entrar em conflito. Por exemplo, um método de rápida convergên-
cia para um problema não-linear irrestrito pode exigir muito armazenamento do compu-
tador. Por outro lado, um método robusto também pode ser mais lento. Trocas entre a taxa
de convergência e os requisitos de armazenamento e entre robustez e velocidade, e assim
por diante, são os temas centrais em optimização numérica [3].

A teoria matemática da optimização é usada tanto para caracterizar os pontos ideais como
para fornecer a base para a maioria dos algoritmos. Não é possível ter uma boa compreen-
são de optimização numérica sem uma firme compreensão da teoria de apoio [3].

3.5. Pesquisa Local

A pesquisa local é um dos paradigmas fundamentais para a resolução de problemas com-


binatórios computacionalmente difíceis. Fornecendo a base para alguns dos mais bem su-
cedidos e versáteis métodos para solucionar problema difíceis encontrados em muitas apli-
cações na vida real. Apesar dos avanços impressionantes na sistemática e nos algoritmos de
pesquisa completa, os métodos de pesquisa local em muitos casos, representam o único
caminho viável para a resolução desses casos grandes e complexos. Algoritmos de Pesquisa
Local são naturalmente adequados para lidar com os critérios de optimização que surgem
em muitas aplicações práticas [49].

A ideia básica subjacente de pesquisa local é começar com uma solução candidata de uma
instância de determinado problema, gerada aleatoriamente ou heuristicamente, que pode
ser inviável, sub-óptima ou incompleta e melhorar esta solução iterativamente por meio de
modificações normalmente menores. Os diferentes métodos de pesquisa local variam na
maneira em como as melhorias são alcançadas e, em particular, na forma como as situa-
ções, em que nenhuma melhoria directa é possível, são manipuladas [49].
44 / 119
A maioria dos métodos de pesquisa local usa a aleatoriedade para garantir que o processo
de pesquisa não estagna com soluções candidato insatisfatórias e, portanto, são referidos
como métodos de pesquisa local estocástica. Proeminentes exemplos de métodos de pesqui-
sa local estocástica são: aperfeiçoamentos aleatórios iterativos, Algoritmos Evolutivos, Pes-
quisa Dinâmica Local e, mais recentemente, a OCF. Essas classes de algoritmos de pesquisa
local são também conhecidas como meta-heurísticas [49].

Muitos métodos de pesquisa local estocástica são conceitualmente bastante simples e relati-
vamente fáceis de implementar em comparação com muitas outras técnicas. Ao mesmo
tempo eles apresentam muitas vezes excelente performance. Além disso, os Algoritmos de
Pesquisa Local Estocástica são, muitas vezes, bastante flexíveis na medida em que podem
ser facilmente adaptados às mudanças na especificação de um problema. Isso faz deles uma
escolha muito popular para resolver problemas de aplicações conceitualmente complexas
que às vezes não são totalmente formalizados no início de um projecto. Consequentemen-
te, algoritmos de pesquisa local estocástica estão entre as mais proeminentes e amplamente
utilizadas técnicas de resolução de problemas combinatório na academia e na indústria
[49].

Dado um problema combinatório, a ideia chave por trás de pesquisa local é muito simples:
a partir de uma posição inicial de pesquisa, em cada etapa o processo de pesquisa desloca-se
para uma posição seleccionada a partir da vizinhança (tipicamente baseados numa função
de avaliação heurística). Este processo é iterado até atingir um critério de paragem. Para
evitar a estagnação do processo de pesquisa, quase todos os algoritmos de pesquisa local
utilizam alguma forma de aleatoriedade, normalmente na geração de posições iniciais e em
muitos casos, também nas etapas de pesquisa [49].

45 / 119
46 / 119
4
‹‹A natureza é o único livro que oferece um conteúdo
valioso em todas as suas folhas.››

Goethe

4.COMPUTAÇÃO EVOLUTIVA E INTELIGÊNCIA


COLECTIVA

A IA pode ser definida como o ramo da ciência da computação que se preocupa com a au-
tomação de comportamento inteligente [50]. A IA é o campo que estuda a síntese e análise
de agentes computacionais que agem de forma inteligente [51]. Um agente é algo que fun-
ciona num ambiente - que faz alguma coisa. Agentes incluem cães, termóstatos, aviões, se-
res humanos, empresas e países. Interessa o que um agente faz, isto é, como ele age. Um
agente é julgado pelas suas acções. Um agente age inteligentemente quando o que faz é
apropriado para as circunstâncias e seus objectivos, é flexível em ambientes dinâmicos,
aprende com a experiência e faz escolhas adequadas, dadas as suas limitações perceptivas e
computacionais. Um agente não pode normalmente observar o estado do mundo directa-
mente, tem uma memória finita e não tem tempo ilimitado para agir [51].

47 / 119
Um agente computacional é um agente cujas decisões sobre suas acções podem ser expli-
cadas em termos de computação. Ou seja, a decisão pode ser dividida em funcionamento
primitivo que pode ser implementado num dispositivo físico. Este cálculo pode assumir
muitas formas. Nos seres humanos esse cálculo é realizado no cérebro, enquanto que nos
computadores é realizado em hardware [51].

O objectivo cientifico central da IA é compreender os princípios que tornam possível o


comportamento inteligente em sistemas naturais ou artificiais. Isso é feito através da análise
dos agentes naturais e artificiais, formulando e testando hipóteses sobre o que é necessário
para a construção de agentes inteligentes, através da concepção, construção e experimenta-
ção de sistemas computacionais que executem tarefas que se assumem como necessitando
de inteligência. O objectivo central da engenharia da IA é o desenho e síntese de artefactos
úteis e inteligentes [51].

4.1. Computação Evolutiva

A evolução é um processo de optimização onde o objectivo é melhorar a capacidade de um


organismo (ou sistema) para sobreviver em ambientes em mutação dinâmica e competitiva.
Evolução é um conceito que tem sido debatido ao longo dos séculos. Quando se fala em
evolução é importante identificar a área em que a evolução pode ser definida, por exemplo,
cósmica, química, estelar e planetária, orgânica ou sistema sintético de evolução. Para estas
diferentes áreas a evolução pode ser interpretada de forma diferente [52].

Os algoritmos evolutivos tiveram origem na tentativa de imitar alguns dos processos que
ocorrem na evolução natural. Embora os detalhes da evolução biológica ainda não sejam
totalmente compreendidos, existem alguns pontos fortes apoiados por evidências experi-
mentais [53]:

- a evolução é um processo que opera sobre cromossomas e não sobre os organismos.


Os primeiros são ferramentas de codificação da estrutura orgânica de um ser vivo,
ou seja, uma criatura é "construída" descodificando um conjunto de cromossomas.

- a selecção natural é o mecanismo que relaciona cromossomas com a eficiência da


entidade que representam, permitindo assim que o organismo eficiente, que está
mais bem adaptado ao ambiente, se reproduza mais frequentemente do que aqueles
que não são.
48 / 119
- o processo evolutivo ocorre durante a fase de reprodução. Existe um grande núme-
ro de mecanismos de reprodução na natureza. Os mais comuns são a mutação (que
faz com que os cromossomas da prole sejam diferentes daqueles dos pais) e recom-
binação (que combina os cromossomas dos pais para produzir a prole).

Um algoritmo evolutivo é um processo iterativo e estocástico 6 que opera sobre um conjunto


de indivíduos (população). Cada indivíduo representa uma solução potencial para o pro-
blema ser resolvido. Esta solução é obtida por meio de um mecanismo de codificação/des-
codificação. Inicialmente a população é gerada aleatoriamente (talvez com a ajuda de uma
construção heurística). A cada indivíduo da população é atribuído, por meio de uma fun-
ção de aptidão, uma medida da sua capacidade para solucionar o problema em questão.
Este valor é a informação quantitativa que o algoritmo usa para orientar a pesquisa [53].

O Princípio de Darwin "A sobrevivência do mais apto" pode ser usado como ponto de par-
tida na introdução da Computação Evolutiva (CE). O conceito de evolução pode ser apli-
cado a problemas onde as soluções heurísticas não estão presentes ou produzem resultados
insatisfatórios. Como resultado, os algoritmos evolutivos são de interesse recente, em parti-
cular para resolver problemas práticos [53].

A teoria da selecção natural propõe que as plantas e animais que existem hoje são o resul-
tado de milhões de anos de adaptação às exigências do ambiente. Em dado momento, um
número de organismos diferentes podem coexistir e competir pelos mesmos recursos num
ecossistema. Os organismos que são mais capazes de adquirir recursos e procriar com su-
cesso são aqueles cujos descendentes tendem a ser mais numerosos no futuro. Organismos
que, por qualquer razão, são menos capazes tendem a ter poucos ou nenhuns descendentes
no futuro. Os primeiros são considerados mais aptos do que os últimos e as características
distintivas que impulsionaram o primeiro a ser apto são seleccionadas em detrimento das
características deste último. Com o tempo, toda a população do ecossistema evolui de for-
ma a conter os indivíduos que, em média, são mais aptos do que os de gerações anteriores
da população, porque eles apresentam mais dessas características que tendem a promover a
sobrevivência [53].

6 processos que dependem das leis do acaso.


49 / 119
A CE incorpora estes princípios evolutivos em algoritmos que podem ser utilizados para
procurar as melhores soluções para um problema. Num algoritmo de pesquisa estão dispo-
níveis uma série de possíveis soluções para um problema e a tarefa é encontrar a melhor
solução possível num determinado período de tempo. Para um espaço de busca com ape-
nas um pequeno número de soluções possíveis, todas as soluções podem ser examinadas em
uma quantidade razoável de tempo e uma óptima encontrada. Entretanto, esta pesquisa
exaustiva rapidamente se torna impraticável como o aumento do tamanho do espaço de
busca. Algoritmos de pesquisa tradicionais pesquisam o espaço de busca por uma solução,
da cada vez, na esperança de encontrar a solução ideal. O aspecto principal que distingue
um algoritmo de pesquisa evolutiva de tais algoritmos tradicionais é que é de base popula-
cional. Através da adaptação de gerações sucessivas de um grande número de indivíduos,
um algoritmo evolutivo realiza uma pesquisa eficiente dirigida. Pesquisa evolutiva é geral-
mente melhor do que a pesquisa aleatória [53].

A CE começou aplicando ideias da teoria da evolução biológica na computação e continua


com atenção aos novos achados de pesquisas biológicas em busca de inspiração [53].

Segundo Engelbrecht [52] foram desenvolvidas diferentes classes de Algoritmos Evolutivos:

- Algoritmos Genéticos que modelam a evolução genética;

- Programação Genética que é baseada em AG, mas os indivíduos são programas


(representados como árvores);

- Programação Evolutiva que é derivada da simulação de comportamento adaptativo


em evolução (evolução fenotípica);

- Estratégias de Evolução que são orientadas para a modelação dos parâmetros que
controlam as variações da evolução, ou seja, a evolução da evolução;

- Evolução Diferencial que é similar aos AG diferindo no mecanismo de reprodução


utilizado;

- Evolução Cultural que modela a evolução da cultura de uma população e como a


cultura influencia a evolução genética e fenotípica dos indivíduos;

50 / 119
- Co-evolução onde inicialmente indivíduos com capacidades reduzidas evoluem
através da cooperação ou concorrência uns com os outros, adquirindo as caracterís-
ticas necessárias para sobreviver.

Outros aspectos da evolução natural também foram modelados. Por exemplo, a extinção
em massa e AG Distribuídos (ilhas), onde diferentes populações são mantidas praticamente
isoladas, com a evolução genética a ter lugar em cada população. Além disso, aspectos
como a migração entre as populações são modelados. A modelação do comportamento de
parasitas e vírus também contribuiu para a melhoria das técnicas evolucionárias. Neste
caso, os parasitas ou vírus infectam indivíduos. Aqueles indivíduos que são demasiado fra-
cos morrem. Por outro lado, a imunologia tem sido utilizada para estudar a evolução dos
vírus e como os anticorpos devem evoluir para matar infecções por vírus [52].

4.1.1. Vantagens e Aplicações da Computação Evolutiva


As técnicas de CE têm atraído, nas últimas duas décadas, atenção como método de optimi-
zação. Do ponto de vista da optimização, a principal vantagem das técnicas de CE é que
não têm muita necessidade de modelar matematicamente o processo a optimizar nem o
método de optimização. Tudo o que precisamos é de uma avaliação da função objectivo.
Como resultado, são aplicados a problemas não-lineares, definidos em espaços de pesquisa
discreta, contínua ou mista, restrita ou irrestrita. As aplicações da CE incluem os seguintes
campos [53]:

- medicina (por exemplo, na detecção de cancro da mama),

- engenharia de aplicação (incluindo produção eléctrica, mecânica, civil, aeronáutica


e robótica),

- problema do caixeiro viajante,

- inteligência das máquinas,

- sistemas profissionais,

- redes de comunicação sem fios,

- e assim por diante.

51 / 119
Muitas actividades envolvem problemas não-estruturados da vida real que são difíceis de
modelar uma vez que exigem vários factores invulgares. Certos problemas de engenharia
são de natureza complexa: problemas de planeamento de horários, PCV, entre outros. Para
todas estas aplicações a CE fornece uma solução quase ideal no final de uma execução de
optimização. Os Algoritmos Evolutivos são flexíveis e relativamente fáceis de cruzar com
heurísticas dependentes do domínio, facto que os torna eficientes [53].

Segundo Sivanandam [53] a CE apresenta as seguintes vantagens:

- simplicidade conceptual – uma das principais vantagens da CE é que é conceptu-


almente simples. O algoritmo consiste na inicialização, a variação iterativa e selec-
ção da função de desempenho. A eficácia de um algoritmo evolutivo depende da
variação e selecção dos operadores aplicados a uma representação escolhida e da
inicialização.

- ampla aplicabilidade – os algoritmos evolutivos podem ser aplicados a todos os pro-


blemas que podem ser formulados como problemas de optimização de função. Para
resolver estes problemas exige uma estrutura de dados para representar e avaliar
soluções. Os algoritmos evolutivos são desenvolvidos de modo adaptável. Isso faz
com que a CE possa ser aplicada a grandes áreas.

- capacidade híbrida – os Algoritmos Evolutivos podem ser combinados com outras


técnicas de optimização tradicional. A CE pode ser utilizada para optimizar o de-
sempenho das redes neurais, sistemas fuzzy, sistemas de produção, entre outros.

- paralelismo – a evolução é um processo altamente paralelo. Quando o processa-


mento distribuído se tornar mais visível, haverá um aumento do potencial para a
aplicação de CE em problemas reais mais complexos. Geralmente as soluções indi-
viduais são avaliados de forma independente das avaliações atribuídas às soluções
concorrentes. A avaliação de cada solução pode ser tratada em paralelo e a selecção
requer apenas uma operação em série. Com efeito, o tempo de execução necessári-
os para uma aplicação pode ser inversamente proporcional ao número de processa-
dores. Além disso, as máquinas de computação actuais fornecem velocidade com-
putacional suficiente para gerar soluções para problemas difíceis, em tempo razoá-
vel.

52 / 119
- robusto a mudanças dinâmicas – Os métodos tradicionais de optimização não são
robustos a mudanças dinâmicas no ambiente e requerem um re-início completo
para fornecer uma solução. Ao contrário, a CE pode ser usada para adaptar as so-
luções às novas circunstâncias. A população de soluções geradas fornece uma base
para continuar o melhoramento e em muitos casos, não é necessário reinicializar a
população de forma aleatória. Este método de adaptação em face de um ambiente
dinâmico é uma vantagem fundamental.

4.1.2. Algoritmos Genéticos


A CE surgiu em 1960 por Ingo Rechenberg no trabalho "Estratégias de Evolução". Essa
ideia foi então desenvolvida por outras pesquisas. Os Algoritmos Genéticos (AG) foram in-
ventados por John Holland que desenvolveu essa ideia no seu livro "A adaptação em siste-
mas naturais e artificiais" no ano de 1975. Holland propôs os AG como um método heurís-
tico baseado em "A sobrevivência do mais apto". Os AG tornaram-se uma ferramenta útil
para a pesquisa e os problemas de optimização [53]. Entre as técnicas evolutivas, os AG são
o grupo mais alargado de métodos que representam a aplicação de ferramentas evolutivas.
Eles contam com o uso de uma selecção, cruzamento e os operadores de mutação. A subs-
tituição ocorre geralmente por gerações de novos indivíduos [53].

Intuitivamente um AG prossegue criando sucessivas gerações de indivíduos cada vez mais


aptos através da aplicação de operações muito simples. A pesquisa é guiada apenas pelo
valor de aptidão associado a cada indivíduo da população. Esse valor é usado para classifi-
car os indivíduos em função da sua aptidão relativa para solucionar o problema [53].

a)História
Charles Darwin afirmou a teoria da evolução natural na origem das espécies. Ao longo de
várias gerações, os organismos biológicos evoluem com base no princípio da selecção natu-
ral "sobrevivência do mais apto" para chegar a determinadas tarefas notáveis. São exem-
plos as formas corporais perfeitas do albatroz que traduzem a eficiência, a semelhança en-
tre tubarões e golfinhos e assim por diante, que reflectem as realizações da evolução aleató-
ria sobre a inteligência. Assim, ela funciona tão bem na natureza, tornando-se interessante
simular a evolução natural e desenvolver um método computacional, que sirva para resol-
ver problemas de optimização de busca [53].

53 / 119
Na natureza, um indivíduo da população está em constante concorrência com os outros
pelos recursos, como fontes de alimento, abrigo e assim por diante. Também na mesma
espécie, os indivíduos competem para atrair parceiros para reprodução. Devido a esta se-
lecção, indivíduos com desempenho insatisfatório têm menos hipóteses de sobreviver e os
mais adaptados ou aptos produzem um número relativamente grande de descendentes.
Também pode notar-se que durante a reprodução, uma recombinação das boas caracterís-
ticas de cada antepassado pode produzir descendência cuja aptidão é maior do que a de
um pai. Depois de algumas gerações, as espécies evoluem espontaneamente para tornar-se
mais e mais adaptadas ao seu ambiente [53].

b)Algoritmos Genéticos na Actualidade


Os AG são actualmente os modelos computacionais evolutivos mais importantes e mais
amplamente utilizados nos sistemas de vida artificial. Estes modelos descentralizados forne-
cem uma base para a compreensão de muitos outros sistemas e fenómenos do mundo [53].

c)Algoritmos Genéticos – Noções Básicas


Evolução através da selecção natural numa população de indivíduos escolhidos aleatoria-
mente pode ser pensada como uma busca através do espaço de valores possíveis de cromos-
somas. Nesse sentido, um algoritmo evolutivo é uma pesquisa estocástica de uma solução
óptima para um dado problema [52].

Ao longo dos anos foram desenvolvidos diversos AG contudo, apesar das diferenças entre
eles, todos seguem os mesmos princípios básicos. Seguidamente são apresentados alguns
desses princípios, bem como algumas noções básicas dos mesmos.

(i)Aptidão
O cálculo dos valores de aptidão é conceptualmente simples, embora possa ser muito
complexo de implementar de forma a optimizar a eficiência da pesquisa do AG no
espaço do problema [54]. O aptidão de um indivíduo num AG é o valor de uma fun-
ção objectiva para o seu fenótipo. Para o cálculo da aptidão, o cromossoma tem de
ser primeiro descodificado e avaliado. O aptidão indica, não só se uma solução é boa
ou não, mas também a proximidade desta da solução ideal [53].

(ii)Indivíduos
Um indivíduo é uma solução única. O indivíduo agrupa duas formas de soluções:

- o cromossoma - matéria-prima, a informação genética;


54 / 119
- o fenótipo - expressão do cromossoma, em termos do modelo.

Um cromossoma está subdividido em genes. Um gene é a representação de um único


factor de controle. Cada factor no conjunto solução corresponde ao gene no cromos-
soma. Um cromossoma deve de alguma forma conter informações sobre a solução
que ele representa. A função morfogênese associa cada genótipo com o seu tipo de
fenótipo. Significa simplesmente que cada cromossoma tem de definir uma solução
única, mas isso não significa que cada solução é codificada por exactamente um cro-
mossoma [53].

(iii)População
A população é uma colecção de indivíduos. A população é composta por uma série
de indivíduos, os parâmetros que definem o fenótipo dos indivíduos e algumas infor-
mações sobre o espaço de busca [53].

A utilização dos AG depende da definição de seis importantes questões: representação dos


cromossomas, função de selecção, iniciação, operadores genéticos responsáveis pela função
de reprodução, critério de paragem e a função de avaliação [55].

(i)Representação dos cromossomas


Um cromossoma representa um indivíduo da população, sendo que uma população é
um conjunto finito de indivíduos. O esquema de representação determina como o
problema é estruturado, determinando também como os operadores genéticos são
usados. Cada indivíduo é composto por uma sequência de genes de um determinado
alfabeto. Um alfabeto pode ser constituído por dígitos binários (0 e 1), números, sím-
bolos (a,b,c,d,..), matrizes, entre outros [55].

(ii)Função de selecção
A selecção de indivíduos para produzir sucessivas gerações tem um papel muito im-
portante nos AG. É efectuada uma selecção probabilística, baseada na aptidão dos
indivíduos, de forma a que os indivíduos mais aptos tenham maior probabilidade de
serem seleccionados. Um indivíduo da população pode ser seleccionado mais que
uma vez, sendo que todos os indivíduos tem hipótese de serem seleccionados como
reprodutores da próxima geração. Existem vários esquemas de selecção: selecção por
roleta e suas extensões, técnicas de dimensionamento, torneio, modelos elitistas e mé-
todos de ranking [55].

55 / 119
(iii)Operadores Genéticos
Os operadores genéticos oferecem os mecanismos básicos de pesquisa dos AG. Os
operadores são usados para criar novas soluções baseadas em soluções existentes na
população. Existem dois tipos básicos de operadores: mutação e cruzamento. O ope-
rador mutação altera um indivíduo de forma a produzir uma nova solução singular.
O operador cruzamento selecciona dois indivíduos, com os quais produz dois novos
indivíduos. A aplicação destes dois tipos básicos de operadores e seus derivados de-
pende da representação utilizada para o cromossoma [55].
1.8 Genetic Operators 27

a) 1 1 1 0 0 1 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0

0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0

b) 0.2 0.6 1.2 3.0 0.8 2.4 0.6 0.4 0.6 1.0 3.0 0.8 2.2 0.6

0.4 0.4 1.0 3.4 0.6 2.2 0.6 0.2 0.4 1.2 3.4 0.6 2.4 0.6

c) 0.2 0.6 1.2 3.0 0.8 2.4 0.6 0.3 0.5 1.1 3.2 0.7 2.3 0.6

0.4 0.4 1.0 3.4 0.6 2.2 0.6 e)

d) A B C D E F G G F C D B A E

E B C D G F A E

Figure 1.11 Examples of crossover operators. a) one-point; b) uniform; c) arithmetic;


Figura
d) for sequences; 1 -trees.
e) for Representação gráfica de vários tipo de cruzamento [56].

Cruzamento de um ponto pode ser aplicado a representações discretas e de valores


reais. É constituído por uma selecção aleatória de um ponto de cruzamento em cada
However, it is not straightforward to tell whether it is effective in isolating
um dos dois arrays chunks
and recombining e pela troca do material
of genomes genéticotodos
that correspond dois indivíduos
a subsolution of the em torno
phenotype. In that case, genetic recombination may amount to a large ran-
deste ponto (figura 1, a). Cruzamento multi-ponto consiste em seleccionar aleatoria-
dom mutation and have a deleterious effect on the fitness of the individual.
menteTo múltiplos (n)ispontos
check if that deone
the case, cruzamento
may compare nosatdois arrays
every e trocar
generation theoaverage
material genético
and best fitness values of genetically recombined individuals with those of
dos dois indivíduos entre os pontos [56].
other individuals in the population. If recombined individuals report con-
sistently lower fitness values, crossover operates as a large random mutation
Paraandrepresentações
consequently pde valoresbe reais
c should set to pode-se
zero. também escolher entre o cruzamento
ONE - POINT One-point crossover can be applied to discrete and real-valued representa-
uniforme e o aritmético. Cruzamento uniforme consiste em trocar o conteúdo gené-
tions. It consists of randomly selecting a crossover point on each of the two
tico strings
de n posições
and swappingdas duas sequências
genetic genéticas
material between theescolhidas
individualsao acasothis
around (figura 1, b).
point (figure 1.11, a)). Multipoint crossover consists of randomly selecting n
Cruzamento aritmético, por sua vez, cria um único genótipo, tomando a média das n
crossover points on the two strings and exchanging genetic material that falls
between these points.
For real-valued representations one may also choose between uniform and
56 / 119 arithmetic crossover. Uniform crossover consists of exchanging the genetic
UNIFORM

ARITHMETIC content at n randomly chosen positions (figure 1.11, b)). Arithmetic crossover
posições escolhidas aleatoriamente das duas sequências genéticas [56], originando
uma nova sequência genética (figura 1, c).

Quando o genótipo representa uma sequência, o operador cruzamento deve respei-


tar mais restrições. Por exemplo, no caso do PCV deseja-se alterar a ordem pela qual
cada cidade é visitada, garantindo que todas as cidades são visitadas e que nenhuma
cidade seja visitada duas vezes. Portanto, cada genótipo deve conter todos os símbolos
que correspondem a todas as cidades e não deve conter múltiplas instâncias do mes-
mo símbolo. O operador cruzamento cria um genótipo, contendo uma parte selecci-
onada aleatoriamente de um array e preencher os espaços restantes com os locais res-
tantes organizados na ordem que aparece na outra sequência (figura 1, d). Para re-
presentações baseadas em árvores, o cruzamento selecciona aleatoriamente um nó
em cada um dos pais e troca a duas sub-árvores correspondentes (figura 1, e) [56].
1.9 Evolutionary Measures 29

Figure 1.12 Example of mutations. a) Toggling a binary position; b) Adding a ran-


Figura 2 - Representação gráfica de vários tipos de mutações [56].
dom value to a position in real-valued representations; c) Swapping the contents of
two positions in a sequence representation; d) for trees.
Na representação binária a mutação consiste em alternar os valores de bits seleccio-
nados (figura 2, a). Nas representações de valores reais, a posição seleccionada é mo-
refers to individuals, not to positions in the genotype. In tree-based repre-
dificada pela adição
sentations, de um
mutation valorinaleatório
consists determinado
changing the content of aaselected
partir de uma
node distribuição
with
another element from the same set (figure 1.12, d)). If the selected node is a
Gaussiana N (m, σ), onde m é a média e σ é a variância, a fim de produzir algumas
terminal, it will be replaced by another element randomly chosen from the
grandes mutações
terminal set. If(figura 2,isb).
the node Nas representações
a function, que descrevem
it will be replaced sequências, como
by another element
randomly chosen from the subset of functions in the function set that have
no exemplo do PCV, a mutação consiste em trocar o conteúdo de duas posições esco-
the same number of terminals.
lhidas aleatoriamente no genótipo do indivíduo (figura 2, c). Neste último caso, a
probabilidade
1.9 de mutação
Evolutionary refere-se a indivíduos e não a posições no genótipo. Nas
Measures
representações baseadas em árvores, a mutação consiste em alterar o conteúdo de um
FITNESS LANDSCAPE The evolutionary search space is often described as a fitness landscape, which
nó seleccionado com outro
can be visualized elemento do mesmo
as a multidimensional conjunto
surface obtained(figura 2, d). Seao nó selec-
by associating
fitness value to all possible individuals that can be obtained from the genetic
57 / 119
representation (figure 1.13). Since it is impossible to sample all possible indi-
viduals for any realistic problem, in practice one considers a few hundred or
thousand genotypes generated by randomly sampling the genetic represen-
tation. For the sake of visualization, often fitness landscapes are collapsed
to a two-dimensional graph where all sampled individuals are lined on the
same axis according to some ordering criterion (for example, string distance
or sampling order). If most of the fitness values are equal or zero, the evolv-
cionado é um terminal, ele será substituído por um outro elemento escolhido aleato-
riamente a partir do terminal. Se o nó é uma função, ele será substituído por um ou-
tro elemento escolhido aleatoriamente a partir do subconjunto de funções pertencen-
te ao conjunto de funções que tem o mesmo número de terminais [56].

(iv)Inicialização
Os AG necessitam de uma população inicial para a sua execução. O método mais
comum é a geração aleatória de soluções para toda a população. Contudo, como os
AG melhoram as soluções existentes a cada iteração, na população inicial podem ser
inseridas potenciais soluções, sendo os restantes elementos gerados aleatoriamente
[55].

(v)Critério de paragem
O AG, de geração para geração, selecciona e reproduz “pais” até que em critério de
paragem seja atingido. O critério de paragem mais utilizado é a especificação de um
número máximo de gerações. Outro critério de paragem envolve um critério de con-
vergência. De uma forma geral os AG influenciam a população a convergir para uma
solução única. Quando a soma dos desvios entre indivíduos assume valores inferiores
a um limiar, ou valor específico, o algoritmo pode ser terminado. Outro critério de
paragem pode ser a falta de melhoria da melhor solução num determinado número
de gerações. Alternativamente também é possível definir um valor alvo para a medi-
da de avaliação como critério de paragem. Várias estratégias podem ser usadas em
conjunto umas com as outras [55].

(vi)Funções de avaliação
Podem ser usadas várias funções de avaliação nos AG, desde que respeite o requisito
mínimo de que a função seja capaz de mapear a população num conjunto parcial-
mente ordenado. Como referido anteriormente a função avaliação é independente
do AG [55].

4.2. Inteligência Colectiva

Colónias de insectos sociais são capazes de alcançar tarefas muito complexas. Essas tarefas
são alcançadas sem uma inteligência que os rege. Nenhum insecto pode completar a tarefa
sozinho ou coordenar as acções dos seus colegas, mas a partir destes comportamentos dis-

58 / 119
tribuídos, simultâneos pode emergir um resultado colectivo muito complexo [57]. Desi-
gnamos este comportamento por Inteligência Colectiva (IC).

A IC é uma das principais características de muitas espécies na natureza. Rebanhos de


animais terrestres, cardumes de peixes e bandos de aves são criados como resultado de ne-
cessidades biológicas para permanecer juntos. Foi observado que, desta forma, os animais
podem às vezes confundir potenciais predadores (o predador poderia, por exemplo, con-
fundir o cardume de peixes como sendo um único animal maior). Ao mesmo tempo, os in-
divíduos quando inseridos no grupo tem mais hipóteses de sobreviver, uma vez que os pre-
dadores, geralmente, atacam um único indivíduo [58].

A IC é também uma das principais características dos insectos sociais. Os insectos sociais
(abelhas, vespas, formigas e térmitas) vivem na Terra há milhões de anos. É bem sabido
que são muito bem sucedidos na construção de ninhos e habitações mais complexas com
um contexto social. Eles também são capazes de organizar a produção. Os insectos sociais
movimentam-se, tem uma comunicação e um sistema de alerta, guerras e divisão do traba-
lho. As colónias de insectos sociais são muito flexíveis e podem-se adaptar bem às mudan-
ças do ambiente. Esta flexibilidade permite que a colónia seja robusta e organizada, apesar
das perturbações consideráveis. A comunicação entre os indivíduos de uma colónia de in-
sectos sociais já há muito que é reconhecida. Os exemplos de comportamentos interactivos
como a secreção de feromonas pelas formigas e a realização de actos específicos, induzem
outros insectos a executar as mesmas acções. Estes sistemas de comunicação entre os insec-
tos contribuem para a formação da IC das colónias de insectos sociais [58].

A IC é uma abordagem relativamente nova para a resolução de problemas que se inspira


no comportamento social de insectos e outros animais. Em particular, as formigas têm ins-
pirado uma série de métodos e técnicas entre as quais a mais estudada e a mais bem suce-
dida é a técnica de optimização de uso geral conhecida como OCF [59].

Nas secções seguintes são apresentados alguns dos algoritmos existentes de IC.

4.2.1. Optimização de Enxame de Partículas


Optimização de Enxame de Partículas é um algoritmo de optimização baseado na popula-
ção, podendo ser usado para resolver muitos problemas de optimização complexos, que são
não-lineares, não-diferenciáveis e multimodais. O valor mais proeminente da Optimização

59 / 119
de Enxame de Partículas é a sua rápida velocidade de convergência. Este algoritmo tem
sido aplicado com sucesso em muitas áreas [60].

O algoritmo de Optimização de Enxame Partículas começa com uma população de partí-


culas cujas posições representam as possíveis soluções para o problema estudado, e as velo-
cidades são inicializadas aleatoriamente no espaço de busca. A pesquisa de melhor posição
(solução) é realizada através da actualização das velocidades das partículas e posições, em
cada iteração/geração de uma forma específica. Em cada iteração, a aptidão (para soluci-
onar o problema) da posição de cada partícula é determinada e a velocidade de cada partí-
cula é actualizada tendo em conta a posição de duas posições mais aptas. A primeira é a
melhor posição (solução) que a partícula percorreu até agora, esse valor é chamado pBest.
Outro valor é a melhor posição (solução) que qualquer vizinho de uma partícula percorreu
até agora. Este valor é o melhor da vizinhança e é chamado nBest. Quando uma partícula
engloba toda a população da sua vizinhança, o melhor da vizinhança torna-se o melhor
global e é assim chamado gBest [61].

Figura 3 - Elementos fundamentais no calculo do deslocamento de uma partícula [62]

A figura 3 apresenta os elementos fundamentais para calcular o deslocamento de uma par-


tícula no espaço de busca. É através dos valores obtidos que a partícula se desloca no espa-
ço em direcção a uma possível solução para o problema.
60 / 119
No modelo básico do algoritmo de Optimização de Enxame de Partículas, um enxame de
partículas m movendo-se num espaço de busca de valores reais de dimensão D, a i-ésima
partícula é um vector de dimensão D, denominado Xi = (Xi1, Xi2,…, XID), i = 1,2,… m. A
velocidade da i-ésima partícula é o vector de dimensão D, denominado Vi = (VI1, VI2,…,
VID). Denotar a melhor posição da i-ésima partícula como Pbesti= (pi1, pi2, …, piD), e a me-
lhor posição da colónia Pbestg= (pg1, pg2, …, pgD). Cada partícula da população modifica a
sua posição e velocidade de acordo com as seguintes fórmulas [60]:

(1) vidt+1 = w ⋅ vidt + c1 ⋅ r1 ( pid − xidt ) + c2 ⋅ r2 ( pgd − xidt )

(2) xidt+1 = xidt + vidt+1

Segundo Mourelle [63], Clerc [62] e Sivanandam [53] a Optimização de Enxame de Par-
tículas pode ser aplicada, entre outras, nas seguintes áreas:

- agendamento de tarefas em redes computacionais,

- data mining,

- problema do caixeiro viajante,

- formação de redes neurais,

- problemas de planeamento de veículos,

- redes móveis,

- modelação de parâmetros optimizados,

- agendamento de processos Batch,

- problemas de optimização multi-objectivo,

- processamento de imagem e problemas de reconhecimento de padrões.

4.2.2. Optimização de Colónia de Abelhas


A Optimização de Colónia de Abelhas foi introduzida muito recentemente como uma nova
direcção no campo da IC. Tem sido aplicada ao Problema Caixeiro Viajante, bem como
ao encaminhamento e atribuição de comprimentos de onda em redes ópticas. As abelhas
artificiais representam agentes, que através da colaboração são capazes de resolver proble-
mas complexos de optimização combinatória. Cada abelha artificial está localizada na sec-
61 / 119
ção de início do processo de pesquisa e, a partir daí faz uma série de movimentos locais,
criando assim uma solução parcial. As abelhas vão adicionando componentes à solução
parcial e comunicam directamente para gerar soluções viáveis. A melhor solução descober-
ta na iteração inicial (primeira) é guardada e o processo de construção incremental de solu-
ções pelas abelhas continua através de iterações subsequentes até atingir um critério de pa-
ragem [58].

4.2.3. Optimização Colónia de Formigas


Os comportamentos complexos que surgem a partir de colónias de formigas têm intrigado
os seres humanos, tendo sido realizados muitos estudos sobre as colónias de formigas que
visam uma melhor compreensão desses comportamentos colectivos. Os comportamentos
colectivos que foram estudados incluem a busca de alimento, divisão do trabalho, organi-
zação do cemitério, cuidados com a prole e construção de ninhos [52].

Os algoritmos de colónias de formigas são cada vez mais populares, como sejam para re-
solver problemas de optimização combinatória [38].

A OCF é actualmente usada com sucesso como sistema multiagente para resolver proble-
mas de optimização difíceis, como o PCV, a atribuição quadrática, planeamento de veícu-
los, entre outros [64].

A OCF baseia-se no comportamento das formigas durante a procura de alimentos. Tem


dois conceitos que consistem na selecção probabilística de formigas artificiais e a evapora-
ção de feromonas. A OCF foi aplicada, originalmente, para resolver problemas do caminho
mais curto num gráfico. As formigas são conhecidas por se deslocarem, primeiramente, ao
acaso. Assim, por exemplo, dada a escolha entre dois percursos, as formigas vão escolher
caminhos alternativos aleatoriamente, com a mesma probabilidade. No entanto, essas pro-
babilidades são alteradas com a presença de feromonas, substâncias químicas excretadas
pelas formigas, que funcionam como sinal para que outras formigas as sigam [36].

Quantas mais formigas percorrerem um determinado percurso, mais a intensidade das fe-
romonas é reforçada, levando a que ainda mais formigas sigam esse percurso. Com o tem-
po, a feromona dos percursos menos percorridos vai-se evaporando pois não é reforçada,
levando a que as formigas acabem por percorrer preferencialmente apenas o melhor per-

62 / 119
curso. Na figura 4 encontra-se representado este comportamento das formigas quando na
presença de um obstáculo.

Figura 4 - Comportamento natural das formigas perante um obstáculo [65]

Portanto, a OCF foi originalmente usada para resolver o problema do caminho mais curto.
Na experiência dos dois caminhos, as formigas que chegam primeiro ao ponto de escolha
entre os caminhos, encontram um percurso sem marcação por feromonas. Nestas circuns-
tâncias metade das formigas escolhe um caminho e a outra metade das formigas escolhem
o outro. No entanto, as formigas que aleatoriamente escolheram o caminho mais curto re-
gressam mais rápido do que aquelas que escolheram o caminho mais longo. Deste modo o
caminho mais curto será reforçado com mais feromonas, antes do percurso mais longo. Isso
faz com que as formigas que chegam a seguir ao ponto de escolha escolham o caminho
mais curto, uma vez que tem uma presença mais forte de feromonas. Assim, o caminho
mais curto rapidamente ganha sucessivamente uma concentração maior de feromonas,
como resultado da nova preferência das formigas seguintes. A convergência ocorre rapi-
damente e em breve muito poucas formigas seguem o caminho mais longo [36]. Essa for-
ma simples de comunicação indirecta entre as formigas funciona como uma espécie de me-
canismo de aprendizagem colectiva [66].

63 / 119
O primeiro passo para essa implementação é investigar diferentes parâmetros que afectam
os resultados da OCF utilizando simulação computadorizada e encontrar uma relação en-
tre as propriedades químicas da feromona, o número de formigas e do desempenho do al-
goritmo (isto é, de que forma a solução obtida se aproxima da solução real) [67].

Figura 5 - Algoritmo Genérico Baseado em Formigas [79]

Na figura 5 é apresentado o funcionamento genérico de um algoritmo baseado em formi-


gas. Basicamente existem dois passos num algoritmo baseado em formigas: Inicialização e
Iteração. A Inicialização atribui o valor inicial da feromona às ligações. Neste passo todas
as ligações possuem um valor igual. No segundo passo, Iteração, é determinada para cada
formiga a respectiva rota e actualizada a feromona de acordo com o percurso escolhido.
Este processo é executado até ter sido atingido um dos critérios de paragem.

a)Principais Algoritmos de Optimização de Colónia de Formigas


Nesta secção são apresentados alguns dos algoritmos OCF existentes. Apesar de origina-
rem do mesmo conceito, cada um possui características próprias.

(i)Sistema de Formigas
Segundo [59] a principal característica do Sistema de Formigas é que, a cada itera-
ção, os valores da feromona são actualizados por todas as m formigas que construí-
ram uma solução na iteração. A feromona τij, associada à aresta que liga as cidades i
e j, é actualizada do seguinte modo:

m
(3) τ ij ← (1 − ρ )iτ ij + ∑ Δτ ijk
k =1

Δτ ijk
onde ρ é a taxa de evaporação, m é o número de formigas, e é a quantidade de
feromona prevista na aresta (i, j) pela formiga k assume os seguintes valores :

64 / 119
⎧⎪ Q , se a formiga k usou a aresta (i, j ) no seu trajecto
(4) Δτ = ⎨ Lk
k
ij
⎪⎩
0 , caso contrário

onde Q é uma constante e Lk é o comprimento do percurso construído pela formiga k.


Na construção de uma solução as formigas seleccionam a cidade seguinte através de
um mecanismo estocástico. Quando a formiga k está na cidade i e construiu até ago-
ra a solução parcial Sp, a probabilidade de ir para a cidade j é dada por:


β
τ ijα •ηij
, se cij ∈N (S p )
⎪∑ α β
p τ il •ηil
(5) pijk = ⎨ cil ∈N ( S )
⎪0 , caso contrário

onde N(SP) é o conjunto de componentes possível, isto é, os arcos (i,l), onde l é uma
cidade ainda não visitada pela formiga k. Os parâmetros α e β controlam a impor-
tância relativa das feromonas contra as informações heurísticas ηij, que são dadas
por:

1
(6) ηij =
dij

onde dij é a distância entre as cidades i e j.

(ii)Sistema de Formigas Max-Min


Segundo [59] os elementos que caracterizam o Sistema de Formigas Max-Min são
que apenas a melhor formiga actualiza o rasto de feromonas e que o valor da fero-
mona é delimitado. A actualização da feromona é aplicada da seguinte forma:

τ max
(7) τ ij ← ⎡⎣(1 − ρ ) • τ ij + Δτ ijbest ⎤⎦τ
min

onde τmax e τmin são, respectivamente, o limite superior e inferior impostos à feromona,
o operador [ x ]b é definido por:
a

65 / 119

⎪ a , se x > a
⎪⎪
(8) [ x ]ba = ⎨ b , se x > b

⎪ x , caso contrário
⎪⎩

e Δτ ijbest é:

⎧ 1
⎪ , se (i, j) pertence ao melhor percurso
⎪ Lbest

(9) Δτ ijbest =⎨
⎪ o , caso contrário

⎪⎩

onde L é o comprimento do percurso da melhor formiga. Isso pode ser (de acordo
com a decisão de quem desenvolve o algoritmo) ou o melhor caminho encontrado na
corrente iteração (Lib) ou a melhor solução encontrada desde o início do algoritmo
(Lbs), ou uma combinação de ambos.

(iii)Sistema de Colónia de Formigas


Segundo [59] a contribuição mais interessante do Sistema de Colónia de Formigas é
a introdução de uma actualização de feromona local, além da actualização da fero-
mona realizada ao final do processo de construção (chamada de actualização de fe-
romona “offline”). A actualização da feromona local é realizada por todas as formi-
gas após cada etapa de construção. Cada formiga apenas o aplica à ultima aresta visi-
tada:

(10) τ ij = (1 − ϕ ) • τ ij + ϕ • τ 0

onde φ é o coeficiente de enfraquecimento da feromona, e τ0 é o valor inicial da fe-


romona. O principal objectivo da actualização local é a diversificação da pesquisa
realizada pelas formigas seguintes durante a iteração: diminuindo a concentração de
feromona nos arcos já visitadas, desta forma incentivando outras formigas para esco-
66 / 119
lher outros arcos e, portanto, para produzir soluções diferentes. Isso torna menos
provável que várias formigas produzem soluções idênticas durante uma iteração.

A actualização ” offline” da feromona, à semelhança do Sistema de Formigas Max-


Min, é aplicada no final de cada iteração por uma única formiga, que pode ser o me-
lhor percurso da iteração ou o melhor percurso encontrado até ao momento. No en-
tanto, a fórmula de actualização é ligeiramente diferente:


(1 − ρ ) • τ ij + ρ • Δτ ij , se (i, j) pertencer ao melhor percurso
(11) τ ij ← ⎪⎨
⎪ τ ij , caso contrário

Como no Sistema de Formigas Max-Min:

1
(12) Δτ ijbest =
Lbest

onde Lbest pode ser Lib ou Lbs. Outra diferença importante entre o Sistema de Colónia
de Formigas e o Sistema de Formigas reside na regra de decisão utilizada pelas for-
migas durante o processo de construção. No Sistema de Colónia de Formigas, a
chamada regra pseudo-aleatória proporcional é utilizada: a probabilidade de uma
formiga se deslocar de uma cidade i a uma cidade j depende de uma variável aleató-
ria q uniformemente distribuída no intervalo [0, 1], e um parâmetro q0; se q ≤ q0, en-
tão :

(13) j = arg max c


il ∈N (S p ) {τ η }
il
β
il

caso contrário é utilizada a mesma equação que é utilizada no Sistema de Formigas,


ou seja, a equação:


β
τ ijα •ηij
, se cij ∈N (S p )
⎪∑ α β
p τ il •ηil
(14) pijk = ⎨ cil ∈N ( S )
⎪0 , caso contrário

67 / 119
d)Aplicações da Optimização de Colónia de Formigas
Desde sua introdução na década de 1990, os algoritmos OCF tem sido aplicados a muitos
problemas de optimização. Primeiro, problemas clássicos tais como problemas de atribui-
ção, problemas de escalonamento ou planeamento de veículos, foram abordados. Aplica-
ções mais recentes incluem, por exemplo, problemas de colocação de células provenientes
de desenho de circuitos, desenho de redes de comunicação, problemas de bioinformática,
problemas dinâmicos de caminho mais curto decorrentes dos problemas das redes de tele-
comunicações ou problemas em optimização contínua. Nos últimos anos, alguns pesquisa-
dores também se concentraram na aplicação de algoritmos OCF para problemas multiob-
jetivo e não-estáticos [68].

De facto já estão disponíveis, várias aplicações bem sucedidas de OCF para uma ampla
gama de diferentes problemas de optimização discreta. A grande maioria dessas aplicações
são problemas “NP-hard”. O uso de tais algoritmos é muitas vezes inviável na prática, e os
algoritmos OCF podem ser úteis para encontrar rapidamente soluções de alta qualidade.
O número de aplicações bem sucedidas de problemas académicos tem motivado as pessoas
a adoptarem OCF para a solução dos problemas industriais, provando que essa técnica de
inteligência computacional também é útil em aplicações do mundo real [59].

(i)Aplicações em Problemas NP-hard


A abordagem usual para mostrar a utilidade de uma nova técnica de meta-heurística
é aplicá-la a um número de diferentes problemas e comparar seu desempenho com o
de técnicas já disponíveis. No caso da OCF, este tipo de investigação consistiu inici-
almente em testar os algoritmos no PCV. Posteriormente, outros problemas NP-hard
também foram considerados. Muitos dos problemas enfrentados podem ser inseridos
numa das seguintes categorias: problemas de encaminhamento (por exemplo, na dis-
tribuição de mercadorias, problemas de atribuição, onde um conjunto de itens (objec-
tos, actividades, etc.) tem de ser atribuídos a um determinado número de recursos
(locais, agentes, etc.), sujeita a algumas restrições), problemas de planeamento, que
em sentido mais amplo, estão preocupados com a alocação de recursos escassos para
tarefas ao longo do tempo, e problemas subconjunto, onde a solução de um problema
é considerado pela selecção de um subconjunto de itens disponíveis. Além disso, a
OCF foi aplicada com sucesso a outros problemas emergentes em domínios como a
aprendizagem máquina e bioinformática [59].

68 / 119
Comum a muitos desses aplicativos está o facto de os algoritmos OCF com melhor
desempenho fazerem uso intensivo da fase de pesquisa local opcional da meta-heurís-
tica OCF. Isso normalmente é muito eficaz, pois, por um lado, as soluções construí-
das pelas formigas podem muitas vezes ser melhoradas através de um algoritmo de
pesquisa local adequado, por outro lado, gerando soluções iniciais que permitam a
convergência dos algoritmos. Por outro lado, resultados experimentais mostram que o
processo probabilístico, adaptativo de geração de soluções da OCF é particularmente
adequado para esta tarefa [59].

Segundo Dorigo [59] os algoritmos de OCF podem ser utilizados para solucionar,
entre outros, os seguintes problemas:

- Problema do Caixeiro Viajante [69] [70] [71] [72],

- planeamento de transportes [73] [74],

- ordenação sequencial [75],

- atribuição quadrática [71] [76],

- planeamento de horários [77] [78],

- planeamento de projetos [79],

- cumprimento de restrições [80],

- regras de classificação [81] [82],

- redes bayesianas [83] [84].


O resultado global que emerge destas aplicações é que, para muitos problemas, os
algoritmos de OCF produzem resultados que são muito próximos aos dos algoritmos
de melhor desempenho, sendo que em alguns problemas são os melhores. Estes últi-
mos incluem o problema ordenação sequencial, algumas variantes de problemas de
planeamento de veículos, problemas de classificação, e outros [59].

69 / 119
70 / 119
5
‹‹Um bom começo é a metade.››

Aristóteles

5.CASO DE ESTUDO

Neste capítulo são apresentados formalmente o problema a ser resolvido, o algoritmo pro-
posto, bem como alguns exemplos de teste/validação, solucionados pelo mesmo. A solução
apresentada, baseada no algoritmo OCF, satisfaz as exigências primárias do problema,
sendo que poderá ser continuado para a satisfação de mais exigências práticas, como sejam
a utilização de múltiplos veículos. Os resultados dos testes efectuados, tendo em conta a
alta complexidade dos problemas de teste, mostram ser este método capaz de solucionar o
problema, com resultados muito satisfatórios. Neste trabalho, o método proposto é capaz
de indicar uma rota que permita a entrega/recolha dos elementos utilizando um único veí-
culo, de forma óptima.

Nas secções seguintes são apresentados, respectivamente, o problema, a abordagem pro-


posta para o mesmo, uma descrição detalhada do algoritmo proposto, os testes realizados e
a discussão dos resultados obtidos.

71 / 119
5.1. Caracterização do Problema

O algoritmo apresentado nesta dissertação surge devido á necessidade, por parte da Asso-
ciação de Assistência de Nossa Senhora das Candeias (AANSC), de efectuar o planeamen-
to dos seus veículos de forma mais eficiente e mais rápida.

A Associação de Assistência Nossa Senhora Das Candeias (AANSC) é uma Instituição Par-
ticular de Solidariedade Social (IPSS) cuja história remonta a 1965. Situada na freguesia de
Canelas, concelho do Peso da Régua iniciou a sua actividade por iniciativa dum punhado
de pessoas boas da terra, através da distribuição de leite da Caritas pelas crianças da Al-
deia, tentando assim minorar o elevado índice de mortalidade infantil da época e a inexis-
tência de abastecimento local de leite. Em 6 de Setembro de 1966 viu aprovados os seus
estatutos, desde aí e até à actualidade passou por várias mudanças, agora esta IPSS possui
entre outros edifícios a casa Sede onde presta assistência às crianças da localidade, possui
um outro edifício que serve de apoio a respostas sociais direccionadas para a Terceira Ida-
de e possui também um parque, o Parque da Porta dos Cavaleiros que enriquece e embele-
za esta instituição.

Actualmente a AANSC possui 20 funcionários, dos quais três quadros superiores a tempo
inteiro visando colmatar as necessidades da população prestando apoio as famílias, através
das seguintes respostas sociais:

- Serviço de Apoio ao Domiciliário,

- Centro de Convívio,

- Creche,

- Ensino pré-escolar,

- Espaço internet.

Muitas das crianças que frequentam a creche e o ensino pré-escolar da Associação de Assis-
tência Nossa Senhora das Candeias são transportadas num autocarro da instituição. Actu-
almente o planeamento das rotas do transporte destas crianças é efectuado de forma ma-
nual, contudo devido ao elevado número de locais bem como as restrições impostas torna-
se necessário o recurso ao processamento computacional.
72 / 119
Segundo dados fornecidos pela AANSC existem 79 locais de recolha/entrega de crianças
(consultar apêndice A). Os locais encontram-se dispersos por uma vasta área. Dado ainda o
facto de se tratar de transporte de crianças, existe a necessidade destas passarem pouco
tempo em viagem, restrição esta, que dificulta fortemente o planeamento dos transportes.
Para além de aumentar o conforto das crianças, a instituição pretende também reduzir os
custos associados ao transporte.

5.1.1. Restrições do problema


O problema abordado possui algumas restrições que devem ser contempladas pelo algo-
ritmo. As restrições são: intervalos de tempo, número de veículos, duração da viagem, ele-
mentos recolhidos e capacidade dos veículos.

(i)Intervalos de Tempo
Cada nó possui um intervalo de tempo, no qual é possível entregar/recolher o(s) ele-
mento(s) respectivo(s). Fora desse intervalo tal operação não é possível. Desta forma o
algoritmo deve apenas visitar o nó dentro desse intervalo de tempo.

(ii)Número de Veículos
Existe um número limitado de veículos para solucionar o problema. O algoritmo
deve determinar para cada veículo o melhor percurso, de forma a optimizar a utili-
zação dos mesmos.

(iii)Duração da Viagem
Apesar de não estar estabelecido um limite máximo para a duração da viagem, pre-
tende-se minimizar o tempo da mesma. Daí a necessidade de optimizar a utilização
dos veículos.

(iv)Elementos Recolhidos
Cada nó possui um número variável de elementos a entregar/recolher. Desta forma
o algoritmo deve determinar o percurso de cada veículo tendo em conta a capacida-
de do veículo. Todos os elementos devem ser entregues/recolhidos.

(v)Capacidade dos Veículos


Os veículos disponíveis possuem capacidades variadas, pelo que o algoritmo deve de-
terminar o percurso de cada veículo de acordo com a capacidade deste. Deve tam-
bém efectuar uma distribuição equilibrada dos mesmos, ou seja, não devem existir

73 / 119
veículos com capacidade máxima, ou mesmo excesso, ao mesmo tempo que existem
veículos vazios.

5.2. Abordagem com Algoritmos Genéticos

Inicialmente foi tentado a solução deste problema com recurso aos AG. Procurou-se, assim,
desenvolver um algoritmo baseado em AG capaz de solucionar o problema proposto.

Seguindo os princípios básicos dos AG desenvolveu-se um algoritmo com o objectivo refe-


rido anteriormente. Contudo devido à complexidade do problema, aliado às dificuldades
encontradas em implementar o algoritmo seguiu-se outro caminho.

Nesta secção é apresentado o algoritmo desenvolvido recorrendo aos AG.

5.2.1. Representação dos dados


O primeiro passo no desenvolvimento do algoritmo baseado em AG é definir como se re-
presentam os dados. No algoritmo optou-se por representar os dados utilizando listas liga-
das. Desta forma foram criadas três listas ligadas, uma com os dados dos veículos (vei), a
segunda com os dados dos locais (loc) e a terceira com a população (pop).

Figura 6 - Representação gráfica da lista ligada vei

Cada nó da lista vei contém os dados referentes a um veículo. Os dados incluem o modelo,
marca e capacidade do veículo, além do código do mesmo. É utilizado um código para
identificar cada veículo de forma a facilitar as pesquisas, entre outras operações. A figura 6
apresenta uma representação gráfica da lista vei.

A lista ligada loc contém a informação de cada local, incluindo a posição (coordenadas para
a representação gráfica do local), número de elementos a recolher/entregar, designação do
local, código do local e o intervalo de tempo em que é possível recolher os elementos.

74 / 119
Figura 7 - Representação gráfica da lista ligada loc

A figura 7 apresenta uma representação gráfica da lista loc. Na figura é possível observar
que um dos elementos da lista loc é um apontador para uma lista contendo o conjunto de
nós, com os quais o local possui ligação. Além do local esta lista contém também o tempo
de viagem necessário para se deslocar entre os dois locais.

Figura 8 - Representação gráfica da população, ou seja, a lista ligada pop

A lista ligada pop é o elemento principal do algoritmo, pois contém as informações referen-
tes à população. Cada nó da população representa uma população, ou seja, um conjunto
de indivíduos. O nó contém o melhor percurso e uma lista ligada (ind) contendo os indiví-
duos, sendo que cada nó da lista ind corresponde a um indivíduo. Cada nó da lista ind con-
tém uma variável apt que indica a aptidão do indivíduo e uma matriz (ms) contendo a pos-
sível solução para o problema. A figura 8 apresenta uma representação gráfica da lista pop.

75 / 119
A matriz ms tem um tamanho 2*nl, onde nl é igual ao número de locais do problema. Na
primeira linha da matriz ms estão os códigos dos locais, ou seja, o percurso percorrido. Na
segunda linha encontra-se o veículo que visitou o local. É associado o local ao veículo que o
visitou pois o planeamento é efectuado para vários veículos.

5.2.2. População inicial


Os AG são baseados na população, em que cada indivíduo da população é uma potencial
solução para o problema. Inicialmente a população é determinada de forma aleatória. No
problema abordado nesta dissertação segue-se o mesmo princípio.

Cada indivíduo é determinado de forma aleatória, mas tendo em conta as restrições impos-
tas. Desta forma é escolhido, de forma aleatória, um veículo que é adicionado à primeira
coluna da matriz ms juntamente com o código do nó inicial. Seguidamente determina-se
qual o próximo nó a visitar.

Primeiro, de todos os nós possíveis (com ligação ao nó actual), verificam-se aqueles que res-
peitam as restrições impostas, sendo posteriormente escolhido de forma aleatória um deles
e adicionado à coluna seguinte juntamente com o código do veículo. As condições impos-
tas, neste caso, dizem respeito ao intervalo de tempo do nó a visitar. Apenas é possível visi-
tar um nó e recolher o elemento do nó quando este é visitado dentro do intervalo de tempo
respectivo.

Segue-se este processo até que a capacidade do veículo seja atingida. Quando tal acontece,
é determinado o caminho de regresso ao ponto inicial recorrendo ao algoritmo de Dijkstra
[85]. Como ainda existem elementos a recolher, pois apenas um veículo não possui capaci-
dade para recolher todos os elementos, é escolhido aleatoriamente um veículo da lista de
veículos ainda não utilizados.

Para determinarmos o percurso do novo veículo segue-se o processo referido anteriormen-


te. Este processo de “encher” veículos termina quando não existirem mais elementos a re-
colher. No final do processo obtemos um indivíduo, ou seja, uma potencial solução para o
problema. São determinados tantos indivíduos quanto os definidos no inicio do algoritmo.

76 / 119
5.2.3. Determinar aptidão dos indivíduos
Para determinar a qualidade de um percurso é necessário quantificar, de alguma forma, a
performance ou aptidão do percurso. No algoritmo apenas é tido em conta o tempo da vi-
agem com forma de quantificar a aptidão do percurso, logo um percurso que demore me-
nos tempo, é mais apto para solucionar o problema. O tempo de viagem é determinado
somando o tempo que o veículo demora a mover-se de um nó para o seguinte.

Após determinar a aptidão de todos os indivíduos da população é seleccionado e armaze-


nado o indivíduo com o menor tempo, ou seja, maior aptidão para solucionar o problema.

5.2.4. Operadores genéticos


Um elemento essencial para um AG eficiente é a definição dos operadores genéticos: mu-
tação e cruzamento (crossover). O operador mutação altera um indivíduo de forma a produ-
zir uma nova solução singular. O operador cruzamento selecciona dois indivíduos, com os
quais produz dois novos indivíduos.

Neste ponto foram encontradas várias dificuldades que levaram a que se tenha abandona-
do os AG como base para solucionar o problema.

As dificuldades prendem-se com o facto de ser necessário manter a conectividade dos nós
nos processos de mutação e cruzamento. Normalmente o operador cruzamento efectua o
seguinte processo: tomando dois indivíduos, divide os indivíduos em duas ou mais partes
seguindo-se a permutação parcial dos seguimentos obtidos pela divisão. Desta forma obtém
dois novos indivíduos tendo por base os indivíduos iniciais. Neste caso temos dois proble-
mas:

- após a permutação dos segmentos podemos obter percursos em que não exista liga-
ção entre dois ou mais nós;

- após a permutação dos segmentos podemos obter percursos em que existam nós
repetidos, ou então, que o percurso não contenha todos os nós do problema.
Outro problema advém da associação dos veículos aos nós visitados. Ao efectuar-se o cru-
zamento obtém-se uma matriz em que os veículos surgem de forma intercalada.

A operação de mutação também apresenta alguns problemas (tais como: não existir ligação
entre o nó adicionado e o nó anterior e o posterior do percurso, repetição de nós num per-
77 / 119
curso), contudo estes seriam mais facilmente resolvidos. Um possível operador de mutação
poderia efectuar o seguinte processo: escolher aleatoriamente dois nós do percurso e per-
mutar os dois nós. Neste caso o problema passa, também, por manter a conectividade entre
os nós do percurso. Contudo este problema seria facilmente solúvel através da verificação
da conectividade antes da validação da permuta.

Estes problemas levaram a que a abordagem com AG se torna-se inviável, não pela impos-
sibilidade de solucionar o problema apresentado através dos AG, mas sim pela complexi-
dade da solução.

5.3. Abordagem com Optimização de Colónia de For migas

Nesta secção é descrito o funcionamento do algoritmo desenvolvido, explicando como este


encontra uma solução óptima. No desenvolvimento do algoritmo seguiram-se alguns con-
ceitos básicos da OCF, no entanto foram efectuadas algumas alterações para optimizar a
performance do algoritmo relativamente ao problema a abordar. Desta forma, em vez de
determinar o caminho mais curto entre os diversos nós, o algoritmo procura relacionar os
intervalos de tempo dos diversos nós de forma a encontrar o melhor percurso.

Quando se discute problemas de planeamento de transportes, normalmente associamos a


distâncias métricas contudo, devido à existência de intervalos de tempo, a abordagem será
efectuada tendo em conta distâncias temporais. Desta forma, o melhor caminho, não será
definido pela distancia percorrida, mas sim pelo tempo que demora a ser percorrido. A
compatibilidade dos intervalos de recolha com o tempo de passagem dos autocarros nas
paragens é outro dos problemas considerados na obtenção de soluções.

5.3.1. Representação dos dados

A colónia de formigas é representada como uma matriz, denominada at, onde cada linha
representa a rota de uma formiga. Esta matriz tem um tamanho de m*n, onde n é o núme-
ro pré-estabelecido de formigas da colónia e m é o número de nós visitados pelas formigas.
Inicialmente a matriz está vazia.

De forma a trabalhar com janelas de tempo foi criada uma matriz, denominada tw, con-
tendo os intervalos de tempo usados. A matriz tw tem um tamanho de l*c, onde c é igual a
2 e l é 2*nc, sendo que nc é o número de nós. Existem 2*nc intervalos de tempo porque cada
nó tem dois intervalos de tempo, um real e um neutro.
78 / 119
As janelas de tempo neutras tem um valor de [Ti Tf], onde Ti é o tempo inicial, e Tf é o
tempo máximo permitido para a solução e não tem associadas a recolha de qualquer pas-
sageiro. Isto significa que os intervalos neutros tem uma janela de tempo tão larga quanto o
tempo de solução. Desta forma é possível visitar um nó, a qualquer momento, através da
sua janela de tempo neutra. As janelas de tempo real têm um valor de [tmin tmax], onde
tmin e tmax representam o intervalo de tempo em que o nó pode ser visitado e o elemento
recolhido. As distâncias entre todos os nós, necessários para o cálculo da rota, estão conti-
dos numa matriz denominada tt. A matriz tt tem um tamanho de nc*nc. Esta matriz indica
o tempo de viagem entre nós.

As ligações entre nós estão representadas numa matriz mh, com um tamanho de nc*nc. Se a
posição mh(i, j) tem um valor 0, isso indica que os nós i e j não tem conexão, enquanto o
valor 1 indica a conexão entre os dois.

O número de elementos a recolher em cada nó é armazenado num vector chamado pi.


Este tem um tamanho de l, onde l é 2*nc, pela mesma razão que a matriz tw. A posição k
da matriz contém o número de elementos a recolher no nó k. Assim, da posição 1 à posição
nc deste vector não há elementos a recolher, pois corresponde às janelas de tempo neutras.
Da posição nc até 2*nc o valor corresponde ao número de elementos a recolher.

No algoritmo apresentado são utilizadas duas feromonas. Os valores das feromonas são
armazenados em duas matrizes. Uma matriz contém os valores correspondentes à feromo-
na de recolha de elementos (ph), enquanto a segunda matriz armazena os valores corres-
pondentes à feromona de regresso directo à origem (phr). Ambas as matrizes possuem um
tamanho de nw*nw, onde nw equivale a 2*nc. Desta forma são armazenados, de forma se-
parada, os valores de ligação entre janelas de tempo neutras e reais. Ambas as matrizes são
inicializadas com um valor muito pequeno (0,0001).

É feita uma distinção entre o tempo de viagem com o motor a trabalhar (tteo) e o tempo
total de viagem (tpv). Tempo total de viagem é o tempo total da solução, enquanto o tempo
de viagem com o motor ligado corresponde ao tempo em que o veículo se encontra em
movimento. Esta distinção ocorre porque é possível que o veículo possa esperar que deter-
minado nó fique disponível. Este tempo de espera é apenas adicionada ao tempo total da
viagem. No entanto, nos testes aqui apresentados, realizados com o método proposto, ape-
nas se faz uso do tempo total da viagem.
79 / 119
5.3.2. Posicionamento inicial das formigas
O primeiro passo do algoritmo é o posicionamento inicial das formigas. Normalmente este
posicionamento é feito ao acaso, no entanto, neste caso especifico todas as formigas são co-
locadas no nó 1. O nó 1 representa o ponto inicial e também o ponto final, que funciona
como depósito dos veículos. Este nó não tem qualquer elemento a recolher, o que significa
que ambas as janelas de tempo são neutras.

5.3.3. Calcular o percurso das formigas


A rota de cada formiga é determinada de forma individual. Inicialmente, a formiga encon-
tra-se no nó inicial (nó 1). O próximo nó a ser visitado é calculado tendo em conta as jane-
las de tempo dos nós com os quais o nó inicial tem conectividade. O primeiro passo é veri-
ficar a compatibilidade das janelas de tempo do presente nó com as janelas de tempo dos
nós com os quais possui conectividade. Existe conectividade entre dois nós i e j se:

(15) (twi + tvij ) ∩ tw j ≠ 0

onde twi e twj são as janelas de tempo do nó i e j, respectivamente, e tvij é o tempo de via-
gem entre os nós. Verificada a conectividade entre os nós, obtemos um conjunto de possí-
veis nós a serem visitados. O próximo nó a ser visitado é seleccionado tendo em conta,
primeiramente, dois aspectos: se este possui elementos a recolher e a folga do nó. Caso um
nó possua conectividade, o valor obtido corresponde à sua folga (gap):

(16) gap = (twi + tvij ) ∩ tw j

Desta forma um nó com uma folga mais pequena terá maior probabilidade de ser escolhi-
do. Pretende-se desta forma dar preferência aos nós que possuem um menor “espaço de
manobra”. O mesmo acontece para os nós que possuem elementos a recolher: estes possu-
em maior probabilidade de serem escolhidos que nós sem elementos a recolher.

A próximo nó a ser visitado é escolhido recorrendo a uma selecção similar à selecção por
roleta. Inicialmente é determinado, para cada nó com conectividade ao presente nó, um
valor indicativo da sua preferência, ou seja, um nó com um valor mais elevado tem prefe-
rência em relação a um com um valor mais baixo. Aos nós que não possuem ligação ao
presente nó é atribuído o valor 0, indicando desta forma que não possuem conectividade

80 / 119
com o nó actual. Os valores indicativos de preferência dos nós com conectividade ao nó k
(nó actual) é dada por:

(17) temp = (tbeta(k,:) ⋅ (gap alpha ) ⋅ e− gap2 ⋅ mh(k,:)) ⋅ (1 + pi ⋅ wpass)

Os valores são armazenados no array temp. Para determinar a os valores indicativos é ne-
cessário calcular a matriz tbeta e os arrays gap e gap2. A matriz tbeta é dada por:

(18) tbeta = phbeta

enquanto os arrays gap e gap2 são dados, respectivamente, por:

(19) gap = 1⋅ e−10 + min(max(tw(:,2) − tt(k,:),0),(tw(:,2) − tw(:,1)))

(20) gap2 = max(tw(:,2) − tt(k,:),0)

No final deste processo obtemos o array temp com os valores indicativos de preferência para
cada nó com conectividade ao presente nó. Contudo para facilitar a escolha do nó, os valo-
res contidos no array são transformados em probabilidades. Para tal é calculada uma vari-
ável s com a soma de todos os valores:

(21) s = ∑ temp

Seguidamente, para cada nó existente é calculada a sua probabilidade de acordo com os


valores obtidos anteriormente. Desta forma a probabilidade do nó x ser escolhido é dada
por:

temp(x)
(22) p[x] =
s

Após a obtenção das probabilidades é calculado um array cs com a soma cumulativa das
probabilidades. É com base no array cs que se determina qual o próximo nó a ser visitado.
Para tal é gerado aleatoriamente um número entre 0 e 1 guardado na variável rn. O pró-
ximo nó a ser visitado será o nó cuja probabilidade acumulada seja superior ao rn. O nó
seleccionado é adicionado ao percurso da formiga e o tempo do percurso é actualizado
81 / 119
somando ao valor actual o tempo de viagem entre o presente nó e o nó seguinte. Caso o nó
seguinte possua elementos a recolher e o intervalo de tempo real seja respeitado, o valor
passará para 0 no array pi, significando que os elementos desse nó foram recolhidos. Caso o
intervalo de tempo real não seja respeitado, apesar de existirem elementos a ser recolhidos,
estes não são recolhidos.

O processo apresentado anteriormente é repetido até não existirem mais elementos a se-
rem recolhidos. Uma vez que todos os elementos recolhidos a formiga precisa retornar ao
nó inicial (nó 1). De forma a optimizar o regresso da formiga à origem, foi introduzida ou-
tra feromona, denominada phr, que contem os valores da feromona de regresso à origem.
Desta forma pretende-se optimizar o processo de retorno à origem, seguindo o trajecto
mais curto. O processo é em tudo similar ao processo referido anteriormente, apenas dife-
rindo na forma como o nó seguinte é escolhido. Os valores indicativos de preferencia dos
nós com conectividade ao presente nó, no processo de regresso à origem, é dado por:

nc
tbr(k,1 : )
(23) tempr = 2
nc
(0,001 + tt(k,1 : ))
2

onde k é o nó actual, e tbr é dado por:

(24) tbr = phr beta

Ao determinarmos o percurso de regresso à origem não existe a necessidade de validar os


intervalos de tempo reais, pelo que no cálculo do nó seguinte apenas são utilizados os inter-
valos neutros. O percurso da formiga termina assim que esta regresse ao ponto inicial.

Este processo é repetido para todas as formigas da colónia. Como resultado obtém-se uma
matriz at contendo os percursos de todas as formigas da colónia na presente iteração.

5.3.4. Actualizar as feromonas


Uma vez determinado o percurso para cada formiga, é necessário actualizar o valor da fe-
romona nos segmentos pelos quais estas passaram. Este passo é importante pois o valor da
feromona tem uma influência directa na escolha dos nós a serem visitados.

82 / 119
No algoritmo apresentado, como referido anteriormente, são utilizadas duas feromonas,
uma contendo o valor da feromona de escolha de percurso (ph) e outra de regresso à ori-
gem (phr).

As matriz ph e phr, que contém os valores das feromonas, são inicializadas com um valor
muito reduzido (0,0001) caso exista conexão entre nós, sendo que, caso não haja conexão
entre os nós i e j, então ph[i, j] = 0.

As matrizes são actualizadas de acordo com os percursos obtidos e armazenados na matriz


at. Contudo, devido às diferentes características e objectivos de cada feromona, estas são
actualizadas de forma diferente. Enquanto forem recolhidos elementos é actualizada a ma-
triz ph. Após a recolha de todos os elementos é actualizada a matriz phr. Como referenciado
anteriormente, a matriz ph é utilizada na escolha do próximo nó a ser visitado durante a
recolha de elementos, enquanto a matriz phr é utilizada na escolha dos nós no regresso à
origem. Daí esta actualização em separado das duas matrizes.

O valor da feromona na matriz ph é dado por:

(25) ph[i, j] = (1 − ec) ⋅ ph(i, j) + dt ⋅ alpha

onde ec é o coeficiente de evaporação, ph(i, j) é o valor da feromona na iteração anterior


para a ligação entre o nó i e o nó j e dt é dado por:

(26) dt = dli(i,j) ⋅ (1+pi(j)) ⋅ e − f(k)

onde dli(i, j) é uma matriz com as folgas entre os intervalos de tempo, pi(j) é o número de
elementos a recolher no nó j e f(k) é o custo total de recolha para a rota da formiga k na ite-
ração anterior.

Por outro lado, o valor da feromona da matriz phr é dado por:

(27) phr[i,j] = (1 − ec) ⋅ phr(i,j) +dt ⋅ alpha

onde ec é o coeficiente de evaporação, phr(i, j) é o valor da feromona na iteração anterior


para a ligação entre o nó i e o nó j, e dt é dado por:

83 / 119
e− fr (i)
(28) dt =
0,001 + tt(i, j)

onde dli(i, j) é uma matriz com as folgas entre os intervalos de tempo, tt(i,j) é o tempo de vi-
agem do nó i para o nó j e fr(k) é o custo total de retorno para a rota da formiga k na itera-
ção anterior.

5.3.5. Determinar o custo dos percursos


Após a obtenção dos percursos e actualização dos valores da feromona nos segmentos utili-
zados pelas formigas, é necessário identificar, de alguma forma, qual o melhor percurso da
iteração. Para identificar quais os melhores percursos, é necessário calcular o custo destes e
verificar qual deles possui um menor valor. A função de custo serve como um meio de ava-
liar o caminho percorrido pelas formigas. O custo dos percursos é calculado tendo em con-
ta, entre outros factores, os elementos a recolher, as folgas entre intervalos e o tempo de vi-
agem. O custo serve de valor indicativo da “qualidade” dos percursos.

Nesta etapa é definido um array f com tamanho nf, em que nf representa o número de for-
migas da colónia e onde f(k) indica o custo do percurso percorrido na iteração pela formiga
k.

A função custo tem em conta três aspectos: tempo de viagem, elementos a recolher e a fol-
ga. O tempo de viagem (tpv) não é mais do que o tempo que o veículo demora a percorrer
o percurso, sendo dado por:

ep −1
(29) tpv = ∑ tv(i,i + 1)
i=1

onde ep é o número de nós visitados no decorrer do percurso e tv representa o tempo de


viagem entre dois nós. A folga é a diferença mínima encontrada em nós conectáveis e é
dada por:

(30) fo lg a = min(max(tw( j,2) − tpv,0),(tw( j,2) − tw( j,1))

Devido à utilização de duas feromonas é necessário calcular o custo do percurso em sepa-


rado, ou seja, é calculado o custo da recolha dos elementos (f) e em separado o custo de re-
84 / 119
gresso à origem (fr). O custo de recolha de elementos é calculado enquanto existem ele-
mentos a recolher, e é dado por:

pr tpv
(31) f [k] = 10 ⋅ + e− s + e− fo lg a +
np 3

onde pr é o número de elementos que faltam recolher, np é o número total de elementos a


recolher e s é dado por:

(32) s = s + fo lg a ⋅ etw( j,2)−tpv

O custo de regresso à origem baseia-se apenas no tempo de viagem, procurando minimi-


zar-se esse mesmo tempo. O custo de regresso é dado por:

(33) fr(k) = fr + tv(i, j)

O resultado são dois arrays, f e fr, contendo o custo de recolha de elementos e de regresso à
origem respectivamente. Através do custo de cada percurso é possível identificar quais os
percursos cujo custo é menor. No final de cada iteração o percurso com o menor custo é
adicionado a uma matriz designada besttour. No final do processo esta matriz contém os
percursos com menor custo de cada iteração.

5.3.6. Determinar a solução ideal


Os processos apresentados nas secções 5.3.2 até 5.3.5, inclusive, são repetidos iter vezes,
onde iter é o número de iterações desejadas. Neste momento este é o único critério de para-
gem, contudo são facilmente implementados outros, como por exemplo definir um custo
mínimo que quando atingido o algoritmo termina.

A melhor solução para o problema proposto é obtida pela procura na matriz besttour pelo
percurso com o menor custo. Isto significa que de todos os melhores percursos, este é o
mais adequado para resolver o problema apresentado. O resultado do processo é o cami-
nho ideal para a recolha de elementos.

85 / 119
5.4. Resultados

Nesta secção são apresentados diversos exemplos nos quais o algoritmo apresentado foi tes-
tado. Os exemplos apresentam parâmetros variados e uma crescente complexidade na dis-
tribuição dos nós. Pretende-se desta forma demonstrar como os diferentes parâmetros afec-
tam a solução e como o algoritmo é capaz de solucionar grafos com diferentes distribuições
e número de nós.

5.4.1. Exemplo 1 - Grafo 5/9

O exemplo 1 apresenta um grafo com 5 nós e 9 arcos. Neste exemplo procura-se analisar
de que forma a quantidade de formigas e de iterações afectam o resultado do algoritmo.

A tabela 1 apresenta os intervalos de tempo associados aos nós. Apenas é possível recolher
os elementos existentes nos nó quando estes são visitados entre o tmin e o tmax .

Tabela 1 - Intervalos de tempo e respectivos nós associados

nó 1 2 3 4 5

tmin 0,7455 1,0325 2,4999 1,6052 1,6135

tmax 1,2455 1,5325 2,9999 2,1052 2,1135

Além dos intervalos reais, representados na tabela 1, existem os intervalos neutros cujo va-
lor é igual para todos os nós. Os intervalos neutros possuem um intervalo de tempo tão
longo quanto o tempo disponível para a solução. Desta forma o tmin assume o valor 0 en-
quanto o tmax assume o valor máximo permitido para a solução.

Tabela 2 - Tempos de ligação entre nós

* 1 2 3 4 5

1 0 0,1901 0,2274 0,3020 0,0866

2 0,1901 0 0,2150 0,4832 0,2268

3 0,2274 0,2150 0 0,5000 0

4 0,3020 0,4832 0,5000 0 0,2605

5 0,0866 0,2268 0 0,2605 0

86 / 119
Na tabela 2 encontra-se representada a matriz de ligações entre intervalos. Nesta matriz é
possível consultar as ligações entre os nós (0 indica que não existe ligação) bem como o
tempo de viagem entre os nós. Os intervalos de tempo bem como os tempos de ligação são
comuns aos exemplos 1.a e 1.b sendo que a única diferença entre os dois exemplos é os pa-
râmetros utilizados.

a)Exemplo 1.a - 200 iterações e 200 formigas


A tabela 3 apresenta os parâmetros utilizados neste exemplo. A definição destes valores é
muito importante pois possuem influência directa nos resultados. Através da comparação
dos dois exemplos é possível chegar a esta conclusão.

Tabela 3 - Parâmetros do exemplo 1.a

Parâmetro Valor Descrição

iter 200 Número de execuções do algoritmo (critério de paragem)

ant 200 Número de possíveis soluções encontradas em cada iteração

wpass 100 Peso do número de elementos do nó no calculo da feromona

el 0,96 Coeficiente de eliminação

A tabela 4 apresenta o melhor percurso encontrado pelo algoritmo para este exemplo.
Analisando a tabela 4 e a figura 9 podemos analisar o percurso que o algoritmo obteve
como melhor ou aproximada da melhor possível.

Tabela 4 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos

Percurso 1 2 1 5 4 1 3 1

Elementos 0 1 0 1 1 0 1 0

Na figura 9 é apresentada a solução obtida pelo algoritmo proposto bem como a distribui-
ção dos nós. As linhas vermelhas representam o caminho percorrido pelo veículo, enquanto
as linhas azuis representam ligações não utilizadas.

87 / 119
Figura 9 - Melhor rota encontrada pelo algoritmo para o exemplo 1.a

A tabela 5 apresenta os dados relativos ao custo da melhor rota e o tempo de viagem da


mesma.

Tabela 5 - Custo, folga e tempo de viagem do exemplo 1.a

Custo Folga Tempo de Viagem Tempo em Movimento

1,216740 0,500000 1,830624 1,830624

A figura 10 apresenta a evolução do desempenho/custo da melhor rota encontrada ao lon-


go das iterações. Nela é possível verificar as variações relativas aos melhores percursos en-
contrados ao longo das iterações.

88 / 119
Figura 10 - Desempenho e custo do exemplo 1.a no decorrer das iterações

b)Exemplo 1.b - 400 iterações e 400 formigas


O exemplo 1.b apresenta um grafo com a mesma quantidade e distribuição de nós que o
exemplo 1.a, apresentando diferenças ao nível dos parâmetros.

Tabela 6 - Parâmetros do exemplo 1.b

Parâmetro Valor Descrição

iter 400 Número de execuções do algoritmo (critério de paragem)

ant 400 Número de possíveis soluções encontradas em cada iteração

wpass 100 Peso do número de elementos do nó no calculo da feromona

el 0,96 Coeficiente de eliminação

Na tabela 6 são apresentados os parâmetros utilizados na execução do algoritmo e na pro-


cura de uma solução. Este exemplo apresenta um número superior de iterações e de formi-

89 / 119
gas (possíveis soluções por iteração) que o exemplo 1.a, sendo possível desta forma analisar
a influência destes parâmetros no resultado final.

A tabela 7 apresenta o melhor percurso encontrado pelo algoritmo para este exemplo.

Tabela 7 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos

Percurso 1 2 1 5 4 5 1 3 1

Elementos 0 1 0 1 1 0 0 1 0

Na figura 11 é apresentada a solução obtida pelo algoritmo proposto bem como a distribu-
ição dos nós. É possível verificar que este exemplo apresenta a mesma distribuição dos nós
que o exemplo 1.a, contudo o resultado obtido é diferente, este facto deve-se à utilização de
diferentes parâmetros.

Figura 11 - Melhor rota encontrada pelo algoritmo para o exemplo 1.b

A tabela 8 apresenta os dados relativos ao custo da melhor rota e o tempo de viagem da


mesma.

90 / 119
Tabela 8 - Custo, folga e tempo de viagem do exemplo 1.b

Custo Folga Tempo de Viagem Tempo em Movimento

1,174043 0,500000 1,702526 1,702526

A figura 12 apresenta a evolução do desempenho/custo da melhor rota encontrada ao lon-


go das iterações.

Figura 12 - Desempenho e custo do exemplo 1.b no decorrer das iterações

5.4.2. Exemplo 2 - Grafo 10/16


O exemplo 2 apresenta um grafo com 10 nós e 16 arcos. Este exemplo apresenta um nú-
mero de nós e arcos superiores aos apresentados no exemplo anterior. Pretende-se, desta
forma, analisar o desempenho do algoritmo em função da quantidade de nós e arcos do
problema, bem como analisar a importância da variável wpass na escolha das rotas.

91 / 119
A tabela 9 apresenta os intervalos de tempo associados aos nós. Apenas é possível recolher
os elementos existentes nos nó quando estes são visitados entre o tmin e o tmax .

Tabela 9 - Intervalos de tempo e respectivos nós associados

nó 1 2 3 4 5

tmin 0,2402 1,3979 0,1662 1,4247 0,3094

tmax 0,7402 1,8979 0,6662 1,9247 0,8094

nó 6 7 8 9 10

tmin 2,4570 0,3649 0,7011 1,6688 2,3856

tmax 2,9570 0,8649 1,2011 2,1688 2,8856

Além dos intervalos reais, representados na tabela 9, existem os intervalos neutros cujo va-
lor é igual para todos os nós. Os intervalos neutros possuem um intervalo de tempo tão
longo quanto o tempo disponível para a solução. Desta forma o tmin assume o valor 0 en-
quanto o tmax assume o valor máximo permitido para a solução.

Tabela 10 - Tempos de ligação entre nós

* 1 2 3 4 5 6 7 8 9 10

1 0 0,0492 0,1043 0,0769 0 0,1300 0,1595 0 0 0

2 0,0492 0 0 0 0 0,0899 0 0 0 0,1042

3 0,1043 0 0 0,0905 0,1762 0 0,1408 0 0 0

4 0,0769 0 0,0905 0 0,1838 0 0 0,1077 0 0

5 0 0 0,1762 0,1838 0 0 0 0,2500 0 0

6 0,1300 0,0899 0 0 0 0 0,1381 0 0 0,0706

7 0,1595 0 0,1408 0 0 0,1381 0 0 0 0

8 0 0 0 0,1077 0,2500 0 0 0 0 0

9 0 0 0 0 0 0 0 0 0 0,1339

10 0 0,1042 0 0 0 0,0706 0 0 0,1339 0

92 / 119
Na tabela 10 encontra-se representada a matriz de ligações entre intervalos. Nesta matriz é
possível consultar as ligações entre os nós (0 indica que não existe ligação) bem como o
tempo de viagem entre os nós. Os intervalos de tempo bem como os tempos de ligação são
comuns aos exemplos 2.a e 2.b sendo que a única diferença entre os dois exemplos é os pa-
râmetros utilizados.

a)Exemplo 2.a - wpass 100


Na tabela 5 são apresentados os parâmetros utilizados na execução do algoritmo e na pro-
cura de uma solução.

Tabela 11 - Parâmetros do exemplo 2.a

Parâmetro Valor Descrição

iter 200 Número de execuções do algoritmo (critério de paragem)

ant 200 Número de possíveis soluções encontradas em cada iteração

wpass 100 Peso do número de elementos do nó no calculo da feromona

el 0,96 Coeficiente de eliminação

A tabela 12 apresenta o melhor percurso encontrado pelo algoritmo para este exemplo.

Tabela 12 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos

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

Elementos 0 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 0

Na figura 13 é apresentada a solução obtida pelo algoritmo proposto bem como a distribu-
ição dos nós. As linhas vermelhas representam o caminho percorrido pelo veículo, enquan-
to as linhas azuis representam ligações não utilizadas. Não é possível verificar na figura 45
a quantidade de vezes que uma ligação entre dois nós e percorrida, contudo são facilmente
identificadas as ligações que são utilizadas.

93 / 119
Figura 13 - Melhor rota encontrada pelo algoritmo para o exemplo 2.a

A tabela 13 apresenta os dados relativos ao custo da melhor rota e o tempo de viagem da


mesma.

Tabela 13 - Custo, folga e tempo de viagem do exemplo 2.a

Custo Folga Tempo de Viagem Tempo em Movimento

1,326045 0,332964 1,827747 1,827747

A figura 14 apresenta a evolução do desempenho/custo da melhor rota encontrada ao lon-


go das iterações.

94 / 119
Figura 14 - Desempenho e custo do exemplo 2.a no decorrer das iterações

b)Exemplo 2.b - wpass 10


O exemplo 2.b apresenta um grafo com 10 nós e 16 arcos, tal como o exemplo 2.a. Na ta-
bela 14 são apresentados os parâmetros utilizados na execução do algoritmo e na procura
de uma solução. Este exemplo apresenta um valor inferior no parâmetro wpass em relação
ao exemplo 2.a, desta forma atribui-se menos importância ao facto de existirem elementos
a recolher/entregar durante o processo de selecção do próximo nó a ser visitado.

Tabela 14 - Parâmetros do exemplo 2.b

Parâmetro Valor Descrição

iter 200 Número de execuções do algoritmo (critério de paragem)

ant 200 Número de possíveis soluções encontradas em cada iteração

wpass 10 Peso do número de elementos do nó no calculo da feromona

el 0,96 Coeficiente de eliminação

95 / 119
A tabela 15 apresenta o melhor percurso encontrado pelo algoritmo para este exemplo. Na
tabela encontra-se descriminado o percurso completo, bem como os elementos associados
aos nós que foram recolhidos/entregues.

Tabela 15 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos

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

Elementos 0 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 0

Na figura 15 é apresentada a solução obtida pelo algoritmo proposto bem como a distribu-
ição dos nós. Através da figura é possível analisar não só a complexidade do grafo, mas
também as ligações utilizadas pela solução encontrada pelo algoritmo proposto.

Figura 15 - Melhor rota encontrada pelo algoritmo para o exemplo 2.b

A tabela 16 apresenta os dados relativos ao custo da melhor rota e o tempo de viagem da


mesma.

96 / 119
Tabela 16 - Custo, folga e tempo de viagem do exemplo 2.b

Custo Folga Tempo de Viagem Tempo em Movimento

1,319396 0,332964 1,807801 1,807801

A figura 16 apresenta a evolução do desempenho/custo da melhor rota encontrada ao lon-


go das iterações.

Figura 16 - Desempenho e custo do exemplo 2.b no decorrer das iterações

5.4.3. Exemplo 3 - Grafo 20/26


O exemplo 3 apresenta um grafo com 20 nós e 26 arcos. Este exemplo apresenta um au-
mento considerável no número de nos e de arcos, o que aumenta a complexidade do pro-
blema. Procura-se desta forma analisar o comportamento do algoritmo face a esta comple-
xidade.

97 / 119
A tabela 17 apresenta os intervalos de tempo associados aos nós. Apenas é possível recolher
os elementos existentes nos nó quando estes são visitados entre o tmin e o tmax .

Tabela 17 - Intervalos de tempo e respectivos nós associados

nó 1 2 3 4 5

tmin 0,6717 1,2120 0,4542 0,5759 0,7064

tmax 1,8435 2,9240 1,4085 1,6518 1,9127

nó 6 7 8 9 10

tmin 0,4386 0,0428 1,0161 0,0747 1,0687

tmax 1,3772 0,5855 2,5322 0,6493 2,6374

nó 11 12 13 14 15

tmin 0,0302 1,2205 0,7623 0,0356 0,2721

tmax 0,5604 2,9410 2,0245 0,5711 1,0443

nó 16 17 18 19 20

tmin 1,1252 0,5547 0,4289 1,0245 0,9691

tmax 2,7505 1,6094 1,3578 2,5490 2,4381

No Apêndice B encontra-se representada a matriz de ligações entre intervalos deste exem-


plo. Nesta matriz é possível consultar as ligações entre os nós (0 indica que não existe liga-
ção) bem como o tempo de viagem entre os nós. Os intervalos de tempo bem como os
tempos de ligação são comuns aos exemplos 3.a e 3.b sendo que a única diferença entre os
dois exemplos é os parâmetros utilizados.

a)Exemplo 3.a - wpass 100


Na tabela 18 são apresentados os parâmetros utilizados na execução do algoritmo e na
procura de uma solução. A tabela 19 apresenta o melhor percurso encontrado pelo algo-
ritmo para este exemplo. Na tabela encontra-se descriminado o percurso completo, bem
como os elementos associados aos nós que foram recolhidos/entregues.

98 / 119
Tabela 18 - Parâmetros do exemplo 3.a

Parâmetro Valor Descrição

iter 200 Número de execuções do algoritmo (critério de paragem)

ant 200 Número de possíveis soluções encontradas em cada iteração

wpass 100 Peso do número de elementos do nó no calculo da feromona

el 0,96 Coeficiente de eliminação

Tabela 19 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos

Percurso 1 8 5 15 7 14 4 20 2 10 19 11 6 9 6 17 6

Elementos 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0

Percurso 11 19 10 16 3 18 4 20 13 7 15 12 15 5 8 1

Elementos 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0

Figura 17 - Melhor rota encontrada pelo algoritmo para o exemplo 3.a


99 / 119
Na figura 17 é apresentada a solução obtida pelo algoritmo proposto bem como a distribu-
ição dos nós. A tabela 20 apresenta os dados relativos ao custo da melhor rota e o tempo de
viagem da mesma.

Tabela 20 - Custo, folga e tempo de viagem do exemplo 3.a

Custo Folga Tempo de Viagem Tempo em Movimento

1,172344 0,155204 0,948312 0,948312

A figura 18 apresenta a evolução do desempenho/custo da melhor rota encontrada ao lon-


go das iterações.

Figura 18 - Desempenho e custo do exemplo 3.a no decorrer das iterações

b)Exemplo 3.b - wpass 10


O exemplo 3.b apresenta um grafo com 20 nós e 26 arcos, tal como o exemplo 3.a, contu-
do os parâmetros utilizados são diferentes.

100 / 119
Na tabela 21 são apresentados os parâmetros utilizados na execução do algoritmo e na
procura de uma solução. Este exemplo, em relação ao exemplo 3.a, apresenta um valor
inferior no parâmetro wpass.

Tabela 21 - Parâmetros do exemplo 3.b

Parâmetro Valor Descrição

iter 200 Número de execuções do algoritmo (critério de paragem)

ant 200 Número de possíveis soluções encontradas em cada iteração

wpass 10 Peso do número de elementos do nó no calculo da feromona

el 0,96 Coeficiente de eliminação

A tabela 22 apresenta o melhor percurso encontrado pelo algoritmo para este exemplo.

Tabela 22 - Melhor percurso encontrado pelo algoritmo e elementos recolhidos

Percurso 1 8 5 15 7 14 4 18 3 16 10 19 11 6 17 6 9

Elementos 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

Percurso 6 11 19 10 2 20 13 7 5 15 12 15 5 8 1
Elementos 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0

A tabela 23 apresenta os dados relativos ao custo da melhor rota e o tempo de viagem da


mesma.

Tabela 23 - Custo, folga e tempo de viagem do exemplo 3.b

Custo Folga Tempo de Viagem Tempo em Movimento

1,190831 0,143874 0,974503 0,974503

Na figura 19 é apresentada a solução obtida pelo algoritmo proposto bem como a distribu-
ição dos nós. A figura 20 apresenta a evolução do desempenho/custo da melhor rota en-
contrada ao longo das iterações.

101 / 119
Figura 19 - Melhor rota encontrada pelo algoritmo para o exemplo 3.b

Figura 20 - Desempenho e custo do exemplo 3.b no decorrer das iterações

102 / 119
5.4.4. Exemplo 4 - Grafo 36/55
O exemplo 4 apresenta um grafo com 36 nós e 55 arcos. Este é o exemplo mais complexo
apresentado, à excepção do exemplo AANSC.

Na tabela 24 são apresentados os parâmetros utilizados na execução do algoritmo e na


procura de uma solução.

Tabela 24 - Parâmetros do exemplo 4

Parâmetro Valor Descrição

iter 200 Número de execuções do algoritmo (critério de paragem)

ant 200 Número de possíveis soluções encontradas em cada iteração

wpass 50 Peso do número de elementos do nó no calculo da feromona

el 0,96 Coeficiente de eliminação

No Apêndice C encontra-se representada a matriz de ligações entre intervalos deste exem-


plo. Nesta matriz é possível consultar as ligações entre os nós (0 indica que não existe liga-
ção) bem como o tempo de viagem entre os nós.

A tabela 25 apresenta os dados relativos ao custo da melhor rota e o tempo de viagem da


mesma.

Tabela 25 - Custo, folga e tempo de viagem do exemplo 4

Custo Folga Tempo de Viagem Tempo em Movimento

0,810791 0,567827 0,732106 0,732106

Na figura 21 é apresentada a solução obtida pelo algoritmo proposto bem como a distribu-
ição dos nós. A figura 22 apresenta a evolução do desempenho/custo da melhor rota en-
contrada ao longo das iterações.

103 / 119
Figura 21 - Melhor rota encontrada pelo algoritmo para o exemplo 4

Figura 22 - Desempenho e custo do exemplo 4 no decorrer das iterações


104 / 119
6
‹‹O estudo, a busca da verdade e da beleza são domínios
em que nos é consentido sermos crianças por toda a
vida.››

Albert Einstein

6.CONSIDERAÇÕES FINAIS

Neste capítulo é apresentada uma análise crítica aos resultados obtidos e o desempenho do
algoritmo proposto, avaliando o cumprimento dos objectivos. No final do capítulo são
apresentadas algumas propostas para trabalhos futuros.

6.1. Conclusões

Esta trabalho visava o desenvolvimento de um algoritmo capaz de solucionar o problema


do planeamento de transporte escolar da instituição de ensino Associação de Assistência de
Nossa Senhora das Candeias. Na persecução deste objectivo foram executadas as seguintes
tarefas:

- elaboração de um estudo relativo aos algoritmos já existentes e com provas dadas,


nas áreas da CE e da IA;

105 / 119
- identificação dos métodos que melhor se enquadravam na solução do problema em
estudo;

- desenvolvimento, por fases, de uma algoritmo capaz de solucionar o caso de estudo;

- teste das capacidades do algoritmo durante as fases de desenvolvimento.


Como resultado final deste trabalho apresentou-se um algoritmo estruturalmente simples,
mas extremamente eficaz, capaz de resolver problemas de planeamento de transportes es-
colares, com restrições temporais. O algoritmo proposto foi desenvolvido de modo a aco-
modar mais e elaboradas restrições que lhes conferem uma adaptabilidade estrutural a ou-
tros problemas reais. Os exemplos que serviram de teste e validação do algoritmo são mais
complexos que o caso real em consideração, antevendo a sua utilidade no encontrar de so-
luções para outros tipos de problemas.

Deste modo, o objectivo inicial de encontrar um método que solucionasse o problema pro-
posto foi alcançado, proporcionado ainda o apresentar de contribuições inovadoras nesta
área de trabalho. A utilização deste tipo de técnicas para problemas de planeamento de
transportes escolares tem sido pouco explorada, pelo que este trabalho deu um contributo,
comprovado, da vantagem do método de optimização de Colónias de formigas, com a sua
adaptação a problemas com restrições de janelas temporais.

O algoritmo proposto é ainda uma base de uma família de algoritmos. Ele apresenta resul-
tados bastante bons em casos com grafos bastante complexos, desde que apenas seja neces-
sário calcular a rota de um veículo. A sua extensão ao problema com a utilização de múlti-
plos veículos é um passo seguinte deste trabalho. Porém, este novo algoritmo funcionará
com a utilização de múltiplas colónias, sendo certo que se mantém a estrutura do algoritmo
proposto.

Até ao momento apenas se detectaram dois pontos fracos, que podem ser facilmente corri-
gidos. Um primeiro resultante da utilização das janelas de tempo, nos casos em que existe
uma ou mais sequências de janelas de tempo com um tempo bastante dispare das restantes.
Este facto implica que o veículo “vagueie” pelo grafo até que seja possível visitar o nó cor-
respondente na ordem determinada. O segundo problema está relacionado com o número
de nós, que implica colónias mais numerosas e tempo computacional maiores. Todavia,
estes pontos fracos não impossibilitam a execução do algoritmo nem a obtenção de uma
solução para o problema.
106 / 119
Ao observarmos a evolução do desempenho/custo dos vários exemplos é fácil concluir que
o algoritmo não procura convergir para uma solução mas, de certa forma, garantir primei-
ramente a variabilidade das rotas. Ou seja, em vez de procurar convergir na perseguição de
uma solução, o algoritmo procura encontrar o máximo de soluções possíveis, determinando
o seu custo e verificando qual delas possui o custo mais baixo. Registe-se o facto de que no
cálculo das rotas tem um peso considerável o valor da feromona.

É possível verificar, ao comparar os exemplos, que os valores atribuídos às variáveis wpass,


alpha e beta influenciam de forma directa os resultados obtidos. Este facto ocorre devido ao
facto de estas variáveis possuem um peso considerável na escolha dos nós durante o cálculo
das rotas. Desta forma é essencial escolher valores apropriados para estas variáveis que ga-
rantam uma convergência do método.

O algoritmo ainda não é capaz de solucionar o problema do planeamento de rotas para


múltiplos veículos, sendo que no momento é apenas capaz de o fazer para um veículo.

Fica por apresentar, nesta dissertação, uma comparação entre a solução encontrada pelo
algoritmo e o planeamento manual efectuado pelos responsáveis da Instituição, que utiliza
vários veículos de transporte. Tal fica a dever-se ao facto do algoritmo proposto apenas
efectuar o planeamento de uma veículo, inviabilizando a comparação.

6.2. Sugestões para Trabalhos Futuros

O algoritmo apresentado é ainda o primeiro de uma linha de algoritmos. Este já é capaz de


solucionar problemas de planeamento de rotas de um veículo. Todavia ainda não está
adaptado para a tarefa com múltiplos veículos em simultâneo. Assim, o algoritmo desen-
volvido nã̃o é ainda a solução definitiva para o problema real considerado. Apesar desse
facto, a elaboração de um primeiro algoritmo veio contribuir e validar a utilização de algo-
ritmos de SWARM neste tipo de problemas. A sua extensão a problemas com múltiplos veí-
culos será o passo seguinte, sendo certo que a estrutura do algoritmo proposto se manterá.
Uma solução possível será explorar a utilização de várias colónias em simultâneo, sendo
que cada colónia procura a melhor solução para cada veículo de transporte.

107 / 119
108 / 119
Bibliografia

1. Crawford, B., C. Castro, and E. Monfroy, A Two-Phase Set Partitioning Model for Passenger Transportation, in
Fourth International Conference on Computer Sciences and Convergence Information Technology. 2009.
2. Goulias, K.G., et al., Transportation Systems Planning - Methods and Applications, ed. W.F. CHEN. 2003:
CRC Press LLC.
3. Nocedal, J. and S.J. Wright, Numerical Optimization. Second ed. Operations Research and Financial En-
gineering, ed. T.V. Mikosch, S.I. Resnick, and S.M. Robinson. 2006: Springer.
4. Toth, P. and D. Vigo, The Vehicle Routing Problem. Transportation problems (Programming) 2002: Society
for Industrial and Applied Mathematics.
5. Mikki, S.M. and A.A. Kishk, Particle Swarm Optimization: A Physics-Based Approach. Synthesis Lectures on
Computational Electromagnetics, ed. C.A. Balanis. 2008, Arizona: Morgan & Claypool.
6. Caric, T. and H. Gold, Vehicle Routing Problem. 2008, Zagreb: In-teh.
7. Dantzig, G.B. and J.H. Ramser, The truck dispatching problem. Management Science. 1959.
8. Clarke, G. and J.V. Wright, Scheduling of vehicles from a central depot to a number of delivery points. Operations
Research, 1964. 12.
9. Desrochers, M., J.K. Lenstra, and M.W.P. Savelsbergh, A classification scheme for vehicle routing and schedu-
ling problems. Journal of Operational Research Society, 1990. 46.
10. Laporte, G. and Y. Nobert, Exact algorithms for the vehicle routing problem. Annals of Discrete Mathematics,
1987. 31.
11. Christofides, N., A. Mingozzi, and P. Toth, The vehicle routing problem. Combinatorial Optimization, ed.
N. Christofides, et al. 1979, Chichester, UK: Wiley.
12. Magnanti, T.L., Combinatorial optimization and vehicle fleet planning: Perspectives and prospects. Networks. Vol.
11. 1981.
13. Bodin, L.D., et al., Routing and scheduling of vehicles and crews, the state of the art. Computers and Opera-
tions Research, 1983. 10.
14. Christofides, N., Vehicle routing. The Traveling Salesman Problem, ed. E.L. Lawler, et al. 1985, Chiches-
ter, UK: Wiley.
15. Laporte, G., The Vehicle Routing Problem: An Overview of Exact and Approximative Algorithms. European Jour-
nal of Operational Research, 1992. 59(3).
16. Fisher, M.L., Vehicle Routing. Network Routing, Handbooks in Operations Research and Management
Science ed. M.O. Ball, et al. 1995, North-Holland, Amsterdam.
17. Toth, P. and D. Vigo, Exact Algorithms for vehicle Routing. Fleet Managementand Logistics, ed. T. Craini-
cand and G. Laporte. 1998, Boston,MA: Kluwer.
18. Golden, B.L., et al., Metaheuristics in Vehicle Routing. Fleet Management and Logistics, ed. T.G. Crainic
and G. Laporte. 1998, Boston, MA: Kluwer.
19. Laporte, G., Vehicle routing. Annotated Bibliographies in Combinatorial Optimization, ed. M.D. H'Ami-
co, F. Maffioli, and S. Martello. 1997, Chichester, UK: Wiley.
20. Laporte, G. and I.H. Osman, Routing problems: A bibliography. Annals of Operations Research, 1995. 61.
21. Golden, B.L. and A.A. Assad, Vehicle Routing: Methods and Studies. 1988, North-Holland, Amsterdam.
22. Dror, M. and P. Trudeau, Split Delivery Routing. Naval Research Logistics. Vol. 37. 1990.
23. Lawler, E.L., et al., The Traveling Salesman Problem. 1985, Chichester, UK: Wiley.
24. Golden, B., S. Raghavan, and E. Wasil, The Vehicle Routing Problem: Latest Advances and New Challenges.
Operations Research / Computer Science Interfaces. 2008: Springer.
25. Lenstra, J.K. and A.H.G.R. Kan, Complexity of Vehicle and Scheduling Problems, in Networks. 1981. p. 221-
227.
26. Solomon, M.M. and J. Desrosiers, Time Window Constrained Routing and Scheduling Problem, in Transportation
Science. 1988. p. 1-13.
27. Archetti, C., M. Mansini, and M.G. Speranza, Complexity and Reducibility of the Skip Delivery Problem, in
Transportation Science 2005. p. 182-187.
28. Backer, B.D., et al., Solving Vehicle Routing Problems using Constraint Programming and Meta heuristics, in Journal
of Heuristics. 1997, Kluwer Academic Publisher.
29. Seah, D., Ant Colonoy Optimization On Vehicle Routing Problems. 1999, National University of Singapore:
Singapore.
30. Cordeau, J.-F., et al., The Vehicle Routing Problem with Time Windows. The Vehicle Routing Problem, ed. P.
Toth and D. Vigo. 2002, Philadelphia: SIAM Publishing.
31. Bräysy, O. and W. Dullaert, A Fast Evolutionary Metaheuristic for the Vehicle Routing Problem with Time Win-
dows. International Journal on Artificial Intelligence Tools, 2003. 12(2).
32. Bodin, L.D., Twenty years of routing and scheduling. Operations Research. 1990.
109 / 119
33. Corberan, A., et al., Heuristic solutions to the problem of routing school buses with multiple objectives. Journal of
the Operational Research Society, 2002. 53.
34. Swersey, A.J. and W. Ballard, Scheduling school buses, in Management Science. 1984.
35. Li, L. and Z. Fu., The school bus routing problem: a case study. Journal of the Operational Research Society,
2002. 53.
36. MasayaYoshikawa, M. Fukui, and H. Terai, A New Pheromone Control Algorithm of Ant Colony Optimization,
in International Conference on Smart Manufacturing Application. 2008: Gyeonggi-do, Korea.
37. Bektas, T., The multiple traveling salesman problem: an overview of formulations and solution procedures. Omega,
2006. 34: p. 209 - 219.
38. Junjie, P. and W. Dingwei. An Ant Colony Optimization Algorithm for Multiple Travelling Salesman Problem. in
First International Conference on Innovative Computing, Information and Control (ICICIC'06). 2006. Beijing.
39. Liu, W., et al., An ant colony optimization algorithm for the Multiple Traveling Salesmen Problem, in 4th IEEE Con-
ference on Industrial Electronics and Applications (ICIEA). 2009: Xi'an
40. Toth, P. and D. Vigo, The Vehicle Routing Problem. Monographs on Discrete Mathematics and Applica-
tions. 2002, Philadelphia.
41. Ball, M.O., et al., Network Routing. Handbooks in Operations Research and Management Science. Vol.
8. 1995, North-Holland, Amsterdam.
42. Nallusamy, R., et al., Optimization of Non-Linear Multiple Traveling Salesman Problem Using K-Means Cluste-
ring, Shrink Wrap Algorithm and Meta-Heuristics. International Journal of Nonlinear Science, 2009. 8.
43. Anderberg, M.R., Cluster analysis for applications. 1973, New York: Academic press.
44. Rizzoli, A.E., et al., Ant Colony Optimization for real world vehicle routing problems. Swarm Intelligence. Vol. 1.
2007, New York: Springer.
45. Carter, A.E. and C.T. Ragsdale, A New Approach in solving Multiple Travelling Salesman Problem using Genetic
Algorithm. European journal of operational research, 2005: p. 246-257
46. Gutin, G. and A.P. Punnen, The Traveling Salesman Problem and Its Variations. Combinatorial Optimizati-
on, ed. D.-Z. Du and P.M. Pardalos. Vol. 12. 2002: Kluwer Academic Publishers.
47. Thangavel, K., et al., Ant Colony Algorithms in Diverse Combinational Optimization Problems -A Survey. Auto-
matic Control and System Engineering, 2006. 6(1).
48. Chaovalitwongse, W., Optimization and Dynamical Approaches in Nonlinear Time Series Analysis with Applica-
tions in Bioengineering. 2003, University of Florida: Florida.
49. Rossi, F., P.v. Beek, and T. Walsh, Handbook of Constraint Programming. Foundations of Artificial Intelli-
gence, ed. J. Hendler, H. Kitano, and B. Nebel. 2006, Amsterdam, The Netherlands: Elsevier.
50. Luger, G.F., Artificial Intelligence - Structures and Strategies for Complex Problem Solving. 5th ed. 2005: Addison-
Wesley.
51. Poole, D.L. and A.K. Mackworth, Artificial Intelligence - Foundations of Computational Agents. 2010: Cam-
bridge University Press.
52. Engelbrecht, A.P., Computational Intelligence - An Introduction. Second Edition ed. 2007: John Wiley &
Sons, Ltd. 597.
53. S. N. Sivanandam and S.N. Deepa, Introduction to Genetic Algorithms. 2008: Springer. 442.
54. Kennedy, J., R.C. Eberhart, and Y. Shi, Swarm Intelligence. Evolutionary Computation, ed. D.B. Fogel.
2001: Morgan Kaufmann Publisher.
55. Houck, C.R., J. Joines, and M.G. Kay, A genetic algorithm for function optimization: A Matlab implementation,
in NCSU-IE TR. 1995.
56. Floreano, D. and C. Mattiussi, Bio-Inspired Artificial Intelligence - Theories, Methods and Technologies. Intelli-
gent Robotics and Autonomous Agents, ed. R.C. Arkin. 2008: The MIT Press.
57. Dorigo, M., et al. Ant Colony Optimization and Swarm Intelligence. in 4th International Workshop, ANTS 2004.
2004. Brussels: Springer.
58. Teodorovic, D.a., Swarm intelligence systems for transportation engineering: Principles and applications. Transpor-
tation Research Part C, 2008.
59. Dorigo, M., M. Birattari, and T.S. tzle, Ant Colony Optimization - Artificial Ants as a Computational Intelligence
Technique, in IEEE Computational Intelligence Magazine. 2006.
60. Zhang, J.-w. and W. Xiong, An Improved Particle Swarm Optimization Algorithm and its Application for Solving
Traveling Salesman Problem, in World Congress on Computer Science and Information Engineering. 2009: Wilshire
Grand Los Angeles, Los Angeles, USA.
61. Mohemmed, A.W., N.C. Sahoo, and T.K. Geok, Solving shortest path problem using particle swarm optimizati-
on, in Applied Soft Computing. 2006, Elsevier.
62. Clerc, M., L’Optimisation par essaims particulaires. 2005: Lavoisier.
63. Mourelle, N.N.L.d.M., Swarm Intelligent Systems. Computational Intelligence, ed. J. Kacprzyk. Vol. 26.
2006: Springer.

110 / 119
64. Negulescu, S.C., C.V. Kifor, and C. Oprean, Ant Colony Solving Multiple Constraints Problem: Vehicle Route
Allocation. International Journal of Computers, 2008. Communications & Control(4).
65. Zidi, S., S. Maouche, and S. Hammadi. Real-time route planning of the public transportation system. in IEEE
Intelligent Transportation Systems Conference. 2006. Toronto, Canada.
66. Li, Y. and Z. Xul. An ant colony optimization heuristic for solving maximum independent set problems. in Proceedings
of Computational Intelligence and Multimedia Applications. 2003.
67. Gholami, F. and M.J. Mahjoob. An Investigation of Parameters in Ant Colony Optimization for a Path Optimiza-
tion Algorithm. in IEEE International Conference on Mechatronics and Automation. 2007. Harbin, China.
68. Blum, C., Ant Colony Optimization: Introduction and Hybridizations, in Seventh International Conference on Hybrid
Intelligent Systems. 2007: Kaiserslautern - Germany.
69. Dorigo, M., V. Maniezzo, and A. Colorni, Positive feedback as a search strategy, in Dipartimento di Elettronica.
1991, Politecnico di Milano: Italy.
70. Dorigo, M., V. Maniezzo, and A. Colorni, Ant System: Optimization by a colony of cooperating agents, in IEEE
Transactions on Systems, Man, and Cybernetics—Part B. 1996, IEEE.
71. ̈tzle, T.S. and H.H. Hoos, MAX–MIN Ant System. Future Generation Computer Systems, 2000. 16(8).
72. ̈tzle, T.S. and H.H. Hoos. The MAX–MIN Ant System and local search for the traveling salesman problem. in
IEEE International Conference on Evolutionary Computation (ICEC’97). 1997. Piscataway, NJ: IEEE Press.
73. Gambardella, L.M., E.D. Taillard, and G. Agazzi, MACS-VRPTW: A multiple ant colony system for vehicle
routing problems with time windows. New Ideas in Optimization, ed. D.C.e. al. 1999, London, UK:
McGraw Hill.
74. Reimann, M., K. Doerner, and R.F. Hartl, D-ants: Savings based ants divide and conquer the vehicle routing
problem. Computers & Operations Research, 2004. 31(4).
75. Gambardella, L.M. and M. Dorigo, Ant Colony System hybridized with a new local search for the sequential orde-
ring problem. INFORMS Journal on Computing, 2000. 12(3).
76. Maniezzo, V., Exact and approximate nondeterministic tree-search procedures for the quadratic assignment problem.
INFORMS Journal on Computing, 1999. 11(4).
77. Socha, K., J. Knowles, and M. Sampels. A MAX –MI N ant system for the university timetabling problem. in
ANTS 2002. 2002. Berlin, Germany: Springer.
78. Socha, K., M. Sampels, and M. Manfrin. Ant algorithms for the university course timetabling problem with regard
to the state-of-the-art. in EvoWorkshops 2003. 2003: Springer.
79. Merkle, D., M. Middendorf, and H. Schmeck, Ant colony optimization for resource-constrained project schedu-
ling. IEEE Transactions on Evolutionary Computation, 2002. 6(4).
80. Solnon, C. Solving permutation constraint satisfaction problems with artificial ants. in ECAI’2000. 2000. Amster-
dam, The Netherlands: IOS Press.
81. Parpinelli, R.S., H.S. Lopes, and A.A. Freitas, Data mining with an ant colony optimization algorithm. IEEE
Transactions on Evolutionary Computation. Vol. 6. 2002: IEEE.
82. Martens, D., et al. Ant- based approach to the knowledge fusion problem. in ANTS 2006. 2006: Springer.
83. Campos, L.M.d., et al., Ant colony optimization for learning Bayesian networks. International Journal of
Approximate Reasoning, 2002. 31(3).
84. Campos, L.M.d., J.A. Gamez, and J.M. Puerta, Learning Bayesian networks by ant colony optimisation: Sear-
ching in the space of orderings. Mathware and Soft Computing, 2002. 9(2-3).
85. Dijkstra, E.W., A Note on Two Problems in Connexion with Graphs. Numerische Mathematik, 1959. 1: p.
269-271.

111 / 119
112 / 119
Apêndices

113 / 119
114 / 119
A - Distribuição dos locais de recolha/entrega, obtido através do Google
Earth

115 / 119
116 / 119
B - Ligações entre os locais do exemplo 3 e respectivos tempos de ligação

117 / 119
118 / 119
C - Ligações entre os locais do exemplo 4 e respectivos tempos de ligação

119 / 119