Rust implementation of an Anderson Acceleration algorithm based on Ref [1].
Please note: There is an original Matlab implementation
as well as a slightly modified implementation in C (including
a Python interface) by the authors of the paper.
Ac2O3 is a port of the C implementation to Rust.
Building Ac2O3 requires the following to be installed:
- OpenBLAS:
On linux systems you can either install it by just executingsudo apt-get install libopenblas-dev
or follow the instructions on the repository page. On macOS OpenBLAS can be installed using HomeBrew:brew install openblas
. Make sure that the homebrew path is included in$LIBRARY_PATH
. So you might need to execute:
export LIBRARY_PATH=/opt/homebrew/Cellar/:$LIBRARY_PATH
(on Apple Silicon/M1 processors)
export LIBRARY_PATH=/usr/local/Cellar/:$LIBRARY_PATH
(on Intel processors)
[1]: J. Zhang, B. O'Donoghue, and S. Boyd, Globally Convergent Type-I Anderson Acceleration for Non-Smooth Fixed-Point Iterations, 30(4):3170–3197, 2020. SIAM Journal on Optimization Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.