from __future__ import annotations
from typing import Any, Callable, ClassVar, Literal, Protocol, TypedDict, overload
import numpy as np
from numpy.typing import NDArray
from .core import ClarabelDirectSolveMethod, ClarabelDirectSolveMethodLike, ClarabelSolverStatus, Verbosity, VerbosityLike
from .interpolation import Profile3rd
class ClarabelLinearSolverInfo:
method: ClarabelDirectSolveMethod
threads: int
direct: bool
nnz_a: int
nnz_l: int
class ClarabelSettings:
max_iter: int
time_limit: float
verbose: bool
max_step_fraction: float
tol_gap_abs: float
tol_gap_rel: float
tol_feas: float
tol_infeas_abs: float
tol_infeas_rel: float
tol_ktratio: float
reduced_tol_gap_abs: float
reduced_tol_gap_rel: float
reduced_tol_feas: float
reduced_tol_infeas_abs: float
reduced_tol_infeas_rel: float
reduced_tol_ktratio: float
equilibrate_enable: bool
equilibrate_max_iter: int
equilibrate_min_scaling: float
equilibrate_max_scaling: float
linesearch_backtrack_step: float
min_switch_step_length: float
min_terminate_step_length: float
max_threads: int
direct_kkt_solver: bool
direct_solve_method: ClarabelDirectSolveMethod
static_regularization_enable: bool
static_regularization_constant: float
static_regularization_proportional: float
dynamic_regularization_enable: bool
dynamic_regularization_eps: float
dynamic_regularization_delta: float
iterative_refinement_enable: bool
iterative_refinement_reltol: float
iterative_refinement_abstol: float
iterative_refinement_max_iter: int
iterative_refinement_stop_ratio: float
presolve_enable: bool
input_sparse_dropzeros: bool
def __init__(
self,
*,
max_iter: int = 200,
time_limit: float = np.inf,
verbose: bool = False,
max_step_fraction: float = 0.99,
tol_gap_abs: float = 1.0e-8,
tol_gap_rel: float = 1.0e-8,
tol_feas: float = 1.0e-8,
tol_infeas_abs: float = 1.0e-8,
tol_infeas_rel: float = 1.0e-8,
tol_ktratio: float = 1.0e-6,
reduced_tol_gap_abs: float = 5.0e-5,
reduced_tol_gap_rel: float = 5.0e-5,
reduced_tol_feas: float = 1.0e-4,
reduced_tol_infeas_abs: float = 5.0e-12,
reduced_tol_infeas_rel: float = 5.0e-5,
reduced_tol_ktratio: float = 1.0e-4,
equilibrate_enable: bool = True,
equilibrate_max_iter: int = 20,
equilibrate_min_scaling: float = 1.0e-4,
equilibrate_max_scaling: float = 1.0e4,
linesearch_backtrack_step: float = 0.8,
min_switch_step_length: float = 0.1,
min_terminate_step_length: float = 1.0e-4,
max_threads: int = 0,
direct_kkt_solver: bool = True,
direct_solve_method: ClarabelDirectSolveMethodLike = ClarabelDirectSolveMethod.AUTO,
static_regularization_enable: bool = True,
static_regularization_constant: float = 1.0e-8,
static_regularization_proportional: float = 4.930380657631324e-32,
dynamic_regularization_enable: bool = True,
dynamic_regularization_eps: float = 1.0e-13,
dynamic_regularization_delta: float = 2.0e-7,
iterative_refinement_enable: bool = True,
iterative_refinement_reltol: float = 1.0e-13,
iterative_refinement_abstol: float = 1.0e-12,
iterative_refinement_max_iter: int = 10,
iterative_refinement_stop_ratio: float = 5.0,
presolve_enable: bool = True,
input_sparse_dropzeros: bool = False,
) -> None:
...
class ClarabelOptions:
verbosity: Verbosity
allow_almost_solved: bool
allow_max_iterations: bool
allow_max_time: bool
allow_callback_terminated: bool
allow_insufficient_progress: bool
clarabel_settings: ClarabelSettings
def __init__(
self,
*,
verbosity: VerbosityLike = Verbosity.SILENT,
allow_almost_solved: bool = True,
allow_max_iterations: bool = False,
allow_max_time: bool = False,
allow_callback_terminated: bool = False,
allow_insufficient_progress: bool = False,
clarabel_settings: ClarabelSettings | None = None,
) -> None:
...
class Copp2SocpResult:
a: NDArray[np.float64] | None
x: NDArray[np.float64]
z: NDArray[np.float64]
s: NDArray[np.float64]
solver_status: ClarabelSolverStatus
obj_val: float
obj_val_dual: float
solve_time: float
iterations: int
r_prim: float
r_dual: float
linsolver: ClarabelLinearSolverInfo
objective_value: float | None
objective_terms: NDArray[np.float64] | None
class Copp3ClarabelResult:
profile: Profile3rd | None
x: NDArray[np.float64]
z: NDArray[np.float64]
s: NDArray[np.float64]
solver_status: ClarabelSolverStatus
obj_val: float
obj_val_dual: float
solve_time: float
iterations: int
r_prim: float
r_dual: float
linsolver: ClarabelLinearSolverInfo
objective_value: float | None
objective_terms: NDArray[np.float64] | None