glicko2-composite-opponent

Abstract Glicko-2 to team games through a composite player

Usage no npm install needed!

<script type="module">
  import glicko2CompositeOpponent from 'https://cdn.skypack.dev/glicko2-composite-opponent';
</script>

README

glicko2-composite-opponent

Update Glicko-2 ratings for two teams of players by creating a composite player whose rating and deviation is the average of a team's players and then having the opponent team's players each win/lose a single match against the composite player.

This procedure is described in Abstracting Glicko-2 for Team Games.

Example

var compositeOpponent = require('../');
var glicko2 = require('glicko2').Glicko2;

var r = new glicko2();
var a = [
  r.makePlayer(1100, 300),
  r.makePlayer(1200, 310),
  r.makePlayer(1300, 320)
];
var b = [
  r.makePlayer(1400, 110),
  r.makePlayer(1500, 120),
  r.makePlayer(1600, 130)
];

// team A defeats team B
var matches = compositeOpponent(a, b, 1);
matches.forEach(function(match) {
  console.log('%d±%d vs %d±%d', Math.round(match[0].getRating()),
                                Math.round(match[0].getRd()),
                                Math.round(match[1].getRating()),
                                Math.round(match[1].getRd()));
  // => 1100±300 vs 1500±120
  // => 1200±310 vs 1500±120
  // => 1300±320 vs 1500±120
  // => 1200±310 vs 1400±110
  // => 1200±310 vs 1500±120
  // => 1200±310 vs 1600±130
});

Installation

$ npm install glicko2-composite-opponent

API

var compositeOpponent = require('glicko2-composite-opponent');

compositeOpponent(a, b, score, [vol])

Given Arrays a and b, each containing glicko2 Players, returns an Array of matches wherein each player on each team is put against a composite opponent made up of the average rating and rating deviation of the opposite team. Each match will have a score of Number score.

If you use a custom vol parameter you can pass it as a fourth argument. This is only used for creating the composite player.

compositeOpponent.lite(a, b)

Specifically for use with glicko2-lite.

Given Arrays a and b, each containing Objects with rating and rd properties, returns the composite opponents as an Array. First element will be the composite player created from a and second element will be the composite player created from b.