Skip to content

Version 16.2.0

Latest
Compare
Choose a tag to compare
@tturocy tturocy released this 05 Apr 10:46
· 5 commits to master since this release

Fixed

  • gnm_solve/gambit-gnm now correctly handles the degenerate case of a game where all
    payoffs are the same (#405), and checks that the perturbation vector specified has at least
    one non-zero component (#194)
  • ipa_solve/gambit-ipa ensures the use of a generic perturbation vector; this resolves a
    problem where the method could return non-Nash output (#406)
  • gambit-enumpoly could get stuck in an infinite loop, and/or fail to report some equilibria,
    due to floating-point rounding/tolerance issues; this has been fixed on known cases (#198)
  • gambit-logit now uses perturbations to attempt to resolve correspondences that have
    bifurcations, and instead tries always to follow a curve that has the same orientation.
    This should eliminate cases in which tracing gets stuck in a loop or reverses itself
    when encountering bifurcations (#3)

Added

  • MixedStrategyProfile and MixedBehaviorProfile objects in pygambit can now be iterated in
    various dict-like ways
  • gnm_solve/gambit-gnm now exposes several parameters which control the behavior of the
    path-following procedure
  • The MixedBehaviorProfile object can now be initialized on creation by a given distribution.
  • append_move/append_infoset now resolves either a singleton node reference or any
    iterable set of node references
  • Additional regret-related functions added to MixedBehaviorProfile and MixedStrategyProfile
    in both C++ and Python
  • Some caching added to payoff/strategy value calculations in MixedStrategyProfile
  • gambit-simpdiv now supports expressing output as floating-point with a specified number of
    digits (#296)
  • Parameters first_step and max_accel added to gambit_logit for finer control of
    numerical continuation process

Changed

  • Gambit now requires a compiler that supports C++17.
  • Functions to compute Nash equilibria now return a NashComputationResult object instead of a bare
    list of profiles (#190)
  • liap_solve/gambit-liap has been reimplemented to scale payoffs uniformly across games,
    to always take an explicit starting point (in liap_solve), and to specify a regret-based
    acceptance criterion (#330)
  • simpdiv_solve/gambit-simpdiv now accepts a regret-based acceptance criterion (#439)
  • simpdiv_solve now takes an explicit starting point (#445)
  • Converted test suite for mixed behavior profiles to pytest style; added parametrizations for
    test_realiz_prob; added test_martingale_property_of_node_value (#375)
  • Improved test suite for mixed strategy profiles (#374)
  • Test suite for pygambit moved from src/pygambit/tests/ to tests/
  • Improved repr methods in pygambit for game-related classes
  • Further extension of test suite for mixed behavior profiles to cover new indexing and profile
    order consistency for payoff-related calculations
  • Overhaul of caching in MixedBehaviorProfile to use maps (std::map)
  • Creation of random mixed profiles in pygambit is done with new Game.random_strategy_profile and
    Game.random_behavior_profile methods; these accept numpy.random.Generator objects for
    reproducible state.
    Creation of random mixed profiles in C++ is done with new Game::NewRandomStrategyProfile and
    Game::NewRandomBehaviorProfile methods; these accept STL Generator objects for reproducible state.
    The Python implementation is no longer just a wrapper around the C++ one.
  • Graphical interface now uses simplicial subdivision as the recommended method for finding some
    equilibria in games with more than two players, instead of Lyapunov function minimisation