pyproximal.projection.HyperPlaneBoxProjยถ
- class pyproximal.projection.HyperPlaneBoxProj(coeffs: ndarray[tuple[Any, ...], dtype[_ScalarT]], scalar: float, lower: float | ndarray[tuple[Any, ...], dtype[_ScalarT]] = -inf, upper: float | ndarray[tuple[Any, ...], dtype[_ScalarT]] = inf, maxiter: int = 100, xtol: float = 1e-05)[source]ยถ
Orthogonal projection of the intersection between a Hyperplane and a Box.
- Parameters:
- coeffs
numpy.ndarray Vector of coefficients used in the definition of the hyperplane
- scalar
float Scalar used in the definition of the hyperplane
- lower
floatornumpy.ndarray, optional Lower bound of Box
- upper
floatornumpy.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, ...])