cobyqa.subproblems.bound_constrained_normal_step#

subproblems.bound_constrained_normal_step(aub, bub, aeq, beq, xl, xu, delta, debug, **kwargs)[source]#

Minimize approximately a linear constraint violation subject to bound constraints in a trust region.

This function solves approximately

\[\begin{split}\begin{aligned} \min_{d \in \R^n} & \quad \frac{1}{2} \big(\norm{[A_{\text{ub}}d - b_{\text{ub}}]_+}^2 + \norm{A_{\text{eq}}d - b_{\text{eq}}}^2\big)\\ \text{s.t.} & \quad l \le d \le u,\\ & \quad \norm{d} \le \Delta, \end{aligned}\end{split}\]

using a variation of the truncated conjugate gradient method.

Parameters:
aubnumpy.ndarray, shape (m_linear_ub, n)

Matrix \(A_{\text{ub}}\) as shown above.

bubnumpy.ndarray, shape (m_linear_ub,)

Vector \(b_{\text{ub}}\) as shown above.

aeqnumpy.ndarray, shape (m_linear_eq, n)

Matrix \(A_{\text{eq}}\) as shown above.

beqnumpy.ndarray, shape (m_linear_eq,)

Vector \(b_{\text{eq}}\) as shown above.

xlnumpy.ndarray, shape (n,)

Lower bounds \(l\) as shown above.

xunumpy.ndarray, shape (n,)

Upper bounds \(u\) as shown above.

deltafloat

Trust-region radius \(\Delta\) as shown above.

debugbool

Whether to make debugging tests during the execution.

Returns:
numpy.ndarray, shape (n,)

Approximate solution \(d\).

Other Parameters:
improvebool, optional

If True, a solution generated by the truncated conjugate gradient method that is on the boundary of the trust region is improved by moving around the trust-region boundary on the two-dimensional space spanned by the solution and the gradient of the quadratic function at the solution (default is True).

Notes

It is assumed that the origin is feasible with respect to the bound constraints xl and xu, and that delta is finite and positive.