So I was trying to solve a problem in my band. We have 10 soloists and 20 songs. Each song has 2 solos and each soloist should ideally play a total of 4 solos. Each soloist has declared their preferences for each song with a value between 1-5 (my profits). I set all assignment costs equal, considering that everyone costs the same to do a solo on a song.I tried modelling it as a GAP however to make it work I had to split the song solos into separate jobs, meaning I have (person1, person2, ...) and (song1solo1, song1solo2, song2solo1, ...). The issue that occurs then is that multiple solos of the same song inevitably get assigned to the same person since he has the best cost for that song. However I obviously want 2 different soloists per song, not the same one.So to explain it in more GAP terms, I have 10 agents and 20 jobs but each job consists of 2 parts which need to be assigned to independent agents. Each vertex in A (soloists) should have a degree of 4 and each vertex in B (songs) should have a degree of 2. I want to find the maximum weighted matching that respects these conditions.Does anyone know if such a modification to GAP exists? I tried googling but without success as normal GAP seems to already be a quite complicated problem.
Generalized assignment problem with constraints and job parts
matching;bipartite graphs