pub trait Nlp {
// Required methods
fn n(&self) -> i32;
fn m_eq(&self) -> i32;
fn m_ineq(&self) -> i32;
fn eval_f(&mut self, x: &(dyn Vector + 'static)) -> f64;
fn eval_grad_f(
&mut self,
x: &(dyn Vector + 'static),
g: &mut (dyn Vector + 'static),
);
fn eval_c(
&mut self,
x: &(dyn Vector + 'static),
c: &mut (dyn Vector + 'static),
);
fn eval_d(
&mut self,
x: &(dyn Vector + 'static),
d: &mut (dyn Vector + 'static),
);
fn eval_jac_c(&mut self, x: &(dyn Vector + 'static)) -> Rc<dyn Matrix>;
fn eval_jac_d(&mut self, x: &(dyn Vector + 'static)) -> Rc<dyn Matrix>;
fn eval_h(
&mut self,
x: &(dyn Vector + 'static),
obj_factor: f64,
y_c: &(dyn Vector + 'static),
y_d: &(dyn Vector + 'static),
) -> Rc<dyn SymMatrix>;
}Expand description
Lower-level NLP interface (post-TNLPAdapter). Equality and
inequality constraints are already separated; bounds are already
classified into x_l_map / x_u_map / etc.
This is the equivalent of upstream Ipopt::NLP.
Required Methods§
fn n(&self) -> i32
fn m_eq(&self) -> i32
fn m_ineq(&self) -> i32
fn eval_f(&mut self, x: &(dyn Vector + 'static)) -> f64
fn eval_grad_f( &mut self, x: &(dyn Vector + 'static), g: &mut (dyn Vector + 'static), )
fn eval_c(&mut self, x: &(dyn Vector + 'static), c: &mut (dyn Vector + 'static))
fn eval_d(&mut self, x: &(dyn Vector + 'static), d: &mut (dyn Vector + 'static))
fn eval_jac_c(&mut self, x: &(dyn Vector + 'static)) -> Rc<dyn Matrix>
fn eval_jac_d(&mut self, x: &(dyn Vector + 'static)) -> Rc<dyn Matrix>
fn eval_h( &mut self, x: &(dyn Vector + 'static), obj_factor: f64, y_c: &(dyn Vector + 'static), y_d: &(dyn Vector + 'static), ) -> Rc<dyn SymMatrix>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".