Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

🎖️ Implementation of the Glicko-2 rating system in Typescript

License

NotificationsYou must be signed in to change notification settings

animafps/glicko2.ts

Repository files navigation

glicko2.ts

CodecovContinuous Integrationnpmnpm

About

An Implementation of the Glicko-2 rating system in typescript. The Glicko-2 rating system is a method for assessing a player's strength in games of skill, such as chess and go. The algorithm is explained by its author, Mark E. Glickman, onhttp://glicko.net/glicko.html.

Each player begins with a rating, a rating deviation (accuracy of the rating) and a volatility (speed of rating evolution). These values will evolve according to the outcomes of matches with other players.

This implementation is fully typed and written in Typescript.

It also includes things that where not in the base Glicko-2 system includingraces andteams for games that have more than two players.

Installing

Node(npm/yarn)

npm i glicko2.ts

or

yarn add glicko2.ts

Deno

To install in a Deno environment you can use the package hosted at

https://deno.land/x/glicko2/deno_dist/mod.ts

Usage

First we initiate a ranking manager and create players with initial ratings, rating deviations and volatilities.

import{Player,Glicko2}from'glicko2.ts'constranking=newGlicko2({// tau : "Reasonable choices are between 0.3 and 1.2, though the system should//        be tested to decide which value results in greatest predictive accuracy"tau :0.5,// rating : default ratingrating :1500,//rd : Default rating deviation//     small number = good confidence on the rating accuracyrd :200,//vol : Default volatility (expected fluctuation on the player rating)vol :0.06})constPlayer1=ranking.makePlayer()constPlayer2=ranking.makePlayer(1400,30,0.06)constPlayer3=ranking.makePlayer(1500,100,0.06)

Afterwards we can create a simple match or matches and calculate the ratings

constmatches=[]matches.push([Player1,Player2,1])//Player1 won over Player2matches.push([Player1,Player3,0.5])//A draw between Player1 and Player3ranking.updateRatings(matches)

When to update rankings

You should not update the ranking after each match.The typical use of glicko is to calculate the ratings after each tournament (ie collection of matches in a period of time).A player rating will evolve after a tournament has finished, but not during the tournament.

Here is what says Mark E. Glickman about the number of matches in a tournament or rating period (cf.http://www.glicko.net/glicko/glicko2.pdf ) :

The Glicko-2 system works best when the number of games in a rating period is moderate to large, say an average of at least 10-15 games per player in a rating period.

Races

Another function that is included in this library is for multiple competitor matches called "Races" where they are competing at the same time.

constrace=raking.makeRace([[Player1],//Player1 won the race[Player2,Player3],//Player2 and Player3 both tied at 2nd position])ranking.updateRatings(race)

API Documentation

The API documentation is hosted athttps://glicko2.js.org

License

This repository is licensed underGNU General Public License v3.0


[8]ページ先頭

©2009-2025 Movatter.jp