求解 Ax=b 的最快方法是什么(受约束和绝对项)

计算科学 优化 约束优化 表现 二次规划 半定规划
2021-12-22 05:27:24

我正在尝试解决/优化Ax=b在最小二乘意义上受制于

  1. 盒子约束;
  2. 少数(少于 5 个)平等/不平等约束;
  3. 绝对函数惩罚(或其他一些分段线性凸函数)。

也就是说,分钟f(x)=|Axb|2+c|x|在哪里c|x|=c1|x1|+...+cn|xn|

特别是,Ax=b严重欠定(即A有几千列但有数百行),如果存在很多,任何有效的解决方案都可以。此代码对性能至关重要。我已经用尽了我能想到的一切。有没有什么明显的方法可以有效地解决这个问题(巧妙的公式或适当的算法选择)?

语言不可知的解决方案将不胜感激。


tl; dr - 跳过其余部分。这是我到目前为止尝试过的

方法 1 - 保持简单

使用有界 BFGS 并评估f(x)直接地。我正在尝试改进这一点,因为它太慢了。

方法 2 - QP:

f(x)=xTATAx2xTATb+c|x|=12xTQx+dx+c|x|

所以这基本上是标准的二次形式,但是Q现在是巨大的并且是半正定的,因此很难使用。稍微慢一点。

方法 2 - 使用 QR 分解:

这个想法是使用 QR 分解和坐标变换来减小二次矩阵的大小。

AT=QRxTQ=yT

f(x)=xTATAx2xTATb+c|x|=yTRRTy+dQy+c|Qy|

这使得ATA非常小而且执行速度很快。但是,这种转换会迫使数千个(快速)框约束变为线性不等式约束,这会影响性能。慢了很多。

还有其他想法吗?谢谢。

1个回答

这个问题可以表述为一个有界变量的标准正半定 QP。

首先,通过让x=uv, 在哪里u0v0. 然后把问题写成

min(A(uv)b)T(A(uv)b)+cTu+cTv

受制于

B(uv)=d (平等约束)

u 和 v 的上限。

u,v0.

然后使用 QP 的主动集方法来解决这个 QP。在这种方法中,大多数变量都固定在它们的下限或上限,这大大减小了 QP 的大小。你用约束解决了一个简单的线性规划可行性问题B(uv)=d和边界约束以找到初始可行解和初始活动变量集。

在活动集方法的每次迭代中,您在当前活动变量集上求解减小大小的 QP,然后检查最优条件以查看是否应将任何固定变量从其边界释放以及是否应释放任何自由变量固定到他们的上限或下限。

QP 的活动集方法已广泛使用——不要重新发明轮子。