use perty::{Duration, MontePostProcess, Pert, Task};
fn main() {
let dur_a = Duration::Uniform { min: 2., max: 4. };
let a = Task::new("A".to_string(), vec![], dur_a);
let dur_b = Duration::Uniform { min: 5., max: 9. };
let b = Task::new("B".to_string(), vec!["A".to_string()], dur_b);
let project = vec![a, b];
let mut runs = Vec::new();
for _ in 0..10 {
let run = project.solve_pert(1_000).unwrap();
runs.push(run);
}
for (i, run) in runs.iter().enumerate() {
println!("# RUN {i}");
for t in run {
println!("{}: {}", t.id, t.duration);
}
}
println!();
let mean = runs.mean_project_duration();
println!("Mean Duration: {mean}");
let task_criticalities = runs.task_criticality();
println!("{:?}", task_criticalities);
}