Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ==================================================================================================================================
- Trabalho resetou, agora será apenas este:
- Implementar GA e DE. (Algoritmo Genético e Evolução Diferencial).
- Vai minimizar a função de rastrigin.
- Fazer comparativo do GA e do DE. Testar a rastrigin com diversas quantidades de variáveis. Quanto mais comparações melhor.
- Testar modificações nos algoritmos. Dizer o que foi testado e o resultado delas. Quanto mais modificações melhor.
- E fazer um relatório.
- Ao final vai dizer o quanto conseguiu de melhor do DE e do GA; e qual dos algoritmos foi o melhor.
- TRAB ATÉ DIA 06/10/2019.
- PROVA NO DIA 07/10/2019. Irá incluir até essa parte de evolução diferencial.
- ==================================================================================================================================
- Vamos estudar a Evolução Diferencial.
- Vamos usar "3 pais", invés de apenas dois.
- Para cada solução chamada de P: escolher 3 outras soluções (R1, R2, R3), de forma aleatória.
- C sendo uma constante/coeficiente; geralmente um valor aleatório entre 0.5 e 1.5.
- P' = R1 + C * (R2 - R3) -> isso é uma mutação diferencial. Posiciona em R1 e anda na direção e passos definidos por C * (diferença de dois vetores/solução)
- Para cada dimensão, "jogar uma moeda" (50% para cada chance).
- Exemplo no caso que são 02 dimensões. P: (0, 1) P': (2, 3) Moeda: (Sim, Não)
- Então nova posição de P' vai ser: (0, 3)
- Note que com P' e P (dois pontos) dá para formar um retângulo. P' vai para algum dos vértices do retângulo.
- Aí chega no momento crueldade: O pai (P) mata o filho (P') ou vice-versa: ou seja, calcular fitness e escolher o melhor.
- Exemplo meio pseudo-código em MATLAB (Steve vai enviar o código!):
- j = randperm(dim, 1)
- for d = 1:dim
- if (rand <= 0.5) && (d ~= j) essa de d != j, é para que ao menos numa dimensão P' e P sejam diferentes, assim evitar clones.
- P'(d) = P(d);
- end
- end
- FX' = calculafx(P')
- if FX melhor que FX'
- selecionado = P
- else
- selecionado = P'
- end
- Este método consegue escapar de mínimos locais e achar o global de forma mais fácil.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement