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