Skip to content

MAINT: Refactor internals of simpdiv_solve #480

Description

@tturocy

The implementation of src/solvers/simpdiv is some of the oldest remaining, with many details of the implementation able to be traced back into the C version of Gambit in the early 1990s.

Over time the implementation has been amended as the library has evolved, but has never had a thorough review and update. This would be quite useful to do, as this has proven to be a useful method for the analysis of many $n$-player games.

In particular, the implementation uses a class PVector which is the last remnant of a more widely-used class. However, the use of this class actually is not what PVector was really intended for. Rather, actually, these are used to store pairs of indices representing (player, strategy) numbers. The algorithm could instead be re-written more transparently to use pairs, or possibly even better by using GameStrategy directly in places to work with games more abstractly.

This would be a good project for someone interested in how simplicial subdivision-type algorithms work. The existing implementation is definitely correct, so there is a strong base for doing regression testing with a new implementation, where a new implementation would also result in making the understanding of how the method works much more clear.

Metadata

Metadata

Assignees

No one assigned

    Labels

    c++Items which involve writing in C++nashItems which involve Nash equilibrium computation methods

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions