Optimization problem - Group assignment based on preferences

Copper Contributor

Hi everyone! I'm organising an event for which participants will be taking part in two rounds of workshops. When registering, they list their top 4 preferences. I'm looking for a way to assign them as best I can to the individual workshops, keeping in mind that each workshop has a limit of 25 participants per round.

 

With the help of other posts on here and ChatGpt, I came to a test dataset, but Solver said there was no feasible solution.

One thing I already noticed is that I do not know how to make it so that each workshop can be assigned both in round 1 and round 2, so 50 people in total can take part in each workshop, but not at the same time.

In general, this is my first time doing any such optimization and would greatly appreciate any help.

 

(As a new member to this community, I'm not allowed to upload my data set I just found out...)

2 Replies
You could host the file on OneDrive or send me a PM to attach the file.

@N-vanEijk  It is hard without more information and such but I did something like this a while ago for someone here and thought I could tweak that for multiple selections but that turned out more challenging than I expected.  That said I have completed a function that will take a list of preferences, and a list of options/activities/classes with max attendance for each and will output an 'optimized' selection.  The function will randomize the order then go through all first choices and assign all available, then go through all the 2nd choices for those that didn't get their first and assign any that are available, and so on.  At the end if no choice was possible using this method it will (or has options to) assign a random class (they didn't pick) if one is available.  As long as there is much more availablility than attendees this shouldn't be a problem.  see the attached file and hopefully it will make sense.  The grid on the right is the output.