simplify Model::run
This commit is contained in:
parent
735a820799
commit
b7f44d9ac0
26
src/model.rs
26
src/model.rs
@ -96,8 +96,6 @@ impl Model {
|
|||||||
// Simulates `steps` # of steps
|
// Simulates `steps` # of steps
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn run(&mut self, steps: usize) {
|
pub fn run(&mut self, steps: usize) {
|
||||||
let debug: bool = false;
|
|
||||||
|
|
||||||
let pb = ProgressBar::new(steps as u64);
|
let pb = ProgressBar::new(steps as u64);
|
||||||
pb.set_style(
|
pb.set_style(
|
||||||
ProgressStyle::default_bar()
|
ProgressStyle::default_bar()
|
||||||
@ -111,21 +109,15 @@ impl Model {
|
|||||||
let mut time_per_step_list: Vec<f64> = Vec::new();
|
let mut time_per_step_list: Vec<f64> = Vec::new();
|
||||||
|
|
||||||
let agents_num: usize = self.grids.iter().map(|grid| grid.agents.len()).sum();
|
let agents_num: usize = self.grids.iter().map(|grid| grid.agents.len()).sum();
|
||||||
for i in 0..steps {
|
(0..steps).for_each(|_| {
|
||||||
if debug {
|
|
||||||
println!("Starting tick for all agents...")
|
|
||||||
};
|
|
||||||
|
|
||||||
// Combine grids
|
// Combine grids
|
||||||
let grids = &mut self.grids;
|
combine(&mut self.grids, &self.attraction_table);
|
||||||
combine(grids, &self.attraction_table);
|
|
||||||
let agents_tick_time = Instant::now();
|
let agents_tick_time = Instant::now();
|
||||||
|
|
||||||
// Tick agents
|
// Tick agents
|
||||||
let diffusivity = self.diffusivity;
|
|
||||||
self.grids.par_iter_mut().for_each(|grid| {
|
self.grids.par_iter_mut().for_each(|grid| {
|
||||||
grid.tick();
|
grid.tick();
|
||||||
grid.diffuse(diffusivity); // Diffuse + Decay
|
grid.diffuse(self.diffusivity); // Diffuse + Decay
|
||||||
});
|
});
|
||||||
|
|
||||||
self.save_image_data();
|
self.save_image_data();
|
||||||
@ -135,22 +127,16 @@ impl Model {
|
|||||||
time_per_agent_list.push(ms_per_agent);
|
time_per_agent_list.push(ms_per_agent);
|
||||||
time_per_step_list.push(agents_tick_elapsed);
|
time_per_step_list.push(agents_tick_elapsed);
|
||||||
|
|
||||||
if debug {
|
|
||||||
println!(
|
|
||||||
"Finished tick for all agents. took {}ms\nTime per agent: {}ms\n",
|
|
||||||
agents_tick_elapsed, ms_per_agent
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
self.iteration += 1;
|
self.iteration += 1;
|
||||||
pb.set_position(i as u64);
|
pb.inc(1);
|
||||||
}
|
});
|
||||||
pb.finish();
|
pb.finish();
|
||||||
|
|
||||||
let avg_per_step: f64 =
|
let avg_per_step: f64 =
|
||||||
time_per_step_list.iter().sum::<f64>() / time_per_step_list.len() as f64;
|
time_per_step_list.iter().sum::<f64>() / time_per_step_list.len() as f64;
|
||||||
let avg_per_agent: f64 =
|
let avg_per_agent: f64 =
|
||||||
time_per_agent_list.iter().sum::<f64>() / time_per_agent_list.len() as f64;
|
time_per_agent_list.iter().sum::<f64>() / time_per_agent_list.len() as f64;
|
||||||
|
|
||||||
println!(
|
println!(
|
||||||
"Average time per step: {}ms\nAverage time per agent: {}ms",
|
"Average time per step: {}ms\nAverage time per agent: {}ms",
|
||||||
avg_per_step, avg_per_agent
|
avg_per_step, avg_per_agent
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user