Poker-AI.org
http://poker-ai.org/phpbb/

Modified Malmuth-Weizman algorithm
http://poker-ai.org/phpbb/viewtopic.php?f=24&t=2444
Page 1 of 1

Author:  morcos [ Fri Apr 05, 2013 11:15 am ]
Post subject:  Modified Malmuth-Weizman algorithm

Hi All!

I modified the Malmuth-Weizman formula a little bit. Every player has a probability of next elimination by inversely proportion to his stack. If a player eliminated instead of reallocates his chips evenly amongst the remaining players, reallocates his chips proportionaly amongst the remaining players.

With this little change we've got a better approch and results than the original MW and the classic ICM.

The only problem with this method is that is very slow, beacuse we need to calculate every players elemination from 10 to 0 players (in a full SNG for example).

Here is my code:
Code:
template<typename T>
void SetEquitiesByICM2(T equities[NCHAIRS], double stacks_new[NCHAIRS], double prs[NCHAIRS], double pr_total, unsigned int place) {
  for (unsigned int playerchair = 0; playerchair < NCHAIRS; ++playerchair)
    if (stacks_new[playerchair] > 0) {
      double d = stacks_new[playerchair];
      stacks_new[playerchair] = 0;
      double equities_new[NCHAIRS] = {0};
      SetEquitiesByICM2(equities_new, stacks_new, prs, pr_total - prs[playerchair], place - 1);
      stacks_new[playerchair] = d;
      double pr = prs[playerchair] / pr_total;
      equities[playerchair] += (T)(prizes[place] * pr);
      for (unsigned int i = 0; i < NCHAIRS; ++i)
        if ((i != playerchair) && (stacks_new[i] > 0))
          equities[i] += (T)(equities_new[i] * pr);
    }
}

template<typename T>
void SetEquitiesByICM2(T equities[NCHAIRS], double stacks_new[NCHAIRS]) {
  unsigned int place = 0;
  double pr_total = 0;
  double prs[NCHAIRS] = {0};
  for (unsigned int playerchair = 0; playerchair < NCHAIRS; ++playerchair)
    if (stacks_new[playerchair] > 0) {
      prs[playerchair] = 1.0 / stacks_new[playerchair];
      pr_total += prs[playerchair];
      ++place;
    }
  memset(equities, 0, sizeof(T) * NCHAIRS);
  SetEquitiesByICM2(equities, stacks_new, prs, pr_total, place - 1);
}


Please help me to speed up this algorithm.

Thank you.

Bye,
morcos

Author:  Coffee4tw [ Sun Apr 07, 2013 5:40 am ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

Speaking of improving ICM and Tysen aka trojanrabbit just showing up again on here, didn't you have a sick improvement that scaled really well? I can't remember exactly what it was now...

Author:  morcos [ Sun Apr 07, 2013 9:51 am ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

Coffee4tw wrote:
Speaking of improving ICM and Tysen aka trojanrabbit just showing up again on here, didn't you have a sick improvement that scaled really well? I can't remember exactly what it was now...

Ben Roberts did an improvement: http://www.poker-ai.org/archive/www.pokerai.org/pf3/viewtopic39f7.html?f=64&t=4415

But the problem with that method is, it is very computing expensive.

My method is somewhere in the middle of MH and Ben Roberts' method. It is the same speed of classic ICM for a place, but because of the need to calculate every places this is slower than ICM.

Author:  concretemixer [ Sun Apr 07, 2013 6:11 pm ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

morcos wrote:
With this little change we've got a better approch and results than the original MW and the classic ICM.

Can you tell how exactly did you measure and compare the results?

Author:  morcos [ Sun Apr 07, 2013 8:30 pm ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

concretemixer wrote:
morcos wrote:
With this little change we've got a better approch and results than the original MW and the classic ICM.

Can you tell how exactly did you measure and compare the results?


These are examples from the paper of Ben Roberts plus the modified Malmuth-Weitzman (MMW) method:
Code:
Stacks   MH      Diff.   MMW      Diff.   BR      Diff.   "True equity"
2000      11,56      0,75   10,48      0,33   10,84      0,03   10,81
3000      16,47      0,48   16,23      0,24   16,09      0,10   15,99
4000      20,69      0,01   20,88      0,20   20,78      0,10   20,68
5000      24,18      0,45   24,64      0,01   24,60      0,03   24,63
6000      27,10      0,80   27,77      0,13   27,70      0,20   27,90
Total      100,00   2,49   100,00   0,91   100,01   0,46   100,01
(%)
                     
Stacks   MH      Diff.   MMW      Diff.   BR      Diff.   "True equity"
1000      83,3      1,2   83,2      1,1   82,1      0,0   82,1
1000      83,3      1,2   83,2      1,1   82,1      0,0   82,1
2000      133,3      2,5   133,6      2,2   135,7      0,1   135,8
Total      299,9      4,9   300,0      4,4   299,9      0,1   300,0
($)
                     
Stacks   MH      Diff.   MMW      Diff.   BR      Diff.   "True equity"
1000      19,1      2,5   19,0      2,4   15,5      1,1   16,6
9000      137,4      1,2   137,4      1,2   139,2      0,6   138,6
10000   143,5      1,3   143,7      1,1   145,3      0,5   144,8
Total      300,0      5,0   300,1      4,7   300,0      2,2   300,0
($)

Author:  trojanrabbit [ Mon Apr 08, 2013 1:42 am ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

Coffee4tw wrote:
Speaking of improving ICM and Tysen aka trojanrabbit just showing up again on here, didn't you have a sick improvement that scaled really well? I can't remember exactly what it was now...

Are you thinking of this?

Tysen

Author:  concretemixer [ Mon Apr 08, 2013 5:53 am ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

morcos wrote:
concretemixer wrote:
morcos wrote:
With this little change we've got a better approch and results than the original MW and the classic ICM.

Can you tell how exactly did you measure and compare the results?


These are examples from the paper of Ben Roberts plus the modified Malmuth-Weitzman (MMW) method:

Okay, and any results in terms of ROI and profit?

Author:  morcos [ Mon Apr 08, 2013 8:02 am ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

concretemixer wrote:
Okay, and any results in terms of ROI and profit?

Sorry, but I haven't any results with ROI or profit. I just saw that the small stacks have smaller equity than in MH or MW, and I believe the biggest problem with the ICM is the overvalue of the small stacks (and undervalue the big stacks, but this algorithm give just a little more equity for big stacks).

Someone can test it? I don't have the knowledge to simulate or calculate and compare equity models... :(

Author:  Coffee4tw [ Wed Apr 10, 2013 6:47 am ]
Post subject:  Re: Modified Malmuth-Weizman algorithm

trojanrabbit wrote:
Are you thinking of this?

Tysen

YES! Thanks for that link.

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/