scirs2_optimize/multilevel/mod.rs
1//! Multi-level and multi-fidelity optimization
2//!
3//! Provides coarse-to-fine optimization strategies and variable fidelity
4//! model management for expensive function evaluations.
5//!
6//! # Overview
7//!
8//! Multi-fidelity optimization leverages cheap low-fidelity surrogates to
9//! guide expensive high-fidelity evaluations:
10//!
11//! ```text
12//! High-fidelity: f_H(x) (expensive, accurate)
13//! Low-fidelity: f_L(x) (cheap, approximate)
14//! Correction: δ(x) = f_H(x_sampled) - f_L(x_sampled)
15//! ```
16//!
17//! # Provided Algorithms
18//!
19//! - [`MultilevelOptimizer`]: Coarse-to-fine optimization strategy
20//! - [`VariableFidelity`]: Variable fidelity model manager
21//! - [`MfRbf`]: Multi-fidelity RBF surrogate with additive correction
22//! - [`TrustHierarchy`]: Hierarchical trust-region management
23//! - [`MultigridOptimizer`]: Multigrid-inspired optimization (V/W cycle)
24//!
25//! # Example
26//!
27//! ```no_run
28//! use scirs2_optimize::multilevel::{
29//! MultilevelOptimizer, MultilevelOptions, FidelityLevel,
30//! };
31//!
32//! // High-fidelity function (expensive)
33//! let high_fi = |x: &[f64]| -> f64 {
34//! (x[0] - 2.0).powi(2) + (x[1] - 3.0).powi(2)
35//! };
36//! // Low-fidelity function (cheap approximation)
37//! let low_fi = |x: &[f64]| -> f64 {
38//! (x[0] - 1.8).powi(2) + (x[1] - 2.8).powi(2)
39//! };
40//!
41//! let mut optimizer = MultilevelOptimizer::new(
42//! vec![
43//! FidelityLevel::new(low_fi, 1.0),
44//! FidelityLevel::new(high_fi, 10.0),
45//! ],
46//! vec![0.0, 0.0],
47//! MultilevelOptions::default(),
48//! );
49//!
50//! let result = optimizer.minimize().expect("valid input");
51//! println!("Minimum at: {:?}", result.x);
52//! ```
53
54pub mod methods;
55
56pub use methods::{
57 FidelityLevel, MfRbf, MfRbfOptions, MultigridOptimizer, MultigridOptions, MultilevelOptimizer,
58 MultilevelOptions, MultilevelResult, TrustHierarchy, TrustHierarchyOptions, VariableFidelity,
59 VariableFidelityOptions,
60};