/// <summary> /// Get a list of all possiblities for course placement /// </summary> /// <param name="course">course to inspect</param> /// <param name="individual">individual to be inspected</param> /// <returns>List of the possibilities</returns> private List<PlacementContainer> GetPossibilitiesForCourse(int course, Individual individual) { List<PlacementContainer> possibilities = new List<PlacementContainer>(); int neededNumberOfBlocks = ttData.Courses[course].NumberOfBlocks; for (int day = 0; day < individual.Courses.GetLength(1); day++) { for (int block = 0; block < individual.Courses.GetLength(2); block++) { if (block + neededNumberOfBlocks - 1 < individual.Courses.GetLength(2)) { for (int room = 0; room < individual.Rooms.GetLength(0); room++) { if (IsValidForCourse(course, day, block, room, individual)) { PlacementContainer c = new PlacementContainer(); c.day = day; c.block = block; c.room = room; possibilities.Add(c); } } } } } return possibilities; }
private static int SortPlacementContainerByBlock(PlacementContainer x, PlacementContainer y) { if (x.block > y.block) return +1; if (x.block < y.block) return -1; return 0; }