本頁提供適用於開發人員和進階使用者的數學背景,PDLP 是 OR-Tools 提供的線性和二次程式設計解題工具。可做為程式碼的一部分的參考,不應自行讀取。有興趣的讀者必須先熟悉「使用 Primal-Dual Hybrid Gradient 的實用大規模線性程式設計」報告,然後查看程式碼,然後在程式碼參照時返回本文件。
原始
PDLP 考量了下列凸二次程式設計問題,
其中 $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 ) 的雙乘數。
如果 $Q = 0$,就可能會從雙處捨棄 $x$,進而復原 LP 雙重性。
雙變數邊界
假如目標中的 $y$-term 是有限,則 $y$ 會滿足雙變數邊界:
使用共乘雙性恆等式
初步
讓 $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\}$ 定義如下:
如果 $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$,將基本問題重新說明如下:
將相等限制納入考量後,我們會取得:
交換最小值和重新分組:
$x$、$\tilde x$ 和 $\tilde a$ 的聯合最小化方法。若是 $x$,我們發現最小化工具 (如有) 符合 $Qx + c - A^Ty = r$,則最小值為 $-\frac{1}{2} x^TQx$。對於 $\tilde x$ 和 $\tilde a$,我們會套用對收斂法進行細微調整的定義。
這會產生雙
藉由擴大 $p$ 的定義,我們贏得了最上方的兩地。
馬鞍點公式
原始雙重混合漸層 (請參閱 Chambolle 和 Pock 一節) 則會指定表單的基本問題
兩者的雙重能力相當於
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$:
如需這項事實證明,請參閱「一批最佳化方法」中的定理 6.13 相關說明。最終的運算式會給
降低成本、雙殘差和正確的雙重目標
螺旋點公式只能明確與 $(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_residuals
為 true
(預設值),在計算雙目標和雙殘差時,系統可能會將額外的變數邊界視為無限。特別是,如果 $|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
中套用重新縮放時,我們收到下列轉換後的問題:
系統會復原原始問題的解決方案,因為 $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$ 符合以下條件:
這個點的存在代表基本問題沒有解決方案。
同樣地,雙不可抗性憑證就是 $x \in \mathbb{R}^n$ 點,如此:
請注意,設定 $Q=0$ 即可取得線性程式的憑證。
-
對稱式正弦目標矩陣 $S$ 可轉換為此形式,方法是將 $S$ 視為 $S = R^T R$ (例如,膽天因子化),引入其他由限制 $R x - z = 0$ 定義的變數 $z$,所以 $x^T S x x 平方。↩