pub struct BenchmarkRunner { /* private fields */ }Expand description
Executes the same generated instance through registered adapters.
Implementations§
Source§impl BenchmarkRunner
impl BenchmarkRunner
Sourcepub const fn new() -> BenchmarkRunner
pub const fn new() -> BenchmarkRunner
Creates an empty runner.
Examples found in repository?
examples/synthetic.rs (line 34)
9fn main() -> Result<(), Box<dyn Error>> {
10 let mut config = SyntheticConfig::default();
11 let mut settings = SolverSettings::default();
12 let arguments: Vec<String> = env::args().skip(1).collect();
13 let mut index = 0;
14 while index < arguments.len() {
15 let flag = &arguments[index];
16 let value = arguments
17 .get(index + 1)
18 .ok_or_else(|| format!("missing value after {flag}"))?;
19 match flag.as_str() {
20 "--n" => config.assets = value.parse()?,
21 "--k" => config.factors = value.parse()?,
22 "--seed" => config.seed = value.parse()?,
23 "--inequalities" => config.inequalities = value.parse()?,
24 "--alpha" => settings.over_relaxation = value.parse()?,
25 "--polish" => settings.polish = value.parse()?,
26 _ => return Err(format!("unknown argument: {flag}").into()),
27 }
28 index += 2;
29 }
30 config.max_weight = (10.0 / config.assets as f64).min(1.0);
31
32 let instance = generate_synthetic(config)?;
33 let warm_start = WarmStart::from_primal(instance.feasible_reference.clone());
34 let mut runner = BenchmarkRunner::new();
35 runner.add_solver(Box::new(Solver::new(settings)));
36
37 println!("{}", BenchmarkRunner::markdown_header());
38 for record in runner.run(&instance.name, &instance.problem, Some(&warm_start)) {
39 match record {
40 Ok(record) => println!("{}", record.markdown_row()),
41 Err(error) => eprintln!("{error}"),
42 }
43 }
44 Ok(())
45}Sourcepub fn add_solver(&mut self, solver: Box<dyn ComparisonSolver>)
pub fn add_solver(&mut self, solver: Box<dyn ComparisonSolver>)
Registers a solver adapter.
Examples found in repository?
examples/synthetic.rs (line 35)
9fn main() -> Result<(), Box<dyn Error>> {
10 let mut config = SyntheticConfig::default();
11 let mut settings = SolverSettings::default();
12 let arguments: Vec<String> = env::args().skip(1).collect();
13 let mut index = 0;
14 while index < arguments.len() {
15 let flag = &arguments[index];
16 let value = arguments
17 .get(index + 1)
18 .ok_or_else(|| format!("missing value after {flag}"))?;
19 match flag.as_str() {
20 "--n" => config.assets = value.parse()?,
21 "--k" => config.factors = value.parse()?,
22 "--seed" => config.seed = value.parse()?,
23 "--inequalities" => config.inequalities = value.parse()?,
24 "--alpha" => settings.over_relaxation = value.parse()?,
25 "--polish" => settings.polish = value.parse()?,
26 _ => return Err(format!("unknown argument: {flag}").into()),
27 }
28 index += 2;
29 }
30 config.max_weight = (10.0 / config.assets as f64).min(1.0);
31
32 let instance = generate_synthetic(config)?;
33 let warm_start = WarmStart::from_primal(instance.feasible_reference.clone());
34 let mut runner = BenchmarkRunner::new();
35 runner.add_solver(Box::new(Solver::new(settings)));
36
37 println!("{}", BenchmarkRunner::markdown_header());
38 for record in runner.run(&instance.name, &instance.problem, Some(&warm_start)) {
39 match record {
40 Ok(record) => println!("{}", record.markdown_row()),
41 Err(error) => eprintln!("{error}"),
42 }
43 }
44 Ok(())
45}Sourcepub fn run(
&mut self,
instance_name: &str,
problem: &QpProblem,
warm_start: Option<&WarmStart>,
) -> Vec<Result<BenchmarkRecord, String>>
pub fn run( &mut self, instance_name: &str, problem: &QpProblem, warm_start: Option<&WarmStart>, ) -> Vec<Result<BenchmarkRecord, String>>
Runs all adapters and returns records or labeled failures.
Examples found in repository?
examples/synthetic.rs (line 38)
9fn main() -> Result<(), Box<dyn Error>> {
10 let mut config = SyntheticConfig::default();
11 let mut settings = SolverSettings::default();
12 let arguments: Vec<String> = env::args().skip(1).collect();
13 let mut index = 0;
14 while index < arguments.len() {
15 let flag = &arguments[index];
16 let value = arguments
17 .get(index + 1)
18 .ok_or_else(|| format!("missing value after {flag}"))?;
19 match flag.as_str() {
20 "--n" => config.assets = value.parse()?,
21 "--k" => config.factors = value.parse()?,
22 "--seed" => config.seed = value.parse()?,
23 "--inequalities" => config.inequalities = value.parse()?,
24 "--alpha" => settings.over_relaxation = value.parse()?,
25 "--polish" => settings.polish = value.parse()?,
26 _ => return Err(format!("unknown argument: {flag}").into()),
27 }
28 index += 2;
29 }
30 config.max_weight = (10.0 / config.assets as f64).min(1.0);
31
32 let instance = generate_synthetic(config)?;
33 let warm_start = WarmStart::from_primal(instance.feasible_reference.clone());
34 let mut runner = BenchmarkRunner::new();
35 runner.add_solver(Box::new(Solver::new(settings)));
36
37 println!("{}", BenchmarkRunner::markdown_header());
38 for record in runner.run(&instance.name, &instance.problem, Some(&warm_start)) {
39 match record {
40 Ok(record) => println!("{}", record.markdown_row()),
41 Err(error) => eprintln!("{error}"),
42 }
43 }
44 Ok(())
45}Sourcepub const fn markdown_header() -> &'static str
pub const fn markdown_header() -> &'static str
Markdown header matching BenchmarkRecord::markdown_row.
Examples found in repository?
examples/synthetic.rs (line 37)
9fn main() -> Result<(), Box<dyn Error>> {
10 let mut config = SyntheticConfig::default();
11 let mut settings = SolverSettings::default();
12 let arguments: Vec<String> = env::args().skip(1).collect();
13 let mut index = 0;
14 while index < arguments.len() {
15 let flag = &arguments[index];
16 let value = arguments
17 .get(index + 1)
18 .ok_or_else(|| format!("missing value after {flag}"))?;
19 match flag.as_str() {
20 "--n" => config.assets = value.parse()?,
21 "--k" => config.factors = value.parse()?,
22 "--seed" => config.seed = value.parse()?,
23 "--inequalities" => config.inequalities = value.parse()?,
24 "--alpha" => settings.over_relaxation = value.parse()?,
25 "--polish" => settings.polish = value.parse()?,
26 _ => return Err(format!("unknown argument: {flag}").into()),
27 }
28 index += 2;
29 }
30 config.max_weight = (10.0 / config.assets as f64).min(1.0);
31
32 let instance = generate_synthetic(config)?;
33 let warm_start = WarmStart::from_primal(instance.feasible_reference.clone());
34 let mut runner = BenchmarkRunner::new();
35 runner.add_solver(Box::new(Solver::new(settings)));
36
37 println!("{}", BenchmarkRunner::markdown_header());
38 for record in runner.run(&instance.name, &instance.problem, Some(&warm_start)) {
39 match record {
40 Ok(record) => println!("{}", record.markdown_row()),
41 Err(error) => eprintln!("{error}"),
42 }
43 }
44 Ok(())
45}Trait Implementations§
Source§impl Default for BenchmarkRunner
impl Default for BenchmarkRunner
Source§fn default() -> BenchmarkRunner
fn default() -> BenchmarkRunner
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for BenchmarkRunner
impl !Send for BenchmarkRunner
impl !Sync for BenchmarkRunner
impl !UnwindSafe for BenchmarkRunner
impl Freeze for BenchmarkRunner
impl Unpin for BenchmarkRunner
impl UnsafeUnpin for BenchmarkRunner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more