繁体   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