簡體   English   中英

放寬線性約束?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM