More things, better things, awesome
This commit is contained in:
68
src/batch.rs
68
src/batch.rs
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user