Fix infoset realisation probability for absent-minded information sets#835
Conversation
|
The only thing that is giving me pause here is whether the need to run the unreachable nodes check and then the way the absent-minded nodes check is being done is too inefficient. Wouldn't it be simpler to do the sums and then subtract off the probabilities from the re-entries? That way if the set of re-entries is empty that would be fast. |
|
We've realised with further discussion that there are some additional adjacent considerations to defining some other quantities that should be handled as part of these changes (as they interact with the definition of information set realisation probability) - see discussion to be added to #826 |
adf3817 to
4294529
Compare
b7d761c to
d486048
Compare
|
@d-kad I am having difficulty correctly resolving the merge conflict in the tests - as you've been working on these I would hope you would be able to see the correct solution more quickly than I! |
…tries and IsAbsentMindedReentry
…cached m_infosetProbs in ComputeRealizationProbs
… an absent-minded information set
…achableNodes Infoset realization probability subtracts reentries from the member sum. That set was collected in BuildUnreachableNodes, which prunes non-reached subtrees for pure-strategy reachability. For the added test, the old approach yields 9/8 instead of 1 for Player 1's absent-minded infoset. m_unreachableNodes and ComputeRealizationProbs are unchanged.
…ous pure-strategy reentry detection
Previously only personal players' infosets were cached -- querying a chance infoset returned a default-inserted zero
d486048 to
b0e435a
Compare
Description
This PR fixes information set realisation probability for games with absent-mindedness. The previous implementation summed node realisation probabilities across all members, double-counting it for the nodes along the same path, with probabilities summing above 1 in this case.
The corrected infoset realisation probability is the probability the information set is visited at least once. The implementation identifies reentry nodes (members whose path from the root passes through the same information set) and excludes them from the sum.
C++ changes:
m_absentMindedReentriescache inGameTreeRep, populated insideBuildOwnPriorActionsGetAbsentMindedReentriesm_infosetProbscache, populated insideComputeRealizationProbsTest changes:
test_absent_minded_infoset_probcoveringnoPR-AM-driver-one-player.efg,noPR-action-AM.efg, andnoPR-action-AM-three-chain.efgwith uniform probability distributions over actionsCloses #826