Multi-day ladder: 2017-04-14 02:44:04 |
Deadman
Level 64
Report
|
I ran a query to check the average rating of players who have left and it is 1476. So you're correct in that this causes inflation of the active players' rating. I'll have a rethink about this, even though I strongly believe ancient ratings(akin to RTL) is a bad thing. Perhaps a hackier but less expensive approach to achieve the same effect would be checking the sum of remaining teams' ratings, comparing it to the default rating * # of teams, and multiplying each remaining team's rating to make the total equal the default rating * # of teams- every time a team leaves the ladder and does not return for some amount of time. Or you could just run that at the start of every iteration. This will achieve equilibrium in the system. I'll consider it as well. I was thinking of introducing small inflation in the system over time(to combat complaints that players feel like they have to win too many games just to maintain 1500 rating). I'll have to run it by Math Wolf who is my rating consultant :p p.s - These changes will probably take some time since I'm working on some other features for MDL at the moment.
|
Multi-day ladder: 2017-04-14 10:00:55 |
Mike
Level 59
Report
|
I used to play a game online where ranking was as follows :
- everybody starts at 1000 - wins bring between 1 and 6 points depending on your current ranking and on rating of your opponent - losses cost between -6 and -1 points depending on the same criterias - it seems points won or lost doesn't just look at rating differential, but look first at your rating, to put you in a bracket of possible points to win or lose for the game, then look at your opponent rating to assign the high or low margin in the bracket. For example, I remember that top player would make either 1 or 2 points systematically (bracket), and it would be 1 or 2 depending on your opponent's ranking (1 if opponent is too far behind, 2 if he has a decent ranking) - Also, in every game, sum of points won and lost cancel each other (if team A wins 3, team B loses 3) - And sum of possible points won (or lost) by both teams equal 7 (or -7) : in a game where top player can make either 1 or 2 points, opponent can make either 6 or 5 points. - Every 30 days (or was it 90? forgot) rankings would reset to 1000. - there was an inflation of up to 2000 / 2200 for top player every season, and it didnt take too long to top the league if you missed the start with this rating system (so yeah was probably more 90 than 30 days season). - Oh and each game would notify you at the end how much points both teams made or lost (transparency), and ranking doesn't move over time, so is relevant at any time you look at it.
All that to say that this rating was awesome and was making things very addictive, which you may need. Well, this may not be too far from your current rating system.
Is that a specific rating system which has a name to your knowledge ?
Edited 4/14/2017 10:04:33
|
Multi-day ladder: 2017-04-14 15:33:53 |
l4v.r0v
Level 59
Report
|
@mod: Whoops, thanks for bringing that up.
For assigning templates, the library treats the task as an isomorphism of the (linear) assignment problem. E.g., you have x players and y templates and costs for each combination (as well as some combinations that are disallowed). You can use one of a class of well-known algorithms to generate assignments such that the total cost is minimized. I modified an O(n**3) implementation of the classic algorithm for this problem (Kuhn-Munkres) to do this because it was the easiest to modify to support disallowed assignments (vetos in this ladder). You're able to mathematically guarantee that, at each batch, the total (sum) cost is minimized.
It's only super-worthwhile to use the templates part, though, if you're also interested in giving people more flexibility when it comes to expressing template preferences- but I explained it first since it helps explain the player pairing.
Pairing uses a similar principle, except you're working on connections within one group instead of connections between 2. So while template assignment is analogous to running a taxi company, getting 3 calls, having 3 taxis at different locations such that they don't have the same distance to each customer, and figuring out which taxi to send to which customer such that timeliness (or total customer satisfaction) is best maintained; player pairing is like running a student dormitory and trying to build roommate pairs such that, say, the total happiness of all these students over the year is maximized.
So we have a single graph (not bipartite) where each player is connected to any players that they're allowed to have games with and each of these edges has a score. Using NetworkX's implementation of Edmonds' Blossom algorithm and some other network matching algorithms (suggested to me by Derfellios), we're able to find the player pairings that maximize the total score (and don't match players that you don't want to get matched- like players they just played).
You get to assign the weights (for templates) or supply a scoring function (for players/teams) so it doesn't have to be strictly linear- you can make the scores you supply exponential, for example, if you prefer matchings that (based on Elo parity/quality calculations) are 2x as good, 4x as much.
But at the end of pairing and assignments, we're able to extend guarantees that whatever you chose was, given the scores/weights you supplied, the optimal set of assignments/pairings within the space you provided. If you're still using a greedy algorithm to pair teams, you likely cannot extend that same guarantee and will sometimes perhaps even have cases where your system either had to give up some pairings or create some bad pairings when you didn't actually need to do so- there's certainly at least a wide space of conceivable edge cases where a greedy algorithm only yields terrible results and just breaks down. You might also find this pairing guarantee useful for the more interesting problem space of the Team Ladder- pairing 2 players, then pairing 2 teams, and assigning each resulting matching to a template is exactly within the sweet spot of this utility library.
(Also, like I said, this whole space of algorithms tends to break down after 2 dimensions, so I do not offer any guarantees if you're grouping teams for FFA or building teams of 3 or more players using software. You *can* secure those guarantees, though, but unless you're familiar with combinatorial optimization and can find algorithms that retain polynomial time and space complexity as dimensions increase, your solution will likely be O(n!), O(n**n), or something else that leaves you wondering why you got the solution in .2s for 10 teams but your algorithm has yet to stop running for 11.)
|
Multi-day ladder: 2017-04-15 00:57:22 |
rouxburg
Level 61
Report
|
@knyte; to sum up, you are saying Motd is using a greedy algorithm for pairings and there is a better way of doing it.
|
Multi-day ladder: 2017-04-15 01:10:56 |
l4v.r0v
Level 59
Report
|
@rouxburg: If MotD is using a greedy algorithm and wants to instead have optimization guarantees, then he can simply install (via pip) and import the pair library ( https://pypi.python.org/pypi/pair) and add some helper functions to use its pair_teams, pair_players, and assign_templates functions.
Edited 4/15/2017 01:25:40
|
Multi-day ladder: 2017-04-15 05:26:38 |
Deadman
Level 64
Report
|
@knyte Actually on the topic of improvements, I think you still use a greedy algo for pairing based on the old GitHub code on Deadman1. If that's the case, I wrote a small utility library called pair (you can find it on PyPI and the source/basic documentation on my GitHub). You should be able to integrate it in seconds. Also lets you do more interesting things with non-binary template preferences.
But at the end of pairing and assignments, we're able to extend guarantees that whatever you chose was, given the scores/weights you supplied, the optimal set of assignments/pairings within the space you provided. If you're still using a greedy algorithm to pair teams, you likely cannot extend that same guarantee and will sometimes perhaps even have cases where your system either had to give up some pairings or create some bad pairings when you didn't actually need to do so- there's certainly at least a wide space of conceivable edge cases where a greedy algorithm only yields terrible results and just breaks down. You might also find this pairing guarantee useful for the more interesting problem space of the Team Ladder- pairing 2 players, then pairing 2 teams, and assigning each resulting matching to a template is exactly within the sweet spot of this utility library. I think this would have more application in cases like the seasonal ladder where you are trying to create a lot more pairings at a time. An update cycle on MDL has an average of 2 games finished(max 4-5). A greedy approach works quite well as two opponents can face each other once in 5 days(so the combinations disallowed are very few). Once a pair is picked, there is always a large pool of permissible templates( 51 - 2 * max veto count - 2 * last 5 templates = 27 in the worst case). At this point, picking a template at random is the best option in order to ensure players can experience all the templates with equal probability. If we have 4-6 players who need to be allotted a game in a cycle, and make early pairings such that some later players cannot get a game on that cycle, it is still not a big problem. The next update cycle will run in 2 hours and will mostly give a legitimate pair for the ignored player. This is just my gut feeling here. I'll implement some telemetry to figure out how many players are ignored in a cycle on an average and let that guide my ultimate decision. Looks like a neat library.
Edited 4/15/2017 05:57:13
|
Multi-day ladder: 2017-04-15 05:56:31 |
Deadman
Level 64
Report
|
@Mike I used to play a game online where ranking was as follows : - everybody starts at 1000 Everyone starts with a rating of 1500 on MDL. wins bring between 1 and 6 points depending on your current ranking and on rating of your opponent Wins bring between 1 and 32 points depending on your current ranking and on rating of your opponent on MDL losses cost between -6 and -1 points depending on the same criterias losses cost between -32 and -1 points depending on the same criterion. it seems points won or lost doesn't just look at rating differential, but look first at your rating, to put you in a bracket of possible points to win or lose for the game, then look at your opponent rating to assign the high or low margin in the bracket. For example, I remember that top player would make either 1 or 2 points systematically (bracket), and it would be 1 or 2 depending on your opponent's ranking (1 if opponent is too far behind, 2 if he has a decent ranking)
The top players usually make about 3-4 points on a win, and lose about 28-29. Elo takes care of how that number is determined. Also, in every game, sum of points won and lost cancel each other (if team A wins 3, team B loses 3) True on MDL as well(subject to rounding). And sum of possible points won (or lost) by both teams equal 7 (or -7) : in a game where top player can make either 1 or 2 points, opponent can make either 6 or 5 points.
True on MDL as well(subject to rounding). Every 30 days (or was it 90? forgot) rankings would reset to 1000. This is handled a bit differently on MDL. I don't think it is a rewarding experience to see something you have worked hard for, get wiped every 30 days. To keep ratings relevant to the present, we have the concept of game expiration instead. Any game older than 5 months will not impact ratings. This is a concept which works well as proven on WL ladders. - there was an inflation of up to 2000 / 2200 for top player every season, and it didnt take too long to top the league if you missed the start with this rating system (so yeah was probably more 90 than 30 days season). MDL's rating system can provide similar guarantees. This player cracked 1700+ with just 20 games - http://md-ladder.cloudapp.net/player?playerId=611489923Oh and each game would notify you at the end how much points both teams made or lost (transparency), and ranking doesn't move over time, so is relevant at any time you look at it. This is a bit tricky as the "worth" of a game will always change given our concept of game expiration. A game worth 3 points to me today may be worth 10 points two months later if some of my older games expire. Therefore it is hard to show such a number. However if you track the rating charts, it is usually quite clear how much you gain or lose. You can also use this site( http://www.3dkingdoms.com/chess/elo.htm) to predict the impact of a game. Use k=32 and the ratings of the players at game creation time. All that to say that this rating was awesome and was making things very addictive, which you may need. Well, this may not be too far from your current rating system.
Is that a specific rating system which has a name to your knowledge ? You have described something very similar to the Elo rating. In short, MDL has everything your game had.
Edited 4/15/2017 05:58:28
|
Multi-day ladder: 2017-04-15 12:40:04 |
Deadman
Level 64
Report
|
Added a new leaderboard page which contains the following: - Players with most all-time games
- Players with most unexpired games.
- Players with most wins
- Players with best win rate
- Players who have spent the longest consecutive days ranked as #1 on MDL
- Players who have spent the longest consecutive days ranked in the top 5 on MDL
- Players who have spent the longest consecutive days ranked in the top 10 on MDL
- Players who have spent the longest consecutive days ranked on MDL
- Players with the longest consecutive win streak
- Players with the least number of vetoed templates
If you spot any errors in the data or have any suggestions, let me know. I plan to add more charts and statistics in the next update. I'll also introduce "achievements" which can be earned on MDL and will be listed on your MDL profile. Some of these leaderboards require continuity on the ladder, so hopefully it helps keep people engaged!
Edited 4/15/2017 12:40:18
|
Multi-day ladder: 2017-04-15 13:13:27 |
Kezzo
Level 61
Report
|
Wohooo fucking awesome!!
|
Multi-day ladder: 2017-04-15 15:19:01 |
Mike
Level 59
Report
|
Thanks for clarification MotD :), also this is quality addition. No way to add a "show all" button to go further top 10's on those stats ?
|
Multi-day ladder: 2017-04-15 19:36:43 |
Deadman
Level 64
Report
|
I think you forgot to highlight something in the picture. As I know, you are the first player who break the 1900 limit :O (ah, and forgot to create this type of leaderboard (highest ranks) too where I would check this ;) ) Yes. I have a work item for adding highest ratings achieved on MDL. I'm looking to add most of the items on this list. If you have any other suggestions, let me know! https://goo.gl/O7AdZpNo way to add a "show all" button to go further top 10's on those stats ? I made a conscious decision to display only top 10. This will encourage people to break into the top 10 in respective categories. I will add all these stats on the player profiles as well so that you can keep track of what you need to get into the top 10.
Edited 4/15/2017 19:39:17
|
Multi-day ladder: 2017-04-16 00:06:38 |
Dogberry
Level 57
Report
|
Or they'll give up bothering with any of the awesome new stats because they aren't anywhere close to competing for a top 10 spot in any tracked category. It would be a much greater benefit to a much larger number of players to include access to complete rankings for these categories.
|
Multi-day ladder: 2017-04-16 01:42:35 |
Dogberry
Level 57
Report
|
When I posted my message, there were no next or previous buttons. Additionally his post seems to clearly indicate that only information on the Top 10 would be available. However, I did just receive confirmation from another source that more than just the top 10 would be searchable, so my concern is moot.
Since you replied, I guess I won't be editing my post after all :-P
|
Post a reply to this thread
Before posting, please proofread to ensure your post uses proper grammar and is free of spelling mistakes or typos.
|
|