Fix clippy warning

This commit is contained in:
2022-12-16 15:51:58 +01:00
parent 6dd84f7fd2
commit 51467f7b69
2 changed files with 39 additions and 40 deletions

View File

@@ -14,7 +14,7 @@ pub(crate) struct Skill {
}
impl Skill {
fn posterior(&self) -> Gaussian {
pub(crate) fn posterior(&self) -> Gaussian {
self.likelihood * self.backward * self.forward
}
}
@@ -251,6 +251,7 @@ impl Batch {
self.iteration(from, agents);
}
// TODO(anders): Use Item::posterior() instead.
pub fn posterior(&self, agent: Index) -> Gaussian {
let skill = &self.skills[&agent];
@@ -259,8 +260,8 @@ impl Batch {
pub(crate) fn posteriors(&self) -> HashMap<Index, Gaussian> {
self.skills
.keys()
.map(|&idx| (idx, self.posterior(idx)))
.iter()
.map(|(&idx, skill)| (idx, skill.posterior()))
.collect::<HashMap<_, _>>()
}
@@ -388,42 +389,40 @@ impl Batch {
} else {
self.events.iter().map(|event| event.evidence.ln()).sum()
}
} else if online || forward {
self.events
.iter()
.enumerate()
.filter(|(_, event)| {
event
.teams
.iter()
.flat_map(|team| &team.items)
.any(|item| targets.contains(&item.agent))
})
.map(|(e, event)| {
Game::new(
self.within_priors(e, online, forward, agents),
event.outputs(),
event.weights.clone(),
self.p_draw,
)
.evidence
.ln()
})
.sum()
} else {
if online || forward {
self.events
.iter()
.enumerate()
.filter(|(_, event)| {
event
.teams
.iter()
.flat_map(|team| &team.items)
.any(|item| targets.contains(&item.agent))
})
.map(|(e, event)| {
Game::new(
self.within_priors(e, online, forward, agents),
event.outputs(),
event.weights.clone(),
self.p_draw,
)
.evidence
.ln()
})
.sum()
} else {
self.events
.iter()
.filter(|event| {
event
.teams
.iter()
.flat_map(|team| &team.items)
.any(|item| targets.contains(&item.agent))
})
.map(|event| event.evidence.ln())
.sum()
}
self.events
.iter()
.filter(|event| {
event
.teams
.iter()
.flat_map(|team| &team.items)
.any(|item| targets.contains(&item.agent))
})
.map(|event| event.evidence.ln())
.sum()
}
}

View File

@@ -210,8 +210,8 @@ impl History {
let mut data: HashMap<Index, Vec<(i64, Gaussian)>> = HashMap::new();
for b in &self.batches {
for agent in b.skills.keys() {
let point = (b.time, b.posterior(*agent));
for (agent, skill) in b.skills.iter() {
let point = (b.time, skill.posterior());
if let Some(entry) = data.get_mut(agent) {
entry.push(point);