3 releases
0.1.2 | Feb 1, 2023 |
---|---|
0.1.1 | Apr 26, 2022 |
0.1.0 | Apr 26, 2022 |
#1185 in Algorithms
Used in 2 crates
(via consprob-trained)
9KB
137 lines
bfgs
This package contains an implementation of BFGS, an algorithm for minimizing convex twice-differentiable functions.
BFGS is explained at a high level in the blog post introducing this package.
In this example, we minimize a 2d function:
extern crate bfgs;
extern crate ndarray;
use ndarray::{Array, Array1};
fn main() {
let x0 = Array::from_vec(vec![8.888, 1.234]); // Chosen arbitrarily
let f = |x: &Array1<f64>| x.dot(x);
let g = |x: &Array1<f64>| 2.0 * x;
let x_min = bfgs::bfgs(x0, f, g);
assert_eq!(x_min, Ok(Array::from_vec(vec![0.0, 0.0])));
}
This project uses cargo-make for builds; to build,
run cargo make all
.
License: MIT/Apache-2.0
lib.rs
:
This package contains an implementation of BFGS, an algorithm for minimizing convex twice-differentiable functions.
BFGS is explained at a high level in the blog post introducing this package.
In this example, we minimize a 2d function:
extern crate my_bfgs as bfgs;
extern crate ndarray;
use ndarray::{Array, Array1};
fn main() {
let x0 = Array::from_vec(vec![8.888, 1.234]); // Chosen arbitrarily
let f = |x: &Array1<f64>| x.dot(x);
let g = |x: &Array1<f64>| 2.0 * x;
let x_min = bfgs::bfgs(x0, f, g);
assert_eq!(x_min, Ok(Array::from_vec(vec![0.0, 0.0])));
}
This project uses cargo-make for builds; to build,
run cargo make all
.
Dependencies
~1.5MB
~25K SLoC