投影到凸多面体上的最近点

计算科学 迭代法 计算几何 凸优化 二次规划 投影
2021-12-13 09:54:51

我有一个点和一个凸多面体作为半空间的交集:yRdP

P={xRda1xb1,,anxbn}.

我想将投影到多面体上,即找到最近的点:换句话说,根据 z \in \mathcal{P} 最小化\ |我知道有使用二次规划的算法,但我希望有一个简单的实现方法,即使它不是最优的。yzPyz2zP

这是一种可能的增量方法:选择距离最远的半空间,即找到最大化,然后将投影到该半空间上,即将替换为,然后重复。(我假设在不失一般性的情况下,不等式已被归一化,因此。)虽然这可能不会产生最佳解决方案,但我希望在经过固定次数的迭代后,它会接近最优解。yiaiybiyyy=y(aiybi)aiai2=1

这是一个好方法吗?有没有更好的方法,易于实施并且效果相当好?

1个回答

假设不在多面体中(很容易检查它是否在,我们知道在这种情况下距离为零)。如果在外面,那么最近的点将在多面体的表面上。yy

所以我想出了以下(可怕的)算法,它会给你一个上限。y0=y

  1. 求点到所有平面的距离。ynaix=bi
  2. 选择最近的一个,保存距离,将投影到平面上并得到yyn+1
  3. 出于步骤 1 和 2 的目的,从列表中删除该平面。
  4. 重复步骤 1-3,直到在多面体内。yn+1

您在此过程中节省的距离总和将是上限。由于它是一个凸多面体,因此该算法应在最多 5 次迭代中终止. 我对最后一个声明不太确定,所以我要删除它

您还可以潜在地计算之间的距离以获得更好的上限。yyn+1