Skip to content

Instantly share code, notes, and snippets.

@alexsandro-xpt
Created June 29, 2012 04:41
Show Gist options
  • Save alexsandro-xpt/3015805 to your computer and use it in GitHub Desktop.
Save alexsandro-xpt/3015805 to your computer and use it in GitHub Desktop.
Algoritmo genético TestCase
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace AG1 {
class Program {
static bool bit;
static bool GerarLoco()
{
//return t = !t;
Console.WriteLine("Escolhendo um valor aleatório");
Thread.Sleep((new Random()).Next(30));
int v = (new Random()).Next();
if (v % 2 == 0)
return true && (bit = !bit);
else
return false && (bit = !bit);
}
static void Main(string[] args)
{
List<Pais> listadePais = new List<Pais>();
Genotipo gOlhos = new Genotipo("Olhos");
var valorbioDiversidade = new bool[] {false, false, false};
var nomeBioDiversidade = new KeyValuePair<int, string>(3, "Castanho");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] {false, false, true};
nomeBioDiversidade = new KeyValuePair<int, string>(4, "Verde");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] {false, true, false};
nomeBioDiversidade = new KeyValuePair<int, string>(5, "Azul");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { false, true, true };
nomeBioDiversidade = new KeyValuePair<int, string>(6, "Amarelo");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { true, false, false };
nomeBioDiversidade = new KeyValuePair<int, string>(7, "Vermelho");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { true, false, true };
nomeBioDiversidade = new KeyValuePair<int, string>(8, "Branco");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { true, true, false };
nomeBioDiversidade = new KeyValuePair<int, string>(9, "Cinza");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] {true, true, true};
nomeBioDiversidade = new KeyValuePair<int, string>(10, "Preto");
gOlhos.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
Genotipo gEstrutura = new Genotipo("Estrutura");
valorbioDiversidade = new bool[] {false, false};
nomeBioDiversidade = new KeyValuePair<int, string>(3, "3 Membros");
gEstrutura.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { false, true };
nomeBioDiversidade = new KeyValuePair<int, string>(6, "2 Membros");
gEstrutura.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { true, false };
nomeBioDiversidade = new KeyValuePair<int, string>(10, "4 Membros");
gEstrutura.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
Genotipo gMente = new Genotipo("Mente");
valorbioDiversidade = new bool[] { false, false };
nomeBioDiversidade = new KeyValuePair<int, string>(3, "Burro");
gMente.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { true, true };
nomeBioDiversidade = new KeyValuePair<int, string>(6, "Esperto");
gMente.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
valorbioDiversidade = new bool[] { true, false };
nomeBioDiversidade = new KeyValuePair<int, string>(10, "Inteligente");
gMente.Fenotipo.Add(valorbioDiversidade, nomeBioDiversidade);
for (int n = 0; n < 10; n++) {
Cromossomo cromossomo1 = new Cromossomo(new bool[] { GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco() }, new Genotipo[] { gOlhos, gEstrutura, gMente });
Cromossomo cromossomo2 = new Cromossomo(new bool[] { GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco(), GerarLoco() }, new Genotipo[] { gOlhos, gEstrutura, gMente });
Pais pais = new Pais(cromossomo1, cromossomo2);
listadePais.Add(pais);
}
Cromossomo cromossomoVencedor = AlgoritmoGenetico.Evoluir(listadePais, 3, 20);
string melhor = "Nao achou";
if (cromossomoVencedor != null) {
melhor = Cromossomo.Decodifica(cromossomoVencedor);
Console.WriteLine(cromossomoVencedor.Forca());
}
Console.WriteLine(melhor);
Console.ReadKey();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment