• Nenhum resultado encontrado

4.2 Descrição do algoritmo h MOEA

4.2.1 Operadores de Busca Local ou de Movimento

soluções. Ambas as soluções sofrem ação do operador de mutação, descrito em 4.2.5, segundo uma probabilidade de mutação;

Elitismo: o hMOEA implementa uma política elitista, descrita em 4.2.6, para garantir que algumas boas soluções sejam copiadas para a geração seguinte;

Busca local: Ao final de cada geração, uma busca local, detalhada em 4.3, é realizada na

vizinhança das soluções não-dominadas de P gerando um novo conjunto de soluções.

Este novo conjunto de soluções é combinado com as soluções da população P. Sobre o conjunto resultante desta combinação, aplica-se o elitismo;

Condição de parada: O hMOEA conclui sua operação quando uma condição pré-estabelecida (número fixo de iterações ou de avaliações da função objetivo) é atingida. A seguir é feito um detalhamento de cada uma das principais fases do algoritmo. Primeiramente, faz-se uma descrição dos operadores de busca local implementados pelo hMOEA.

Figura 4-3: Fluxograma do algoritmo evolucionário multiobjetivo hMOEA proposto neste trabalho.

4.2.1 Operadores de Busca Local ou de Movimento

Os resultados gerados por um processo de otimização podem ser refinados através da introdução de mecanismos de busca local. Normalmente, estes mecanismos tentam aprimorar, iterativamente, uma solução s através de sucessivas substituições da solução corrente por uma solução melhor (solução mutante) encontrada na vizinhança da solução s. A vizinhança de uma solução s, representada por 𝒩(s), compreende o

Construção do Cenário Inicialização da População Avaliação (Simulação) Seleção Cruzamento

Busca Local Mutação

Elitismo Fim do Processo? Sim Não Avaliação (Simulação)

43

conjunto de soluções (chamados vizinhos) que podem ser alcançados a partir de s

através de modificações, conhecido por move, nos componentes da solução s

(Zachariadis & Kiranoudis, 2010) (Crainic & Toulouse, 2010). Quanto à definição do vizinho para substituir à solução corrente, duas regras são comumente empregadas (Hoos & Stützle, 2005):

Best improvement: Também conhecida como Hill-climbing, esta é uma estratégia de

exploração que, em cada iteração, examina toda a vizinhança da solução s e retorna o

vizinho que produz a máxima melhoria na função de avaliação;

First improvement: Esta técnica faz uma exploração parcial da vizinhança da solução s em cada iteração. Ela retorna o primeiro vizinho que produz uma melhoria na função de avaliação.

Ambas as estratégias são provenientes do contexto mono-objetivo e muito frequentemente produzem a mesma solução final (Resende & Ribeiro, 2010). Porém, a combinação de mecanismos de busca local com algoritmos evolucionários multiobjetivo tem despertado a atenção dos estudiosos. Esta combinação tem propiciado uma melhor convergência dos algoritmos e melhorado a qualidade das soluções finais (Tan, Cheong, & Goh, 2007) (Sindhya, Sinha, Deb, & Miettinen, 2009) (Tan, Cheong, & Goh, 2007).

Diante deste fato, diversos mecanismos foram desenvolvidos para estender os algoritmos de busca local para aplicação em MOPs. Uma ideia simples é introduzir outros critérios para aceitação de novas soluções pelos mecanismos de busca (Paquete, Chiarandini, & Stützle, 2004). Métodos que utilizam esta funcionalidade são chamados de métodos Pareto de busca local (Pareto Local Search - PLS) (Drugan & Thierens, 2012) (Paquete & Stützle, 2006).

Um exemplo de método PLS pode ser encontrado no trabalho de Lacomme et al.

(Lacomme, Prins, & Sevaux, 2006). Eles propuseram quatro regras (critérios) para aceite de uma solução vizinha s’, resultante de um movimento numa solução s, para um VRP com dois objetivos. Os quatro critérios, chamados de LS1 a LS4, são:

LS1: accept(s,s’) : f1(s’) – f1(s) < 0; LS2: accept(s,s’) : f2(s’) – f2(s) < 0; LS3: accept(s,s’) : s’ domina s;

LS4: accept(s,s’) : w1.( f1(s’) – f1(s) ) + ( 1 - w1).( f2(s’) – f2(s) ) < 0, onde o fator w1 (número real no intervalo [0, 1]) é calculado pela equação (Murata, Nozawa, Ishibuchi, & Mitsuo, 2003): 𝑤1 = (𝑓1(𝑠) − 𝑓1𝑚𝑖𝑛 𝑓1𝑚𝑎𝑥 − 𝑓1𝑚𝑖𝑛) ( 𝑓1(𝑠) − 𝑓1𝑚𝑖𝑛 𝑓1𝑚𝑎𝑥− 𝑓1𝑚𝑖𝑛+ 𝑓2(𝑠) − 𝑓2𝑚𝑖𝑛 𝑓2𝑚𝑎𝑥− 𝑓2𝑚𝑖𝑛) ⁄ .

em que w1 indica a direção de descida (problema de minimização) da solução s e

fimin e fimax correspondem, respectivamente, os valores mínimo e máximo do objetivo fi, i = 1,2 da população corrente.

44

Em outro trabalho recente, Drugan e Thierens (Drugan & Thierens, 2012) desenvolveram diversos métodos de busca na vizinhança, descritos a seguir, denominados de métodos de busca local multiobjetivo baseados em dominância (Dominance-based Multiobjective Local Search -DMLS) pelos autores, para aplicação em

MOCOs. Os métodos propostos combinam uma estrutura de vizinhança com um arquivo de soluções eficientes. Este arquivo, retornado ao final de cada método, é atualizado pelos mecanismos de busca. Os métodos têm, em comum, os seguintes parâmetros: Uma solução inicial s, um conjunto Pareto de soluções, denominado de A, que não possui relação de dominância com s e que foi gerada anteriormente e uma função multiobjetivo f = (f1, ..., fm). Os métodos propostos no trabalho pesquisado foram:

Best Pareto Improvement (BPI): Descrito no Algoritmo 1, o método BPI varre

completamente a vizinhança da solução s. O conjunto de soluções A’, retornado pelo

método, contém soluções de 𝒩(s) que dominam ou são incomparáveis com as soluções

do conjunto {s} U A e com todas as demais soluções encontradas em 𝒩(s). A função

merge (linha 5 do algoritmo) agrupa dois ou mais conjuntos Pareto em um novo conjunto Pareto removendo as soluções dominadas do conjunto final. As buscas na vizinhança de uma solução continuam até que todas as soluções do conjunto A’ tenham

sido visitadas (O flag visited identifica se a vizinhança de uma solução foi examinada

(visited = true) ou não (visited = false) pelo método). Best Pareto Improvement Procedure - BPI (s, A, f)

s: solução inicial;

A: Conjunto Pareto de entrada; f: Função multiobjetivo; 1 A’ ← {s} U A;

2 for all s’ N(s)

3 if ∀s’’ ∈ A’, f(s’) ≺ f(s’’) V f(s’) || f(s’’) % || indica que as soluções são incomparáveis entre si. 4 s’.visitedfalse;

5 A’ ← merge (A’, {s’}); 6 end-if

7 end-for

8 return A’ \ ({s} U A);

Algoritmo 1: Pseudocódigo do algoritmo Best Pareto improvement (BPI).

Neutral Pareto Improvement (NPI): O método NPI, apresentado pelo Algoritmo 4, interrompe a busca na vizinhança da solução s quando um vizinho de s, que não é

dominado por s nem por nenhuma solução do conjunto A, é identificado.

Neutral Pareto Improvement Procedure - NPI (s, A, f) s: Solução inicial;

A: Conjunto Pareto de entrada; f: Função multiobjetivo; 1 A’ ← {s} U A;

2 for all s’ N(s)

3 if ∀s’’ ∈ A’, f(s’) ≺ f(s’’) V f(s’) || f(s’’) % || indica que as soluções são incomparáveis entre si. 4 s’.visitedfalse;

5 A’ ← merge (A’, {s’}); 6 return A’ \ ({s} U A); 7 end-if

8 end-for

45

First Pareto Improvement (FPI): Descrito no Algoritmo 3, este método conclui sua

operação quando a primeira solução de 𝒩(s) que domina a solução s é localizada.

First Pareto Improvement Procedure - FPI (s, A, f) s: Solução inicial;

A: Conjunto Pareto de entrada; f: Função multiobjetivo; 1 A’ ← {s} U A;

2 for all s’ N(s)

3 if ∀s’’ ∈ A’, f(s’) ≺ f(s’’) V f(s’) || f(s’’) 4 s’.visitedfalse;

5 A’ ← merge (A’, {s’}); 6 if f(s’) ≺ f(s)

7 return A’ \ ({s} U A); 8 end-if

9 end-if 10 end-for

Algoritmo 3: Pseudocódigo do algoritmo First Pareto improvement (FPI).

O hMOEA também implementa um conjunto de operadores de movimento para

explorar o espaço de soluções do problema de despachos de veículos em minas a céu aberto. Os operadores, classificados como operadores intra despachos, são utilizados pelas rotinas de geração da população inicial (descrita em 4.2.2) e pela rotina de perturbação do conjunto de soluções não-dominadas (detalhada em 4.3). Basicamente, eles modificam o código genético de um indivíduo, identificado na ativação de cada operador. Os seguintes operadores intra despachos foram desenvolvidos para o

hMOEA:

Shovel–Lsho(s,d) : d (definido aleatoriamente) despachos distintos da escala s têm sua rota e equipamento de carga alterados. A compatibilidade entre o tipo do veículo

presente no despacho e o novo equipamento de carga é mantida;

Shuffle–Lshu (s): Um tipo de veículo tty é selecionado e um equipamento de carga sh da

escala s, compatível com tty, também é selecionado. Todos os despachos da escala s,

associados à sh, são removidos e inseridos em novas posições de s;

Arbitrary_change-Larb(s,tty): Ilustrado pela Figura 4-4, este operador é uma adaptação

do operador arbitrary_two_jobs_change, proposto por Murata e Ishibuschi (Murata &

Ishibuchi, 1994) Dois despachos da escala s, associados a equipamentos de carga

distintos e ao tipo de veículo identificado por tty, são selecionados e trocados;

Shift_Change–Lsft (s, tty): Neste operador, um despacho da escala s, associado ao tipo de veículo identificado por tty, é removido da sua posição atual e inserido em outra posição de s (definida de forma aleatória). Este operador foi adaptado a partir do

operador shift_change, proposto por Murata e Ishibuschi (Murata & Ishibuchi, 1994);

TType_Queue-Ltqu(s, tty): Todos os despachos da escala s, associados ao tipo de veículo

tty, com fila no ponto de carregamento são removidos da sua posição corrente e