argmin
ceres-solver
Our great sponsors
argmin | ceres-solver | |
---|---|---|
2 | 8 | |
883 | 3,589 | |
4.8% | 2.3% | |
9.3 | 8.3 | |
7 days ago | 7 days ago | |
Rust | C++ | |
Apache License 2.0 | 3-Clause BSD License |
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.
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.
ceres-solver
-
The Elements of Differentiable Programming
I can't reply to the guy saying julia is the only one. But there are others.
Ceres uses dual numbers
https://github.com/ceres-solver/ceres-solver/blob/master/inc...
This library from google is used everywhere in robotics, so it's hardly some backwater little side project.
So does c++ autodiff
- A large scale non-linear optimization library
-
Photometric Bundle Adjustment library?
http://ceres-solver.org (if you want to implement it manually, see tutorials & openCV sfm module)
-
Gradients Without Backpropagation
http://ceres-solver.org/ works well, in my experience.
-
Is there a library for non-linear optimization in Rust?
Hey, people! I was wondering if there is a library for non-linear optimization, equivalent to that for Ceres Solver that you have in C++?
-
What libraries do you miss from other languages?
I've not yet seen anything comparable to http://ceres-solver.org/
-
Non-linear equation solver for microcontrollers
Disclaimer: I'm one of the authors of Ceres Solver which is widely used for solving computational geometry problems in computer vision. I also wrote TinySolver. And nowadays, I focus on Pigweed; a collection of embedded libraries targeting high-volume consumer electronics products. It's fun to see an overlap of these two areas expertise!
What are some alternatives?
optimization-engine - Nonconvex embedded optimization: code generation for fast real-time optimization
Eigen
cmaes - A Rust implementation of the CMA-ES optimization algorithm.
casadi - CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.
Peroxide - Rust numeric library with R, MATLAB & Python syntax
GLM - OpenGL Mathematics (GLM)
keyboard_layout_optimizer - A keyboard layout optimizer supporting multiple layers. Implemented in Rust.
OpenBLAS - OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
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.
QuantLib - The QuantLib C++ library
image-shrinker-lite - Drag-and-drop image compression app.
CGal - The public CGAL repository, see the README below