O uso da abordagem utilizando a evoluc¸˜ao diferencial com lista de movimentos foi aplicada a este trabalho como alternativa para criar uma evoluc¸˜ao diferencial com representac¸˜ao
discreta.
Para a realizac¸˜ao da evoluc¸˜ao diferencial, foi utilizada uma adaptac¸˜ao do esquema proposto por Storn e Price (1995) para realizac¸˜ao da diferenc¸a vetorial em conjunto com a lista de movimentos por Prado et al. (2012) e Prado et al. (2010). Nesta adaptac¸˜ao, o vetor modificado ´e alcanc¸ado atrav´es da equac¸˜ao 14
Vi,g= Xi,g+ F(Xbest,g− Xi,g) + F(Xr1,g− Xr2,g) (14)
onde Vi,g representa o vetor modificado, Xi,g o vetor alvo, Xbest,g o vetor referente ao
melhor indiv´ıduo da gerac¸˜ao e Xr1,g, Xr2,g como vetores aleat´orios usados na diferenc¸a vetorial.
O valor da escalar F ´e o mesmo para ambas as operac¸˜oes.
Ap´os a importac¸˜ao dos dados encontrados na base de dados MusicXML para o ambi- ente computacional, o algoritmo ED se inicia. Em sua primeira etapa, uma populac¸˜ao inicial ´e criada de forma aleat´oria a fim de garantir uma boa diversidade de indiv´ıduos. Logo ap´os ´e ava- liada e inicia-se o processo de evoluc¸˜ao dessa populac¸˜ao at´e que atenda os crit´erios de parada estabelecidos. A Figura 43 demonstra o pseudoc´odigo utilizado para a abordagem proposta do algoritmo.
Ap´os entrar no lac¸o de repetic¸˜ao, caso o crit´erio de parada n˜ao tenha sido satisfeito, o algoritmo proposto realiza a primeira etapa para que possa evoluir sua populac¸˜ao.
Esta primeira etapa consiste em definir o vetor alvo, o vetor referente ao melhor in- div´ıduo da gerac¸˜ao e os vetores utilizados no processo da diferenc¸a vetorial. O vetor alvo, a cada iterac¸˜ao, ´e um indiv´ıduo diferente da populac¸˜ao que est´a sendo evolu´ıda. Em seguida os vetores utilizado na diferenc¸a vetorial s˜ao escolhidos aleatoriamente bem como o melhor indiv´ıduo da populac¸˜ao.
Uma vez definidos os vetores, a pr´oxima etapa do algoritmo realiza a gerac¸˜ao da lista de movimentos.
Para o problema apresentado, a lista de movimentos consiste em encontrar quais posic¸˜oes s˜ao diferentes entre os vetores. Estas posic¸˜oes diferentes s˜ao denominadas movimentos. Uma parte dos movimentos se refere `as posic¸˜oes diferentes entre o melhor indiv´ıduo e o vetor alvo, a outra parte entre dois indiv´ıduos aleat´orios.
A Figura 44 demostra um exemplo da gerac¸˜ao destes movimentos para uma m´usica composta de 10 notas. ´E poss´ıvel observar os movimentos sendo apresentados atrav´es da tupla < corda, casa, nota > onde nota se refere ao n´umero da nota na m´usica.
1 Realizar a importac¸˜ao da m´usica;
2 Gerar uma populac¸˜ao inicial randˆomica;
3 Avaliar os indiv´ıduos da populac¸˜ao;
4 enquanto crit´erio de parada n˜ao for satisfeito fac¸a
5 para cada individuo da populac¸˜ao fac¸a
6 Defina os vetoresXi,g, Xbest,g, Xr1,ge Xr2,g; 7 Gere os movimentos Mbest = (Xbest,g− Xi,g); 8 Gere os movimentos Mrand= (Xr1,g− Xr2,g); 9 Gere a lista de movimentos Mbest,rand;
10 Aplique o escalar F `a lista de movimentos Mbest,rand0 = F × Mbest,rand; 11 Gere o vetor mutante Vi,g= Xi,g+ Mbest,rand0 ;
12 para cada gene do Vetor Alvo Xj,i,gfac¸a
13 se rand(0, 1) ≤ Cr ent˜ao
14 Vetor experimental recebe gene do vetor modificado Uj,i,g= Vj,i,g
;
15 sen˜ao
16 Vetor experimental recebe gene do vetor alvo Uj,i,g= Xj,i,g;
17 fim
18 fim
19 Avaliar vetor experimental;
20 se aptidaoVetorExperimental ≤ aptidaoVetorAlvo ent˜ao
21 Nova populac¸˜ao recebe vetor experimental;
22 sen˜ao
23 Nova populac¸˜ao recebe vetor alvo;
24 fim
25 fim
26 fim
Figura 43: Pseudoc´odigo proposto para o ED com lista de movimentos.
.
Fonte: Autoria pr´opria.
Na primeira parte dos movimentos do exemplo, uma vez que a primeira, quarta, oitava e nona nota s˜ao diferentes entre os dois vetores envolvidos, foi gerado o conjunto de movi- mentos Mbest possuindo as posic¸˜oes < 1, 3, 1 >, < 2, 8, 4 >, < 1, 1, 8 > e < 1, 5, 9 >. Na se- gunda parte dos movimentos foi gerado o conjunto de movimentos Mrandpossuindo as posic¸˜oes
< 1, 1, 3 >, < 2, 10, 8 >.
Ap´os a gerac¸˜ao dos conjuntos de movimentos, estes s˜ao submetidos `a aplicac¸˜ao do escalar F a fim de que sejam ponderados e posteriormente combinados para gerar a lista de movimentos. A Figura 45 demonstra a aplicac¸˜ao deste escalar para F = 0,5 onde os movimentos < 1, 1, 8 > e < 1, 5, 9 > de Mbest e o movimento < 2, 10, 8 > de Mrand s˜ao eliminados do
Figura 44: Gerac¸˜ao do conjunto de movimentos para abordagem proposta. Fonte: Autoria pr´opria.
Figura 45: Exemplo de aplicac¸˜ao da escalar F. Fonte: Autoria pr´opria.
A combinac¸˜ao dos movimentos para a gerac¸˜ao da lista de movimentos ´e realizada da seguinte forma: o primeiro movimento de um dos vetores ´e selecionado para compor a lista, o segundo movimento ´e selecionado do outro vetor. Esta alternˆancia entre as selec¸˜oes segue at´e que n˜ao haja mais movimentos a serem selecionados para formar a lista de movimentos.
Caso um conjunto de movimentos seja maior que o outro, quando n˜ao houver mais movimentos de um conjunto para serem selecionados e o outro conjunto ainda possuir, todos os movimentos do conjunto restante s˜ao selecionados para compor a lista de movimentos. A Figura 46 demonstra a gerac¸˜ao de uma lista de movimentos a partir dos conjuntos de movimentos Mbest0 e Mrand0 .
Por fim a lista de movimentos ´e aplicada ao vetor alvo a fim de gerar o vetor mu- dado. A aplicac¸˜ao da lista de movimentos consiste em substituir as posic¸˜oes do vetor alvo pelos movimentos contidos na lista de movimentos. A Figura 47 exemplifica a aplicac¸˜ao da lista.
Figura 46: Exemplo de gerac¸˜ao da lista de movimentos para a abordagem proposta. Fonte: Autoria pr´opria.
Figura 47: Exemplo da aplicac¸˜ao da lista de movimentos. Fonte: Autoria pr´opria.
A pr´oxima etapa do algoritmo consiste em criar o vetor experimental a partir do vetor alvo e do vetor modificado. A criac¸˜ao do vetor experimental est´a sujeita a uma taxa de crossover Cr. Para um n´umero aleat´orio gerado entre 0 e 1, se este n´umero for menor ou igual `a taxa ent˜ao a posic¸˜ao do vetor experimental receber´a a posic¸˜ao do vetor modificado, caso contr´ario receber´a do vetor alvo. Este processo se repete at´e que todo o vetor experimental receba os genes.
Ao t´ermino da gerac¸˜ao do vetor experimental, este ´e avaliado e caso sua aptid˜ao seja melhor que o vetor alvo, o vetor experimental ´e selecionado para formar a populac¸˜ao da pr´oxima gerac¸˜ao, caso contr´ario o vetor alvo ´e selecionado.