Struct DecisionVariableAnalysis

Source
pub struct DecisionVariableAnalysis { /* private fields */ }
Expand description

The result of analyzing the decision variables in an instance.

§Responsibility

This struct is responsible for

  • Serving kind-based and usage-based partitioning of decision variables to solvers. Solvers only want to know the mathematical properties of the optimization problem. They do not need to know the details of the instance, such as the names of the decision variables and constraints, removed constraints or fixed variables which does not affect the optimization problem itself.

  • Validating the state returned by solvers, and populating the variables which does not passed to the solvers.

    • The state by solvers is valid if:
      • It contains every Self::used decision variables. Other IDs are allowed as long as consistent with the population result.
      • The values for each decision variable are within the bounds.
    • Self::populate checks the state is valid, and populates the state as follows:

§Invariants

Implementations§

Source§

impl DecisionVariableAnalysis

Source

pub fn all(&self) -> &VariableIDSet

The IDs of all decision variables

Source

pub fn binary(&self) -> &Bounds

Source

pub fn integer(&self) -> &Bounds

Source

pub fn continuous(&self) -> &Bounds

Source

pub fn semi_integer(&self) -> &Bounds

Source

pub fn semi_continuous(&self) -> &Bounds

Source

pub fn used_in_objective(&self) -> &VariableIDSet

The set of decision variables that are used in the objective function.

Source

pub fn used_in_constraints(&self) -> &BTreeMap<ConstraintID, VariableIDSet>

The set of decision variables that are used in the constraints.

Source

pub fn used(&self) -> &VariableIDSet

The set of decision variables that are used in the objective function or constraints.

Source

pub fn fixed(&self) -> &BTreeMap<VariableID, f64>

Fixed decision variables

Source

pub fn dependent(&self) -> &BTreeMap<VariableID, (Kind, Bound, Function)>

Dependent variables

Source

pub fn irrelevant(&self) -> &BTreeMap<VariableID, (Kind, Bound)>

The set of decision variables that are not used in the objective or constraints and are not fixed or dependent.

Source§

impl DecisionVariableAnalysis

Source

pub fn used_binary(&self) -> Bounds

Source

pub fn used_integer(&self) -> Bounds

Source

pub fn used_continuous(&self) -> Bounds

Source

pub fn used_semi_integer(&self) -> Bounds

Source

pub fn used_semi_continuous(&self) -> Bounds

Source

pub fn populate( &self, state: State, atol: ATol, ) -> Result<State, StateValidationError>

Check the state is valid, and populate the state with the removed decision variables

§Post-condition

Trait Implementations§

Source§

impl AbsDiffEq for DecisionVariableAnalysis

Check if used decision variables has the same bounds

Other decision variables e.g. fixed are ignored.

Source§

type Epsilon = ATol

Used for specifying relative comparisons.
Source§

fn default_epsilon() -> Self::Epsilon

The default tolerance to use when testing values that are close together. Read more
Source§

fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool

A test for equality that uses the absolute difference to compute the approximate equality of two numbers.
§

fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool

The inverse of [AbsDiffEq::abs_diff_eq].
Source§

impl Clone for DecisionVariableAnalysis

Source§

fn clone(&self) -> DecisionVariableAnalysis

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for DecisionVariableAnalysis

Source§

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

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

impl PartialEq for DecisionVariableAnalysis

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for DecisionVariableAnalysis

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> 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> 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> Same for T

Source§

type Output = T

Should always be Self
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 = 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.
§

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

§

fn vzip(self) -> V

§

impl<T> ErasedDestructor for T
where T: 'static,