pub struct NlTnlp { /* private fields */ }Implementations§
Source§impl NlTnlp
impl NlTnlp
Sourcepub fn new(prob: NlProblem) -> NlTnlp
pub fn new(prob: NlProblem) -> NlTnlp
Build the TNLP, panicking if AMPL external-function resolution fails.
Kept for the many infallible call sites (CLI, tests) that operate on
.nl models known to need no external libraries. Surfaces that can be
handed an arbitrary user model — notably the Python read_nl binding —
must call Self::try_new instead so a missing $AMPLFUNC library
becomes a catchable error rather than an uncatchable panic across the
pyo3 boundary.
Sourcepub fn try_new(prob: NlProblem) -> Result<NlTnlp, String>
pub fn try_new(prob: NlProblem) -> Result<NlTnlp, String>
Build the TNLP, returning an error (instead of panicking) when AMPL
imported functions named by the model can’t be resolved — e.g.
$AMPLFUNC is unset, a named library is missing/unloadable, or a
referenced function id isn’t registered by any loaded library.
pub fn final_x(&self) -> Option<&[f64]>
pub fn final_obj(&self) -> f64
Trait Implementations§
Source§impl ExpressionProvider for NlTnlp
impl ExpressionProvider for NlTnlp
Source§fn constraint_expression(&self, i: usize) -> Option<FbbtTape>
fn constraint_expression(&self, i: usize) -> Option<FbbtTape>
Per-.nl-row constraint expression tape, with the linear
part folded in. Returns None for constraints that contribute
neither a nonlinear expression nor any linear coefficients
(so FBBT skips them — there’s nothing to tighten).
Source§fn variable_name(&self, i: usize) -> Option<&str>
fn variable_name(&self, i: usize) -> Option<&str>
Variable name from the sibling .col file, if one was loaded.
Index is original .nl column order.
Source§fn constraint_name(&self, i: usize) -> Option<&str>
fn constraint_name(&self, i: usize) -> Option<&str>
Constraint name from the sibling .row file, if one was loaded.
Index is original .nl row order.
Source§fn objective_expression(&self) -> Option<FbbtTape>
fn objective_expression(&self) -> Option<FbbtTape>
Self::constraint_expression; FBBT does not use the
objective today, but a future OBBT-style pass might.Source§impl TNLP for NlTnlp
impl TNLP for NlTnlp
Source§fn get_var_con_metadata(
&mut self,
var: &mut MetaData,
con: &mut MetaData,
) -> bool
fn get_var_con_metadata( &mut self, var: &mut MetaData, con: &mut MetaData, ) -> bool
Publish the .col / .row names (captured at load time) under the
conventional idx_names metadata key, in original .nl order. The
adapter permutes these into split space (see
OrigIpoptNlp::split_space_names) so the debugger can report a
near-singular Jacobian row as the mass_balance equation rather
than “row 3” — the model-vs-index gap Lee et al. (2024,
https://doi.org/10.69997/sct.147875) flag for equation-oriented
model debugging. Declines (returns false) when the model shipped no
name files so callers fall back to index labels.
Source§fn get_nlp_info(&mut self) -> Option<NlpInfo>
fn get_nlp_info(&mut self) -> Option<NlpInfo>
Source§fn get_bounds_info(&mut self, b: BoundsInfo<'_>) -> bool
fn get_bounds_info(&mut self, b: BoundsInfo<'_>) -> bool
Source§fn get_starting_point(&mut self, sp: StartingPoint<'_>) -> bool
fn get_starting_point(&mut self, sp: StartingPoint<'_>) -> bool
Source§fn eval_grad_f(&mut self, x: &[f64], _new_x: bool, grad: &mut [f64]) -> bool
fn eval_grad_f(&mut self, x: &[f64], _new_x: bool, grad: &mut [f64]) -> bool
x into grad_f.Source§fn eval_g(&mut self, x: &[f64], _new_x: bool, g: &mut [f64]) -> bool
fn eval_g(&mut self, x: &[f64], _new_x: bool, g: &mut [f64]) -> bool
g(x).Source§fn eval_jac_g(
&mut self,
x: Option<&[f64]>,
_new_x: bool,
mode: SparsityRequest<'_>,
) -> bool
fn eval_jac_g( &mut self, x: Option<&[f64]>, _new_x: bool, mode: SparsityRequest<'_>, ) -> bool
g. Sparsity vs. values selected by
mode. x and new_x are unused on the structure call.Source§fn eval_h(
&mut self,
x: Option<&[f64]>,
_new_x: bool,
obj_factor: f64,
lambda: Option<&[f64]>,
_new_lambda: bool,
mode: SparsityRequest<'_>,
) -> bool
fn eval_h( &mut self, x: Option<&[f64]>, _new_x: bool, obj_factor: f64, lambda: Option<&[f64]>, _new_lambda: bool, mode: SparsityRequest<'_>, ) -> bool
Source§fn finalize_solution(&mut self, sol: Solution<'_>, _d: &IpoptData, _q: &IpoptCq)
fn finalize_solution(&mut self, sol: Solution<'_>, _d: &IpoptData, _q: &IpoptCq)
Source§fn get_constraints_linearity(&mut self, types: &mut [Linearity]) -> bool
fn get_constraints_linearity(&mut self, types: &mut [Linearity]) -> bool
nlp_scaling_method=equilibration-based.Source§fn get_scaling_parameters(&mut self, _req: ScalingRequest<'_>) -> bool
fn get_scaling_parameters(&mut self, _req: ScalingRequest<'_>) -> bool
nlp_scaling_method=user-scaling. Default: declines.Source§fn get_variables_linearity(&mut self, _types: &mut [Linearity]) -> bool
fn get_variables_linearity(&mut self, _types: &mut [Linearity]) -> bool
Source§fn get_number_of_nonlinear_variables(&mut self) -> i32
fn get_number_of_nonlinear_variables(&mut self) -> i32
Source§fn get_list_of_nonlinear_variables(
&mut self,
_pos_nonlin_vars: &mut [i32],
) -> bool
fn get_list_of_nonlinear_variables( &mut self, _pos_nonlin_vars: &mut [i32], ) -> bool
Self::get_nlp_info.Source§fn intermediate_callback(
&mut self,
_stats: IterStats,
_ip_data: &IpoptData,
_ip_cq: &IpoptCq,
) -> bool
fn intermediate_callback( &mut self, _stats: IterStats, _ip_data: &IpoptData, _ip_cq: &IpoptCq, ) -> bool
User_Requested_Stop.Source§fn finalize_metadata(&mut self, _var: &MetaData, _con: &MetaData)
fn finalize_metadata(&mut self, _var: &MetaData, _con: &MetaData)
Self::finalize_solution. Default does nothing.Auto Trait Implementations§
impl !Send for NlTnlp
impl !Sync for NlTnlp
impl Freeze for NlTnlp
impl RefUnwindSafe for NlTnlp
impl Unpin for NlTnlp
impl UnsafeUnpin for NlTnlp
impl UnwindSafe for NlTnlp
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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