Skip to content

Various optimization algorithms and strategies combined in a Rust library

License

Notifications You must be signed in to change notification settings

aomader/optimization-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

optimization Build Status Coverage Status crates.io version

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.

About

Various optimization algorithms and strategies combined in a Rust library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages