Update test to use builder
This commit is contained in:
197
src/history.rs
197
src/history.rs
@@ -116,6 +116,25 @@ pub struct History {
|
||||
iterations: usize,
|
||||
}
|
||||
|
||||
impl Default for History {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
size: 0,
|
||||
batches: Vec::new(),
|
||||
agents: HashMap::new(),
|
||||
time: true,
|
||||
mu: MU,
|
||||
sigma: SIGMA,
|
||||
beta: BETA,
|
||||
gamma: GAMMA,
|
||||
p_draw: P_DRAW,
|
||||
online: false,
|
||||
epsilon: EPSILON,
|
||||
iterations: ITERATIONS,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl History {
|
||||
pub fn builder() -> HistoryBuilder {
|
||||
HistoryBuilder::default()
|
||||
@@ -595,7 +614,7 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
let mut h = History::builder().build();
|
||||
let mut h = History::default();
|
||||
|
||||
h.add_events(composition, results, vec![1, 2, 3], vec![], priors);
|
||||
|
||||
@@ -649,7 +668,7 @@ mod tests {
|
||||
priors.insert(k.to_string(), player);
|
||||
}
|
||||
|
||||
let mut h1 = History::builder().build();
|
||||
let mut h1 = History::default();
|
||||
|
||||
h1.add_events(composition, results, times, vec![], priors);
|
||||
|
||||
@@ -740,7 +759,7 @@ mod tests {
|
||||
priors.insert(k.to_string(), player);
|
||||
}
|
||||
|
||||
let mut h = History::builder().build();
|
||||
let mut h = History::default();
|
||||
|
||||
h.add_events(composition, results, times, vec![], priors);
|
||||
h.convergence(ITERATIONS, EPSILON, false);
|
||||
@@ -774,21 +793,17 @@ mod tests {
|
||||
];
|
||||
let results = vec![vec![1.0, 0.0], vec![0.0, 1.0], vec![1.0, 0.0]];
|
||||
|
||||
let mut h = History::new(
|
||||
composition,
|
||||
results,
|
||||
vec![],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
25.0,
|
||||
25.0 / 3.0,
|
||||
25.0 / 6.0,
|
||||
25.0 / 300.0,
|
||||
0.0,
|
||||
false,
|
||||
);
|
||||
let mut h = History::builder()
|
||||
.mu(25.0)
|
||||
.sigma(25.0 / 3.0)
|
||||
.beta(25.0 / 6.0)
|
||||
.gamma(25.0 / 300.0)
|
||||
.time(false)
|
||||
.build();
|
||||
|
||||
let (_step, _i) = h.convergence(ITERATIONS, EPSILON, false);
|
||||
h.add_events(composition, results, vec![], vec![], HashMap::new());
|
||||
|
||||
h.convergence(ITERATIONS, EPSILON, false);
|
||||
|
||||
assert_eq!(h.batches[2].skills["b"].elapsed, 1);
|
||||
assert_eq!(h.batches[2].skills["c"].elapsed, 1);
|
||||
@@ -819,19 +834,15 @@ mod tests {
|
||||
];
|
||||
let results = vec![vec![1.0, 0.0], vec![0.0, 1.0], vec![1.0, 0.0]];
|
||||
|
||||
let mut h = History::new(
|
||||
composition,
|
||||
results,
|
||||
vec![],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
0.0,
|
||||
6.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
false,
|
||||
);
|
||||
let mut h = History::builder()
|
||||
.mu(0.0)
|
||||
.sigma(6.0)
|
||||
.beta(1.0)
|
||||
.gamma(0.0)
|
||||
.time(false)
|
||||
.build();
|
||||
|
||||
h.add_events(composition, results, vec![], vec![], HashMap::new());
|
||||
|
||||
let trueskill_log_evidence = h.log_evidence(false, &vec![]);
|
||||
let trueskill_log_evidence_online = h.log_evidence(true, &vec![]);
|
||||
@@ -904,21 +915,23 @@ mod tests {
|
||||
];
|
||||
let results = vec![vec![1.0, 0.0], vec![0.0, 1.0], vec![1.0, 0.0]];
|
||||
|
||||
let mut h = History::new(
|
||||
let mut h = History::builder()
|
||||
.mu(0.0)
|
||||
.sigma(2.0)
|
||||
.beta(1.0)
|
||||
.gamma(0.0)
|
||||
.time(false)
|
||||
.build();
|
||||
|
||||
h.add_events(
|
||||
composition.clone(),
|
||||
results.clone(),
|
||||
vec![],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
0.0,
|
||||
2.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
false,
|
||||
);
|
||||
|
||||
let (_step, _i) = h.convergence(ITERATIONS, EPSILON, false);
|
||||
h.convergence(ITERATIONS, EPSILON, false);
|
||||
|
||||
assert_eq!(h.batches[2].skills["b"].elapsed, 1);
|
||||
assert_eq!(h.batches[2].skills["c"].elapsed, 1);
|
||||
@@ -984,20 +997,6 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_only_add_events() {
|
||||
let mut h = History::new(
|
||||
vec![],
|
||||
vec![],
|
||||
vec![],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
0.0,
|
||||
2.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
false,
|
||||
);
|
||||
|
||||
let composition = vec![
|
||||
vec![vec!["a"], vec!["b"]],
|
||||
vec![vec!["a"], vec!["c"]],
|
||||
@@ -1005,6 +1004,14 @@ mod tests {
|
||||
];
|
||||
let results = vec![vec![1.0, 0.0], vec![0.0, 1.0], vec![1.0, 0.0]];
|
||||
|
||||
let mut h = History::builder()
|
||||
.mu(0.0)
|
||||
.sigma(2.0)
|
||||
.beta(1.0)
|
||||
.gamma(0.0)
|
||||
.time(false)
|
||||
.build();
|
||||
|
||||
h.add_events(
|
||||
composition.clone(),
|
||||
results.clone(),
|
||||
@@ -1013,7 +1020,7 @@ mod tests {
|
||||
HashMap::new(),
|
||||
);
|
||||
|
||||
let (_step, _i) = h.convergence(ITERATIONS, EPSILON, false);
|
||||
h.convergence(ITERATIONS, EPSILON, false);
|
||||
|
||||
assert_eq!(h.batches[2].skills["b"].elapsed, 1);
|
||||
assert_eq!(h.batches[2].skills["c"].elapsed, 1);
|
||||
@@ -1081,19 +1088,9 @@ mod tests {
|
||||
fn test_log_evidence() {
|
||||
let composition = vec![vec![vec!["a"], vec!["b"]], vec![vec!["b"], vec!["a"]]];
|
||||
|
||||
let mut h = History::new(
|
||||
composition.clone(),
|
||||
vec![],
|
||||
vec![],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
MU,
|
||||
SIGMA,
|
||||
BETA,
|
||||
GAMMA,
|
||||
P_DRAW,
|
||||
false,
|
||||
);
|
||||
let mut h = History::builder().time(false).build();
|
||||
|
||||
h.add_events(composition.clone(), vec![], vec![], vec![], HashMap::new());
|
||||
|
||||
let p_d_m_2 = h.log_evidence(false, &vec![]).exp() * 2.0;
|
||||
|
||||
@@ -1130,19 +1127,9 @@ mod tests {
|
||||
epsilon = 0.00001
|
||||
);
|
||||
|
||||
let mut h = History::new(
|
||||
composition,
|
||||
vec![],
|
||||
vec![],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
MU,
|
||||
SIGMA,
|
||||
BETA,
|
||||
GAMMA,
|
||||
P_DRAW,
|
||||
true,
|
||||
);
|
||||
let mut h = History::builder().time(false).build();
|
||||
|
||||
h.add_events(composition, vec![], vec![], vec![], HashMap::new());
|
||||
|
||||
assert_ulps_eq!(
|
||||
((0.5f64 * 0.1765).ln() / 2.0).exp(),
|
||||
@@ -1160,18 +1147,19 @@ mod tests {
|
||||
];
|
||||
let results = vec![vec![1.0, 0.0], vec![0.0, 1.0], vec![1.0, 0.0]];
|
||||
|
||||
let mut h = History::new(
|
||||
let mut h = History::builder()
|
||||
.mu(0.0)
|
||||
.sigma(2.0)
|
||||
.beta(1.0)
|
||||
.gamma(0.0)
|
||||
.build();
|
||||
|
||||
h.add_events(
|
||||
composition.clone(),
|
||||
results.clone(),
|
||||
vec![0, 10, 20],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
0.0,
|
||||
2.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
false,
|
||||
);
|
||||
|
||||
h.convergence(ITERATIONS, EPSILON, false);
|
||||
@@ -1259,18 +1247,19 @@ mod tests {
|
||||
vec![vec!["b"], vec!["c"]],
|
||||
];
|
||||
|
||||
let mut h = History::new(
|
||||
let mut h = History::builder()
|
||||
.mu(0.0)
|
||||
.sigma(2.0)
|
||||
.beta(1.0)
|
||||
.gamma(0.0)
|
||||
.build();
|
||||
|
||||
h.add_events(
|
||||
composition.clone(),
|
||||
vec![],
|
||||
vec![0, 10, 20],
|
||||
vec![],
|
||||
HashMap::new(),
|
||||
0.0,
|
||||
2.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
false,
|
||||
);
|
||||
|
||||
h.convergence(ITERATIONS, EPSILON, false);
|
||||
@@ -1350,19 +1339,15 @@ mod tests {
|
||||
let composition = vec![vec![vec!["a"], vec!["b"]], vec![vec!["b"], vec!["a"]]];
|
||||
let weights = vec![vec![vec![5.0], vec![4.0]], vec![vec![5.0], vec![4.0]]];
|
||||
|
||||
let mut h = History::new(
|
||||
composition.clone(),
|
||||
vec![],
|
||||
vec![],
|
||||
weights,
|
||||
HashMap::new(),
|
||||
2.0,
|
||||
6.0,
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
false,
|
||||
);
|
||||
let mut h = History::builder()
|
||||
.mu(2.0)
|
||||
.sigma(6.0)
|
||||
.beta(1.0)
|
||||
.gamma(0.0)
|
||||
.time(false)
|
||||
.build();
|
||||
|
||||
h.add_events(composition.clone(), vec![], vec![], weights, HashMap::new());
|
||||
|
||||
let lc = h.learning_curves();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user