The setting is the following: There are n players that want to compete in a specific game over the course of an event. A game is played between 2 teams of 2 players each (so a 2v2). Each player as a general rating value based on the ELO-System and it is assumed that the combined rating of a team is the mean of the members ratings. Over the course of one event the ratings of the players are not changed, that is done after all games are finished.
The task is the following: For those n players and an input number k, calculate a schedule of k matches to be played such that:
- Every player should play equally many times, if possible, and if not, no player a should play two games more than another player b.
- One team can only play in one match. (So if player a and player b are matched in one game playing against some enemy team, they will not be matched for a team again)
- The matches should be as fair as possible, fair meaning that the ratings of the opposing teams are roughly equal. I am not sure what the best metric for that might be, but I suppose using something like a mean squared error over the differences in rating of all the matches generated should do.
I think solving this perfectly is probably a very hard problem, so I guess I am looking for some kind of estimation. Condition (1) is the most important and must always be satisfied.
Until now I only have a solution for generating good teams instead of games based on a weighted maximum matching problem (approach coming from here), but I would love to implement the problem described above.
It does not matter in which order the generated games take place and all games are played out sequentially, not in parallel (which means there is no need to optimize for games happening at the same time).