Add shell infrastructure for Herings-Peeters (2001) solver - #967
Conversation
tturocy
left a comment
There was a problem hiding this comment.
The initial setup looks good.
We should consider how to organise this. I am thinking we will set up a long-running branch for development of this (separate from master) and then do PRs against that branch. That way we can keep locking in logical steps of progress without winding up with a single huge PR to resolve down the line.
| #include "solvers/hp/hp.h" | ||
|
|
||
| namespace Gambit { | ||
| std::list<MixedStrategyProfile<double>> HPStrategySolveWrapper(const Game &p_game) |
There was a problem hiding this comment.
I think we can just call this HPStrategySolve (but see separate comments on naming)
| contrib/games/yamamoto.nfg \ | ||
| contrib/games/zero.nfg \ | ||
| src/README.rst \ | ||
| src/solvers/hp/hp.cc \ |
There was a problem hiding this comment.
Here we should add a new group of files to parallel the other solvers. EXTRA_DIST is by convention for non-source-code files; these should be in a <something>_SOURCES declaration.
We don't need to write the C++ driver (as discussed, as this will be obsoleted in 17.0), but still will want to group the files required for each method.
|
@rahulsavani @d-kad For thought/discussion: What should we call this method? We have not added new methods for quite some time. There are several more we are planning to add. In the past we have avoided referring to methods by author names. However, all methods had a reasonably natural naming in terms of their method. Possibly the exception would be Herings-Peeters were indeed the first to publish a differential path-following method implemented as a true path-following method. But as noted H-P is in practice an implementation of Harsanyi-Selten, and Logit QRE likewise pre-dated H-P (although again my formulation of it as path-following came later). Views are welcomed - for now @AndresFerCervell carry on calling this "HP" and the like while we think about it! |
|
I've created a branch |
Issues closed by this PR
Description of the changes in this PR
This PR implements the basic shell infrastructure for a new Nash equilibrium solver based on the differentiable homotopy method by Herings and Peeters (2001).
Changes included:
src/solvers/hp/): Createdhp.handhp.cc, currently initializes aStrategySupportProfileand returns a trivial uniform mixed strategy profile.src/pygambit/): Added external C++ declarations togambit.pxdunder theGambitnamespace, and implemented the_hp_strategy_solvetranslation function insidenash.pxi.src/pygambit/nash.py): Exposed the high-levelhp_solvefunction to end-users.setup.pyand updatedMakefile.amfor general consistency.doc/references.bib): Added the canonical BibTeX entry for Herings & Peeters (2001) under thearticles_equilibriacategory. Documentation will be expanded throughthe creation of the algorithm.How to review this PR
-Ensure the project compiles succesfully.
-Verify that running the solver from a Python console returns the expected trivial profile.
-Check that the internal naming schemas adhere to Gambit´s established conventions for strategic form solvers.