nypc-perf 0.1.2

Performance calculation of NYPC
Documentation
  • Coverage
  • 62.5%
    10 out of 16 items documented3 out of 10 items with examples
  • Size
  • Source code size: 19.78 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2.04 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 13s Average build duration of successful builds.
  • all releases: 13s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • nypc/nypc-perf
    3 1 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • nypc

nypc-perf

Crates.io Documentation License: MIT

A Rust library for calculating player performance based on battle results using the Bradley-Terry model.

Overview

This library implements a Bradley-Terry model based performance system that estimates player performance levels from head-to-head battle outcomes. The algorithm uses Newton-Raphson iteration to find maximum likelihood estimates of player performances that best explain the observed win/loss patterns.

Installation

Add this to your Cargo.toml:

[dependencies]
nypc-perf = "0.1.2"

Usage

Basic Example

use nypc_perf::{BattleResult, PerfCalc, Rating};

// Create battle results between players
let battles = vec![
    BattleResult {
        i: 0,           // Player 0
        j: 1,           // Player 1
        wij: 2.0,       // Player 0 won twice against Player 1
        wji: 1.0,       // Player 1 won once against Player 0
    },
    BattleResult {
        i: 0,
        j: 2,
        wij: 1.0,
        wji: 0.0,
    }
];

// Initialize performance ratings to 0
let mut perf = vec![
    Rating::new(0.0),       // Variable rating
    Rating::new(0.0),       // Variable rating  
    Rating::new_fixed(0.0)  // Fixed anchor rating
];

// Run the rating calculation
let result = PerfCalc::new()
    .max_iters(100)     // Maximum iterations (default: 100)
    .epsilon(1e-6)      // Convergence threshold (default: 1e-6)
    .run(&mut perf, &battles);

// Check if calculation converged
match result {
    Ok(iters) => println!("Converged after {} iterations", iters),
    Err(err) => println!("Did not converge, final error: {}", err)
}

// perf now contains the estimated log-performance ratings
// Higher values indicate better performance
for (i, rating) in perf.iter().enumerate() {
    println!("Player {}: {:.6}", i, rating.value);
}

Authors

NEXON Algorithm Research Team - _algorithm@nexon.co.kr

Documentation

For detailed API documentation, visit docs.rs/nypc-perf.