Refactor history
This commit is contained in:
@@ -267,7 +267,7 @@ impl History {
|
||||
"(length(weights) > 0) & (length(composition) != length(weights))"
|
||||
);
|
||||
|
||||
let mut unique = Vec::with_capacity(10);
|
||||
let mut unique = Vec::with_capacity(100);
|
||||
|
||||
let this_agent = composition
|
||||
.iter()
|
||||
@@ -331,20 +331,16 @@ impl History {
|
||||
b.new_forward_info(&self.agents);
|
||||
}
|
||||
|
||||
let intersect = this_agent
|
||||
.iter()
|
||||
.filter(|&agent| b.skills.contains_key(agent))
|
||||
.cloned()
|
||||
.collect::<Vec<_>>();
|
||||
for agent in &this_agent {
|
||||
if let Some(skill) = b.skills.get_mut(agent) {
|
||||
skill.elapsed =
|
||||
batch::compute_elapsed(self.agents[agent].last_time, b.time);
|
||||
|
||||
for agent in &intersect {
|
||||
b.skills.get_mut(agent).unwrap().elapsed =
|
||||
batch::compute_elapsed(self.agents[agent].last_time, b.time);
|
||||
let a = self.agents.get_mut(agent).unwrap();
|
||||
|
||||
let a = self.agents.get_mut(agent).unwrap();
|
||||
|
||||
a.last_time = if self.time { b.time } else { i64::MAX };
|
||||
a.message = b.forward_prior_out(agent);
|
||||
a.last_time = if self.time { b.time } else { i64::MAX };
|
||||
a.message = b.forward_prior_out(agent);
|
||||
}
|
||||
}
|
||||
|
||||
k += 1;
|
||||
@@ -353,6 +349,7 @@ impl History {
|
||||
let composition = (i..j)
|
||||
.map(|e| composition[o[e]].clone())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let results = if results.is_empty() {
|
||||
Vec::new()
|
||||
} else {
|
||||
@@ -366,15 +363,15 @@ impl History {
|
||||
};
|
||||
|
||||
if self.time && self.batches.len() > k && self.batches[k].time == t {
|
||||
let b = &mut self.batches[k];
|
||||
let batch = &mut self.batches[k];
|
||||
|
||||
b.add_events(composition, results, weights, &self.agents);
|
||||
batch.add_events(composition, results, weights, &self.agents);
|
||||
|
||||
for a in b.skills.keys() {
|
||||
for a in batch.skills.keys() {
|
||||
let agent = self.agents.get_mut(a).unwrap();
|
||||
|
||||
agent.last_time = if self.time { t } else { i64::MAX };
|
||||
agent.message = b.forward_prior_out(a);
|
||||
agent.message = batch.forward_prior_out(a);
|
||||
}
|
||||
} else {
|
||||
let mut batch: Batch = Batch::new(t, self.p_draw);
|
||||
@@ -402,20 +399,15 @@ impl History {
|
||||
|
||||
b.new_forward_info(&self.agents);
|
||||
|
||||
let intersect = this_agent
|
||||
.iter()
|
||||
.filter(|&agent| b.skills.contains_key(agent))
|
||||
.cloned()
|
||||
.collect::<Vec<_>>();
|
||||
for agent in &this_agent {
|
||||
if let Some(skill) = b.skills.get_mut(agent) {
|
||||
skill.elapsed = batch::compute_elapsed(self.agents[agent].last_time, b.time);
|
||||
|
||||
for agent in &intersect {
|
||||
b.skills.get_mut(agent).unwrap().elapsed =
|
||||
batch::compute_elapsed(self.agents[agent].last_time, b.time);
|
||||
let a = self.agents.get_mut(agent).unwrap();
|
||||
|
||||
let a = self.agents.get_mut(agent).unwrap();
|
||||
|
||||
a.last_time = if self.time { b.time } else { i64::MAX };
|
||||
a.message = b.forward_prior_out(agent);
|
||||
a.last_time = if self.time { b.time } else { i64::MAX };
|
||||
a.message = b.forward_prior_out(agent);
|
||||
}
|
||||
}
|
||||
|
||||
k += 1;
|
||||
|
||||
Reference in New Issue
Block a user