I work for a school who is looking to split students into two groups for COVID related reasons. Ultimately we need to split the students by class section and try to keep families to be in the same group. For example, a High School student may have 4 classes they are in and we should try to split the class into two equal groups based upon a criteria). I asked this question on another forum because I didn't even know what type of problem it would be considered. They suggested it could be solved using Integer Linear Programming and that maybe someone on this page could give more concrete answers.
In the above example - the course ID represents each course a student is enrolled in. The student has to have the same group for each class (this is the day they would come to school). If a student has a family ID - the entire family would need to be in the same group assignment. The table of data I have has about 174,000 records in it. What I would like to do is be able to use Integer Linear Programming to accomplish this (if this is the best tool for the job).
I guess this would be like splitting classrooms from the bottom up instead of top down. We need to have the class sizes split to 50%. I doubt this can be exact - so say split classes into 2 with no more than 5 kids size difference between the groups and a maximum group size of 12.