FracESSA¶
Fractional ESS Analyzer
FracESSA finds evolutionarily stable strategies (ESS) in symmetric games with rational payoffs. Equivalently, it finds the strict local maximizers of a rational quadratic form over the probability simplex. It provides a C++ command-line program and a Python API.
Mathematical problem¶
FracESSA analyzes the standard quadratic optimization problem
where \(A\) is a symmetric matrix with rational entries and \(\Delta^n\) is the probability simplex. In the corresponding symmetric partnership game, the ESS are exactly the strict local maximizers of this quadratic form.
Numerical contract¶
Matrix entries, returned probability vectors, payoffs, candidate decisions in safe mode, and every final stability decision are
exact. FracESSA offers two explicitly selected search methods:
Method |
Intended use |
Guarantee |
|---|---|---|
|
Complete correctness-first analysis |
Uses exact arithmetic for every candidate and stability decision. |
|
Faster exploratory analysis |
Uses floating-point candidate filtering followed by exact checks. It can miss candidates and is not a completeness certificate. |
The nonempty support space can contain 2^n - 1 supports. FracESSA generates supports one at a time, prunes strict supersets of
exact equilibria, and exploits circular symmetry when present. Candidate output is therefore an intermediate record of the ESS
search, not a census of every algebraic Nash equilibrium. One matrix uses one CPU core; Python can analyze independent matrices in
parallel.
Quick start¶
Install the Python package:
python -m pip install pyfracessa
Run one exact analysis:
from pyfracessa import Matrix, RunConfig, run
result = run(
"safe",
Matrix(1, "3#-1,0,0,-2,0,-3"),
config=RunConfig(include_candidates=True),
)
print(result["ess_count"])
print(result["candidates"])
Prebuilt CLI binaries are available from the GitHub releases page. Continue with Getting Started for matrix encoding, command-line use, result interpretation, and multiprocessing.
Documentation¶
Documentation