public GeraQuadroHorarios() { Professores = new List <string>(); HorariosRev = new Dictionary <string, int>(); Horarios = new List <string>(); Restricoes = new List <string>(); Solucao = new QuadroHorarios(TamanhoIndividuo); }
public GeraQuadroHorarios() { Professores = new List<string>(); HorariosRev = new Dictionary<string, int>(); Horarios = new List<string>(); Restricoes = new List<string>(); Solucao = new QuadroHorarios(TamanhoIndividuo); }
public override IIndividuo RealizarCruzamento(IIndividuo a, IIndividuo b) { IIndividuo novo = new QuadroHorarios(TamanhoIndividuo); int modulo = TamanhoIndividuo % 2; int metade = (TamanhoIndividuo - modulo) / 2; for (int indice = 0; indice < metade; indice++) { novo.Cromossomos[indice] = a.Cromossomos[indice]; } for (int indice = metade; indice < TamanhoIndividuo; indice++) { novo.Cromossomos[indice] = b.Cromossomos[indice]; } return(novo); }
public override void GerarPopulacaoInicial() { Random rnd = new Random(); for (int individuo = 0; individuo < TamanhoPopulacao; individuo++) { List <String> profs = new List <string>(); IIndividuo ind = new QuadroHorarios(TamanhoIndividuo); for (int cromossomo = 0; cromossomo < TamanhoIndividuo; cromossomo++) { String p; do { p = Professores[rnd.Next(Professores.Count)]; }while(profs.Count(x => x == p) > 1); profs.Add(p); ind.Cromossomos[cromossomo] = p; } Populacao.Add(ind); } }
public override IIndividuo RealizarCruzamento(IIndividuo a, IIndividuo b) { IIndividuo novo = new QuadroHorarios(TamanhoIndividuo); int modulo = TamanhoIndividuo % 2; int metade = (TamanhoIndividuo - modulo) / 2; for (int indice = 0; indice < metade; indice++) novo.Cromossomos[indice] = a.Cromossomos[indice]; for (int indice = metade; indice < TamanhoIndividuo; indice++) novo.Cromossomos[indice] = b.Cromossomos[indice]; return novo; }
public override void GerarPopulacaoInicial() { Random rnd = new Random(); for (int individuo = 0; individuo < TamanhoPopulacao; individuo++) { List<String> profs = new List<string>(); IIndividuo ind = new QuadroHorarios(TamanhoIndividuo); for(int cromossomo = 0; cromossomo < TamanhoIndividuo; cromossomo++) { String p; do { p = Professores[rnd.Next(Professores.Count)]; }while(profs.Count(x => x == p) > 1); profs.Add(p); ind.Cromossomos[cromossomo] = p; } Populacao.Add(ind); } }