public void Mutate(int mutationCount)
{
/*
* Possibly I can implement mutation adopted to remove errors
*/
/*
Dictionary<Teacher, List<Index>> dict = new Dictionary<Teacher, List<Index>>();
for (int day = 0; day < this.mDays.Count; ++day)
{
for (int lesson = 0; lesson < this.mDays[day].Classes[0].Lessons.Count; ++lesson)
{
dict.Clear();
for (int classN = 0; classN < this.mDays[day].Classes.Count; ++classN)
{
if (this.mDays[day].Classes[classN].Lessons[lesson] != null)
{
if (dict.ContainsKey(this.mDays[day].Classes[classN].Lessons[lesson].Teacher))
{
dict[this.mDays[day].Classes[classN].Lessons[lesson].Teacher].Add(new Index(day, classN, lesson));
}
else
{
dict.Add(this.mDays[day].Classes[classN].Lessons[lesson].Teacher, new List<Index>(){new Index(day, classN, lesson)});
}
}
}
}
}
*/
for (int i = 0; i < mutationCount; ++i)
{
Random rnd = new Random();
int classN = rnd.Next(this.mDays[0].Classes.Count);
int firstDay = rnd.Next(this.mDays.Count);
int secondDay = rnd.Next(this.mDays.Count);
int firstLesson = rnd.Next(this.mDays[firstDay].Classes[classN].Lessons.Count);
int secondLesson = rnd.Next(this.mDays[secondDay].Classes[classN].Lessons.Count);
Lesson swap;
swap = mDays[firstDay].Classes[classN].Lessons[firstLesson];
mDays[firstDay].Classes[classN].Lessons[firstLesson] = mDays[secondDay].Classes[classN].Lessons[secondLesson];
mDays[secondDay].Classes[classN].Lessons[secondLesson] = swap;
}
this.mRating = CalculateRating();
}