Skip to main content

SolverOrchestrator

Struct SolverOrchestrator 

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

High-level solver facade that combines routing with execution.

Owns a SolverRouter and delegates to the appropriate solver backend. Provides a solve_with_fallback method that automatically retries with progressively more robust (but slower) algorithms when the first choice fails.

§Example

use ruvector_solver::router::{SolverOrchestrator, RouterConfig};
use ruvector_solver::types::{ComputeBudget, CsrMatrix, QueryType};

let orchestrator = SolverOrchestrator::new(RouterConfig::default());

let matrix = CsrMatrix::<f64>::from_coo(3, 3, vec![
    (0, 0, 2.0), (0, 1, -0.5),
    (1, 0, -0.5), (1, 1, 2.0), (1, 2, -0.5),
    (2, 1, -0.5), (2, 2, 2.0),
]);
let rhs = vec![1.0, 0.0, 1.0];
let budget = ComputeBudget::default();

let result = orchestrator
    .solve(&matrix, &rhs, QueryType::LinearSystem, &budget)
    .unwrap();
assert!(result.residual_norm < 1e-6);

Implementations§

Source§

impl SolverOrchestrator

Source

pub fn new(config: RouterConfig) -> Self

Create a new orchestrator with the provided routing configuration.

Source

pub fn router(&self) -> &SolverRouter

Return a reference to the inner router.

Source

pub fn solve( &self, matrix: &CsrMatrix<f64>, rhs: &[f64], query: QueryType, budget: &ComputeBudget, ) -> Result<SolverResult, SolverError>

Auto-select the best algorithm and solve Ax = b.

Analyses the sparsity profile of matrix, routes to the best algorithm via SolverRouter::select_algorithm, and dispatches.

§Errors

Returns SolverError if the selected solver fails (e.g. non-convergence, dimension mismatch, numerical instability).

Source

pub fn solve_with_fallback( &self, matrix: &CsrMatrix<f64>, rhs: &[f64], query: QueryType, budget: &ComputeBudget, ) -> Result<SolverResult, SolverError>

Solve with a deterministic fallback chain.

Tries the routed algorithm first. On failure, falls back through:

  1. Selected algorithm (from routing)
  2. CG (robust iterative)
  3. Dense (direct, always works for small systems)

Each step is only attempted if the previous one returned an error.

§Errors

Returns the error from the last fallback attempt if all fail.

Source

pub fn estimate_complexity( &self, matrix: &CsrMatrix<f64>, query: &QueryType, ) -> ComplexityEstimate

Estimate the computational complexity of solving with the routed algorithm, without actually solving.

Useful for admission control, cost estimation, or deciding whether to batch multiple queries.

Source

pub fn analyze_sparsity(matrix: &CsrMatrix<f64>) -> SparsityProfile

Analyse the sparsity profile of a CSR matrix.

Performs a single O(nnz) pass over the matrix to compute structural and numerical properties used by the router. This is intentionally cheap so it can be called on every solve request.

Trait Implementations§

Source§

impl Clone for SolverOrchestrator

Source§

fn clone(&self) -> SolverOrchestrator

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 SolverOrchestrator

Source§

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

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

impl Default for SolverOrchestrator

Source§

fn default() -> Self

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

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