• Nenhum resultado encontrado

T-SA: Hibridização da transgenética com simulated annealing

O procedimento geral do T-SA é descrito no Algoritmo 16. Assim como no M-SA, os endossimbiontes são representados pela lista simples de arestas que compõem a árvore, conforme proposto por Raidl e Julstrom (2003). O fitness de um indivíduo é igual ao seu valor OWA. Inicialmente, #𝑝𝑜𝑝𝑆𝑖𝑧𝑒 endossimbiontes são criados e aquele de melhor fitness é guardado na variável 𝑏𝑒𝑠𝑡. O tamanho da população se mantém fixo até o fim do algoritmo. O procedimento de gerar a população inicial é idêntico ao descrito na seção 7.1.1. Inicialmente, as cadeias de DNA de todos os endossimbiontes são inseridas no hospedeiro. O processo de atualização do material genético do hospedeiro é descrito na seção 7.2.1. O algoritmo começa, então, seu processo evolucionário, finalizando após #𝑚𝑎𝑥_𝑔𝑒𝑛 gerações. Em cada geração, um conjunto de #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠𝑇 𝑜𝑡𝑎𝑙 plasmídeos é criado. Primeiramente, todos os plasmídeos tentam atacar a melhor solução corrente. Em seguida, cada indivíduo da população sofre o ataque de pelo menos um plasmídeo. Experimentos preliminares executados por esta pesquisa mostraram que a estratégia de atacar, separadamente, o best tem duas vantagens principais: (1) acelerar a convergência em direção a soluções melhores; (2) aumentar as chances de preencher o hospedeiro com informações genéticas de melhor qualidade. De fato, quando um plasmídeo consegue com sucesso atacar a melhor solução corrente significa que uma nova melhor solução foi alcançada, o que explica a afirmação (1). Ademais, se o ataque é bem sucedido, então a cadeia de DNA do 𝑏𝑒𝑠𝑡 é inserida no hospedeiro, tal como indicado na Linha 13 do Algoritmo 16, o que justifica a afirmativa (2). Deste modo, melhores plasmídeos podem ser criados nas iterações posteriores. Detalhes da sub-rotina da Linha 13 são apresentados pela seção 7.2.1.

Após a atuação dos plasmídeos, os transponsons entram em ação. Dois tipos de transponsons são propostos. O primeiro é baseado no método rmcPrim (KNOWLES, 2002) e executa com probabilidade #𝑝𝑟𝑜𝑏𝑇 𝑟𝑎𝑛𝑠1 e o segundo é baseado em recozimento simulado e executa com probabilidade #𝑝𝑟𝑜𝑏𝑇 𝑟𝑎𝑛𝑠2. Em ambos os casos, o endossimbionte é substituído somente se o transponson conseguir gerar uma solução de fitness melhor. A seção 7.2.2 apresenta detalhes sobre todos os vetores transgenéticos utilizados pelo T-SA.

Algoritmo 16: T-SA - Algoritmo transgenético hibridizado com SA

Entrada: Grafo 𝐺(𝑉, 𝐸)

Saída: Árvore com melhor custo OWA encontrado

1 Pop = getInitialPop(#popSize);

2 best = ∞;

3 setBest(Pop, best);

4 𝐻𝑜𝑠𝑡 = {}; // representa o hospedeiro;

5 para todo 𝑠 ∈ 𝑃 𝑜𝑝 faça

6 𝐻𝑜𝑠𝑡.𝑎𝑑𝑑𝐺𝑒𝑛𝑒𝑡𝑖𝑐𝐼𝑛𝑓 𝑜(𝑠);

7 fim

8 para 𝑔 = 1...#𝑚𝑎𝑥_𝑔𝑒𝑛 faça

9 𝑝𝑙 = 𝑐𝑟𝑖𝑎𝑟𝑃 𝑙𝑎𝑠𝑚𝑖𝑑𝑒𝑜𝑠(#𝑛𝑢𝑚𝑃 𝑙𝑎𝑠𝑇 𝑜𝑡𝑎𝑙, 𝐻𝑜𝑠𝑡);

10 para i = 1 ... #numPlasTotal faça

11 𝑏 = 𝑝𝑙𝑎𝑠𝑚𝑖𝑑(𝑝𝑙[𝑖], 𝑏𝑒𝑠𝑡); 12 se 𝑂𝑊 𝐴(𝑏) < 𝑂𝑊 𝐴(𝑏𝑒𝑠𝑡) então 13 𝐻𝑜𝑠𝑡.𝑎𝑑𝑑𝐺𝑒𝑛𝑒𝑡𝑖𝑐𝐼𝑛𝑓 𝑜(𝑏𝑒𝑠𝑡); 14 𝑏𝑒𝑠𝑡 = 𝑏; 15 fim 16 fim

17 para todo 𝑗 = 1...#𝑝𝑜𝑝𝑆𝑖𝑧𝑒 faça

18 𝑡𝑟 = 𝑖𝑛𝑡_𝑟𝑎𝑛𝑑𝑜𝑚(1, #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠𝑇 𝑜𝑡𝑎𝑙); 19 𝑠 = 𝑝𝑙𝑎𝑠𝑚𝑖𝑑(𝑝𝑙[𝑡𝑟], 𝑃 𝑜𝑝[𝑗]); 20 se 𝑂𝑊 𝐴(𝑠) < 𝑂𝑊 𝐴(𝑃 𝑜𝑝[𝑗]) então 21 𝐻𝑜𝑠𝑡.𝑎𝑑𝑑𝐺𝑒𝑛𝑒𝑡𝑖𝑐𝐼𝑛𝑓 𝑜(𝑃 𝑜𝑝[𝑗]); 22 𝑃 𝑜𝑝[𝑗] = 𝑠; 23 fim 24 se 𝑓 𝑙𝑜𝑎𝑡_𝑟𝑎𝑛𝑑𝑜𝑚(0, 1) < #𝑝𝑟𝑜𝑏𝑇 𝑟𝑎𝑛𝑠1 então 25 𝑠 = 𝑝𝑟𝑖𝑚𝑇 𝑟𝑎𝑛𝑠(𝑃 𝑜𝑝[𝑗]); 26 se 𝑂𝑊 𝐴(𝑠) < 𝑂𝑊 𝐴(𝑃 𝑜𝑝[𝑗]) então 27 𝐻𝑜𝑠𝑡.𝑎𝑑𝑑𝐺𝑒𝑛𝑒𝑡𝑖𝑐𝐼𝑛𝑓 𝑜(𝑃 𝑜𝑝[𝑗]); 28 𝑃 𝑜𝑝[𝑗] = 𝑠; 29 fim 30 fim 31 se 𝑓 𝑙𝑜𝑎𝑡_𝑟𝑎𝑛𝑑𝑜𝑚(0, 1) < #𝑝𝑟𝑜𝑏𝑇 𝑟𝑎𝑛𝑠2 então 32 𝑠 = 𝑃 𝑜𝑝[𝑗]; 33 𝑆𝐴_𝑇 𝑟𝑎𝑛𝑠(𝑠); 34 se 𝑂𝑊 𝐴(𝑠) < 𝑂𝑊 𝐴(𝑃 𝑜𝑝[𝑗]) então 35 𝐻𝑜𝑠𝑡.𝑎𝑑𝑑𝐺𝑒𝑛𝑒𝑡𝑖𝑐𝐼𝑛𝑓 𝑜(𝑃 𝑜𝑝[𝑗]); 36 𝑃 𝑜𝑝[𝑗] = 𝑠; 37 fim 38 fim 39 se 𝑂𝑊 𝐴(𝑃 𝑜𝑝[𝑗]) < 𝑂𝑊 𝐴(𝑏𝑒𝑠𝑡) então 40 𝑏𝑒𝑠𝑡 = 𝑃 𝑜𝑝[𝑗]; 41 fim 42 fim 43 fim 44 Retorne best;

7.2.1

Material genético do hospedeiro

O material genético do hospedeiro é completamente formado a posteriori. Ou seja, as informações do hospedeiro emergem durante o processo evolucionário do algoritmo (GOLDBARG; GOLDBARG, 2013). Assim, o Algoritmo 16 não calcula informações genéticas previamente. As informações adicionadas ao hospedeiro durante o processo

evolucionário constituem bons limites superiores para o problema. Esta estratégia foi inspirada no trabalho de Monteiro, Goldbarg e Goldbarg (2010).

Seja Host o conjunto de cadeias de DNA representando o hospedeiro. Primei- ramente, o DNA dos indivíduos da população inicial são inseridos em Host (Linha 6). Durante o processo evolucionário, Host é atualizado cada vez que o ataque de um vetor transgenético é bem sucedido. Quando uma solução 𝑠 ∈ 𝑃 𝑜𝑝 é atacada com sucesso, a sub-rotina 𝐻𝑜𝑠𝑡.𝑎𝑑𝑑𝐺𝑒𝑛𝑒𝑡𝑖𝑐𝐼𝑛𝑓 𝑜(𝑠) atualiza o hospedeiro, adicionando o DNA original de 𝑠 em Host. Ou seja, ao invés de se desfazer complemente da cadeia genética atacada, visa-se guardá-la e utilizar seu material genético posteriormente. Com isso, almeja-se transformar o hospedeiro num repositório de cadeias de DNA recicláveis. Experimentos preliminares realizados por esta pesquisa mostraram que, embora um endossimbionte seja atacado, porções de seu DNA podem ser reutilizadas para constituir bons vetores transgenéticos nas próximas gerações.

Host pode armazenar no máximo 3 * #𝑝𝑜𝑝𝑆𝑖𝑧𝑒 cadeias de material genético. A sub-rotina 𝐻𝑜𝑠𝑡.𝑎𝑑𝑑𝐺𝑒𝑛𝑒𝑡𝑖𝑐𝐼𝑛𝑓 𝑜(𝑠) insere diretamente em Host a nova cadeia de DNA caso haja espaço (ou seja, caso a referida capacidade máxima não tenha sido atingida). Caso contrário, a nova cadeia 𝑠 de DNA deve substituir a cadeia de maior fitness. Assim, tenta-se manter uma sorte de elitismo nas cadeias de DNA do hospedeiro. Mais que isso, as estratégias ora relatadas conferem ao hospedeiro traços de um repositório dinâmico e elitista de material genético reciclável.

7.2.2

Vetores transgenéticos

Três tipos de plasmídeos são implementados: 𝑝𝑙𝑎𝑠1, 𝑝𝑙𝑎𝑠2 e 𝑝𝑙𝑎𝑠3. A cada geração do Algoritmo 16, #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠𝑇 𝑜𝑡𝑎𝑙 plasmídeos são criados, de modo que #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠𝑇 𝑜𝑡𝑎𝑙 = #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠1+#𝑛𝑢𝑚𝑃 𝑙𝑎𝑠2+#𝑛𝑢𝑚𝑃 𝑙𝑎𝑠3, onde #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠1, #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠2 e #𝑛𝑢𝑚𝑃 𝑙𝑎𝑠3 representam, respectivamente, a quantidade de plasmídeos do tipo 1, 2 e 3. O tamanho 𝑝𝑙𝑠𝑖𝑧𝑒da cadeia genética transportada por qualquer plasmídeo é sorteado com probabilidade

uniforme entre [2,𝑛−12 ], onde 𝑛 é a quantidade de vértices do grafo.

O plasmídeo recombinado 𝑝𝑙𝑎𝑠1, proposto por Monteiro, Goldbarg e Goldbarg (2010), tal como descrito na seção 4.4.2.3, utiliza o método rmcPrim (KNOWLES, 2002) para construir uma árvore parcial e obter sua cadeia genética. Faz-se, pois, necessário um conjunto Λ de vetores de escalarização. O conjunto Λ possui quatro tipos de vetores: as direções de referência do SPEA/R (JIANG; YANG, 2017) (Anexo C) e os critérios k-centrum (TAMIR, 2001), k-trimmed (GALAND; SPANJAARD, 2012) e Hurwicz (HURWICZ, 1951).

Esta variedade de vetores de escalarização confere diversidade ao material genético dos plasmídeos 𝑝𝑙𝑎𝑠1. Cada vez que um plasmídeo deste tipo vai ser criado, um vetor de escalarização 𝜆 ∈ Λ é sorteado com probabilidade uniforme.

O segundo plasmídeo adotado pelo T-SA refere-se ao plasmídeo simples 𝑝𝑙𝑎𝑠2, o qual fora proposto inicialmente por Rocha, Goldbarg e Goldbarg (2007) e fora adotado

por Monteiro, Goldbarg e Goldbarg (2010). Tal como detalhado na seção 4.4.2.3, este plasmídeo constrói sua cadeia genética a partir do DNA de uma solução armazenada no hospedeiro.

O 𝑝𝑙𝑎𝑠3, por sua vez, é proposto pelo presente trabalho e fora detalhado na seção 5.3. Este é um plasmídeo simples que obtém sua informação genética a partir de duas cadeias de DNA do hospedeiro. Dadas as cadeias de DNA 𝑠1 e 𝑠2, o 𝑝𝑙𝑎𝑠3 constrói sua cadeia escolhendo arestas em (𝐸(𝑠1) ∪ 𝐸(𝑠2)) − (𝐸(𝑠1) ∩ 𝐸(𝑠2)).

O procedimento de manipulação de uma solução 𝑠 é idêntico para todos os plasmídeos. Um indivíduo 𝑠 é construído inserindo, primeiramente, toda a cadeia genética do plasmídeo. Em seguida, tanta-se inserir as arestas de 𝑠 em 𝑠 de modo a não formar ciclos. Caso necessário, arestas aleatórias da instância são inseridas em 𝑠 de modo a formar uma árvore final. Esta estratégia foi utilizada por Monteiro, Goldbarg e Goldbarg (2010).

Dois transponsons são implementados: 𝑝𝑟𝑖𝑚𝑇 𝑟𝑎𝑛𝑠 e 𝑆𝐴_𝑇 𝑟𝑎𝑛𝑠. O primeiro foi proposto e utilizado por Monteiro, Goldbarg e Goldbarg (2010) (ver seção 4.4.2.3) e o segundo é proposto pelo presente trabalho.

A regra do 𝑆𝐴_𝑇 𝑟𝑎𝑛𝑠 consiste em realizar uma busca local baseada em reco- zimento simulado, cujo procedimento geral é descrito no Algoritmo 15. O transponson recebe um endossimbionte 𝑠 como argumento e considera todo seu DNA no processo de busca. Como fora explicado previamente, o objetivo deste algoritmo é intensificar a busca na região de 𝑠, garantindo, simultaneamente, um certo grau de diversificação. O objetivo desta estratégia é fugir de ótimos locais. A inspiração do 𝑆𝐴_𝑇 𝑟𝑎𝑛𝑠 veio da proposta de Talbi (2002), segundo a qual um procedimento de busca local pode atuar como um operador evolucionário. Neste sentido, o T-SA pode ser classificado como uma hibridização de baixo nível co-evolucionária.

O 𝑝𝑟𝑖𝑚𝑇 𝑟𝑎𝑛𝑠 e o 𝑆𝐴_𝑇 𝑟𝑎𝑛𝑠 têm probabilidade de ataque, respectivamente, #𝑝𝑟𝑜𝑏𝑇 𝑟𝑎𝑛𝑠1 e #𝑝𝑟𝑜𝑏𝑇 𝑟𝑎𝑛𝑠2. Esta regra possibilita o ataque do segundo transponson a um endossimbionte proveniente do primeiro transponson (ou de algum plasmídeo), intensificando, portanto, a busca em sua região. O ataque de ambos os transponsons a um endossimbionte 𝑠 é bem sucedido somente se o endossimbionte resultante possuir fitness melhor que 𝑠.

8 Experimentos dos algoritmos para a

AG-OWA

Este capítulo apresenta e discute os resultados dos algoritmos baseados no operador OWA: o T-SA e o M-SA. Todos os experimentos deste capítulo foram realizados em

máquinas com as mesmas configurações especificadas no Capítulo 6.

A seção 8.1 detalha o conjunto de instâncias utilizado, a seção 8.2 disserta acerca da metodologia, a seção 8.3 especifica os valores dos parâmetros e a seção 8.4 introduz brevemente a forma como os resultados foram organizados. Finalmente, as seções 8.5, 8.6 e 8.7 detalham e discutem os resultados para instâncias com 5, 8 e 10 objetivos, respectivamente.

8.1

Instâncias utilizadas

O banco de instâncias adotado consiste em grafos completos, possuindo de 30 a 1000 vértices, cujas arestas são ponderadas por vetores de 5, 8 ou 10 inteiros positivos. Costuma-se chamar estas instâncias de many-objetivo. Para cada quantidade 𝑛 de vértices, foram geradas três instâncias distintas, denotadas, respectivamente, por n.1, n.2 e n.3. Todas as instâncias foram geradas com o gerador de Knowles (2002) considerando a correção proposta por Chen et al. (2007) (que impede a geração de peso negativo). Até a data de publicação desta obra, tal gerador comportava apenas duas classes de instâncias many-objetivo: correlated e anticorrelated. Os valores escolhidos do parâmetro 𝛽, necessário para gerar tais classes de instâncias, foram 0, 2, 0, 5 e 0, 85 para instâncias correlated n.1, n.2 e n.3, respectivamente. Para instâncias anti-correlated, o parâmetro 𝛽 assume valores −0, 2, −0, 5 e −0, 85 respectivamente para os grupos n.1, n.2 e n.3.

As instâncias precisam ser acrescidas de um vetor 𝜔 ∈ ℜ𝑞 de pesos. Três critérios

são adotados a fim de gerar o vetor 𝜔. O primeiro é o critério k-trimmed (GALAND; SPANJAARD, 2012), definido como 𝜔1 = ... = 𝜔𝑘 = 0, 𝜔𝑘+1 = ... = 𝜔𝑞−𝑘 = 𝑞−2𝑘1 e

𝜔𝑞−𝑘+1 = ... = 𝜔𝑞 = 0, onde 𝑘 ∈

[︁

1,2𝑞[︁. O segundo é o critério k-centrum (TAMIR, 2001), definido como 𝜔1 = ... = 𝜔𝑘 = 1/𝑘 e 𝜔𝑘+1 = ... = 𝜔𝑞 = 0 onde 𝑘 é escolhido

randomicamente em [1, 𝑞]. Especificamente para o critério k-centrum, adotou-se 𝑘 ∈ {1, 2} para instâncias com 5 objetivos, 𝑘 ∈ {1, 2, 3} para instâncias com 8 e 𝑘 ∈ {2, 3, 4} para instâncias com 10 objetivos. O terceiro é o critério Hurwicz (HURWICZ, 1951), definido como 𝜔1 = 𝛼, 𝜔2 = ... = 𝜔𝑞−1 = 0 e 𝜔𝑞 = 1 − 𝛼, onde 𝛼 é escolhido randomicamente em

{0, 2, 0, 3, 0, 4, 0, 6, 0, 7, 0, 8}.

Finalmente, o conjunto de instâncias é formado por 810 grafos completos que combinam número de objetivos, critérios OWA e classe de correlação. O banco é dividido em

três subconjuntos que agrupam 270 instâncias com a mesma quantidade de objetivos. Cada um destes subconjuntos possui 90 instâncias de cada critério OWA, dividas igualmente nas duas classes de correlação. Reitera-se ainda que, a fim de facilitar a leitura deste capítulo, no que se refere à nomenclatura ora empregada, o termo “critério” ou “critério OWA” refere-se a k-trimmed, k-centrum e Hurwicz, enquanto o termo “classe” refere-se a correlated e anticorrelated.