## Expand description

## 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.

## Modules

Offline and Online Algorithms.

Non-continuous or non-smooth points of functions.

Definition of configurations (points in the decision space).

Conversions between problem instances.

Definition of cost functions.

Definition of distance-generating functions and norms.

Abstract and concrete definitions of models that are used to generate problem instances.

Abstract definition of problem variants.

Wrappers around values returned by the public interface.

Definition of schedules (sequences of points in the decision space).

Utilities for executing offline and online algorithms given a model.

Utilities to use iterators with wrappers around vectors.

Functions to check that values satisfy the imposed constraints.