use heuropt::prelude::*;
struct Sphere2D;
impl Problem for Sphere2D {
type Decision = Vec<f64>;
fn objectives(&self) -> ObjectiveSpace {
ObjectiveSpace::new(vec![Objective::minimize("f")])
}
fn evaluate(&self, x: &Vec<f64>) -> Evaluation {
Evaluation::new(vec![x.iter().map(|v| v * v).sum()])
}
}
fn main() {
let initializer = RealBounds::new(vec![(-5.0, 5.0), (-5.0, 5.0)]);
let config = RandomSearchConfig {
iterations: 500,
batch_size: 1,
seed: 7,
};
let mut optimizer = RandomSearch::new(config, initializer);
let result = optimizer.run(&Sphere2D);
let best = result.best.expect("single-objective always has a best");
println!("Total evaluations: {}", result.evaluations);
println!("Best decision: {:?}", best.decision);
println!("Best f: {:.6}", best.evaluation.objectives[0]);
}