|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## [16.5.0] - unreleased |
| 3 | +## [16.5.0] - 2026-01-05 |
4 | 4 |
|
5 | | -### Changed |
6 | | -- In the graphical interface, removed option to configure information set link drawing; information sets |
7 | | - are always drawn and indicators are always drawn if an information set spans multiple levels. |
8 | | -- In `pygambit`, indexing the children of a node by a string inteprets the string as an action label, |
9 | | - not a label of a child node. In addition, indexing by an action object is now supported. (#587) |
10 | | -- In `pygambit`, `min_payoff` and `max_payoff` (for both games and players) now refers to payoffs in |
11 | | - any play of the game; previously this referred only to the set of outcomes. (#498) |
| 5 | +### Fixed |
| 6 | +- Sequence-form based equilibrium-finding methods returned incorrect output on games with |
| 7 | + outcomes at non-terminal nodes. (#654) |
12 | 8 |
|
13 | 9 | ### Added |
14 | | -- Tests for EFG Nash solvers -- `enumpoly_solve`, `lp_solve`, `lcp_solve` -- in behavior stratgegies |
| 10 | +- Implement `IsAbsentMinded()` on information sets (C++) and `Infoset.is_absent_minded` (Python) |
| 11 | + to detect if an information is absent-minded. |
| 12 | +- Tests for EFG Nash solvers -- `enumpoly_solve`, `lp_solve`, `lcp_solve` -- in behavior strategies |
15 | 13 | - In `pygambit`, `Node` objects now have a read-only property `own_prior_action` and `Infoset` objects |
16 | 14 | have a read-only property `own_prior_actions` to retrieve the last action or the set of last actions |
17 | 15 | taken by the player before reaching the node or information set, respectively. (#582) |
18 | 16 | - In `pygambit`, `Node` objects now have a read-only property `is_strategy_reachable` to determine |
19 | 17 | if the node is reachable by at least one pure strategy profile. This proves useful for identifying |
20 | 18 | unreachable parts of the game tree in games with absent-mindedness. (#629) |
21 | 19 |
|
| 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) |
| 33 | +- In the graphical interface, removed option to configure information set link drawing; information sets |
| 34 | + are always drawn and indicators are always drawn if an information set spans multiple levels. |
| 35 | +- In `pygambit`, indexing the children of a node by a string inteprets the string as an action label, |
| 36 | + not a label of a child node. In addition, indexing by an action object is now supported. (#587) |
| 37 | +- In `pygambit`, `min_payoff` and `max_payoff` (for both games and players) now refers to payoffs in |
| 38 | + any play of the game; previously this referred only to the set of outcomes. (#498) |
| 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. |
| 42 | + |
22 | 43 | ### Removed |
23 | 44 | - Eliminating dominated actions has been removed from the GUI as it was implementing a non-standard |
24 | 45 | formulation of dominance. (#612) |
25 | 46 | - The C++ method for computing subgame perfect equilibria with selected methods has been removed |
26 | 47 | (and as a result from the `enumpure`, `lp`, and `lcp` command-line tools); this will be replaced |
27 | 48 | with new and more customisable approaches. (#639) |
28 | 49 |
|
29 | | -## [16.4.1] - unreleased |
| 50 | +## [16.4.1] - 2025-12-17 |
30 | 51 |
|
31 | 52 | ### Fixed |
32 | 53 | - Fixed a regression in which null outcomes in strategic game tables were not handled correctly |
|
41 | 62 | mixed behavior profiles (#616) |
42 | 63 |
|
43 | 64 |
|
44 | | -## [16.3.2] - unreleased |
| 65 | +## [16.3.2] - 2025-12-04 |
45 | 66 |
|
46 | 67 | ### Fixed |
47 | 68 | - Parsing of output of `gambit-logit` in the graphical interface did not handle the |
|
0 commit comments