void SetaDirecaoEvolucao() { int mediaUltimosScores = 0; int maiorElemento = 0; for (int i = 0; i < arquivoGame.lastScores.Length; i++) { mediaUltimosScores += arquivoGame.lastScores[i]; if (maiorElemento < arquivoGame.lastScores[i]) { maiorElemento = arquivoGame.lastScores[i]; } } mediaUltimosScores = (mediaUltimosScores - maiorElemento) / (arquivoGame.lastScores.Length - 1); if (mediaUltimosScores < (maiorElemento / 2)) { arquivoGame.evolutionState = false; } else { arquivoGame.evolutionState = true; } for (int i = 0; i < arquivoGame.lastScores.Length; i++) { arquivoGame.lastScores[i] = -1; } SaveControl.AtualizarArquivoJogo(arquivoGame); }
void ProximaGeracao(Cromossomo primeiro, Cromossomo segundo) { Cromossomo penultimo = new Cromossomo(); Cromossomo ultimo = new Cromossomo(); if (SaveControl.RetornarEvolutionState()) { int menor = 10; for (int i = 0; i < cromossomosUsados.Count; i++) { if (cromossomosUsados[i].FuncaoAvaliacao() <= menor) { menor = cromossomosUsados[i].FuncaoAvaliacao(); if (i == 0) { penultimo = cromossomosUsados[i]; ultimo = cromossomosUsados[i]; } else { ultimo = penultimo; penultimo = cromossomosUsados[i]; } } } } else { int maior = 0; for (int i = 0; i < cromossomosUsados.Count; i++) { if (cromossomosUsados[i].FuncaoAvaliacao() >= maior) { maior = cromossomosUsados[i].FuncaoAvaliacao(); if (i == 0) { penultimo = cromossomosUsados[i]; ultimo = cromossomosUsados[i]; } else { ultimo = penultimo; penultimo = cromossomosUsados[i]; } } } } cromossomosUsados[penultimo.id].cromossomo = primeiro.cromossomo; cromossomosUsados[ultimo.id].cromossomo = segundo.cromossomo; arquivoGame.cromossomos = cromossomosUsados; SaveControl.AtualizarArquivoJogo(arquivoGame); }
void GerarPopulacaoInicial() { for (int i = 0; i < 100; i++) { Cromossomo c = new Cromossomo(); c.Inicializar(); c.id = i; cromossomosUsados.Add(c); } arquivoGame.cromossomos = cromossomosUsados; arquivoGame.evolutionState = true; for (int i = 0; i < arquivoGame.lastScores.Length; i++) { arquivoGame.lastScores[i] = -1; } SaveControl.AtualizarArquivoJogo(arquivoGame); }