Skip to main content

HighsSolver

Struct HighsSolver 

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

HiGHS LP solver instance implementing SolverInterface.

Owns an opaque HiGHS handle and pre-allocated buffers for solution extraction, scratch i32 index conversion, and statistics accumulation.

Construct with HighsSolver::new. The handle is destroyed automatically when the instance is dropped.

§Example

use cobre_solver::{HighsSolver, SolverInterface};

let solver = HighsSolver::new().expect("HiGHS initialisation failed");
assert_eq!(solver.name(), "HiGHS");

Implementations§

Source§

impl HighsSolver

Source

pub fn new() -> Result<Self, SolverError>

Creates a new HiGHS solver instance with performance-tuned defaults.

Calls cobre_highs_create() to allocate the HiGHS handle, then applies the eight default options defined in HiGHS Implementation SS4.1:

OptionValueType
solver"simplex"string
simplex_strategy4int
simplex_scale_strategy2int
presolve"off"string
parallel"off"string
output_flag0bool
primal_feasibility_tolerance1e-7double
dual_feasibility_tolerance1e-7double
§Errors

Returns Err(SolverError::InternalError { .. }) if:

  • cobre_highs_create() returns a null pointer.
  • Any configuration call returns HIGHS_STATUS_ERROR.

In both failure cases the HiGHS handle is destroyed before returning to prevent a resource leak.

Trait Implementations§

Source§

impl Drop for HighsSolver

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl SolverInterface for HighsSolver

Source§

fn name(&self) -> &'static str

Returns a static string identifying the solver backend (e.g., "HiGHS"). Read more
Source§

fn load_model(&mut self, template: &StageTemplate)

Bulk-loads a pre-assembled structural LP (first step of rebuild sequence). Read more
Source§

fn add_rows(&mut self, cuts: &RowBatch)

Appends constraint rows to the dynamic constraint region (step 2 of rebuild). Read more
Source§

fn set_row_bounds(&mut self, indices: &[usize], lower: &[f64], upper: &[f64])

Updates row bounds (step 3 of rebuild; patching for scenario realization). Read more
Source§

fn set_col_bounds(&mut self, indices: &[usize], lower: &[f64], upper: &[f64])

Updates column bounds (per-scenario variable bound patching). Read more
Source§

fn solve(&mut self) -> Result<SolutionView<'_>, SolverError>

Solves the LP, returning a zero-copy view or terminal error after retry exhaustion. Read more
Source§

fn reset(&mut self)

Clears internal solver state for error recovery or LP structure change. Read more
Source§

fn get_basis(&mut self, out: &mut Basis)

Writes solver-native i32 status codes into a caller-owned Basis buffer. Read more
Source§

fn solve_with_basis( &mut self, basis: &Basis, ) -> Result<SolutionView<'_>, SolverError>

Injects a basis and solves, returning a zero-copy SolutionView. Read more
Source§

fn statistics(&self) -> SolverStatistics

Returns accumulated solve metrics (snapshot of monotonically increasing counters). Read more
Source§

impl Send for HighsSolver

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