# TutorialΒΆ

**disropt** is a Python package for distributed optimization over peer-to-peer networks of computing units called agents.
The main idea of distributed optimization is to solve an optimization problem (enjoying a given structure)
over a (possibly unstructured) network of processors. Each agent can perform local computation and can exchange information
with only its neighbors in the network. A distributed algorithm consists of an iterative procedure in which each
agent maintains a local estimate of the problem solution which is properly updated in order to converge towards the solution.

Formally, an optimization problem is a mathematical problem which consists in finding a minimum of a function while satisfying a given set of constraints. In symbols,

where \(x \in \mathbb{R}^d\) is called optimization variable, \(f : \mathbb{R}^d \rightarrow \mathbb{R}\). is called cost function and \(X \subseteq \mathbb{R}^d\) describes the problem constraints. The optimization problem is assumed to be feasible and has finite optimal cost. Thus, it admits at least an optimal solution that is usually denoted as \(x^\star\). The optimal solution is a vector that satisfies all the constraints and attains the optimal cost.