diff --git a/src/batch.rs b/src/batch.rs index 6e9313d..bc741e0 100644 --- a/src/batch.rs +++ b/src/batch.rs @@ -110,7 +110,7 @@ pub struct Batch { impl Batch { pub fn new( - compositions: Vec>>, + composition: Vec>>, results: Vec>, weights: Vec>>, time: i64, @@ -118,15 +118,15 @@ impl Batch { agents: &HashMap, ) -> Self { assert!( - results.is_empty() || results.len() == compositions.len(), + results.is_empty() || results.len() == composition.len(), "TODO: Add a comment here" ); assert!( - weights.is_empty() || weights.len() == compositions.len(), + weights.is_empty() || weights.len() == composition.len(), "TODO: Add a comment here" ); - let this_agent = compositions + let this_agent = composition .iter() .flatten() .flatten() @@ -148,13 +148,13 @@ impl Batch { }) .collect::>(); - let events = compositions + let events = composition .iter() - .enumerate() // (0..composition.len()) - .map(|(e, composition)| { - let teams = composition + .enumerate() + .map(|(e, event)| { + let teams = event .iter() - .enumerate() // (0..composition.len()) + .enumerate() .map(|(t, team)| { let items = team .iter() @@ -167,7 +167,7 @@ impl Batch { Team { items, output: if results.is_empty() { - (composition.len() - (t + 1)) as f64 + (event.len() - (t + 1)) as f64 } else { results[e][t] }, @@ -231,14 +231,15 @@ impl Batch { } } - let from = self.events.len(); - - for e in 0..composition.len() { - let teams = (0..composition[e].len()) - .map(|t| { - let items = (0..composition[e][t].len()) - .map(|a| Item { - agent: composition[e][t][a], + let events = composition.iter().enumerate().map(|(e, event)| { + let teams = event + .iter() + .enumerate() + .map(|(t, team)| { + let items = team + .iter() + .map(|&agent| Item { + agent, likelihood: N_INF, }) .collect::>(); @@ -246,7 +247,7 @@ impl Batch { Team { items, output: if results.is_empty() { - (composition[e].len() - (t + 1)) as f64 + (event.len() - (t + 1)) as f64 } else { results[e][t] }, @@ -254,7 +255,7 @@ impl Batch { }) .collect::>(); - let event = Event { + Event { teams, evidence: 0.0, weights: if weights.is_empty() { @@ -262,10 +263,12 @@ impl Batch { } else { weights[e].clone() }, - }; + } + }); - self.events.push(event); - } + let from = self.events.len(); + + self.events.extend(events); self.iteration(from, agents); } @@ -615,7 +618,7 @@ mod tests { ], vec![vec![1.0, 0.0], vec![0.0, 1.0], vec![1.0, 0.0]], vec![], - &mut agents, + &agents, ); assert_eq!(batch.events.len(), 6);