cmaes
argmin
Our great sponsors
cmaes | argmin | |
---|---|---|
3 | 2 | |
30 | 883 | |
- | 4.8% | |
0.0 | 9.3 | |
almost 2 years ago | 6 days ago | |
Rust | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cmaes
-
[ANN] cmaes v0.2.0: An implementation of the CMA-ES optimization algorithm
cmaes is an implementation of the CMA-ES black box numerical optimization algorithm. It's especially suited to solving high-dimension, non-linear, non-convex, ill-conditioned, and/or noisy problems.
- [ANN] cmaes 0.1: An implementation of the CMA-ES optimization algorithm
-
Looking for an efficient algorithm that will test out a huge array set and return the maximum solution
If your function is truly black box then you can use a black box optimization algorithms (note that they likely will not be as good since they make less asumptions on the problem) such as the one provided by argmin or my own simplers_optimization (amongst others). The CMA-ES algorithm has a very good reputation for those use cases but I only found one implementation in Rust and it is not on crates.io.
argmin
-
Rust concepts I wish I learned earlier
Two things that might help Rust a lot despite the complexity is the tooling and the ecosystem. Cargo is good, the compiler is extremely helpful, and there are a lot of crates to build on for all sorts of tasks.
For example, if I need to use simulated annealing to solve an optimization problem, there already exist libraries that implement that algorithm well.[1] Unfortunately, the Haskell library for this seems to be unmaintained[2] and so does the OCaml library that I can find.[3] Similarly, Agda, Idris, and Lean 4 all seem like great languages. But not having libraries for one's tasks is a big obstacle to adoption.
Nim looks very promising. (Surprisingly so to me.) Hopefully they will succeed at gaining wider recognition and growing a healthy ecosystem.
[1] E.g., https://github.com/argmin-rs/argmin
[2] https://hackage.haskell.org/package/hmatrix-gsl-0.19.0.1 was released in 2018. (Although there are newer commits in the GitHub repo, https://github.com/haskell-numerics/hmatrix. Not too sure what is going on.)
[3] https://github.com/khigia/ocaml-anneal
-
Is there a library for non-linear optimization in Rust?
You might find interest in argmin, a collection of common optimization algorithms.
What are some alternatives?
ersatz - A monad for interfacing with external SAT solvers
optimization-engine - Nonconvex embedded optimization: code generation for fast real-time optimization
iproute - IP Routing Table in Haskell
ceres-solver - A large scale non-linear optimization library
pell - Haskell Package to solve the Generalized Pell Equation
Peroxide - Rust numeric library with R, MATLAB & Python syntax
keyboard_layout_optimizer - A keyboard layout optimizer supporting multiple layers. Implemented in Rust.
good_lp - Linear Programming for Rust, with a user-friendly API. This crate allows modeling LP problems, and lets you solve them with various solvers.
image-shrinker-lite - Drag-and-drop image compression app.
cvxportfolio - Portfolio optimization and back-testing.