PDLP 的數學背景

本頁提供適用於開發人員和進階使用者的數學背景,PDLP 是 OR-Tools 提供的線性和二次程式設計解題工具。可做為程式碼的一部分的參考,不應自行讀取。有興趣的讀者必須先熟悉「使用 Primal-Dual Hybrid Gradient 的實用大規模線性程式設計」報告,然後查看程式碼,然後在程式碼參照時返回本文件。

原始

PDLP 考量了下列凸二次程式設計問題,

$$ \begin{align} \min_x & \, c^Tx + \frac{1}{2}x^TQx \\ \text{s.t.}\; & l^{c} \le Ax \le u^{c} \\ & l^{v} \le x \le u^{v} \end{align} $$

其中 $A$ 是 $m\times n$ 矩陣,$Q$ 則是對角線非負的 $n\times n$ 矩陣1。上界向量 $u^{c}$ 和 $u^{v}$ 擁有 $\mathbb{R} \cup \{ \infty\}$ 且下界向量 $l^{c}$ 和 $l^{v}$ 位於 $\mathl{^le \cup \{ -cup \{ -math} 中。

Dual

而 $a \in \mathbb{R}$。讓 $[a]_+$ 表示它的正數,$[a]_-$ 表示它的負數,也就是 $a = [a]_+ - [a]_-$。如果應用在向量時,正數和負部分會以元素對應。

早期基本問題中的雙精度值超過 $x \in \mathbb{R}^n$, $y \in \mathbb{R}^m$ 和 $r \in \mathbb{R}^n$。 向量 $y$ 包含線性限制條件 ($l^{c} \lex \le ) 的雙乘數。

$$ \begin{align} \max_{x, y, r} & \, -\frac{1}{2}x^TQx + \left((l^{c})^T[y]_+ - (u^{c})^T[y]_- \right) + \left((l^{v})^T[r]_+ - (u^{v})^T[r]_- \right) \\ \text{s.t.}\; & Qx + c - A^Ty = r \end{align} $$

如果 $Q = 0$,就可能會從雙處捨棄 $x$,進而復原 LP 雙重性。

雙變數邊界

假如目標中的 $y$-term 是有限,則 $y$ 會滿足雙變數邊界

$$ y_i \geq 0 \qquad \text{if }u^c_i = \infty, \\ y_i \leq 0 \qquad \text{if }l^c_i = -\infty. $$

使用共乘雙性恆等式

初步

讓 $a \in \mathbb{R} \cup \{-\infty\}$ 和 $b \in \mathbb{R} \cup \{\infty\}$ 加上 $b \ge a$,然後考量間隔 $[a, b] \subseteq \subseteq \subseteq \mabb{R} \cup \{-math.

讓 $\mathcal{I}_{[a, b]} : \mathbb{R}\to \mathbb{R} \cup \{ \infty\}$ 是間隔的指標函式,也就是 $\mathcal{I}_{[a, b]}(x)$ 是 $x \in$a,否則為零。

將 $p(y; a, b): \mathbb{R}\to \mathbb{R} \cup \{\infty\}$ 定義如下:

$$ p(y; a, b) = \begin{cases} ay & \text{ if } y < 0 \\ 0 & \text{ if } y = 0 \\ by & \text{ if } y > 0 \end{cases}. $$

如果 $a$ 或 $b$ 無限制,請遵循標準延伸實際算術

基本結果:$p(y; a, b) = (\mathcal{I}_{[a, b]})^*(y)$,其中 $(\cdot)^*$ 代表對話共識。

適用於 vectors $l \subseteq (\mathbb{R} \cup \{-\infty\})^n$ 和 $u \subseteq (\mathbb{R} \cup \{\infty\})^n$,指標函式 $\call{I}_{[l, u]} {

導數

隆重推出輔助變數 $\tilde a \in \mathbb{R}^m$ 和 $\tilde x \in \mathbb{R}^n$,將基本問題重新說明如下:

$$ \begin{align} \min_{x, \tilde x, \tilde a} & \, c^Tx + \frac{1}{2}x^TQx + \mathcal{I}_{[l^c,u^c]}(\tilde a) + \mathcal{I}_{[l^v,u^v]}(\tilde x) \\ \text{s.t.}\; & \tilde a = Ax \\ & \tilde x = x \end{align} $$

將相等限制納入考量後,我們會取得:

$$ \min_{x, \tilde x, \tilde a} \max_{y, r} c^Tx + \frac{1}{2}x^TQx + y^T\tilde a - y^TAx + r^T\tilde x - r^Tx + \mathcal{I}_{[l^c,u^c]}(\tilde a) + \mathcal{I}_{[l^v,u^v]}(\tilde x) $$

交換最小值和重新分組:

$$ \max_{y, r} \min_{x, \tilde x, \tilde a} c^Tx + \frac{1}{2}x^TQx - y^TAx - r^Tx + \left( \mathcal{I}_{[l^c,u^c]}(\tilde a) + y^T\tilde a \right) + \left(\mathcal{I}_{[l^v,u^v]}(\tilde x) + r^T\tilde x \right) $$

$x$、$\tilde x$ 和 $\tilde a$ 的聯合最小化方法。若是 $x$,我們發現最小化工具 (如有) 符合 $Qx + c - A^Ty = r$,則最小值為 $-\frac{1}{2} x^TQx$。對於 $\tilde x$ 和 $\tilde a$,我們會套用對收斂法進行細微調整的定義。

這會產生雙

$$ \begin{align} \max_{x, y, r} & \, -\frac{1}{2}x^TQx - p(-y, l^c, u^c) - p(-r, l^v, u^v) \\ \text{s.t.}\; & Qx + c - A^Ty = r \end{align} $$

藉由擴大 $p$ 的定義,我們贏得了最上方的兩地。

馬鞍點公式

原始雙重混合漸層 (請參閱 Chambolle 和 Pock 一節) 則會指定表單的基本問題

$$ \begin{align} \min_x f(x) + g(x) + h(Kx) \end{align} $$

兩者的雙重能力相當於

$$ \begin{align} \min_x \max_y f(x) + g(x) + y^TKx - h^*(y) \end{align} $$

PDLP 藉由以下設定,將凸顯二次程式設計問題強制轉換成這份表單:

  • $f(x) = 0$
  • $g(x) = c^T x + \frac{1}{2} x^T Q x + \mathcal{I}_{[l^v, u^v]}(x)$
  • $h(a) = \mathcal{I}_{[-u^c,-l^c]}(a)$
  • $K = -A$

如先前所衍生,$h^*(y) = p(y; -u^c,-l^c)$ 是分段線性轉換函式。$g$ 和 $h^*$ 都可以使用無限值,因此能有效限制 $x$ 和 $y$ 的網域。

請注意,在 PDLP 假設 $Q$ 是對角線上,$g$ 的近似運算子可轉換成對角線,而 $g$ 為可分隔,且下列屬性為 $f_1、f_2$,則適用於 $f_1、f_2$:

$$ f_2(t) = f_1(t) + \frac{\mu}{2} t^2 \Rightarrow \mathrm{prox}_{\lambda f_2}(t) = \mathrm{prox}_{\frac{\lambda}{1 + \lambda \mu} f_1}\left( \frac{t}{1 + \lambda \mu} \right). $$

如需這項事實證明,請參閱「一批最佳化方法」中的定理 6.13 相關說明。最終的運算式會給

$$ \begin{equation} \mathrm{prox}_{\lambda g}(x) = \mathrm{proj}_{[l^v, u^v]}\left( (I + \lambda Q)^{-1} (x - \lambda c) \right) \end{equation} $$

降低成本、雙殘差和正確的雙重目標

螺旋點公式只能明確與 $(x,y)$ 搭配使用,降低的費用 $r$ 為隱含。為了在解決馬鞍點公式時傳回 $(x,y,r)$,我們將 $r$ 定義為 $r = Qx + c - A^Ty$。正確的雙目標是雙重問題的目標值,且每次發生目標值時,成本都會降低 $0\infty$。

PDLP 回報的成本降幅和雙目標在 OR-Tools 9.7 和 9.8 版之間已變更。如要確認哪個版本適用,請查看 primal_dual_hybrid_gradient.h 中說明 SolverResult::reduced_costs 的註解,並確認該註解是否提及 9.8 版。

9.7 以下版本

為了在修正後的雙目標為 $-\infty$ 時提供更有意義的雙值,我們也會回報「雙目標」,此目標會忽略目標值中的無限字詞。「雙殘值」是在修正的雙目標中,無限條款中的 $r$ 值,其他元件中是 0,而 PDLP 傳回的費用降價則是修正雙目標中有限字詞中的 $r$ 值,其他元件中的 0 (因此 $r =\mbox{residuals})。

9.8 以上版本

為了在修正後的雙目標為 $-\infty$ 時提供更有意義的雙值,我們也會報告「雙目標」,將目標值中的無限字詞替換為有限條件,如下所示:如果其中一個邊界是有限,就會使用該邊界而不是無限值;否則將用於邊界。這個選擇會保留雙目標的常數,但不一定能降低目標值的範圍。「雙殘值」是指在修正的雙目標中,無限字詞中的 $r$ 值。PDLP 傳回的費用較低為 $r$,

將某些可變邊界視為無限的處理

在這兩個版本中,如果解題工具選項 handle_some_primal_gradients_on_finite_bounds_as_residualstrue (預設值),在計算雙目標和雙殘差時,系統可能會將額外的變數邊界視為無限。特別是,如果 $|x_i - l^v_i| > |x_i|$,系統會將 $l^v_i$ 視為無限制,並以類似方式處理 $|x_i - u^v_i| > |x_i|$ 時,系統會將 $u^v_i$ 視為無限制。

請注意,handle_some_primal_gradients_on_finite_bounds_as_residuals 不會影響計算出的疊代次數;只會影響終止測試和回報統計資料中使用的雙目標和殘差。

重新縮放

假設我們得到對角線 (欄) 重新縮放矩陣 $C$ 和對角線 (列) 的重新縮放矩陣 $R$,且對角線有正項目。您要在 ShardedQuadraticProgram::RescaleQuadraticProgram 中套用重新縮放時,我們收到下列轉換後的問題:

$$ \begin{align} \min_{\tilde x} & \, (Cc)^T{\tilde x} + \frac{1}{2}{\tilde x}^T(CQC){\tilde x} \\ \text{s.t.}\; & Rl^{c} \le RAC\tilde x \le Ru^{c} \\ & C^{-1}l^{v} \le \tilde x \le C^{-1}u^{v} \end{align} $$

系統會復原原始問題的解決方案,因為 $x = C\tilde x$。如果 $\tilde y$ 是雙重解決方案,而 $\tilde r$ 是其中一個轉換問題的費用,則 $y = R\tilde y$ 是雙重解決方案,$r = C^{-1}\tilde r$ 會降低原始問題的費用 (

不可行性識別

基本不可行證明:$(y, r) \in \mathbb{R}^m\times \mathbb{R}^n$ 符合以下條件:

$$ \begin{equation} \left((l^{c})^T[y]_+ - (u^{c})^T[y]_- \right) + \left((l^{v})^T[r]_+ - (u^{v})^T[r]_- \right) > 0 \\ -A^T y = r . \end{equation} $$

這個點的存在代表基本問題沒有解決方案。

同樣地,雙不可抗性憑證就是 $x \in \mathbb{R}^n$ 點,如此:

$$ \begin{equation} Qx = 0 \\ c^T x < 0 \\ (Ax)_i \begin{cases} = 0 & \text{if }l^c_i , u^c_i \in \mathbb{R}, \\ \geq 0 & \text{if }l^c_i \in \mathbb{R}, u^c_i = \infty, \\ \leq 0 & \text{if }l^c_i = -\infty, u^c_i \in \mathbb{R}, \end{cases} \\ x_i \begin{cases} = 0 & \text{if }l^v_i , u^v_i \in \mathbb{R}, \\ \geq 0 & \text{if }l^v_i \in \mathbb{R}, u^v_i = \infty, \\ \leq 0 & \text{if }l^v_i = -\infty, u^v_i \in \mathbb{R}. \end{cases} \end{equation} $$

請注意,設定 $Q=0$ 即可取得線性程式的憑證。


  1. 對稱式正弦目標矩陣 $S$ 可轉換為此形式,方法是將 $S$ 視為 $S = R^T R$ (例如,膽天因子化),引入其他由限制 $R x - z = 0$ 定義的變數 $z$,所以 $x^T S x x 平方。