1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Minimal NLP-evaluation trait the SQP outer loop binds against.
//!
//! Distinct from [`crate::ipopt_nlp::IpoptNlp`] (the rich IPM-
//! shaped interface with slacks, bound vector spaces, and
//! IPM-specific initialization hooks). `SqpProblemSpec` is a thin
//! evaluation surface — just what `SqpAlgorithm::optimize` calls
//! per iteration.
//!
//! The adapter from `IpoptNlp` to `SqpProblemSpec` lives in
//! [`crate::sqp::ipopt_adapter::IpoptNlpAdapter`], so the same
//! benchmarks (CUTEst, `.nl` files, `pounce-py`) drive both
//! algorithm paths via the `AlgorithmChoice` dispatch in
//! `alg_builder`.
use crateTriplet;
use Number;