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

DE FORMIGAS DISSERTAÇÃO DE MESTRADO EM INFORMÁTICA DISSERTAÇÃO para obtenção do grau de mestre em

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

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

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.

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.

De!co "ta 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$.

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

Í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

4.1. Computação Evolutiva

47

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

5.1. Caracterização do Problema

5.1.1. Restrições do problema

5.2. Abordagem com Algoritmos Genéticos

71

72

73

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

5.3.1.

Representação dos dados

78

5.4.

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

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

Í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

-------------------------------------------------------------------------------------------------------------------------------

Í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

-------------------------------------------------------------------------------------------------------------------------------

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

‹‹Reparta o seu conhecimento. É uma forma de alcançar a imortalidade.››

Dalai Lama

1.INTRODUÇÃO

I

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.

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.

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,156945 118 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.

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.

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

Isaac Asimov

2

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

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.

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

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ástico 3 ,

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-hard 4 . Embora a abordagem heurística 5 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.

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;

- 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;

- 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 c ij é 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 t ij , 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,

é 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 rq j exige um serviço de entrega para Q j 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 rq j do cliente só deve ser servido por um único veículo;

- 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 E j e o tempo final L j , é especifi-

cada para cada entrega num PPVJT, o tempo de chegada T vj do veículo v para ser-

vir o pedido rq j do cliente deve encontrar-se dentro do tempo especificado, que é E j

T vj L j .

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 d i e p i , repre-

sentando a procura por produtos homogéneos para serem entregues e/ou recolhidos no

cliente i, respectivamente. Às vezes, apenas uma quantidade D i =d i -p i é 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, O i indica o vértice que está na origem do pedido de

entrega e D i 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 O i , quando diferente do depósito, deve ser servido no

mesmo circuito, e antes do cliente i,

- para cada cliente i, o cliente D i , 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-

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 :

- 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].

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.

‹‹ O conhecimento nos faz responsáveis.››

Ernesto Che Guevara

3

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-

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

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 x i 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-

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 x 1 100, ou desigualdades não-lineares que repre-

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 Determiní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 c i , 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]:

- 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].

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].

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

Goethe

4

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].

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.

- 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.

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;

- 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.

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.

- 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].

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;

- 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].

(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]. a) 1 1 1 0 0 1
pende da representação utilizada para o cromossoma [55].
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

Figura 1 - 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 um dos dois arrays e pela troca do material genético dos dois indivíduos em torno

deste ponto (figura 1, a). Cruzamento multi-ponto consiste em seleccionar aleatoria- mente múltiplos (n) pontos de cruzamento nos dois arrays e trocar o material genético

dos dois indivíduos entre os pontos [56].

Para representações de valores reais pode-se também escolher entre o cruzamento uniforme e o aritmético. Cruzamento uniforme consiste em trocar o conteúdo gené-

tico de n posições das duas sequências genéticas escolhidas ao acaso (figura 1, b). Cruzamento aritmético, por sua vez, cria um único genótipo, tomando a média das n

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].

a duas sub-árvores correspondentes (figura 1, e) [56]. Figura 2 - Representação gráfica de vários tipos
a duas sub-árvores correspondentes (figura 1, e) [56]. Figura 2 - Representação gráfica de vários tipos
a duas sub-árvores correspondentes (figura 1, e) [56]. Figura 2 - Representação gráfica de vários tipos
a duas sub-árvores correspondentes (figura 1, e) [56]. Figura 2 - Representação gráfica de vários tipos
a duas sub-árvores correspondentes (figura 1, e) [56]. Figura 2 - Representação gráfica de vários tipos

Figura 2 - Representação gráfica de vários tipos de mutações [56].

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- dificada pela adição de um valor aleatório determinado a partir de uma distribuição

Gaussiana N (m, σ ), onde m é a média e σ é a variância, a fim de produzir algumas

grandes mutações (figura 2, b). Nas representações que descrevem sequências, como no exemplo do PCV, a mutação consiste em trocar o conteúdo de duas posições esco-

lhidas aleatoriamente no genótipo do indivíduo (figura 2, c). Neste último caso, a probabilidade de mutação refere-se a indivíduos e não a posições no genótipo. Nas

representações baseadas em árvores, a mutação consiste em alterar o conteúdo de um

nó seleccionado com outro elemento do mesmo conjunto (figura 2, d). Se o nó selec-

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-

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

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].

torna-se o melhor global e é assim chamado gBest [61]. Figura 3 - Elementos fundamentais no

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.

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 X i = (X i1 , X i2 ,…, X ID ), i = 1,2,… m. A

velocidade da i-ésima partícula é o vector de dimensão D, denominado V i = (V I1 , V I2 ,…,

V ID ). Denotar a melhor posição da i-ésima partícula como Pbesti= (p i1 , p i2 , …, p iD ), e a me-

lhor posição da colónia Pbestg= (p g1 , p g2 , …, p gD ). Cada partícula da população modifica a

sua posição e velocidade de acordo com as seguintes fórmulas [60]:

(1)

(2)

v id t + 1 =

w v id + c 1 r 1 ( p id x id ) + c 2 r 2 ( p gd x id )

t

t

t

+ 1 = x id

t

x id

t

t + 1

+ v id

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-

çã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-

curso. Na figura 4 encontra-se representado este comportamento das formigas quando na

presença de um obstáculo.

das formigas quando na presença de um obstáculo. Figura 4 - Comportamento natural das formigas perante

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].

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].

a solução obtida se aproxima da solução real) [67]. Figura 5 - Algoritmo Genérico Baseado em

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:

(3)

τ ij (1 ρ )iτ ij +

m

k

Δτ ij

k = 1

onde ρ é a taxa de evaporação, m é o número de formigas, e Δτ ij k é a quantidade de

feromona prevista na aresta (i, j) pela formiga k assume os seguintes valores :

(4)

Δτ ij

k =

⎧ ⎪ ,

Q

L

0

k

se a

formiga k

, caso contrário

usou a aresta ( i , j ) no seu trajecto

onde Q é uma constante e L k é 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 S p , a probabilidade de ir para a cidade j é dada por:

(5)

p ij k =

⎪ ∑

β

τ ij α η ij


c il N ( S p )

β

τ il α η il

,

se c ij N ( S p )

contrário

0 , caso

onde N(S P ) é 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:

(6)

η ij = 1

d

ij

onde d ij é 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:

(7)

τ ij (1 ρ ) τ ij + Δτ ij

⎡ ⎣

best

τ max

τ min

onde τ max e τ min são, respectivamente, o limite superior e inferior impostos à feromona,

o operador [ x ] b a é definido por:

(8)

(9)

e Δτ ij best é:

Δτ ij

best =

1

o

L

best

[ x ] b a =

a

b

,

,

se

se

x > a

x > b

x , caso contrário

, se (i , j ) pertence ao melhor

, caso

contrário

percurso

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 (L ib ) ou a melhor solução encontrada desde o início do algoritmo

(L bs ), 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-

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:

(11) τ ij

⎧ ⎪ (1 ρ ) τ ij + ρ Δτ ij , se (i , j ) pertencer

⎩ ⎪ τ ij

, caso

contrário

Como no Sistema de Formigas Max-Min:

(12)

Δτ ij

best =

1

L best

ao melhor percurso

onde L best pode ser L ib ou L bs . 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 q 0 ; se q q 0 , 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:

(14)

p ij k =

⎪ ∑

β

τ ij α η ij


c il N ( S p )

β

τ il α η il

, se c ij N ( S p )

contrário

0 , caso

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].

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].

‹‹Um bom começo é a metade.››

Aristóteles

5.CASO DE ESTUDO

5

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.

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.

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

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).

dos locais ( loc ) e a terceira com a população ( pop ). Figura 6

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.

Figura 7 - Representação gráfica da lista ligada loc A figura 7 apresenta uma representação

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.

de viagem necessário para se deslocar entre os dois locais. Figura 8 - Representação gráfica da

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.

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.

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-

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 Formigas

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.

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