And so with our complete list of valid schedule groupings, we can construct our network and apply a flow solver to give us our rankings. After adding up the assignment costs and sorting by "least suffering", we end up with something like this:
Max flow: 6773760
Option 1 | Cost: 1266
Allison 211 ['Cornea', 'DVA', 'Aesthetics', 'AVA', 'Research', 'Capstone']
Kyle 211 ['DVA', 'Cornea', 'AVA', 'Capstone', 'Aesthetics', 'Research']
Bennet 211 ['Capstone', 'Research', 'DVA', 'Aesthetics', 'Cornea', 'AVA']
Danielle 211 ['AVA', 'Aesthetics', 'Research', 'DVA', 'Capstone', 'Cornea']
Jason 211 ['Aesthetics', 'Capstone', 'Cornea', 'Research', 'AVA', 'DVA']
Paul 211 ['Research', 'AVA', 'Capstone', 'Cornea', 'DVA', 'Aesthetics']
...
Option 1128960 | Cost: 1955
Allison 309 ['Cornea', 'Research', 'Aesthetics', 'DVA', 'AVA', 'Capstone']
Kyle 309 ['Aesthetics', 'DVA', 'AVA', 'Capstone', 'Research', 'Cornea']
Bennet 310 ['Research', 'Capstone', 'DVA', 'Aesthetics', 'Cornea', 'AVA']
Danielle 309 ['AVA', 'Cornea', 'Capstone', 'Research', 'Aesthetics', 'DVA']
Jason 408 ['Capstone', 'Aesthetics', 'Cornea', 'AVA', 'DVA', 'Research']
Paul 310 ['DVA', 'AVA', 'Research', 'Cornea', 'Capstone', 'Aesthetics']