maartenstaa / glicko2
PHP implementation of the Glicko-2 rating algorithm
Installs: 6 211
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 4
Forks: 3
Open Issues: 1
Requires (Dev)
- phpunit/phpunit: ~4
This package is auto-updated.
Last update: 2024-12-04 22:57:59 UTC
README
PHP implementation of the Glicko-2 rating algorithm. This is a PHP port of goochjs/glicko2.
Installation
Using Composer, add the package to your require
section.
{ "require": { "maartenstaa/glicko2": "dev-master" } }
Run composer update
to fetch the new requirement.
Usage
use MaartenStaa\Glicko2\Rating; use MaartenStaa\Glicko2\RatingCalculator; use MaartenStaa\Glicko2\RatingPeriodResults; // Instantiate a RatingCalculator object. // At instantiation, you can set the default rating for a player's volatility and // the system constant for your game ("τ", which constrains changes in volatility // over time) or just accept the defaults. $calculator = new RatingCalculator(/* $initVolatility, $tau */); // Instantiate a Rating object for each player. $player1 = new Rating($calculator/* , $rating, $ratingDeviation, $volatility */); $player2 = new Rating($calculator/* , $rating, $ratingDeviation, $volatility */); $player3 = new Rating($calculator/* , $rating, $ratingDeviation, $volatility */); // Instantiate a RatingPeriodResults object. $results = new RatingPeriodResults(); // Add game results to the RatingPeriodResults object until you reach the end of your rating period. // Use addResult($winner, $loser) for games that had an outcome. $results->addResult($player1, $player2); // Use addDraw($player1, $player2) for games that resulted in a draw. $results->addDraw($player1, $player2); // Use addParticipant($player) to add players that played no games in the rating period. $results->addParticipant($player3); // Once you've reached the end of your rating period, call the updateRatings method // against the RatingCalculator; this takes the RatingPeriodResults object as argument. // * Note that the RatingPeriodResults object is cleared down of game results once // the new ratings have been calculated. // * Participants remain within the RatingPeriodResults object, however, and will // have their rating deviations recalculated at the end of future rating periods // even if they don't play any games. This is in-line with Glickman's algorithm. $calculator->updateRatings($results); // Access the getRating, getRatingDeviation, and getVolatility methods of each // player's Rating to see the new values. foreach (array($player1, $player2, $player3) as $index => $player) { echo 'Player #', $index, ' values: ', $player->getRating(), ', ', $player->getRatingDeviation(), ', ', $player->getVolatility(), PHP_EOL; }
Contributing
Coding standard
All code is to follow the PSR-2 coding standard.
Unit tests
If you find a bug, feel free to send a pull request to fix it, but make sure to always include a regression test.