jonhue / soco

Algorithms for Smoothed Online Convex Optimization

Home Page:https://jonhue.github.io/soco

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

layout title
primer_without_heading
Algorithms for Smoothed Online Convex Optimization

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.

Organization

The top-level folders are described as follows:

folder description
analysis empirical evaluation of the implemented algorithms in the application of dynamically right-sizing data centers
implementation implementation of the algorithms
thesis source files of the thesis and the presentation

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.

Development

Crate

The Rust crate is contained in the implementation directory. See the relevant development section there.

Analysis

The analysis directory contains the case studies with real-world data. It requires the Python bindings for the soco crate. See the relevant prerequisites section for more information.

Contributing

We warmly welcome everyone who is intersted in contributing. Please reference our Code of Conduct.

Releases

Here you can find details on all past releases. Unreleased breaking changes that are on the current master can be found here.

acts_as_favoritor follows Semantic Versioning 2.0 as defined at http://semver.org. Reference the security policy.

Publishing

  1. Review breaking changes and deprecations in CHANGELOG.md.
  2. Change version in implementation/Cargo.toml.
  3. Reset CHANGELOG.md.
  4. Create a pull request to merge the changes into main.
  5. After the pull request was merged, create a new release listing the breaking changes and commits on main since the last release.
  6. The release workflow will publish the crate to crates.io.

About

Algorithms for Smoothed Online Convex Optimization

https://jonhue.github.io/soco

License:MIT License


Languages

Language:Jupyter Notebook 63.1%Language:TeX 20.7%Language:Rust 15.2%Language:Python 0.9%Language:HTML 0.0%