Saurabh Kumar
July 31, 2020

# Solving Practical Allotment Problems with Julia

July 31, 2020

## Transcript

Kumar
2. ### 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
3. ### Introduction and Motivation • Initial approach: Manually sift through the

preferences and requirements to arrive at a potential solution after days of work by oﬃce staﬀ. • 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
4. ### 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
5. ### 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

9. ### Lessons and Observations Python Julia • Overall 13x speed up

compared to Python with no code optimizations • Similar Syntax: Minimal code rewriting eﬀort • 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 ﬁrst plot can be slow Source: github.com/saurabhkm/juliaAllotter →