Update test to use builder

This commit is contained in:
2022-06-23 07:44:34 +02:00
parent 73b9cabac8
commit ba2f8cffdc

View File

@@ -116,6 +116,25 @@ pub struct History {
iterations: usize, 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 { impl History {
pub fn builder() -> HistoryBuilder { pub fn builder() -> HistoryBuilder {
HistoryBuilder::default() 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); h.add_events(composition, results, vec![1, 2, 3], vec![], priors);
@@ -649,7 +668,7 @@ mod tests {
priors.insert(k.to_string(), player); 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); h1.add_events(composition, results, times, vec![], priors);
@@ -740,7 +759,7 @@ mod tests {
priors.insert(k.to_string(), player); 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.add_events(composition, results, times, vec![], priors);
h.convergence(ITERATIONS, EPSILON, false); 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 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()
composition, .mu(25.0)
results, .sigma(25.0 / 3.0)
vec![], .beta(25.0 / 6.0)
vec![], .gamma(25.0 / 300.0)
HashMap::new(), .time(false)
25.0, .build();
25.0 / 3.0,
25.0 / 6.0,
25.0 / 300.0,
0.0,
false,
);
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["b"].elapsed, 1);
assert_eq!(h.batches[2].skills["c"].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 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()
composition, .mu(0.0)
results, .sigma(6.0)
vec![], .beta(1.0)
vec![], .gamma(0.0)
HashMap::new(), .time(false)
0.0, .build();
6.0,
1.0, h.add_events(composition, results, vec![], vec![], HashMap::new());
0.0,
0.0,
false,
);
let trueskill_log_evidence = h.log_evidence(false, &vec![]); let trueskill_log_evidence = h.log_evidence(false, &vec![]);
let trueskill_log_evidence_online = h.log_evidence(true, &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 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(), composition.clone(),
results.clone(), results.clone(),
vec![], vec![],
vec![], vec![],
HashMap::new(), 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["b"].elapsed, 1);
assert_eq!(h.batches[2].skills["c"].elapsed, 1); assert_eq!(h.batches[2].skills["c"].elapsed, 1);
@@ -984,20 +997,6 @@ mod tests {
#[test] #[test]
fn test_only_add_events() { 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![ let composition = vec![
vec![vec!["a"], vec!["b"]], vec![vec!["a"], vec!["b"]],
vec![vec!["a"], vec!["c"]], 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 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( h.add_events(
composition.clone(), composition.clone(),
results.clone(), results.clone(),
@@ -1013,7 +1020,7 @@ mod tests {
HashMap::new(), 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["b"].elapsed, 1);
assert_eq!(h.batches[2].skills["c"].elapsed, 1); assert_eq!(h.batches[2].skills["c"].elapsed, 1);
@@ -1081,19 +1088,9 @@ mod tests {
fn test_log_evidence() { fn test_log_evidence() {
let composition = vec![vec![vec!["a"], vec!["b"]], vec![vec!["b"], vec!["a"]]]; let composition = vec![vec![vec!["a"], vec!["b"]], vec![vec!["b"], vec!["a"]]];
let mut h = History::new( let mut h = History::builder().time(false).build();
composition.clone(),
vec![], h.add_events(composition.clone(), vec![], vec![], vec![], HashMap::new());
vec![],
vec![],
HashMap::new(),
MU,
SIGMA,
BETA,
GAMMA,
P_DRAW,
false,
);
let p_d_m_2 = h.log_evidence(false, &vec![]).exp() * 2.0; let p_d_m_2 = h.log_evidence(false, &vec![]).exp() * 2.0;
@@ -1130,19 +1127,9 @@ mod tests {
epsilon = 0.00001 epsilon = 0.00001
); );
let mut h = History::new( let mut h = History::builder().time(false).build();
composition,
vec![], h.add_events(composition, vec![], vec![], vec![], HashMap::new());
vec![],
vec![],
HashMap::new(),
MU,
SIGMA,
BETA,
GAMMA,
P_DRAW,
true,
);
assert_ulps_eq!( assert_ulps_eq!(
((0.5f64 * 0.1765).ln() / 2.0).exp(), ((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 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(), composition.clone(),
results.clone(), results.clone(),
vec![0, 10, 20], vec![0, 10, 20],
vec![], vec![],
HashMap::new(), HashMap::new(),
0.0,
2.0,
1.0,
0.0,
0.0,
false,
); );
h.convergence(ITERATIONS, EPSILON, false); h.convergence(ITERATIONS, EPSILON, false);
@@ -1259,18 +1247,19 @@ mod tests {
vec![vec!["b"], vec!["c"]], 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(), composition.clone(),
vec![], vec![],
vec![0, 10, 20], vec![0, 10, 20],
vec![], vec![],
HashMap::new(), HashMap::new(),
0.0,
2.0,
1.0,
0.0,
0.0,
false,
); );
h.convergence(ITERATIONS, EPSILON, 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 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 weights = vec![vec![vec![5.0], vec![4.0]], vec![vec![5.0], vec![4.0]]];
let mut h = History::new( let mut h = History::builder()
composition.clone(), .mu(2.0)
vec![], .sigma(6.0)
vec![], .beta(1.0)
weights, .gamma(0.0)
HashMap::new(), .time(false)
2.0, .build();
6.0,
1.0, h.add_events(composition.clone(), vec![], vec![], weights, HashMap::new());
0.0,
0.0,
false,
);
let lc = h.learning_curves(); let lc = h.learning_curves();