Add Team functions

This commit is contained in:
2025-09-22 12:53:46 -04:00
parent 3daa3b81b3
commit dc83a18d76
48 changed files with 2364 additions and 633 deletions
+9 -9
View File
@@ -36,40 +36,40 @@ public class TeamSchedulerTest
//var eventAssignment = new EventAssignment(events, students);
//var teams = eventAssignment.Solve();
IList<Team>[] timeSlots;
TeamSchedulerSolution solution;
if (true)
{
var teamScheduler = TeamScheduler.CreateInstance(teams, 3);
timeSlots = teamScheduler.Solve();
solution = teamScheduler.Solve();
}
else
{
var teamScheduler = new TeamScheduler_DecisionTree(teams, 3);
timeSlots = teamScheduler.Solve();
solution = teamScheduler.Solve();
}
timeSlots = new UnassignedStudentScheduler(allTeams, timeSlots).ScheduleStrategy(UnassignedScheduleStrategy.BiggestGroup);
timeSlots = new UnassignedStudentScheduler(allTeams, timeSlots).ScheduleStrategy(UnassignedScheduleStrategy.IndividualEvents);
solution = new UnassignedStudentScheduler(allTeams, solution.TimeSlots).ScheduleStrategy(UnassignedScheduleStrategy.BiggestGroup);
solution = new UnassignedStudentScheduler(allTeams, solution.TimeSlots).ScheduleStrategy(UnassignedScheduleStrategy.IndividualEvents);
var i = 1;
foreach (var slot in timeSlots)
foreach (var slot in solution.TimeSlots)
{
Console.WriteLine($"Time slot {i++}");
foreach (var team in slot.OrderBy(s => s.Event.Name))
{
var names = string.Join(", ", team.Students.OrderByDescending(s => s.Grade + s.TsaYear).Select(s => s.FirstName));
Console.WriteLine($"\t{team.Name}");
Console.WriteLine($"\t{team.Event.Name}");
Console.WriteLine($"\t\t{names}");
}
var overlaps = Team.GetStudentTeamOverlaps(slot).ToList();
var overlaps = TeamSchedulerSolution.GetStudentTeamOverlaps(slot).ToList();
if (overlaps.Any())
{
Console.WriteLine("\toverlaps");
foreach (var overlap in overlaps)
Console.WriteLine(
$"\t\t{overlap.Item1.Name} : {string.Join(", ", overlap.Item2.Select(t => t.Name))}");
$"\t\t{overlap.Item1.Name} : {string.Join(", ", overlap.Item2.Select(t => t.Event.Name))}");
}
var unassigned = UnassignedStudentScheduler.UnassignedStudents(students, slot).ToList();