cobyqa.subsolvers.normal_byrd_omojokun(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}\min_{s \in \mathbb{R}^n} \quad \frac{1}{2} \big( \lVert \max \{ A_{\scriptscriptstyle I} s - b_{\scriptscriptstyle I}, 0 \} \rVert^2 + \lVert A_{\scriptscriptstyle E} s - b_{\scriptscriptstyle E} \rVert^2 \big) \quad \text{s.t.} \quad \left\{ \begin{array}{l} l \le s \le u,\\ \lVert s \rVert \le \Delta, \end{array} \right.\end{split}\]

using a variation of the truncated conjugate gradient method.

aubnumpy.ndarray, shape (m_linear_ub, n)

Matrix \(A_{\scriptscriptstyle I}\) as shown above.

bubnumpy.ndarray, shape (m_linear_ub,)

Vector \(b_{\scriptscriptstyle I}\) as shown above.

aeqnumpy.ndarray, shape (m_linear_eq, n)

Matrix \(A_{\scriptscriptstyle E}\) as shown above.

beqnumpy.ndarray, shape (m_linear_eq,)

Vector \(b_{\scriptscriptstyle E}\) as shown above.

xlnumpy.ndarray, shape (n,)

Lower bounds \(l\) as shown above.

xunumpy.ndarray, shape (n,)

Upper bounds \(u\) as shown above.


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


Whether to make debugging tests during the execution.

numpy.ndarray, shape (n,)

Approximate solution \(s\).

Other Parameters:
improve_tcgbool, 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).


This function implements Algorithm 6.4 of [1]. It is assumed that the origin is feasible with respect to the bound constraints and that delta is finite and positive.



T. M. Ragonneau. Model-Based Derivative-Free Optimization Methods and Software. PhD thesis, Department of Applied Mathematics, The Hong Kong Polytechnic University, Hong Kong, China, 2022. URL: