The implementation and documentation of Game::GetMinPayoff and Game::GetMaxPayoff state these return the smallest and largest payoffs in any outcome. The corresponding functions are implemented correctly to that specification.
However, these calls are used in lp, lcp, and enummixed to normalise payoffs to ensure payoffs are nonnegative, where this is essential for the formulation of the problems.
The problem is that the GameTreeRep supports outcomes that are not at terminal nodes. Therefore, the minimum payoff to a player in a play of the game may be smaller than the minimum payoff for any one outcome, as more than one outcome may be visited in a play.
These functions should be re-written to compute correctly for game trees to consider any play of the game. Doing this requires a little bit of thought because non-terminal outcomes are the exception rather than the rule in most applications. So we probably want to avoid having to traverse the tree in the event there are no non-terminal outcomes, which makes fixing this well a bit more subtle.
The implementation and documentation of
Game::GetMinPayoffandGame::GetMaxPayoffstate these return the smallest and largest payoffs in any outcome. The corresponding functions are implemented correctly to that specification.However, these calls are used in
lp,lcp, andenummixedto normalise payoffs to ensure payoffs are nonnegative, where this is essential for the formulation of the problems.The problem is that the
GameTreeRepsupports outcomes that are not at terminal nodes. Therefore, the minimum payoff to a player in a play of the game may be smaller than the minimum payoff for any one outcome, as more than one outcome may be visited in a play.These functions should be re-written to compute correctly for game trees to consider any play of the game. Doing this requires a little bit of thought because non-terminal outcomes are the exception rather than the rule in most applications. So we probably want to avoid having to traverse the tree in the event there are no non-terminal outcomes, which makes fixing this well a bit more subtle.