Skip to main content

NlTnlp

Struct NlTnlp 

Source
pub struct NlTnlp { /* private fields */ }

Implementations§

Source§

impl NlTnlp

Source

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.

Source

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.

Source

pub fn final_x(&self) -> Option<&[f64]>

Source

pub fn final_obj(&self) -> f64

Trait Implementations§

Source§

impl Debug for NlTnlp

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl ExpressionProvider for NlTnlp

Source§

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>

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>

Constraint name from the sibling .row file, if one was loaded. Index is original .nl row order.

Source§

fn objective_expression(&self) -> Option<FbbtTape>

Expression tape for the objective. Optional in the same sense as Self::constraint_expression; FBBT does not use the objective today, but a future OBBT-style pass might.
Source§

impl TNLP for NlTnlp

Source§

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>

Required. Problem dimensions and triplet index style.
Source§

fn get_bounds_info(&mut self, b: BoundsInfo<'_>) -> bool

Required. Variable / constraint bounds.
Source§

fn get_starting_point(&mut self, sp: StartingPoint<'_>) -> bool

Required. Initial primal (and optionally dual) point.
Source§

fn eval_f(&mut self, x: &[f64], _new_x: bool) -> Option<f64>

Required. Objective value at x.
Source§

fn eval_grad_f(&mut self, x: &[f64], _new_x: bool, grad: &mut [f64]) -> bool

Required. Objective gradient at x into grad_f.
Source§

fn eval_g(&mut self, x: &[f64], _new_x: bool, g: &mut [f64]) -> bool

Required. Constraint values g(x).
Source§

fn eval_jac_g( &mut self, x: Option<&[f64]>, _new_x: bool, mode: SparsityRequest<'_>, ) -> bool

Required. Jacobian of 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

Required for exact Hessian, optional for L-BFGS. Hessian of the Lagrangian. Default returns false (signals to %Ipopt that quasi-Newton must be used).
Source§

fn finalize_solution(&mut self, sol: Solution<'_>, _d: &IpoptData, _q: &IpoptCq)

Required. Receives the final iterate after solve.
Source§

fn get_constraints_linearity(&mut self, types: &mut [Linearity]) -> bool

Constraint linearity tags. Used by adaptive-mu’s nlp_scaling_method=equilibration-based.
Source§

fn get_scaling_parameters(&mut self, _req: ScalingRequest<'_>) -> bool

User-supplied scaling, used only when nlp_scaling_method=user-scaling. Default: declines.
Source§

fn get_variables_linearity(&mut self, _types: &mut [Linearity]) -> bool

Variable linearity tags (used by Bonmin, not by Ipopt).
Source§

fn get_number_of_nonlinear_variables(&mut self) -> i32

Number of variables that appear nonlinearly. Returning -1 means “treat all as nonlinear” (the Ipopt default).
Source§

fn get_list_of_nonlinear_variables( &mut self, _pos_nonlin_vars: &mut [i32], ) -> bool

List of nonlinear variable indices, in the index style returned from Self::get_nlp_info.
Source§

fn intermediate_callback( &mut self, _stats: IterStats, _ip_data: &IpoptData, _ip_cq: &IpoptCq, ) -> bool

Per-iteration intermediate callback. Returning false requests early termination with User_Requested_Stop.
Source§

fn finalize_metadata(&mut self, _var: &MetaData, _con: &MetaData)

Final metadata pass — called just before Self::finalize_solution. Default does nothing.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ByRef<T> for T

Source§

fn by_ref(&self) -> &T

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more