Crate metaheuristics_nature
source · [−]Expand description
A collection of nature-inspired meta-heuristic algorithms.
Terminology
For unifying the terms, in this documentation,
- “Iteration” is called “generation”.
- “Function” that evaluates value is called “objective function”.
- “Return value” of the objective function is called “fitness”.
Algorithm
There are two traits Algorithm
and Setting
.
The previous is used to design the optimization method,
and the latter is the setting interface.
Solver
is a simple interface for obtaining the solution, or analyzing the result.
This type allows you to use the pre-defined methods without importing any traits.
All provided methods are listed in the module methods
.
For making your owned method, please see utility::prelude
.
Objective Function
For a quick demo with callable object, please see Fx
or FxAdaptive
.
You can define your question as an objective function through implementing ObjFunc
,
and then the upper bound, lower bound, and objective function ObjFunc::fitness
should be defined.
The final answer is ObjFunc::result
, which is calculated from the design parameters.
Random Function
This crate use 64bit PRNG algorithm (utility::Rng
) to generate uniform random values,
before that, a random seed is required.
The seed is generated by getrandom
, please see its support platform.
Features
std
: Default feature. Enable standard library function, such as timing and threading.rayon
: Enable parallel computation, let objective function running without ordered. Disable it for the platform that doesn’t supported threading, or if your objective function is not complicate enough. This feature requirestd
feature.libm
: If the standard library is not provided, some math functions might missing. This will disable some pre-implemented algorithms. However, there is a math library implemented in pure Rust, the name is same aslibm
. This feature can re-enable (or replace) the math functions by using thelibm
crate.
Compatibility
If you are using this crate for providing objective function, other downstream crates of yours may have some problems with compatibility.
The most important thing is using a stable version, specifying the major version number.
Then re-export (pub use
) this crate for the downstream crates.
This crate does the same things on ndarray
and rayon
.
Re-exports
pub use self::methods::*;
Modules
Pre-implemented optimization methods.
The re-export of the crate ndarray
.
rayon
The re-export of the crate rayon
.
The utility API for advanced usage.
Macros
A tool macro used to generate multiple builder functions (methods).
Structs
A quick interface help to create objective function from a callable object.
A quick interface help to create adaptive objective function from a callable object.
A public API for using optimization methods.