aiaeforks / glicko2
PHP实现的Glicko-2评级算法
1.0.0
2024-04-27 11:03 UTC
Requires (Dev)
- phpunit/phpunit: ~4
This package is auto-updated.
Last update: 2024-09-27 11:57:14 UTC
README
PHP实现的Glicko-2评级算法。这是 goochojs/glicko2 的 PHP 版本。
安装
使用 Composer,将包添加到您的 require
部分。
composer require aiaeforks/glicko2
或者
{ "require": { "aiaeforks/glicko2": "dev-master" } }
运行 composer update
以获取新的需求。
使用
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; }
贡献
编码标准
所有代码都必须遵循 PSR-2 编码标准。
单元测试
如果您发现一个错误,请随意发送一个修复请求,但请确保始终包括回归测试。