tvopt: A Python Framework for Time-Varying Optimization
Nicola Bastianello
TL;DR
tvopt addresses the need for rapid prototyping and benchmarking of time-varying (online) optimization problems, formalized as $x^*(t)=\arg\min_x F(x;t)$. It provides an object-oriented Python framework with modular components for problem sets, costs, predictions, solvers, and distributed networks, enabling centralized and distributed online optimization and a prediction-correction workflow. The paper details design choices, including discrete-time sampling with $t_k$ and $T_s$ and a prediction-correction scheme that warms the solver with a predicted cost $\hat{F}$. Numerical experiments on both centralized benchmarks and distributed linear regression demonstrate prediction gains and tvopt's utility for rapid research and benchmarking in time-varying optimization.
Abstract
This paper introduces tvopt, a Python framework for prototyping and benchmarking time-varying (or online) optimization algorithms. The paper first describes the theoretical approach that informed the development of tvopt. Then it discusses the different components of the framework and their use for modeling and solving time-varying optimization problems. In particular, tvopt provides functionalities for defining both centralized and distributed online problems, and a collection of built-in algorithms to solve them, for example gradient-based methods, ADMM and other splitting methods. Moreover, the framework implements prediction strategies to improve the accuracy of the online solvers. The paper then proposes some numerical results on a benchmark problem and discusses their implementation using tvopt. The code for tvopt is available at https://github.com/nicola-bastianello/tvopt.
