[英]Relaxation of linear constraints?
當我們需要在正實數半線上優化一個函數,而我們只有非約束優化例程時,我們使用y = exp(x)
,或y = x^2
映射到實線上並仍然優化變量的對數或(有符號)平方根。
我們可以對線性約束做一些類似的事情,形式為Ax = b
其中,對於 xa d 維向量, A
是(N,n)
形矩陣, b
是長度為N
的向量,定義約束?
雖然,正如 Ervin Kalvelaglan 所說,這並不總是一個好主意,但這是一種方法。 假設我們取 A 的 SVD,得到
A = U*S*V'
where if A is n x m
U is nxn orthogonal,
S is nxm, zero off the main diagonal,
V is mxm orthogonal
計算 SVD 不是一項簡單的計算。
我們首先將 S 的元素歸零,因為噪聲我們認為這些元素是非零的——這可能是一件有點微妙的事情。
然后我們可以找到一個解決方案 x~
A*x = b
作為
x~ = V*pinv(S)*U'*b
(其中 pinv(S) 是 S 的偽逆,即用它們的乘法逆替換對角線的非零元素)
請注意,x~ 是約束的最小二乘解,因此我們需要檢查它是否足夠接近成為真正的解,即 Ax~ 是否足夠接近 b —— 另一個有點微妙的事情。 如果 x~ 沒有足夠接近地滿足約束,您應該放棄:如果約束沒有解決方案,優化也沒有。
約束的任何其他解決方案都可以寫成 x = x~ + sum c[i]*V[i] 其中 V[i] 是 V 的列,對應於(現在)為零的 S 的條目。 這里 c[i] 是任意常數。 因此,我們可以在優化中將變量更改為使用 c[],並且約束將自動滿足。 然而,這種變量的變化可能有點令人厭煩!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.