pub struct IpoptNlpAdapter { /* private fields */ }Implementations§
Source§impl IpoptNlpAdapter
impl IpoptNlpAdapter
Sourcepub fn new(nlp: Rc<RefCell<dyn IpoptNlp>>) -> Self
pub fn new(nlp: Rc<RefCell<dyn IpoptNlp>>) -> Self
Build the adapter from an IpoptNlp handle. Dimensions are
queried directly from Nlp::n(), Nlp::m_eq(),
Nlp::m_ineq().
Sourcepub fn new_with_declared_bounds(nlp: Rc<RefCell<dyn IpoptNlp>>) -> Self
pub fn new_with_declared_bounds(nlp: Rc<RefCell<dyn IpoptNlp>>) -> Self
The same adapter, but reporting the bounds the user declared rather
than the live ones the interior method widened by
bound_relax_factor.
For the interior iteration the widening is the point — it is what
keeps a strictly-interior iterate from being pinned against a bound
it must approach. For anything asking where the solution sits
relative to the model, it inverts the answer: a point exactly on a
declared bound is a full 1e-8 inside the relaxed one, so an
activity test against the live bounds calls the binding constraint
inactive, and a pivot against them stops short of it. That is the
difference between crossover identifying the active set and
crossover identifying nothing.
Falls back to the live bounds for any block the NLP does not track
(the trait accessors default to None).
Trait Implementations§
Source§impl SqpProblemSpec for IpoptNlpAdapter
impl SqpProblemSpec for IpoptNlpAdapter
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> ⓘ
Source§fn 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.Source§fn 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).Auto Trait Implementations§
impl !RefUnwindSafe for IpoptNlpAdapter
impl !Send for IpoptNlpAdapter
impl !Sync for IpoptNlpAdapter
impl !UnwindSafe for IpoptNlpAdapter
impl Freeze for IpoptNlpAdapter
impl Unpin for IpoptNlpAdapter
impl UnsafeUnpin for IpoptNlpAdapter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T, U> Imply<T> for U
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more