karma wrote:
Hello, i have some doubts(?) about Weighting the enumerations..
first of all.. the weight table is used when is calculated the potential and strength of the hand, right?.. then
Code:
if(ourrank>opprank){
ahead += weightTable[i];
}
else if(ourrank==opprank){
tied += weightTable[i];
}
total += weightTable[i];
...
strength = (ahead+tied/2)/total;
is this code right? or "total += weightTable[i]" should be "total += 1"
Yes, that code looks right, and "total += 1" looks wrong.
karma wrote:
second..
According to Davidson paper:
Code:
UpdateWeightTable(Action A, WeightTable WT, GameContext GC, OpponentModel OM)
{
for each (entry E in WT)
{
ProbabilityDistribution PT[FOLD,CALL,RAISE]
PT = PredictOpponentAction(OM, E, GC)
WT[E] = WT[E] * PT[A]
}
}
"The relative value for each hand is
increased or decreased to be consistent with every opponent action."
i can't see the way of
increase the value with
WT[E] = WT[E] * PT[A], if WT[E] is between 0 to 1, and in each street is mutiplied by other value between 0 to 1... how this work?
Thanks
With that algorithm, you are right, WT[x] will only decrease. But the word "relative" is crucial here.
Example: suppose there are only two cards, Ace and King, and initially WT[K] = 0.5, WT[A] = 0.5. And suppose that the opponent calls, and the opponent model says that PT[call] for Ace is 40%, PT[call] for King is 80%, so now WT[A] = 0.5*0.4 = 0.2, WT[K] = 0.5*0.8 = 0.4. The probability that the opponent has ace is 0.2/(0.2+0.4) = 33%, king: 0.4/(0.2+0.4) = 67%. And if we have an ace (supposing ace is better than king), then with your strength computation algorithm, total becomes 0.4+0.2 = 0.6, ahead = WT[K] = 0.4, tied = WT[A] = 0.2 so strength = (ahead+tied/2)/total = (0.4+0.2/2)/0.6 = 83%.