#minimization #numeric

optimization

Collection of optimization algorithms

3 releases (breaking)

Uses old Rust 2015

0.2.0 Apr 11, 2020
0.1.0 Jun 6, 2016
0.0.1 Apr 26, 2016

#2338 in Algorithms

Download history 124/week @ 2025-03-26 51/week @ 2025-04-02 44/week @ 2025-04-09 18/week @ 2025-04-16 49/week @ 2025-04-23 36/week @ 2025-04-30 42/week @ 2025-05-07 68/week @ 2025-05-14 14/week @ 2025-05-21 33/week @ 2025-05-28 21/week @ 2025-06-04 24/week @ 2025-06-11 46/week @ 2025-06-18 36/week @ 2025-06-25 28/week @ 2025-07-02 40/week @ 2025-07-09

151 downloads per month
Used in 3 crates (2 directly)

MIT license

35KB
630 lines

optimization Build Status Coverage Status

Collection of optimization algorithms and strategies.

Usage

extern crate optimization;

use optimmization::{Minimizer, GradientDescent, NumericalDifferentiation, Func};

// numeric version of the Rosenbrock function
let function = NumericalDifferentiation::new(Func(|x: &[f64]| {
    (1.0 - x[0]).powi(2) + 100.0*(x[1] - x[0].powi(2)).powi(2)
}));

// we use a simple gradient descent scheme
let minimizer = GradientDescent::new();

// perform the actual minimization, depending on the task this may
// take some time, it may be useful to install a log sink to see
// what's going on
let solution = minimizer.minimize(&function, vec![-3.0, -4.0]);

println!("Found solution for Rosenbrock function at f({:?}) = {:?}",
    solution.position, solution.value);

Installation

Simply add it as a Cargo dependency:

[dependencies]
optimization = "*"

Documentation

For an exhaustive documentation head over to the API docs.

Development

Simply download this crate, add your stuff, write some tests and create a pull request. Pretty simple! :)

$ cargo test
$ cargo clippy

License

This software is licensed under the terms of the MIT license. Please see the LICENSE for full details.

Dependencies

~1.5MB
~28K SLoC