How to assign students to workshops.
The approach is to use beam search, and have a scoring function which accounts for:
* student’s 1st and 2nd preferences
* workshops recommended by leaders
* workshops assigned by leaders (stronger than recommends, almost forces a particular workshop on a student)
* workshop sizes should be close to targets (equal sizes by default)