2 stable releases
1.0.1 | Mar 6, 2022 |
---|---|
1.0.0 | Aug 26, 2021 |
#730 in Science
355KB
10K
SLoC
Smoothed Online Convex Optimization
Development
Testing
Unit and integration test can be run with cargo test
.
CI
We use the linter Clippy and the code formatter rustfmt which can be run using cargo clippy
and cargo fmt
, respectively.
Python bindings
Maturin can be used to build the Python bindings for this crate.
- create a virtualenv:
python3 -m venv venv
- build new bindings:
maturin develop
Now, the bindings are available as the soco
package.
lib.rs
:
Algorithms for Smoothed Online Convex Optimization
Smoothed Online Convex Optimization (SOCO) is the problem of choosing a sequence of points in some decision space minimizing a hitting cost which is paid for choosing a point and which changes in-between rounds as well as a movement cost that is paid for movement in the decision space.
Thus, SOCO can be understood as online convex optimization with an additional smoothing element.
A special focus of this work is the application to the dynamic right-sizing of data centers.
Thesis, Presentation (with animations), Documentation
Acknowledgement
The following is a result of my undergraduate thesis work at TUM under the supervision of Prof. Dr. Susanne Albers and advised by Jens Quedenfeld.
Overview
The implementation can mainly be broken down into three separate parts.
- Algorithms - The implementation of various offline and online algorithms for SOCO andrelated problems. Here is a complete list of the implemented algorithms.
- Streaming - Utilities for streaming the online algorithms in practice. This includes a TCP server that can be queried to run iterations of the online algorithms sequentially.
- Data Center Model - For the application of dynamically right-sizing data centers, this implementation includes a comprehensive cost model of data centers.
To achieve optimal performance, everything is implemented in Rust and heavily parallelized. Python bindings are included to interface with the streaming and data center model components.
Dependencies
~17–25MB
~381K SLoC