Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cptanalatriste/prioritisation-game-model

Game-theoretic tools for task prioritisation process modelling.
https://github.com/cptanalatriste/prioritisation-game-model

bug-reporting game-theory simulation

Last synced: about 1 month ago
JSON representation

Game-theoretic tools for task prioritisation process modelling.

Awesome Lists containing this project

README

        

# Equilibrium Analysis for Task Prioritisation

*For an in-depht discussion of our empirical game-theoretic model, you can read our paper in the IEEE Transactions on Software Engineering: https://ieeexplore.ieee.org/abstract/document/8852726*

This collection of Python scripts make use of a simulation model of task prioritisation for obtaining the Nash-Equilibrium of its empirical game-theoretic model.

## Pre-requisites
The code was built and tested using the [Anaconda distribution for Python 2.7](https://www.continuum.io/DOWNLOADS). For equilibrium calculation, it relies on the [Gambit Software version 15](http://www.gambit-project.org/).

Besides the libraries available in Anaconda, we also need the following:
- *Simpy* version 2.3.1, for the simulation model implementation.
- *Pathos* version 0.2.0, for the parallel execution of simulation replications. If you're working on Windows, be sure to [install a C++ compiler first](https://www.microsoft.com/en-gb/download/details.aspx?id=44266).
- *Recordtype*, for mutable named tuples support.

## Configuration
The file `gtconfig.py` exposes the configurations parameters. Edit following according to your needs:

- `all_issues_csv`, is the file location of the CSV file containing the bug tracking system data needed for obtaining the simulation inputs.
- `gambit_folder`, is the installation directory of the Gambit Software
- `quantal_response_solver`, is the name of the command for obtaining the quantal response equilibria in Gambit.
- `replications_per_profile`, is the number of replications to execute per strategy profile.
- `parallel`, to enable the parallel execution of simulation replications.
- `parallel_blocks`, the number of parallel blocks to divide simulation execution. It can be set to the number of cores available on your system.
- `is_windows`, should be `False` if you are not using a Windows operating system.

## Execution
The search-based mechanism design experiments are based on games with the following characteristics:

- *Simulation model:* Bug reports arrive individually to a priority queue based on the priority contained in the report.
- *Strategy catalog:* Contains only the always-honest and always-dishonest strategies.
- *Game reduction:* No game reduction is performed, nor any symmetry assumption is made.
- *Player selection:* From the bug tracking system data, we pick the most productive bug reporters as players.
- *Equilibrium algorithm:* Quantal response equilibrium, since is the one recommended by Gambit for games with more than 2 players.

To execute this scenario, you can do the following:

`python getequilibrium.py testers developers target_bugs file_name`

Where:

- *testers* is the number of bug reporters.
- *developers* is the number of developers available for bug fixing.
- *target_bugs* is the number of bugs to be fixed before release.
- *file_name* is the CSV file name where the equilibrium will be stored.