Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Solving Practical Allotment Problems with Julia

Solving Practical Allotment Problems with Julia


Saurabh Kumar

July 31, 2020


  1. 31 July 2020 Solving Practical Allotment Problems with Julia Saurabh

  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 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
  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
  6. Proposed Solution Algorithm

  7. Results Simulations

  8. Results Simulations

  9. 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 →
  10. Thank You. Twitter, Github, SpeakerDeck: @saurabhkm