|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## [16.5.0] - unreleased |
| 3 | +## [16.5.0] - 2026-01-05 |
| 4 | + |
| 5 | +### Fixed |
| 6 | +- Sequence-form based equilibrium-finding methods returned incorrect output on games with |
| 7 | + outcomes at non-terminal nodes. (#654) |
4 | 8 |
|
5 | 9 | ### Added |
6 | 10 | - Implement `IsAbsentMinded()` on information sets (C++) and `Infoset.is_absent_minded` (Python) |
7 | 11 | to detect if an information is absent-minded. |
| 12 | +- Tests for EFG Nash solvers -- `enumpoly_solve`, `lp_solve`, `lcp_solve` -- in behavior strategies |
| 13 | +- In `pygambit`, `Node` objects now have a read-only property `own_prior_action` and `Infoset` objects |
| 14 | + have a read-only property `own_prior_actions` to retrieve the last action or the set of last actions |
| 15 | + taken by the player before reaching the node or information set, respectively. (#582) |
| 16 | +- In `pygambit`, `Node` objects now have a read-only property `is_strategy_reachable` to determine |
| 17 | + if the node is reachable by at least one pure strategy profile. This proves useful for identifying |
| 18 | + unreachable parts of the game tree in games with absent-mindedness. (#629) |
8 | 19 |
|
9 | 20 | ### Changed |
| 21 | +- Labels for players, outcomes, strategies, and actions are expected to be non-empty and unique within |
| 22 | + the relevant scope (games for players and outcomes, players for strategies, and information sets for |
| 23 | + actions). `pygambit` now issues a `FutureWarning` if a label is changed that does not conform to these |
| 24 | + expectations. There is now an optional flag `normalize_labels` to `read_*` which will automatically |
| 25 | + fill in non-confirming sets of labels. In version 16.6 these will be enforced; invalid label sets will |
| 26 | + generate an error and files will be normalized automatically on read. (#614) |
| 27 | +- Terminology for agent-form calculations on extensive games has been clarified. Mixed behavior profiles |
| 28 | + distinguish "agent" regret and liap values from their strategy-based analogs. Methods which compute |
| 29 | + using the agent-form - specifically `enumpure_solve` and `liap_solve`, now clarify this by being named |
| 30 | + differently in `pygambit`. (#617) |
| 31 | +- For clarity, the `stop_after` and `max_depth` arguments to `lcp_solve` are no longer permitted when solving using |
| 32 | + the sequence form. These actually had no effect in previous versions. (#671) |
10 | 33 | - In the graphical interface, removed option to configure information set link drawing; information sets |
11 | 34 | are always drawn and indicators are always drawn if an information set spans multiple levels. |
12 | 35 | - In `pygambit`, indexing the children of a node by a string inteprets the string as an action label, |
13 | 36 | not a label of a child node. In addition, indexing by an action object is now supported. (#587) |
14 | 37 | - In `pygambit`, `min_payoff` and `max_payoff` (for both games and players) now refers to payoffs in |
15 | 38 | any play of the game; previously this referred only to the set of outcomes. (#498) |
16 | | - |
17 | | -### Added |
18 | | -- Tests for EFG Nash solvers -- `enumpoly_solve`, `lp_solve`, `lcp_solve` -- in behavior stratgegies |
19 | | -- In `pygambit`, `Node` objects now have a read-only property `own_prior_action` and `Infoset` objects |
20 | | - have a read-only property `own_prior_actions` to retrieve the last action or the set of last actions |
21 | | - taken by the player before reaching the node or information set, respectively. (#582) |
22 | | -- In `pygambit`, `Node` objects now have a read-only property `is_strategy_reachable` to determine |
23 | | - if the node is reachable by at least one pure strategy profile. This proves useful for identifying |
24 | | - unreachable parts of the game tree in games with absent-mindedness. (#629) |
| 39 | +- In `pygambit`, calls to `sort_infosets` are no longer required to normalise the game representation. |
| 40 | + Iteration ordering of information sets and their members is ensured internally. `sort_infosets` |
| 41 | + is therefore now a no-op and is deprecated; it will be removed in a future version. |
25 | 42 |
|
26 | 43 | ### Removed |
27 | 44 | - Eliminating dominated actions has been removed from the GUI as it was implementing a non-standard |
|
30 | 47 | (and as a result from the `enumpure`, `lp`, and `lcp` command-line tools); this will be replaced |
31 | 48 | with new and more customisable approaches. (#639) |
32 | 49 |
|
33 | | -## [16.4.1] - unreleased |
| 50 | +## [16.4.1] - 2025-12-17 |
34 | 51 |
|
35 | 52 | ### Fixed |
36 | 53 | - Fixed a regression in which null outcomes in strategic game tables were not handled correctly |
|
45 | 62 | mixed behavior profiles (#616) |
46 | 63 |
|
47 | 64 |
|
48 | | -## [16.3.2] - unreleased |
| 65 | +## [16.3.2] - 2025-12-04 |
49 | 66 |
|
50 | 67 | ### Fixed |
51 | 68 | - Parsing of output of `gambit-logit` in the graphical interface did not handle the |
|
0 commit comments