Skip to main content

Basis

Struct Basis 

Source
pub struct Basis {
    pub col_status: Vec<i32>,
    pub row_status: Vec<i32>,
}
Expand description

Simplex basis storing solver-native i32 status codes for zero-copy round-trip basis management.

Basis stores the raw solver i32 status codes directly, enabling zero-copy round-trip warm-starting via copy_from_slice (memcpy). This avoids per-element translation overhead when the caller only needs to save and restore the basis without inspecting individual statuses.

HiGHS uses HighsInt (4 bytes) for status codes; CLP uses unsigned char (1 byte, widened to i32 in this representation). The caller is responsible for matching the buffer dimensions to the LP model before use.

See Solver Abstraction SS9.

Fields§

§col_status: Vec<i32>

Solver-native i32 status codes for each column (length must equal num_cols).

§row_status: Vec<i32>

Solver-native i32 status codes for each row, including structural and dynamic rows.

Implementations§

Source§

impl Basis

Source

pub fn new(num_cols: usize, num_rows: usize) -> Self

Creates a new Basis with pre-allocated, zero-filled status code buffers.

Both col_status and row_status are allocated to the requested lengths and filled with 0_i32. The caller reuses this buffer across solves by passing it to crate::SolverInterface::get_basis on each iteration.

Trait Implementations§

Source§

impl Clone for Basis

Source§

fn clone(&self) -> Basis

Returns a duplicate 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 Basis

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Basis

§

impl RefUnwindSafe for Basis

§

impl Send for Basis

§

impl Sync for Basis

§

impl Unpin for Basis

§

impl UnsafeUnpin for Basis

§

impl UnwindSafe for Basis

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> 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.