1 / 60

Student-Project Allocation with Preferences over Projects

Student-Project Allocation with Preferences over Projects. David Manlove University of Glasgow Department of Computing Science Joint work with Gregg O’Malley. S upported by E PSR C grant GR/R84597/01, RSE / Scottish Exec Personal Research Fellowship. Background and motivation.

aideen
Download Presentation

Student-Project Allocation with Preferences over Projects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Student-Project Allocation withPreferences over Projects David Manlove University of GlasgowDepartment of Computing Science Joint work with Gregg O’Malley Supported by EPSRC grant GR/R84597/01,RSE / Scottish Exec Personal Research Fellowship

  2. Background and motivation • Students may undertake project work during degree course • Set of students, projects and lecturers • Typically a wide range of projects – exceeding number of students • Students may rank projects in preference order • Lecturers may have preferences over students / projects • Projects / lecturers may have capacities

  3. Related work (1) • Growing interest in automating the allocation process • Efficient algorithms are important • Formalise the matching problem • The Student-Project Allocation problem (SPA) • No explicit lecturer preferences • University of Southampton • Proll (1972), bottleneck assignment problem • Teo and Ho (1998), greedy approach • Anwar and Bahaj (2003), integer programming • Harper et al (2005), genetic algorithm

  4. Related work (2) • Lecturer preferences over students • Project and lecturer capacities equal to 1 • University of York, Department of Computer Science • Constraint programming for stable marriage variants • Dye (2001), Kazakov (2002), Thorn (2003) • Arbitrary project and lecturer capacities • Linear-time combinatorial algorithms • Abraham, Irving and DFM, “The student-project allocation problem”, Proc. ISAAC 2003, LNCS • Abraham, Irving and DFM, “Two algorithms for the student-project allocation problem”, 2004, submitted

  5. Lecturer preferencesover projects • Lecturer preferences over students • Defaults to academic merit order? • Weaker students obtain less preferable projects • Lecturer preferences over projects • Ranking could reflect research interests, for example • Lecturer implicitly indifferent among all students who find a given project acceptable • Student-Project Allocation problem with Project preferences (SPA-P) • DFM and O’Malley, “Student-Project Allocation with Preferences over Projects”, Proc. ACID 2005, to appear • Seek a stable matching as a solution • Roth (1984)

  6. Formal definition of SPA-P • Set of students S={s1, s2, …, sn} • Set of projects P={p1, p2, …, pm} • Set of lecturers L={l1, l2, …, lq} • Each student sifinds acceptable a set of projects Ai P • si ranks Ai in strict order of preference • Each project pjhas a capacitycj • Each lecturer lkhas a capacitydk • Each lecturer lkoffers a set of projects Pk P • lk ranks Pk in strict order of preference • assume that P1, P2, …, PqpartitionsP

  7. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p3 3 s2 :p5p1 Project capacities: 1 2 1 s3 :p2p5 s4 : p4p2 l2 : p4p5 2 s5 : p5 p2 Project capacities: 1 2 Lecturer capacities:d1= 3, d2 = 2 Project capacities: c1 = 1;c2 = 2;c3 = 1;c4 = 2;c5 = 1

  8. Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable

  9. Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable • If (si, pj)M, where lk offers pj, we say that • siis assigned topj • siis assigned tolk • pj isassignedsi • lk is assignedsi

  10. Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable • If (si, pj)M, where lk offers pj, we say that • siis assigned topj • siis assigned tolk • pj isassignedsi • lk is assignedsi • For any student si , M(si) denotes the set of projects thatsi is assigned to • For any project pj , M(pj) denotes the set of students assigned topj • For any lecturer lk , M(lk) denotes the set of students assigned to(projects offered by)lk

  11. Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable • If (si, pj)M, where lk offers pj, we say that • siis assigned topj • siis assigned tolk • pj isassignedsi • lk is assignedsi • For any student si , M(si) denotes the set of projects thatsi is assigned to • For any project pj , M(pj) denotes the set of students assigned topj • For any lecturer lk , M(lk) denotes the set of students assigned to(projects offered by)lk • A matching M is an assignment such that |M(si)|1, |M(pj)|cjand|M(lk)|dk

  12. Example matching Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 Lecturer capacities:d1= 3, d2 = 2 Project capacities: c1 = 1;c2 = 2;c3 = 1;c4 = 1;c5 = 2

  13. Stable matchings • (si, pj) is a blocking pair of a matchingMif: • pj  Ai • Either si is unmatched in M, or si prefers pj to M(si) • pjis under-subscribed and either • si M(lk) and lk prefers pj to M(si) • si M(lk) and lk is under-subscribed • si M(lk) and lk preferspj to his worst non-empty project where lk is the lecturer who offerspj • A matching M is stable if it admits no blocking pair

  14. Example blocking pair (1) Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 (s1, p1) is a blocking pair, since 3.p1is under-subscribed and • s1M(l1) and l1 prefers p1 to M(s1)=p3

  15. Example blocking pair (2) Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 (s2, p1) is a blocking pair, since 3.p1is under-subscribed and • s2M(l1) and l1 is under-subscribed

  16. Example blocking pair (3) Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 (s4, p4) is a blocking pair, since 3.p4is under-subscribed and • s4M(l2) and l2 prefersp4 to his worst non-empty project

  17. Example stable matching Student preferences Lecturer preferences Lecturer capacities s1: p1p4 p3 l1 : p1p2p3 2/3 s2 :p5p1 Project capacities:1/11/20/1 s3 :p2p5 s4 : p4p2 l2 : p4p52/2 s5 :p5p2 Project capacities:1/11/2

  18. Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching

  19. Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching • But, stable matchings can have different sizes, e.g. Student preferences Lecturer preferences s1 : p1p2 l1 : p1 s2 :p1 l2 : p2 (each project and lecturer has capacity 1)

  20. Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching • But, stable matchings can have different sizes, e.g. Student preferences Lecturer preferences s1 : p1p2l1 : p1 s2 :p1 l2 : p2 (each project and lecturer has capacity 1) M1={(s1, p1)}

  21. Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching • But, stable matchings can have different sizes, e.g. Student preferences Lecturer preferences s1 : p1p2l1 : p1 s2 :p1 l2 : p2 (each project and lecturer has capacity 1) M1={(s1, p1)} Student preferences Lecturer preferences s1 : p1p2 l1 : p1 s2 :p1l2 : p2(each project and lecturer has capacity 1) M2={(s1, p2), (s2, p1)}

  22. Maximisation problem • MAX-SPA-P denotes the problem of finding a maximum cardinality stable matching, given an instance of SPA-P • ALL-SPA-P denotes the problem of deciding whether an instance of SPA-P admits a stable matching in which every student is matched • We show that ALL-SPA-P is NP-complete • Immediate corollary is that MAX-SPA-P is NP-hard • Result holds even if each project and lecturer has capacity 1

  23. u1 w1 w2 u2 w3 u3 Exact Maximal Matching • A matching M in a graph G is maximal if M{e} is not a matching for any edge eM u1 w1 w2 u2 w3 u3 • The following problem is NP-complete: • EXACT-MM • Input: Bipartite graph G and integer K • Question: does G contain a maximal matching of size (exactly) K?

  24. Overview of the reduction must ensure that uior wj matched ui EXACT-MM instance wj assume n2 RH vertices assume n1 LH vertices

  25. Overview of the reduction must ensure that uior wj matched ui EXACT-MM instance wj assume n2 RH vertices assume n1 LH vertices Student preferences Lecturer preferences ALL-SPA-P instance si : pj … y1…yn1-K qj : pjzj (1jn2) (1in1) rj : yj ti : z1…zn2 (1in2-K) (1jn1-K) Each project and lecturer has capacity 1

  26. Overview of the reduction must ensure that uior wj matched ui EXACT-MM instance wj assume n2 RH vertices assume n1 LH vertices Student preferences Lecturer preferences ALL-SPA-P instance si : pj … y1…yn1-K qj : pjzj (1jn2) (1in1) rj : yj ti : z1…zn2 (1in2-K) (1jn1-K) Each project and lecturer has capacity 1

  27. Approximation algorithm M = M  {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M =  ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;

  28. Approximation algorithm M = M  {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M =  ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;

  29. Approximation algorithm M = M  {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M =  ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;

  30. Approximation algorithm M = M  {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M =  ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;

  31. Approximation algorithm M = M  {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } } } M =  ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;

  32. Approximation algorithm M = M  {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } } } M =  ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;

  33. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3 s2 :p1p4 Project capacities: 1 2 2 1 s3 :p1p2p5 s4 : p3 l2 : p5p6 3 s5 : p3 p5 Project capacities: 1 2 s6 : p5 p3 p6 Lecturer capacities:d1= 3, d2 = 3 Project capacities: c1 = 2;c2 = 2;c3 = 1;c4 = 1;c5 = 1;c6 = 2

  34. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 1/3 s2 :p1p4 Project capacities: 0/11/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s1applies top1 p1 remains under-subscribed; l1 remains under-subscribed

  35. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 2/3 s2 :p1p4 Project capacities: 0/12/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s2applies top1 p1 becomes full ; l1 remains under-subscribed

  36. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 2/3 s2 :p1p4 Project capacities: 0/12/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top1 p1 is already full

  37. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 2/3 s2 :p1p4 Project capacities: 0/12/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top1 p1 is already full ; p1 is deleted from s3’s list 

  38. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 0/12/21/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top2 p2 remains under-subscribed ; l1 becomes full 

  39. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p43/3 s2 :p1p4 Project capacities: 0/12/21/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top2 p2 remains under-subscribed ; l1 becomes full ; p4 is deleted from s2’s list  

  40. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 0/12/21/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s4applies top3 l1 is already full  

  41. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s4applies top3 l1 is already full ; s3 is rejected from p2 ; p3 becomes full   

  42. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s4applies top3 l1 is already full ; s3 is rejected from p2 ; s3 is rejected from p2 ; p2 is deleted from s1’s list    

  43. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s3applies top5 p5 becomes full; l2 remains under-subscribed    

  44. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 :p3p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top3 p3 is already full    

  45. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top3 p3 is already full ; p3 is deleted from s5’s list     

  46. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top5 p5 is already full     

  47. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top5 p5 is already full ; p5 is deleted from s5’s list      

  48. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 :p5p3 p6 s6applies top5 p5 is already full      

  49. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s6applies top5 p5 is already full ; p5 is deleted from s6’s list       

  50. Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s6applies top3 p3 is already full       

More Related