Update example so now it works, and thats, well, good
This commit is contained in:
110
examples/atp.rs
110
examples/atp.rs
@@ -1,29 +1,5 @@
|
||||
/*
|
||||
use std::collections::HashMap;
|
||||
|
||||
use time::Date;
|
||||
|
||||
use trueskill_tt::{History, PlayerIndex, BETA, MU, P_DRAW};
|
||||
|
||||
struct Players(HashMap<String, PlayerIndex>);
|
||||
|
||||
impl Players {
|
||||
fn new() -> Self {
|
||||
Self(HashMap::new())
|
||||
}
|
||||
|
||||
fn get(&mut self, name: &str) -> PlayerIndex {
|
||||
if let Some(idx) = self.0.get(name) {
|
||||
*idx
|
||||
} else {
|
||||
let idx = PlayerIndex::new(self.0.len());
|
||||
|
||||
self.0.insert(name.to_string(), idx);
|
||||
|
||||
idx
|
||||
}
|
||||
}
|
||||
}
|
||||
use trueskill_tt::{History, IndexMap};
|
||||
|
||||
fn main() {
|
||||
let mut csv = csv::Reader::open("examples/atp.csv").unwrap();
|
||||
@@ -34,26 +10,26 @@ fn main() {
|
||||
|
||||
let time_format = time::format_description::parse("[year]-[month]-[day]").unwrap();
|
||||
|
||||
let mut players = Players::new();
|
||||
let mut index_map = IndexMap::new();
|
||||
|
||||
for row in csv.records() {
|
||||
if &row["double"] == "t" {
|
||||
let w1_id = players.get(&row["w1_id"]);
|
||||
let w2_id = players.get(&row["w2_id"]);
|
||||
let w1_id = index_map.get_or_create(&row["w1_id"]);
|
||||
let w2_id = index_map.get_or_create(&row["w2_id"]);
|
||||
|
||||
let l1_id = players.get(&row["l1_id"]);
|
||||
let l2_id = players.get(&row["l2_id"]);
|
||||
let l1_id = index_map.get_or_create(&row["l1_id"]);
|
||||
let l2_id = index_map.get_or_create(&row["l2_id"]);
|
||||
|
||||
composition.push(vec![vec![w1_id, w2_id], vec![l1_id, l2_id]]);
|
||||
} else {
|
||||
let w1_id = players.get(&row["w1_id"]);
|
||||
let w1_id = index_map.get_or_create(&row["w1_id"]);
|
||||
|
||||
let l1_id = players.get(&row["l1_id"]);
|
||||
let l1_id = index_map.get_or_create(&row["l1_id"]);
|
||||
|
||||
composition.push(vec![vec![w1_id], vec![l1_id]]);
|
||||
}
|
||||
|
||||
results.push(vec![1, 0]);
|
||||
results.push(vec![1.0, 0.0]);
|
||||
|
||||
let time = Date::parse(&row["time_start"], &time_format)
|
||||
.unwrap()
|
||||
@@ -61,68 +37,13 @@ fn main() {
|
||||
.assume_utc()
|
||||
.unix_timestamp();
|
||||
|
||||
times.push(time as f64 / (60 * 60 * 24) as f64);
|
||||
times.push(time as u64 / (60 * 60 * 24));
|
||||
}
|
||||
|
||||
/*
|
||||
let mut history = History::builder()
|
||||
.sigma(1.6)
|
||||
.gamma(0.036)
|
||||
.priors(priors)
|
||||
.build::<Time>();
|
||||
let mut hist = History::builder().sigma(1.6).gamma(0.036).build();
|
||||
|
||||
history.add_event(teams: [[a, b], [c]], result: [1, 0], 0.0);
|
||||
|
||||
let mut history = History::builder()
|
||||
.sigma(1.6)
|
||||
.gamma(0.036)
|
||||
.priors(priors)
|
||||
.build::<NoTime>();
|
||||
|
||||
history.add_event(teams: [[a, b], [c]], result: [1, 0]);
|
||||
|
||||
history.convergence(Ctx::default());
|
||||
history.convergence(Ctx { epsilon: 1.6, ..Default::default() });
|
||||
history.convergence(Ctx { epsilon: 1.6, iterations: 10 });
|
||||
|
||||
history.convergence().run();
|
||||
|
||||
history
|
||||
.convergence()
|
||||
.epsilon(1.6)
|
||||
.run();
|
||||
|
||||
history
|
||||
.convergence()
|
||||
.epsilon(1.6)
|
||||
.iterations(10)
|
||||
.run();
|
||||
|
||||
history
|
||||
.convergence()
|
||||
.epsilon(1.6)
|
||||
.iterations(10)
|
||||
.inspect(|step, i| println!("Iteration {}: step={:?}", i, step))
|
||||
.run();
|
||||
|
||||
*/
|
||||
|
||||
let mut h = History::new(
|
||||
&composition,
|
||||
&results,
|
||||
×,
|
||||
HashMap::new(),
|
||||
MU,
|
||||
1.6,
|
||||
BETA,
|
||||
0.036,
|
||||
P_DRAW,
|
||||
);
|
||||
|
||||
h.epsilon = 0.01;
|
||||
h.iterations = 10;
|
||||
|
||||
h.convergence();
|
||||
hist.add_events(composition, results, times, vec![]);
|
||||
hist.convergence(10, 0.01, true);
|
||||
}
|
||||
|
||||
mod csv {
|
||||
@@ -194,8 +115,3 @@ mod csv {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
fn main() {
|
||||
//
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user