2

This is exactly the same question as Orthogonal Projection of $ z $ onto the Affine set $ \left\{ x \mid A x = b \right\} $ except I want to project on only a half affine space instead of a full affine space.

The parameters $A$ and $b$ of the problem are as in the linked question : from this question we know that a projection of $z$ onto the affine subspace $\{x\mid Ax=b\}$ is given by :

$$x =z-A^T (AA^T)^{-1}(Az-b)$$

( we suppose here that $A$ has more columns than rows and is full rank, as in the quoted question).

  1. What about the projection onto the half-space ?

  2. What if I want the projections of $z$ onto the affine half-space or the full affine space, but regarding another scalar product than the canonical one, say the one related to a bilinear symmetric definite positive endomorphism given by a matrix $P$.

Royi
  • 10,050
lrnv
  • 286
  • 1
  • 9
  • I haven't tried to derive a closed form. But this is intersection of sets which the projection to each is known. So just use the method in https://math.stackexchange.com/questions/1492095. – Royi Dec 20 '20 at 17:36
  • I would express your problem as a convex optimization problem and just solve it using a suitable optimization algorithm. – littleO Dec 20 '20 at 17:46

1 Answers1

1

The problem is given by:

$$\begin{aligned} \arg \min_{x} \quad & \frac{1}{2} {\left\| x - z \right\|}_{2}^{2} \\ \text{subject to} \quad & A x = b \\ & x \geq 0 \end{aligned}$$

I am not sure there is a closed form solution for this.
Moreover, since the set $ \left\{ x \mid x \geq 0 \right\} $ isn't a sub space we can't use the alternating projection method (See Projections onto Convex Sets).

It can be solved using the Dykstra's Projection Algorithm from Orthogonal Projection onto the Intersection of Convex Sets.

The projection onto each set are given by:

  1. $ \operatorname{Proj}_{ \left\{ x \mid A x = b \right\} } \left( z \right) = z - {A}^{T} {\left( A {A}^{T} \right)}^{-1} \left( A z - b \right) $.
  2. $ \operatorname{Proj}_{ \left\{ x \mid x \geq 0 \right\} } \left( z \right) = \max \left( z, 0 \right) $.

A MATLAB implementation of the projection using Dykstra's Projection Algorithm which is verified vs. CVX is available at my StackExchange Mathematics Q3537129 GitHub Repository.

Royi
  • 10,050