More things, more tests

This commit is contained in:
2022-06-20 23:56:35 +02:00
parent 0efb0312da
commit 0a35645091
4 changed files with 195 additions and 4 deletions

View File

@@ -10,7 +10,7 @@ use crate::{
pub struct History {
size: usize,
batches: Vec<Batch>,
pub batches: Vec<Batch>,
agents: HashMap<String, Agent>,
time: bool,
mu: f64,
@@ -445,7 +445,7 @@ impl History {
while self.time && self.batches.len() > k {
let b = &mut self.batches[k];
b.new_backward_info(&mut self.agents);
b.new_forward_info(&mut self.agents);
let intersect = this_agent
.iter()
@@ -1029,5 +1029,98 @@ mod tests {
h.batches[0].posterior("b"),
epsilon = 0.000001
);
// ---------------------------------------
let composition = vec![
vec![vec!["a"], vec!["b"]],
vec![vec!["c"], vec!["a"]],
vec![vec!["b"], vec!["c"]],
];
let mut h = History::new(
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);
h.add_events(composition, vec![], vec![15, 10, 0], vec![], HashMap::new());
assert_eq!(h.batches.len(), 4);
assert_eq!(
h.batches
.iter()
.map(|batch| batch.events.len())
.collect::<Vec<_>>(),
vec![2, 2, 1, 1]
);
assert_eq!(
h.batches
.iter()
.map(|b| b.get_composition())
.collect::<Vec<_>>(),
vec![
vec![vec![vec!["a"], vec!["b"]], vec![vec!["b"], vec!["c"]]],
vec![vec![vec!["c"], vec!["a"]], vec![vec!["c"], vec!["a"]]],
vec![vec![vec!["a"], vec!["b"]]],
vec![vec![vec!["b"], vec!["c"]]]
]
);
assert_eq!(
h.batches
.iter()
.map(|b| b.get_results())
.collect::<Vec<_>>(),
vec![
vec![vec![1.0, 0.0], vec![1.0, 0.0]],
vec![vec![1.0, 0.0], vec![1.0, 0.0]],
vec![vec![1.0, 0.0]],
vec![vec![1.0, 0.0]]
]
);
let end = h.batches.len() - 1;
assert_eq!(h.batches[0].skills["c"].elapsed, 0);
assert_eq!(h.batches[end].skills["c"].elapsed, 10);
assert_eq!(h.batches[0].skills["a"].elapsed, 0);
assert_eq!(h.batches[2].skills["a"].elapsed, 5);
assert_eq!(h.batches[0].skills["b"].elapsed, 0);
assert_eq!(h.batches[end].skills["b"].elapsed, 5);
h.convergence(ITERATIONS, EPSILON, false);
assert_ulps_eq!(
h.batches[0].posterior("b"),
h.batches[end].posterior("b"),
epsilon = 0.000001
);
assert_ulps_eq!(
h.batches[0].posterior("c"),
h.batches[end].posterior("c"),
epsilon = 0.000001
);
assert_ulps_eq!(
h.batches[0].posterior("c"),
h.batches[0].posterior("b"),
epsilon = 0.000001
);
}
}