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.


Vector of coefficients used in the definition of the hyperplane


Scalar used in the definition of the hyperplane

lowerfloat or np.ndarray, optional

Lower bound of Box

upperfloat or np.ndarray, optional

Upper bound of Box

maxiterint, optional

Maximum number of iterations used by scipy.optimize.bisect

xtolfloat, optional

Absolute tolerance of scipy.optimize.bisect


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\]


__init__(coeffs, scalar[, lower, upper, ...])