pub trait SqpProblemSpec {
// Required methods
fn n(&self) -> usize;
fn m(&self) -> usize;
fn x_init(&self) -> Vec<Number> ⓘ;
fn variable_bounds(&self) -> (Vec<Number>, Vec<Number>);
fn constraint_bounds(&self) -> (Vec<Number>, Vec<Number>);
fn eval_f(&mut self, x: &[Number]) -> Number;
fn eval_grad_f(&mut self, x: &[Number]) -> Vec<Number> ⓘ;
fn eval_c(&mut self, x: &[Number]) -> Vec<Number> ⓘ;
fn eval_jac_c(&mut self, x: &[Number]) -> Triplet;
fn eval_hess_lag(&mut self, x: &[Number], lambda_g: &[Number]) -> Triplet;
}Required Methods§
fn n(&self) -> usize
fn m(&self) -> usize
fn x_init(&self) -> Vec<Number> ⓘ
fn variable_bounds(&self) -> (Vec<Number>, Vec<Number>)
fn constraint_bounds(&self) -> (Vec<Number>, Vec<Number>)
fn eval_f(&mut self, x: &[Number]) -> Number
fn eval_grad_f(&mut self, x: &[Number]) -> Vec<Number> ⓘ
Sourcefn eval_c(&mut self, x: &[Number]) -> Vec<Number> ⓘ
fn eval_c(&mut self, x: &[Number]) -> Vec<Number> ⓘ
c(x) — combined constraint values (length m). The
constraint bounds from constraint_bounds apply directly:
row i is a strict equality if bl[i] == bu[i], an
inequality otherwise.
Sourcefn eval_jac_c(&mut self, x: &[Number]) -> Triplet
fn eval_jac_c(&mut self, x: &[Number]) -> Triplet
∇c(x) as a sparse m × n triplet (1-based indices).
Sourcefn eval_hess_lag(&mut self, x: &[Number], lambda_g: &[Number]) -> Triplet
fn eval_hess_lag(&mut self, x: &[Number], lambda_g: &[Number]) -> Triplet
∇²L(x, λ_g) = ∇²f(x) + Σ λ_g_i · ∇²c_i(x) as a sparse
symmetric n × n triplet.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".