pub fn minimize<T>(
f: &impl ObjectiveFunction<T>,
initial_point: &[T],
config: &OptimizationConfig<T>,
) -> OptimizationResult<T>
Expand description
Minimizes an objective function using the BFGS (Broyden–Fletcher–Goldfarb–Shanno) method.
BFGS is a quasi-Newton method that approximates the Hessian matrix using gradient information. It maintains a positive definite approximation to the Hessian matrix and updates it iteratively.
§Arguments
f
- The objective function to minimizeinitial_point
- The starting point for optimizationconfig
- Configuration options for the optimization process
§Returns
Returns an OptimizationResult
containing the optimal point found and optimization statistics.
§Examples
use algos::math::optimization::{ObjectiveFunction, OptimizationConfig};
use algos::math::optimization::bfgs::minimize;
// Define a simple quadratic function
struct Quadratic;
impl ObjectiveFunction<f64> for Quadratic {
fn evaluate(&self, point: &[f64]) -> f64 {
point.iter().map(|x| x * x).sum()
}
fn gradient(&self, point: &[f64]) -> Option<Vec<f64>> {
Some(point.iter().map(|x| 2.0 * x).collect())
}
}
let f = Quadratic;
let initial_point = vec![1.0, 1.0];
let config = OptimizationConfig::default();
let result = minimize(&f, &initial_point, &config);
assert!(result.converged);