Skip to content

Consensus Augmented Lagrangian Coordination (Consensus ALC)

The preceding solution approaches coordinate subsystems on the primal problem directly. An alternative is to rewrite the problem in consensus form [15, 11, 7] (also called two-block [9, 16, 17] or centralized coordination [18, 2]) by introducing consensus variables \({}^{i}_{j}\)\(y\) for every \({}^{i}_{j}\)\(c\). The coupling constraints become consensus constraints \({}^{i}_{j}\)\(c_c\):

\[ {}^{i}_{j}c_c\!\left({}^{i}d,\;{}^{j}d,\;{}^{i}_{j}y\right) := \begin{bmatrix} {}^{i}_{j}c_c^{i}\!\left({}^{i}d,\;{}^{i}_{j}y\right) \\ {}^{i}_{j}c_c^{j}\!\left({}^{j}d,\;{}^{i}_{j}y\right) \end{bmatrix} := \begin{bmatrix} {}^{i}_{j}y - \begin{bmatrix} {}^{i}_{j}H\!\left({}^{i}r\right) \\ {}^{i}_{j}z \end{bmatrix} \\ {}^{i}_{j}y - \begin{bmatrix} {}^{i}_{j}h \\ {}^{j}_{i}z \end{bmatrix} \end{bmatrix} = 0, \]

yielding the consensus reformulation:

\[\begin{aligned} \left\{{}^{i}d^{*}\right\}_{i\in M},\; \left\{{}^{i}_{j}y^{*}\right\}_{\substack{j\in{}^{i}N \\ i\in M}} :={} & \argmin_{\substack{{}^{i}d\;\in\;{}^{i}\mathcal{D}\;\forall\; i\in M,\\ {}^{i}_{j}y\;\forall\; j\in{}^{i}N,\; i\in M}} \quad \sum_{i\in M} {}^{i}v_f\!\left({}^{i}r\right) \\ & \text{s.t.} \quad {}^{i}v_g\!\left({}^{i}r\right) \leq 0 \quad \forall\; i\in M, \\ & \phantom{\text{s.t.}} \quad {}^{i}v_h\!\left({}^{i}r\right) = 0 \quad \forall\; i\in M, \\ & \phantom{\text{s.t.}} \quad {}^{i}_{j}c_c\!\left({}^{i}d,\;{}^{j}d,\;{}^{i}_{j}y\right) = 0 \quad \forall\; j\in{}^{i}N,\; i\in M. \end{aligned}\]

Treating \({}^{i}_{j}\)\(y\) as local design variables of an additional controller (with no objective or constraints) recovers the primal problem structure. Subsystems couple only to the controller, not to each other, so all previous approaches apply. Whether the original or consensus form is preferable is problem-dependent. Primal-dual methods such as ALC are commonly used with the consensus form; ALADIN and SBDP were applied to the original form by their developers and their consensus variants are omitted here.

Consensus ALC follows Sections 5 and 6.3 of [2] and Section 5.4 of [7]. Where ALC relaxes \({}^{i}_{j}\)\(c\), Consensus ALC relaxes \({}^{i}_{j}\)\(c_c\) instead. The augmented Lagrange function \(L\) becomes

\[L\!\left(\left\{{}^{i}d\right\}_{i\in M},\; \left\{{}^{i}_{j}y,\;{}^{i}_{j}\lambda,\;{}^{i}_{j}s\right\}_{\substack{j\in{}^{i}N \\ i\in M}}\right) := \sum_{i\in M} \left( {}^{i}v_f\!\left({}^{i}r\right) + \sum_{j\in{}^{i}N} {}^{i}_{j}\lambda^{T}\,{}^{i}_{j}c_c\!\left({}^{i}d,\;{}^{j}d,\;{}^{i}_{j}y\right) + \bigl\|{}^{i}_{j}s\circ{}^{i}_{j}c_c\!\left({}^{i}d,\;{}^{j}d,\;{}^{i}_{j}y\right)\bigr\|_2^2 \right).\]

As in ALC, ALD and MM are applied. The primal update separates into \({}^{i}d\;\forall\; i\in M\) and \({}^{i}_{j}y\;\forall\; j\in{}^{i}N,\; i\in M\) except for the quadratic penalty; an FPI alternates between both (the \({}^{i}\)\(d\) step is fully parallel). Dual and penalty updates use the same subgradient method as ALC, applied to \({}^{i}_{j}\)\(c_c\) rather than \({}^{i}_{j}\)\(c\).

The \({}^{i}_{j}\)\(y\) optimization is an unconstrained convex QP (for \({}^{i}_{j}s^{(k)} \neq 0\)) admitting a closed-form solution [7]. Each subsystem \(i\) can compute \({}^{i}_{j}\)\(y\) and \({}^{j}_{i}\)\(y\) locally, eliminating a dedicated controller at the cost of duplicated work but reduced communication — mirroring the dual and penalty updates. The full procedure is given in Algorithm 4. For convergence analysis, see [7, 2].

All symbols are defined in the Nomenclature.

Algorithm 4 Consensus Augmented Lagrangian Coordination (Consensus ALC)
Require: hyperparameters $\gamma$, $\beta$
Require: initial \({}^{j}_{i}y^{(0)},\; {}^{i}_{j}y^{(0)} \;\; \forall\; j \in {}^{i}N,\; {}^{i}\lambda^{(0)},\; {}^{i}s^{(0)} \;\; \forall\; i \in M\)
 
\(k \leftarrow 0\) ▷ initialize outerloop iterator
repeat
\(l \leftarrow 0\) ▷ initialize innerloop iterator
repeat ▷ decentralized Primal Update approximation
for every \(i \in M\) in parallel do
\[\begin{aligned} {}^{i}d^{(k,\,l+1)} \leftarrow{} & \argmin_{{}^{i}d \;\in\; {}^{i}\mathcal{D}} \;\; {}^{i}v_f\!\left({}^{i}r\right) \\ & + \sum_{j \in {}^{i}N} \left( \left({}^{i}_{j}\lambda^{i}\right)^{(k)\,T} {}^{i}_{j}c_c^{i}\!\left({}^{i}d,\; {}^{i}_{j}y\right) + \left\|\left({}^{i}_{j}s^{i}\right)^{(k)} \circ {}^{i}_{j}c_c^{i}\!\left({}^{i}d,\; {}^{i}_{j}y\right)\right\|_{2}^{2} \right. \\ & \left. \quad\quad + \left({}^{j}_{i}\lambda^{i}\right)^{(k)\,T} {}^{j}_{i}c_c^{i}\!\left({}^{i}d,\; {}^{j}_{i}y\right) + \left\|\left({}^{j}_{i}s^{i}\right)^{(k)} \circ {}^{j}_{i}c_c^{i}\!\left({}^{i}d,\; {}^{j}_{i}y\right)\right\|_{2}^{2} \right) \\ & \text{s.t.} \;\; {}^{i}v_g\!\left({}^{i}r\right) \leq 0, \\ & \phantom{\text{s.t.}} \;\; {}^{i}v_h\!\left({}^{i}r\right) = 0. \end{aligned}\]
Copy \({}^{i}_{j}H\!\left({}^{i}r\right),\; {}^{j}_{i}h,\; {}^{i}_{j}z,\; {}^{j}_{i}\lambda^{i},\; {}^{i}_{j}\lambda^{i},\; {}^{j}_{i}s^{i},\; {}^{i}_{j}s^{i}\) to interface storage \(i \leftrightarrow j \;\; \forall\; j \in {}^{i}N\)
end for
 
for every \(i \in M\) in parallel do
Copy \({}^{j}_{i}H\!\left({}^{j}r\right),\; {}^{i}_{j}h,\; {}^{j}_{i}z,\; {}^{i}_{j}\lambda^{j},\; {}^{j}_{i}\lambda^{j},\; {}^{i}_{j}s^{j},\; {}^{j}_{i}s^{j}\) from interface storage \(i \leftrightarrow j \;\; \forall\; j \in {}^{i}N\)
\[\begin{aligned} {}^{i}_{j}y^{(k,\,l+1)} \leftarrow \Biggl( & - \frac{1}{2}\left(\left({}^{i}_{j}\lambda^{i}\right)^{(k)} + \left({}^{i}_{j}\lambda^{j}\right)^{(k)}\right) + \left(\left({}^{i}_{j}s^{i}\right)^{(k)} \circ \left({}^{i}_{j}s^{i}\right)^{(k)}\right) \circ \begin{bmatrix} {}^{i}_{j}H\!\left({}^{i}r\right) \\ {}^{i}_{j}z \end{bmatrix} \\ & + \left(\left({}^{i}_{j}s^{j}\right)^{(k)} \circ \left({}^{i}_{j}s^{j}\right)^{(k)}\right) \circ \begin{bmatrix} {}^{i}_{j}h \\ {}^{j}_{i}z \end{bmatrix} \Biggr) \\ & \oslash \left(\left({}^{i}_{j}s^{i}\right)^{(k)} \circ \left({}^{i}_{j}s^{i}\right)^{(k)} + \left({}^{i}_{j}s^{j}\right)^{(k)} \circ \left({}^{i}_{j}s^{j}\right)^{(k)}\right) \;\;\; \forall\; j \in {}^{i}N \end{aligned}\]
\[\begin{aligned} {}^{j}_{i}y^{(k,\,l+1)} \leftarrow \Biggl( & - \frac{1}{2}\left(\left({}^{j}_{i}\lambda^{j}\right)^{(k)} + \left({}^{j}_{i}\lambda^{i}\right)^{(k)}\right) + \left(\left({}^{j}_{i}s^{j}\right)^{(k)} \circ \left({}^{j}_{i}s^{j}\right)^{(k)}\right) \circ \begin{bmatrix} {}^{j}_{i}H\!\left({}^{j}r\right) \\ {}^{j}_{i}z \end{bmatrix} \\ & + \left(\left({}^{j}_{i}s^{i}\right)^{(k)} \circ \left({}^{j}_{i}s^{i}\right)^{(k)}\right) \circ \begin{bmatrix} {}^{j}_{i}h \\ {}^{i}_{j}z \end{bmatrix} \Biggr) \\ & \oslash \left(\left({}^{j}_{i}s^{j}\right)^{(k)} \circ \left({}^{j}_{i}s^{j}\right)^{(k)} + \left({}^{j}_{i}s^{i}\right)^{(k)} \circ \left({}^{j}_{i}s^{i}\right)^{(k)}\right) \;\;\; \forall\; j \in {}^{i}N \end{aligned}\]
end for
 
Compute innerloop convergence criterion (e.g., [1, 2, 13])
\(l \leftarrow l + 1\)
until innerloop convergence criterion is met
 
\({}^{i}d^{(k+1)},\; {}^{i}_{j}y^{(k+1)} \leftarrow {}^{i}d^{(k,\,l)},\; {}^{i}_{j}y^{(k,\,l)} \;\; \forall\; j \in {}^{i}N,\; i \in M\)
 
for every \(i \in M\) do ▷ decentralized Dual and Penalty Update
\[\begin{aligned} \left({}^{i}_{j}c_c^{i}\right)^{(k+1)} &\leftarrow {}^{i}_{j}y^{(k+1)} - \begin{bmatrix} {}^{i}_{j}H\!\left({}^{i}r\right) \\ {}^{i}_{j}S_{z}\,{}^{i}d^{(k+1)} \end{bmatrix}, \\[0.5em] \left({}^{j}_{i}c_c^{i}\right)^{(k+1)} &\leftarrow {}^{j}_{i}y^{(k+1)} - \begin{bmatrix} {}^{j}_{i}S_{h}\,{}^{i}d^{(k+1)} \\ {}^{i}_{j}S_{z}\,{}^{i}d^{(k+1)} \end{bmatrix} \end{aligned}\]
\[\begin{aligned} \left({}^{i}_{j}\lambda^{i}\right)^{(k+1)} &\leftarrow \operatorname{DualUpdate}\!\left( \left({}^{i}_{j}\lambda^{i}\right)^{(k)},\; \left({}^{i}_{j}s^{i}\right)^{(k)},\; \left({}^{i}_{j}c_c^{i}\right)^{(k+1)} \right) \quad \forall\; j \in {}^{i}N \\ \left({}^{j}_{i}\lambda^{i}\right)^{(k+1)} &\leftarrow \operatorname{DualUpdate}\!\left( \left({}^{j}_{i}\lambda^{i}\right)^{(k)},\; \left({}^{j}_{i}s^{i}\right)^{(k)},\; \left({}^{j}_{i}c_c^{i}\right)^{(k+1)} \right) \quad \forall\; j \in {}^{i}N \\[0.5em] \left({}^{i}_{j}s^{i}\right)^{(k+1)} &\leftarrow \operatorname{PenaltyUpdate}\!\left( \beta,\; \gamma,\; \left({}^{i}_{j}s^{i}\right)^{(k)},\; \left({}^{i}_{j}c_c^{i}\right)^{(k+1)},\; \left({}^{i}_{j}c_c^{i}\right)^{(k)} \right) \quad \forall\; j \in {}^{i}N \\ \left({}^{j}_{i}s^{i}\right)^{(k+1)} &\leftarrow \operatorname{PenaltyUpdate}\!\left( \beta,\; \gamma,\; \left({}^{j}_{i}s^{i}\right)^{(k)},\; \left({}^{j}_{i}c_c^{i}\right)^{(k+1)},\; \left({}^{j}_{i}c_c^{i}\right)^{(k)} \right) \quad \forall\; j \in {}^{i}N \end{aligned}\]
end for
 
Compute outerloop convergence criterion (e.g., [1, 2])
\(k \leftarrow k + 1\)
until outerloop convergence criterion is met
return \(\left\{{}^{i}d^{(k)}\right\}_{i \in M}\)