Rengo status

Thanks, here’s the result that I got using these ratings.

console.log
    result {
      black: [
        { user_id: 780398, rating: 1577.82, name: 'PopcornCzar' },
        { user_id: 56244, rating: 1642.16, name: 'Vladimir Lukic' },
        { user_id: 780688, rating: 2042.15, name: 'NateC89' }
      ],
      white: [
        {
          user_id: 33792,
          rating: 1603.93,
          name: 'He Who Walks in Shadows'
        },
        { user_id: 126739, rating: 1736.56, name: 'Sofiam' },
        { user_id: 481787, rating: 1929.46, name: 'Decros' }
      ],
      blackAverageRating: 1754.0433333333333,
      whiteAverageRating: 1756.6499999999999
    }

      at Object.<anonymous> (src/lib/rengo_balancer.test.ts:131:15)

  console.log
    diff 2.6066666666665697

3 Likes

I wonder if this has to do with the player cache storing semi-outdated ranks. (After all only a small rank change would make the teams change in this example) If that’s the case, would be hard to reproduce, but the fix might be to query the api directly

Given @_Sofiam’s recent screenshot, this doesn’t seem to be the case

2 Likes

immagine
Last time the difference was small, but these teams seem very wrong
(https://online-go.com/game/41601650)

8 Likes

I would prefer algorithm where player with the lowest rank and player with highest rank are always in same team.
this is more important than similar averages

2 Likes

I don’t know about very wrong. There’s a 4k,5k,7k on both teams. Probably swapping the 6d and 1d, would make it a bit better?

It could be a good test case anyway for the algorithm.

3 Likes

Yes, you are right, probably my “very” was exaggerated, sorry. I meant that it’ s more evident :slight_smile:
I too expected the two dan players to be reversed, but perhaps there is another solution that is more correct and less easy to see.

3 Likes

Hi. I don’t know how OGS currently averages rank, but since number partitioning is np-hard, an algorithm that finds the best match might not be feasible in terms of computing power for these huge 50vs50 rengo games, as it might require 2^players time.

So probably the best choice is an approximating algorithm like Karmarkar-Karp or even just Greedy Partitioning, which should pose no trouble in terms of computation power and still give good results.

Edit: Googling had this for example for js karmarkar-karp - npm

2 Likes

At the same time, the more people participate - the more likely any algorithm would produce good result (because there is not-so-many ranks overall), no need to use exponential algorithms. Need to mention there is another problem: raiting of each participator may change at any time.

2 Likes

True, could use an exact algorithm (Complete Greedy / Complete Karmarkar-Karp) for up to 10-20 players total maybe, then approximating algorithm for everything more crowded.

Since CKK can be run as KK too and just iterate if the result is not yet of desired accuracy -or rather, still within an acceptable time frame-, this could be the most effort-efficient method actually.

3 Likes

Also I once meet really nice - fast and simple - algorithm for minimizing difference between two partitions. I will try to remember it and post here. (As far as I know, the author is Eugene Kapun).

3 Likes


I’m not sure if it’s a bug but I think the autostart failed because I had unassigned some players.

Do autobalance and autostart work together or does the autostart take into account the order of who joined?

1 Like

Autostart is supposed to trigger when a person joins and this results in the total assigned players hits the specified number.

Can you clarify how the number got to zero and minus one?

If it got that way by manually assigning previously unassigned people, then it’s not a bug that it didn’t actually autostart when you assigned them: if you are administering the game manually, then you don’t want it to suddenly autostart by suprise while you are messing with it :slight_smile:

Rather, if you are administering, then you get to decide when it starts by pressing the start button.

But … someone else joined at that moment, then it would auto start. That might be irritating, not sure what to do about that. :thinking:

To be honest, I had expected that if a person selected “autostart” then they would not be administering: that’s the whole point of autostart, to relieve you of needing to administer :smiley:

It’s definitely a bug that it says “zero” and “minus one” … at that point it should say “Game auto-starts when the next person joins”.

1 Like

Yes. I opened a game with 4-player autostart. When we got to 3 I clicked on “unassign”. I did this because we already had colours assigned and I was afraid it would affect the auto-balance. Then, two other players joined in (when the fourth joined, the game did not start). I obtained the -1 by assigning a colour to all players, the 0 by leaving one out.
It never happened, in this case, that a person joined when there were exactly 3 people with an assigned colour (and someone unassigned), we could try it.
What I was trying to do was to have 4 players with balanced teams. It is still not clear to me from your post whether it normally works

It doesn’t have to be exactly - if someone joins and the teams equal or exceed the threshold it should start.

I think that auto-balance is currently an administration option, right? So we don’t have a way of saying “please apply auto-balance when auto-start triggers”.

Yet another option? Or maybe auto-start should simply include an auto-balance step: it’s supposed to be the low-administration option!

2 Likes

Right. I think having the auto-balance by default or as the only option (if it’s not too complicated) with auto-start could be good :slight_smile:

2 Likes

Perhaps the auto start number should be limited to 625. The number of intersections on the maximum board size. I can’t see these multiple 1000 player games getting off the ground any time soon, and even if they did most people might not even get a turn.

6 Likes

This huge rengos are kind of joke, and i even suspect them to turn away some players from playing rengo again. Being bored, I resigned a few to give more chance to play to others.

1 Like

Maybe there is no point in repeating it but I want to point out what can happen by giving another example:
This game has just started, 4 players autostart and auto handicap.
1k and 3k vs 7k and 17k, no handicap because the strongest team has black.
Nothing urgent of course since it can be avoided by administering the game manually.

4 Likes

Yep
1k+17k vs 3k+7k
With 4-5 stones handicap

Much better. Even without handicap.

1 Like

Not sure if it was already reported or not, but another thing that looks weird to me from the UX perspective is that for all other game modes we have the “Ranked?” column, but for rengo the logic is reversed. So a “Yes” in that column for all other game modes means “is ranked”, but a “Yes” in the rengo section means “is unranked”