Structure of hp method, ComputeInitialPoint and ExtractEquilibrium methods - #973
Conversation
|
To capture notes/suggestions from the meeting:
|
|
As discussed in the meeting, I have created Furthermore, I have added a test with multiple best responses for player 1, which already works (throwing the exception). More will be added in the future. |
Updated expected results for HPSolver test case.
|
I have implemented GetValue, CalculateDynamicPayoff and the Jacobian. I decided to try directly using the derivatives so it would be faster. Next steps, notes and questions: Tell me what you think! |
|
This is definitely exciting progress! I've had a quick look at this on some of our other very standard games and I think the necessity of terminating on pygambit.catalog.load("journals/other/reiley2008/fig1")(see https://gambitproject.readthedocs.io/en/latest/catalog.html#catalog). This is returning a point that is not Nash. I think what is going on is the test cases so far always select a pure strategy equilibrium so we get away with not stopping exactly at 1 because the path is no longer moving very much in the transformed space. But when the limiting equilibrium involves randomisation it looks like this does matter. I believe the mechanism for homing in on |
|
I should say in addition: I am looking at the logging output for the Reiley "stripped down poker" example above. Just interpolating between the point at |
|
As from our catchup meeting, I think this is a clear "finished" step so am going to squash and merge it. Subsequent tasks (test examples, cleanup, refactoring) we can isolate as separate commits/PRs. |
Issues closed by this PR
None
Description of the changes in this PR
src/solvers/hp/hpsystem.handsrc/solvers/hp/hpsystem.ccfiles that will have the mathematical implementation of the algorithm.src/solvers/hp/hpsystem.hincludes a draft of the declaration of the methods that will be used.t=0): ImplementedHPEquationSystem::ComputeInitialPoint()to compute the starting vectorHPEquationSystem::ExtractEquilibrium()to map the finalMixedStrategyProfile<double>.Makefile.amto inform about the new files,gambit.pxd,nash.pxi, andnash.py. Now,pygambit.nash.hp_solve()receives two parameters: the game and the prior.hp.ccUpdate: Given a game and a prior, it computes the initial point (t=0), writes the vector in "alpha form" (this is provisional) and returns theMixedStrategyProfile<double>associated.Important Notes:
tolbeing defined as 1e-9 is provisional. It should be scaled according to the proportins of the game. Maybe using a variablescaleas it is done insrc/solvers/logit/efglogit.ccwould be a nice solution.How to review this PR
src/solvers/hp/hpsystem.ccand compareComputeInitialPoint()against the theoretical setup in Section 4 of Herings & Peeters (2001).