sobagen/src/main.rs

66 lines
1.4 KiB
Rust

use clap::Parser;
#[derive(Parser)]
struct Args {
/// Number of threads
#[arg(short, long, default_value_t = 2)]
nt: usize,
/// DNA strand size (increases search space)
#[arg(short, long, default_value_t = 1024)]
ds: usize,
/// Population size
#[arg(long, default_value_t = 1024)]
ps: usize,
/// Elite population max size
#[arg(short, long, default_value_t = 128)]
em: usize,
/// Maximum mutation length
#[arg(short, long, default_value_t = 32)]
mt: usize,
/// Maximum ratio for crossover reproduction
#[arg(long, default_value_t = 341)]
cr: usize,
/// Maximum generations until next iteration
#[arg(long, default_value_t = 1048576)]
gm: usize,
/// Generation iteration depth
#[arg(long, default_value_t = 1)]
gd: usize,
/// Print map for each generation
#[arg(short, default_value_t = false)]
verbose: bool,
/// Run-length encoded map
map: Option<String>,
}
fn main() {
let args = Args::parse();
if let Err(e) = bano::run(
bano::Config {
num_threads: args.nt,
dna_size: args.ds,
pop_size: args.ps,
epop_max: args.em,
mut_max: args.mt,
gen_max: args.gm,
gen_depth: args.gd,
cross_ratio: args.cr,
map_output: args.verbose,
},
args.map,
) {
eprintln!("error: {e}");
std::process::exit(1);
}
}