public ScheduleObject MinSchedule(ScheduleObject obj) { Console.WriteLine("Максимальный время особи №1 - {0} / " + "Максимальный время особи №2 - {1}", this.Weight().weight, obj.Weight().weight); if (this.Weight().weight <= obj.Weight().weight) { return(this); } return(obj); }
public override string ToString() { StringBuilder sb = new StringBuilder(); foreach (var item in lIndividual) { ScheduleObject sch = new ScheduleObject(item, sizeRange, countPC); sb.Append(item.ToString() + "\n" + sch.Weight().weight.ToString() + "\n"); } return(sb.ToString()); }
public ScheduleObject MinSchedule(ScheduleObject obj) { using (var sw = File.AppendText(@"D:\Example.txt")) sw.WriteLine("Максимальный время особи №1 - {0} / " + "Максимальный время особи №2 - {1}", this.Weight().weight, obj.Weight().weight); if (this.Weight().weight <= obj.Weight().weight) { return(this); } return(obj); }
private void CalculateCountIndividual() { foreach (var item in lGeneration[1].Getlindividual()) { var weight = new ScheduleObject(item, sizeRange, countPC).Weight().weight; if (weight == minTime) { countSearchIndividual++; } if (weight < minTime) { countSearchIndividual = 1; minTime = weight; } } }
private void CalculateCountIndividual() { bool flag = false; foreach (var item in lGeneration[1].Getlindividual()) { var weight = new ScheduleObject(item, sizeRange, countPC).Weight().weight; if (weight == minTime && !flag) { countSearchIndividual++; flag = true; } if (weight < minTime) { countSearchIndividual = 1; minTime = weight; return; } } }
public void FillingGeneration(Generation generation) { var lGenIndividual = generation.Getlindividual(); for (int iter = lIndividual.Count; iter < countIndividual; iter++) { Int32 randPos = rnd.Next(0, countIndividual); while (randPos == iter) { randPos = rnd.Next(0, countIndividual); } Console.WriteLine("Берём {0} и {1} особи\n", iter, randPos); var resultCrossbreeding = cS.Crossbreeding(lGenIndividual[iter], lGenIndividual[randPos]); if (resultCrossbreeding.flag) { ScheduleObject schOne = new ScheduleObject(lGenIndividual[iter], sizeRange, countPC); ScheduleObject schTwo = new ScheduleObject(resultCrossbreeding.itemOne, sizeRange, countPC); Console.WriteLine("Первая особь после кроссинговера:\n" + resultCrossbreeding.itemOne.ToString()); Console.WriteLine("Расписание на её основе:\n" + schTwo.ToString()); if (resultCrossbreeding.itemOne.GeneMutation()) { Console.WriteLine("Мутировавшая первая особь:\n" + resultCrossbreeding.itemOne.ToString()); Console.WriteLine("Расписание на её основе:\n" + schTwo.ToString()); } else { Console.WriteLine("Первый ребёнок не мутировал.\n"); } ScheduleObject schThree = new ScheduleObject(resultCrossbreeding.itemTwo, sizeRange, countPC); Console.WriteLine("Вторая особь после кроссинговера:\n" + resultCrossbreeding.itemTwo.ToString()); Console.WriteLine("Расписание на её основе:\n" + schThree.ToString()); if (resultCrossbreeding.itemTwo.GeneMutation()) { Console.WriteLine("Мутировавшая вторая особь:\n" + resultCrossbreeding.itemTwo.ToString()); Console.WriteLine("Расписание на её основе:\n" + schThree.ToString()); } else { Console.WriteLine("Второй ребёнок не мутировал.\n"); } var resEqual = schOne.MinSchedule(schTwo).MinSchedule(schThree); lIndividual.Add(resEqual.GetIndividual()); Console.WriteLine("В новое поколение добавлена следующая особь: "); Console.WriteLine(resEqual.GetIndividual().ToString()); } else { Console.WriteLine("Родители не скрестились."); var buffInv = lGenIndividual[iter].CloneIndividualFull(); Console.WriteLine("Пытаемся мутировать родителя.\n"); if (buffInv.GeneMutation()) { Console.WriteLine("Мутировали родителя:\n" + buffInv.ToString()); ScheduleObject schOne = new ScheduleObject(lGenIndividual[iter], sizeRange, countPC); ScheduleObject schTwo = new ScheduleObject(buffInv, sizeRange, countPC); Console.WriteLine("Расписание на основе мутированного родителя:\n" + schTwo.ToString()); var item = schOne.MinSchedule(schTwo); Console.WriteLine("В популяцию попадает данная особь:\n" + item.GetIndividual().ToString()); lIndividual.Add(item.GetIndividual()); } else { Console.WriteLine("Мутации родителя не произошло.\n"); lIndividual.Add(lGenIndividual[iter]); } } } }