Skip to main content

ClarabelOptionsBuilder

Struct ClarabelOptionsBuilder 

Source
pub struct ClarabelOptionsBuilder {
    pub clarabel_settings: DefaultSettings<f64>,
    pub allow_almost_solved: bool,
    pub allow_max_iterations: bool,
    pub allow_max_time: bool,
    pub allow_callback_terminated: bool,
    pub allow_insufficient_progress: bool,
    pub verbosity: Verbosity,
}
Expand description

Builder for ClarabelOptions.

Usage policy:

Fields§

§clarabel_settings: DefaultSettings<f64>

Raw Clarabel settings that will be embedded into built options.

§allow_almost_solved: bool

Whether to accept SolverStatus::AlmostSolved as usable.

§allow_max_iterations: bool

Whether to accept SolverStatus::MaxIterations as usable.

§allow_max_time: bool

Whether to accept SolverStatus::MaxTime as usable.

§allow_callback_terminated: bool

Whether to accept SolverStatus::CallbackTerminated as usable.

§allow_insufficient_progress: bool

Whether to accept SolverStatus::InsufficientProgress as usable.

§verbosity: Verbosity

Verbosity level for diagnostics during reachability analysis.

Implementations§

Source§

impl ClarabelOptionsBuilder

Source

pub fn new() -> Self

Create a builder with crate default Clarabel settings. Defaults:

  • verbosity = Verbosity::Silent;
  • clarabel_settings = default_clarabel_settings();
  • allow_almost_solved = true, all other allow_* switches are false.
Source

pub fn with_clarabel_setting(clarabel_settings: DefaultSettings<f64>) -> Self

Create a builder from caller-provided Clarabel settings. This is intended for users who need direct control over Clarabel tolerances, limits, or linear-solver behavior.

§Example
use copp::diag::Verbosity;
use copp::solver::copp2_socp::ClarabelOptionsBuilder;
use clarabel::solver::DefaultSettings;

let custom = DefaultSettings::<f64> {
    tol_gap_rel: 1e-7,
    max_iter: 300,
    verbose: true,
    ..Default::default()
};

let options = ClarabelOptionsBuilder::with_clarabel_setting(custom)
    .verbosity(Verbosity::Debug)
    .build()
    .expect("valid options");

assert!(options.clarabel_settings().tol_gap_rel <= 1.01e-7);
Source

pub fn verbosity(self, verbosity: Verbosity) -> Self

Set crate-level verbosity used by solver wrappers and algorithm diagnostics.

Source

pub fn clarabel_setting(self, clarabel_settings: DefaultSettings<f64>) -> Self

Replace Clarabel settings in the builder.

Source

pub fn allow_almost_solved(self, allow: bool) -> Self

Allow SolverStatus::AlmostSolved. This is enabled by default; pass false for a strict solved-only policy. Rationale: AlmostSolved usually means the solver is very close to strict tolerances and the returned primal vector is often practically usable.

Integration contract used by wrapper APIs:

  • if status is SolverStatus::Solved or enabled by allow_*, wrapper returns Some(a);
  • otherwise wrapper returns None;
  • in both branches, full Clarabel solution should still be returned to support expert post-analysis.
Source

pub fn allow_max_iterations(self, allow: bool) -> Self

Allow SolverStatus::MaxIterations. Meaning: solver stopped because iteration cap was reached.

Source

pub fn allow_max_time(self, allow: bool) -> Self

Allow SolverStatus::MaxTime. Meaning: solver stopped because time budget was reached.

Source

pub fn allow_callback_terminated(self, allow: bool) -> Self

Allow SolverStatus::CallbackTerminated. Meaning: solver was terminated by user callback logic.

Source

pub fn allow_insufficient_progress(self, allow: bool) -> Self

Allow SolverStatus::InsufficientProgress. Meaning: solver progress was judged insufficient before full convergence.

Source

pub fn build(self) -> Result<ClarabelOptions, CoppError>

Build finalized ClarabelOptions. Normalization rule: if verbosity <= Verbosity::Summary, clarabel_settings.verbose is forcibly set to false. This keeps output ownership at crate level and avoids interleaved duplicate logs.

Trait Implementations§

Source§

impl Default for ClarabelOptionsBuilder

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

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.