Skip to main content

DiscreteCensus

Struct DiscreteCensus 

Source
pub struct DiscreteCensus {
    pub binary: usize,
    pub integer: usize,
    pub nl_both: usize,
    pub nl_cons: usize,
    pub nl_objs: usize,
}
Expand description

Header line 7: nbv niv nlvbi nlvci nlvoi (gh#987).

In AMPL’s convention nbv and niv count only the discrete variables that appear linearly; a discrete variable that appears nonlinearly is counted in nlvbi / nlvci / nlvoi instead, not in nbv + niv. So a MINLP whose integers all appear nonlinearly has nbv = niv = 0 — reading only those two fields reports it as continuous.

Fields§

§binary: usize

nbv: binary variables appearing only linearly.

§integer: usize

niv: other integer variables appearing only linearly.

§nl_both: usize

nlvbi: integer variables nonlinear in both constraints and objectives.

§nl_cons: usize

nlvci: integer variables nonlinear in constraints only.

§nl_objs: usize

nlvoi: integer variables nonlinear in objectives only.

Implementations§

Source§

impl DiscreteCensus

Source

pub fn total(&self) -> usize

Total declared discrete variables, linear and nonlinear (nbv + niv + nlvbi + nlvci + nlvoi).

Source

pub fn nonlinear_discrete(&self) -> usize

Discrete variables that appear nonlinearly (nlvbi + nlvci + nlvoi).

Source

pub fn integer_columns( &self, n: usize, counts: Option<NlCounts>, ) -> Option<Vec<usize>>

The 0-based columns of every discrete variable, from Gay’s variable ordering (“Writing .nl Files”, table 4):

  1. nonlinear in both constraints and objectives — nlvb columns, the last nlvbi of them integer;
  2. nonlinear in constraints only — nlvc − nlvb columns, the last nlvci integer;
  3. nonlinear in objectives only — nlvo − nlvc columns (when positive), the last nlvoi integer;
  4. linear variables, ending in nbv binary then niv integer, which are therefore the last nbv + niv columns of the model.

None when the columns cannot be identified: a nonlinear integer count is non-zero but the header’s line-5 census is missing, or the counts are inconsistent with the block sizes. Callers must report that as not checked, never as passed.

Trait Implementations§

Source§

impl Clone for DiscreteCensus

Source§

fn clone(&self) -> DiscreteCensus

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for DiscreteCensus

Source§

impl Debug for DiscreteCensus

Source§

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

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

impl Default for DiscreteCensus

Source§

fn default() -> DiscreteCensus

Returns the “default value” for a type. Read more
Source§

impl Eq for DiscreteCensus

Source§

impl PartialEq for DiscreteCensus

Source§

fn eq(&self, other: &DiscreteCensus) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for DiscreteCensus

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> Boilerplate for T
where T: Copy + Send + Sync + Debug + PartialEq + 'static,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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