ASR Research Group Banner

MCGTL: a Model Checker for Game-Theoretic Learning algorithms

MCGTL is a model checker for analysing the performance of game-theoretic learning algorithms, in order to compare their short-term behaviour. Currently, the learning algorithms supported are Fictitious Play (FP), Joint Strategy Fictitious Play (JSFP), Geometric Fictitious Play (GFP), Adaptive Forgetting Factor Fictitious Play (AFFFP), Extended Kalman Filter Fictitious Play (EKFFP), Particle Filter Fictitious Play (PFFP), Distributed Stochastic Algorithm (DSA), Regret Matching (RM), Max Gain Regret Matching (MGRM), and Spatial Adaptive Play (SAP).

To download the program and examples, see the toolbar on the right.


java -jar mcgtl-0.1.jar <game> [options]

Most useful options:

-epsilon1 e: change the value of espilon1 to e (default: 0.0001);

-epsilon2 e: change the value of espilon2 to e (default: 0.0001);

-epsilon2 e: change the value of espilon2 to e (default: 0.0001);

-tau e: change the value of tau to e (default: 0.00001);

-scale d: change the value of constant c used in PFFP to d (default: 3);

-N d: change the value of number of particles in PFFP to d (default: 1000);

-runs d: change the number of testing runs to d (default: 1);

-iterations d: change the maximum number of iterations to d (default: 100);

-maxnewstates d: change the maximum number of new states generated in each iteration to d; If the number of new states exceeds this maximum number, then the run is terminated (default: 1000).

-algorithm d: choose the algorithm (default: 0):

0: FP

1: GFP




5: DSA

6: RM

7: SAP



-nonpareto: indicate that there is no pareto efficient equilibrium state in the game

-newparticlecomparison: enable efficient similarity check for PFFP

-randomkappa: use random initial estimate in each run

-log f: specify the log file

-v d: verbose mode when d > 0

-goodstates: manually specify pareto efficient equilibrium states

-printstatespace: generate a graphviz dot file for the structure of the state space

-printstatistics: print the statistics information

-printeccs: print information about end components in the state space

-clearq: clear intermediate storage in PFFP

-dotfile f: specify the name of dot file

Usage examples:

java -Xss1024m -jar mcgtl-0.1.jar simple -printstatistics -randomkappa -algorithm 1

java -jar mcgtl-0.1.jar simple -printstatistics -randomkappa -runs 100 -algorithm 6 -iterations 100000 -epsilon2 0.01 -epsilon3 0.01

java -jar mcgtl-0.1.jar rock -printstatistics -randomkappa -runs 100 -algorithm 4 -clearq -iterations 100000 -newparticlecomparison -log simple_Algorithm4.results -goodstates 0,0;1,1;2,2 -nonpareto -scale 1

Format of game reward:

// number of actions in player 1, number of actions in player 2


// player 1’s reward



// player 2’s reward



// player 1’s initial estimate


// player 2’s initial estimate