L-BFGS quadratic model through HiGHS#
The two-loop recursion is the unconstrained L-BFGS step. HiGHS is
used only when that step must sit in a feasible set: an Linftrust
region, a box on x + p, and optional linear equalities.
The QP is min 1/2 ||p - d||^2 with d = -H g and Q = I. A dense
compact Hessian is not formed; that matrix is indefinite after a tiny
accepted step and Highs_run does not return.
Unconstrained, highs_step is the two-loop direction. A box or trust
region scales the whole increment (direction preserved). Packed
centering is a mean subtract. Arbitrary equalities still go to HiGHS.
When a host Hessian is present (rgmin_solver_step_hess) and
rgmin_solver_set_highs is on, HiGHS solves the convex Newton QP
min 1/2 p^T P p + g^T p with per-coordinate boxes from atom
maxmove. That is the path eOn / rgpot / any eindir objective share.
Without the highs cargo feature the setter returns 1.
Enable the feature (HiGHS is compiled by highs-sys; do that on the
remote builder):
cargo test --features highs
use rgmin::{HighsStep, Lbfgs};
let mut opt = Lbfgs::default();
opt.highs = Some(HighsStep {
trust: Some(0.5),
lo: Some(-1.0),
hi: Some(1.0),
equalities: Vec::new(),
center_axes: None,
});
landfold --highs is this step on chi, not sequential LP.