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

View File

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