• Nenhum resultado encontrado

Modelo de duas fases para o PVRP

4.1 Primeira fase do algoritmo: C ONSTRUÇÃO DAS ROTAS

4.1.2 Geração de soluções admissíveis (ConstructAntsSolution)

Todos os algoritmos de optimização por colónias de formigas são processos iterativos. Nos VRP, em cada iteração dos ACO são criadas m formigas artificiais que, depois de afectadas aos clientes, dão inicio à construção das rotas. Cada formiga gera uma solução do problema, isto é, a cada formiga artificial está associada uma solução do problema que engloba um conjunto de rotas que obedecem às restrições do problema (capacidade do veículo, duração das rotas, um cliente e uma sua réplica nunca integrarem uma mesma rota).

As soluções geradas serão avaliadas e a informação das melhores é retida recorrendo à quantidade diferenciada de libertação de feromona.

A implementação deste tipo de procedimentos levanta desde logo algumas questões:

Quantas formigas se criam? Como se afectam as formigas aos clientes? Como se constroem as rotas?

Nas aplicações de ACO ao VRP clássico os autores criam tantas formigas quanto o número de clientes a visitar no problema, isto é m=n. Porém, noutras aplicações, é menor o número de formigas criadas: Stützle e Hoos (1997) numa aplicação ao TSP usa m=2/n; Reimann et al. (2001) num algoritmo híbrido ACO-GA para VRP utilizam m=10; Gambardella et al. (1999) numa aplicação ao VRPTW também sugerem m=10.

A meta-heurística proposta difere das anteriores logo na sua génese, isto é, considera- se um processo iterativo, onde em cada iteração só se gera uma solução (o que equivale a criar uma única formiga) e a informação retida em memória dependerá da qualidade da solução gerada.

Relativamente à afectação das formigas artificiais, isto é o ponto por onde se inicia a rota, existem duas situações distintas: quando o número de formigas criado é igual ao número de clientes (n), e quando o número de formigas gerado é menor que o número de clientes. No primeiro cenário, os autores sugerem afectar cada formiga a um cliente, ficando todos os clientes (nós) com uma e uma só formiga artificial. Bullnheimer et al. (1999b) faz um estudo onde compara os resultados para 3 possíveis afectações: afectar todas as formigas ao depósito, afecta-las aleatoriamente, ou cada uma a um cliente diferente, concluindo que a terceira opção é a que produz melhores resultados. Se o número de formigas é menor que n é sugerido afectar aleatoriamente cada formiga (Gambardella et al. (1999)).

Quanto à construção da rota, todas as referências literárias apontam para a construção sequencial, isto é, constrói-se uma primeira rota segundo critérios definidos e só após conclusão dessa rota (por violar algum tipo de restrição) se retoma o depósito e se inicia a construção de nova rota.

No algoritmo apresentado, a construção das rotas será efectuada em paralelo, isto é, podem-se formar várias rotas em simultâneo que, posteriormente, poderão ou não fundir-se. O processo inicia-se pela escolha de um cliente para se iniciar a construção da primeira rota.

Posteriormente, de acordo com critérios previamente definidos, procede-se à expansão da rota já iniciada ou ao início da formação de uma nova rota. É então necessário definir um critério para a escolha do cliente que vai dar inicio à construção da rota, isto é, ao qual se afectam inicialmente as formigas. Testaram-se três hipóteses:

- afectar as formigas aleatoriamente;

- afectar as formigas aos nós, que na matriz de distâncias têm menor distância associada; - afectação aos nós com maior poupança (conceito definido por Clarke e Wright (1964)

e exposto no Capítulo 3, secção 3.2.1).

Destas três formulações, foi a última que produziu melhores resultados. Assim, em cada iteração cria-se uma formiga artificial que sucessivamente vai sendo afecta ao cliente que apresenta maior poupança.

As poupanças utilizadas para o caso de estudo diferem ligeiramente das poupanças propostas por Clarke e Wright (1964), pois houve a necessidade de adaptar os procedimentos para a situação do caso em estudo onde o ponto de origem (Cabanões) não coincide com o ponto de chegada (estação de transferência – Mundão):

• Inicialmente considera-se cada nó (incluindo as réplicas) servido por uma única rota, que apenas o serve a ele, com início no ponto de partida, 0P, e fim no destino, 0D.

Segue-se o cálculo das poupanças para cada par (i, j), para i > j. Existem dois tipos de poupanças; poupanças do tipo 1 e poupanças do tipo 2.

Tipo2:

j

0P 0D

Figura 4. 1: Poupança do tipo 1

i As poupanças do tipo 1 correspondem ao benefício obtido na substituição das viagens (0P, j) e (i, 0D) pela ligação (i, j),

ij i j ij d d d s D P + − = 0 0 1

. Estas poupanças são as que se obtêm quando a inserção do nó j é feita pelo lado do ponto de chegada.

Figura 4. 2: Poupança do tipo 2

O problema em estudo, tal como todos os problemas existentes na literatura referentes à resolução de problemas periódicos de rotas, são simétricos, isto é dij =djipara qualquer ponto, inclusive a origem e o destino, logos1ij =s2ji e, no caso do ponto de origem coincidir com o ponto de chegada, s1ij =sij2,∀i,j.

Esta adaptação amplia o leque de problemas em que o modelo proposto se pode aplicar, pois engloba, não só os problemas VRP clássicos onde o ponto de partida coincide com o destino, mas também casos onde origem e o destino não são coincidentes.

A construção das rotas inicia-se com o cálculo das poupanças e sua ordenação. Sempre que as poupanças forem negativas consideramo-las nulas, pois são ligações não vantajosas.

A partir do cliente com maior poupança associada, i, selecciona-se o cliente j de entre o conjunto de todos os clientes possíveis com ligação a partir de i – conjunto Ω – de acordo com a distribuição de probabilidade definida pela expressão (4.2).

[ ] [ ]

[ ] [ ]

⎪ ⎪ ⎩ ⎪ ⎪ ⎨ ⎧ Ω ∈ η τ η τ =

α α contrário caso j se p h ih ih ij ij ij 0 (4. 2)

onde η retrata a visibilidade e τ a memória que, por analogia com as colónias reais de formigas, τ designa-se de feromona. Os níveis de feromona e visibilidade fornecem informação sobre a atractividade da inserção de um arco (i, j) na solução.

• A visibilidade tem em consideração dois aspectos: a proximidade entre clientes e a poupança:

0P 0D

i j

As poupanças do tipo 2 representam o ganho de uma ligação efectuada pelo ponto de partida, isto é a realização de (j, i) em vez de (0P, i) e (j, 0D), sij =d0Pi+dj0Ddji

2

2 1 ( ) ) 1 ( β β η k ij ij ij s d × = k = 1, 2 (4. 3)

Através da expressão (4.3) são incentivadas as ligações entre clientes vizinhos com poupança elevada, o que à partida tenderá a gerar boas soluções. É através da distribuição de probabilidade que se escolhem, sequencialmente, os nós a inserir nas rotas. Assim, a escolha do nó a inserir é influenciada pelos parâmetros β1 e β2 que

determinam a importância relativa das duas componentes da heurística que, no seu conjunto, também determinam a importância da componente heurística da expressão

(4.2). Analogamente, o parâmetro α da expressão reflecte a importância que se pretende

dar à feromona.

• A feromona é uma componente dinâmica, pois é constantemente alterada durante o processo, ao contrário da visibilidade que não passa de uma componente estática, isto é, nunca é alterada ao longo do processo. Enquanto que a informação das componentes da visibilidade é guardada em matrizes estáticas (de dimensão nxn) que nunca variam

durante todo o processo, a informação da feromona, também guardada numa matriz de dimensão nxn, é constantemente actualizada.