pyproximal.projection.HyperPlaneBoxProj#
- class pyproximal.projection.HyperPlaneBoxProj(coeffs, scalar, lower=-inf, upper=inf, maxiter=100, xtol=1e-05)[source]#
Orthogonal projection of the intersection between a Hyperplane and a Box.
- Parameters
- coeffs
np.ndarray
Vector of coefficients used in the definition of the hyperplane
- scalar
float
Scalar used in the definition of the hyperplane
- lower
float
ornp.ndarray
, optional Lower bound of Box
- upper
float
ornp.ndarray
, optional Upper bound of Box
- maxiter
int
, optional Maximum number of iterations used by
scipy.optimize.bisect
- xtol
float
, optional Absolute tolerance of
scipy.optimize.bisect
- coeffs
Notes
Given the definition of an Hyperplane:
\[H_{c,b} = \{ \mathbf{x}: \mathbf{c}^T \mathbf{x} = b\}\]that of a Box (see
pyproximal.projection.Box.BoxProj
), the intersection between the two can be written as:\[C = Box_{[l, u]} \cap H_{c,b} = \{ \mathbf{x}: \mathbf{c}^T \mathbf{x} = b , \; l \leq x_i \leq u \}\]The orthogonal projection of such intersection is given by:
\[P_C = P_{Box_{[l, u]}} (\mathbf{x} - \mu^* \mathbf{c})\]where \(\mu\) is obtained by solving the following equation by bisection
\[f(\mu) = \mathbf{c}^T P_{Box_{[l, u]}} (\mathbf{x} - \mu \mathbf{c}) - b\]Methods
__init__
(coeffs, scalar[, lower, upper, ...])