Slide 1

Slide 1 text

31 July 2020 Solving Practical Allotment Problems with Julia Saurabh Kumar

Slide 2

Slide 2 text

Introduction and Motivation Allotting the best possible choice to each individual as per their preferences while adhering to total available positions and satisfying quality constraints is a common practical problem. • Every semester - TAs need to be allotted to courses as per their preferences - Interview committee has to be allotted to candidates as per their skills • Others: - Hospital Patient Allocation - Student College Admission

Slide 3

Slide 3 text

Introduction and Motivation • Initial approach: Manually sift through the preferences and requirements to arrive at a potential solution after days of work by office staff. • Need: An automated solution that can be run on a computer with no manual intervention and provides improved allotments. • Input: Student preferences and Course requirements; Output: Allotment

Slide 4

Slide 4 text

Proposed Solution MCMC based Graph Matching • We model this as a Bipartite Graph Matching Problem where on one side we have candidates and on the other side we have courses. • An allotment is modelled as a binary matrix of courses and TAs. • Updated using MCMC method while minimizing the following objective function. • Optimization objectives / Utility: 1. Student satisfaction 2. Course satisfaction 3. Consistency of TA capability across courses

Slide 5

Slide 5 text

Proposed Solution Background • S: Students; C: Courses • Find a matching between S and C • Many perfect matchings exist: Find the “best” in some sense • Edge weights: Adjacency matrix: Preferences • Allotment matrix (Xn) S C

Slide 6

Slide 6 text

Proposed Solution Algorithm

Slide 7

Slide 7 text

Results Simulations

Slide 8

Slide 8 text

Results Simulations

Slide 9

Slide 9 text

Lessons and Observations Python Julia • Overall 13x speed up compared to Python with no code optimizations • Similar Syntax: Minimal code rewriting effort • Leverage multiple dispatch for performance • More ready to use functions in Python but rigid • Find alternate ways to implement the required functionality in Julia which ended up being faster • Plotting the first plot can be slow Source: github.com/saurabhkm/juliaAllotter →

Slide 10

Slide 10 text

Thank You. Twitter, Github, SpeakerDeck: @saurabhkm