public static Gen Aleatoreo() { var asg = AsignaturaHelper.Aleatorea(); var hor = HorarioHelper.HorarioAleatoreo(); return(new Gen() { Asignatura = asg, Aula = AulaHelper.Aleatorea(asg.TipoAula, hor), Horario = hor }); }
public override void Evaluar() { int valor = 0; var genes = Genes.Select(gen => new { Horario = gen.Horario, Asignatura = gen.Asignatura.Nombre, Aula = gen.Aula.Nombre, Profesor = gen.Asignatura.NombreProfesor }); valor += 10 * genes .GroupBy(gen => new { CodigoProf = gen.Profesor, Horario = gen.Horario }) .Where(gen => gen.Count() > 1) .Count(); valor += 10 * genes .GroupBy(gen => new { Horario = gen.Horario, Aula = gen.Aula }) .Where(res => res.Count() > 1) .Count(); valor += 5 * genes. GroupBy(gen => new { Asignatura = gen.Asignatura, Aula = gen.Aula }) .Where(res => res.Count() != 4) .Count(); valor += 3 * genes .GroupBy(gen => new { Asignatura = gen.Asignatura, Aula = gen.Aula, Dia = HorarioHelper.Dia(gen.Horario) }) .Where(res => res.Count() > 1) .Count(); this.Fitness = valor; }
public override List <Individual> getNeighbourhood() { individuos.Clear(); int horarios = HorarioHelper.NumHorarios(); for (int i = 0; i < 5; i++) { var genes = Genes .Select(gen => { return(new Gen() { Asignatura = AsignaturaHelper.Aleatorea(), Coste = 0, Horario = gen.Horario, Aula = gen.Aula }); }); individuos.Add(new IndividuoPrescolar(genes)); } return(individuos); }