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, ¶ms, 1);
assert!(result.y.is_finite());Structs§
- BiteOpt
- Stateful single-population BiteOpt optimizer.
- Bite
Params - Tunable inputs for
optimize_bite. - Bite
Result - Outcome of a BiteOpt run.
- BiteRnd
- Deterministic random generator used by BiteOpt’s reference algorithm.
- Deep
Bite Opt MBiteOpt instances with solution “pushing” between them.M == 1is a plain single-population BiteOpt.
Functions§
- optimize_
bite - Run BiteOpt on a bounded problem.
mis the “deep” depth (number of populations);m <= 1is a plain single-population run. - validate_
bite_ inputs - Validate the dimensions and numeric domain required by BiteOpt.