More things, better things, awesome

This commit is contained in:
2022-06-18 23:39:42 +02:00
parent dc10504b80
commit c9d9d59535
7 changed files with 214 additions and 4 deletions

View File

@@ -24,16 +24,19 @@ impl Default for Skill {
}
}
#[derive(Debug)]
struct Item {
agent: String,
likelihood: Gaussian,
}
#[derive(Debug)]
struct Team {
items: Vec<Item>,
output: f64,
}
#[derive(Debug)]
struct Event {
teams: Vec<Team>,
evidence: f64,
@@ -346,6 +349,71 @@ impl Batch {
self.iteration(0, agents);
}
pub(crate) fn log_evidence2(
&self,
online: bool,
agents2: &Vec<&str>,
forward: bool,
agents: &mut HashMap<String, Agent>,
) -> f64 {
if agents2.is_empty() {
if online || forward {
self.events
.iter()
.enumerate()
.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().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| agents2.contains(&item.agent.as_str()))
})
.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| agents2.contains(&item.agent.as_str()))
})
.map(|event| event.evidence.ln())
.sum()
}
}
}
}
fn compute_elapsed(last_time: u64, actual_time: u64) -> u64 {