示例#1
0
 public void MergeNewGeneration()
 {
     SortedMeals.UnionWith(Children);
     if (SortedMeals.Count != Count)
     {
         throw new Exception();
     }
     Children = new OrderedBag <IMeal>();
 }
示例#2
0
 public void RemoveNotFit()
 {
     if (RemovePart <= 0.5)
     {
         var removeKeys = SortedMeals.Skip(KeepCount).ToList(); // first is best
         foreach (var key in removeKeys)
         {
             SortedMeals.Remove(key);
         }
     }
     else
     {
         var keepKeys           = SortedMeals.Take(KeepCount).ToList(); // last is worst
         var newSortedKnapsacks = new OrderedBag <IMeal>();
         foreach (var key in keepKeys)
         {
             newSortedKnapsacks.Add(key);
         }
         SortedMeals = newSortedKnapsacks;
     }
 }
示例#3
0
 public IMeal GetFittest()
 {
     return(SortedMeals.First());
 }
示例#4
0
 public IMeal GetRandomMember()
 {
     return(SortedMeals.ElementAt(MyRandom.Next(SortedMeals.Count)));
 }