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, } 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); } }