Table of Contents
Fetching ...

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.

tvopt: A Python Framework for Time-Varying Optimization

TL;DR

tvopt addresses the need for rapid prototyping and benchmarking of time-varying (online) optimization problems, formalized as . 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 and and a prediction-correction scheme that warms the solver with a predicted cost . 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.

Paper Structure

This paper contains 18 sections, 12 equations, 4 figures.

Figures (4)

  • Figure 1: The prediction-correction scheme.
  • Figure 2: A scheme representing agent-to-agent communication, with node i sending packet p to node j. The channel may be for example lossy or noisy.
  • Figure 3: Tracking error for different online optimization methods.
  • Figure 4: Fixed point residual $\{ \left\lVert\mathbold{x}_k - \mathbold{x}_{k-1}\right\rVert\}_{k \in \mathbb{N}}$ for different graph topologies.

Theorems & Definitions (6)

  • Example 1
  • Example 2
  • Example 3
  • Example 4
  • Remark 1
  • Remark 2