Skip to main content

Module biteopt

Module biteopt 

Source
Expand description

BiteOpt, Aleksey Vaneev’s adaptive derivative-free optimizer.

The implementation includes the LCG-hash BiteRnd, 58-bit integer-mantissa parameters, adaptive sparse selectors, dynamic and diverging populations, all primary generators, CSpherOpt, sequential Nelder-Mead, deep multi-population solution exchange, and delayed-feedback batch ask/tell.

§Reference

A. Vaneev, BiteOpt algorithm description and reference implementation.

§Example

use fcmaes_core::{optimize_bite, BiteParams};

let sphere = |x: &[f64]| x.iter().map(|v| v * v).sum::<f64>();
let params = BiteParams {
    max_evaluations: 2_000,
    seed: 42,
    ..Default::default()
};
let result = optimize_bite(&sphere, &[-5.0; 3], &[5.0; 3], None, &params, 1);
assert!(result.y.is_finite());

Structs§

BiteOpt
Stateful single-population BiteOpt optimizer.
BiteParams
Tunable inputs for optimize_bite.
BiteResult
Outcome of a BiteOpt run.
BiteRnd
Deterministic random generator used by BiteOpt’s reference algorithm.
DeepBiteOpt
M BiteOpt instances with solution “pushing” between them. M == 1 is a plain single-population BiteOpt.

Functions§

optimize_bite
Run BiteOpt on a bounded problem. m is the “deep” depth (number of populations); m <= 1 is a plain single-population run.
validate_bite_inputs
Validate the dimensions and numeric domain required by BiteOpt.