|
| 1 | +In DRO.jl every ADMM optimization consists of two components, the ADMM problem form itself, and the local model, which determines local constraints and objectives. |
| 2 | + |
| 3 | +# Problem Form |
| 4 | + |
| 5 | +## Consensus |
| 6 | + |
| 7 | +The single global variable consensus form can be written as |
| 8 | + |
| 9 | +```math |
| 10 | +\begin{equation} |
| 11 | +\begin{split} |
| 12 | +\min_{\{x_i\},\,z}\;\; \sum_{i=1}^N f_i(x_i) \\ |
| 13 | +\quad\text{s.t.}\quad x_i = z,\;\; i=1,\dots,N, |
| 14 | +\end{split} |
| 15 | +\end{equation} |
| 16 | +``` |
| 17 | + |
| 18 | +where ``f_i`` is the local objective of agent ``i``, ``x_i`` the decision variable of this agent. |
| 19 | + |
| 20 | +With the dual variable ``u`` and the penalty ``\rho`` the update iteration reads. |
| 21 | + |
| 22 | +```math |
| 23 | +\begin{align} |
| 24 | +x_i^{k+1} |
| 25 | +&= \arg\min_{x_i} \; |
| 26 | +f_i(x_i) |
| 27 | ++ \frac{\rho}{2}\big\| x_i - \big(z^k - u_i^k \big) \big\|_2^2 |
| 28 | +\\ |
| 29 | +z^{k+1} |
| 30 | +&= \arg\min_{z} \; |
| 31 | +g(z) + \frac{N \rho}{2}\left\| |
| 32 | +z - \Big( \bar{x}^{k+1} + \bar{u}^k \Big) |
| 33 | +\right\|_2^2 \\ |
| 34 | +u_i^{k+1} |
| 35 | +&= u_i^k + x_i^{k+1} - z^{k+1} |
| 36 | +\end{align} |
| 37 | +``` |
| 38 | + |
| 39 | +To instantiate a coordinator for the sharing form, use [`create_consensus_target_reach_admm_coordinator`](@ref). To start the neotiation you need to use [`create_admm_start_consensus`](@ref). |
| 40 | + |
| 41 | + |
| 42 | +## Sharing |
| 43 | + |
| 44 | +Take the sharing problem: |
| 45 | + |
| 46 | +```math |
| 47 | +\begin{equation} |
| 48 | +\begin{split} |
| 49 | +\min_{\{x_i\},\,z}\;\; \sum_{i=1}^N f_i(x_i) \;+\; g(z)\\ |
| 50 | +\quad\text{s.t.}\quad \sum_{i=1}^N x_i = z,\;\; i=1,\dots,N, |
| 51 | +\end{split} |
| 52 | +\end{equation} |
| 53 | +``` |
| 54 | + |
| 55 | +where ``f_i`` is the local objective of agent ``i``, ``x_i`` the decision variable of this agent, and ``g`` the global objective. |
| 56 | + |
| 57 | +With the dual variable ``u`` and the penalty ``\rho`` the generic update iteration reads. |
| 58 | + |
| 59 | +```math |
| 60 | +\begin{align} |
| 61 | +x_i^{k+1} |
| 62 | + &= \arg\min_{x_i}\; |
| 63 | + f_i(x_i) + \tfrac{\rho}{2}\,\big\lVert x_i - (z^k - u^k) \big\rVert_2^2, |
| 64 | + \\ |
| 65 | + &i=1,\dots,N, |
| 66 | + \\[6pt] |
| 67 | +z^{k+1} |
| 68 | + &= \arg\min_{z}\; |
| 69 | + g(N\cdot z) + \tfrac{N\rho}{2}\,\big\lVert z - \bar{x}^{\,k+1} - u^k \big\rVert_2^2, |
| 70 | + \\ |
| 71 | +\bar{x}^{\,k+1} |
| 72 | + &= \tfrac{1}{N}\sum_{i=1}^N x_i^{k+1}, |
| 73 | + \\[6pt] |
| 74 | +u^{k+1} |
| 75 | + &= u^k + \bar{x}^{\,k+1} - z^{k+1}. |
| 76 | + |
| 77 | +\end{align} |
| 78 | +``` |
| 79 | + |
| 80 | +To instantiate a coordinator for the sharing form, use [`create_sharing_admm_coordinator`](@ref). To start the negotiation you can use [`create_admm_start`](@ref). |
| 81 | + |
| 82 | +# Local Models |
| 83 | + |
| 84 | +## Flexibility Actor |
| 85 | + |
| 86 | +Each local actor `ì`` has some flexibility of ``m`` resources and a decision on the provided flexibility ``x_i``. The decision is constrained by |
| 87 | +* lower and upper bounds ``l_i \leq x_i \leq u_i`` |
| 88 | +* coupling constraints ``C_i x_i\leq d_i`` |
| 89 | +* linear penalites ``S_i`` for priorization |
| 90 | + |
| 91 | +To instantiate a flexibility actor use [`create_admm_flex_actor_one_to_many`](@ref). |
0 commit comments