Solver backends
- class autolyap.SolverOptions(
- backend: str = 'mosek_fusion',
- mosek_params: Mapping[str, Any] | None = None,
- cvxpy_solver: str | None = None,
- cvxpy_solver_params: Mapping[str, Any] | None = None,
- cvxpy_accept_inaccurate: bool = True,
Bases:
objectConfigure solver backend selection and backend-specific options.
Used in
solver_optionsargument ofsearch_lyapunov().solver_optionsargument ofbisection_search_rho().solver_optionsargument ofsearch_lyapunov().
Parameters
backend(str, default"mosek_fusion")Selects the modeling/solver backend.
"mosek_fusion"builds and solves directly with MOSEK Fusion."cvxpy"builds the problem in CVXPY and solves it withcvxpy_solver.mosek_params(Mapping[str, Any] | None, defaultNone)Extra MOSEK Fusion solver options as key-value pairs. Used only when
backend="mosek_fusion". IfNone, AutoLyap applies the explicit default MOSEK profile:intpntCoTolPfeas=1e-8,intpntCoTolDfeas=1e-8,intpntCoTolRelGap=1e-8, andintpntMaxIterations=1000.cvxpy_solver(str | None, defaultNone)Name of the CVXPY solver, for example
"CLARABEL","SCS","MOSEK","SDPA", or"COPT". IfNone, CVXPY chooses the solver. Used only whenbackend="cvxpy".cvxpy_solver_params(Mapping[str, Any] | None, defaultNone)Extra solver options for the selected CVXPY solver. See the examples below for recommended profiles and common options. AutoLyap applies
warm_start=Trueby default. Used only whenbackend="cvxpy".cvxpy_accept_inaccurate(bool, defaultTrue)Controls which CVXPY statuses are accepted as successful solves. If
True, accept bothOPTIMALandOPTIMAL_INACCURATE. IfFalse, requireOPTIMAL. Used only whenbackend="cvxpy".
Examples
# MOSEK Fusion (explicit default profile; requires `pip install mosek`) SolverOptions( backend="mosek_fusion", mosek_params={ "intpntCoTolPfeas": 1e-8, # default "intpntCoTolDfeas": 1e-8, # default "intpntCoTolRelGap": 1e-8, # default "intpntMaxIterations": 1000, # default }, ) # CVXPY + CLARABEL (explicit default profile) SolverOptions( backend="cvxpy", cvxpy_solver="CLARABEL", cvxpy_accept_inaccurate=True, # default cvxpy_solver_params={ "max_iter": 2000, # default "tol_feas": 1e-8, # default "tol_gap_abs": 1e-8, # default "tol_gap_rel": 1e-8, # default "warm_start": True, # default }, ) # CVXPY + MOSEK (explicit default profile; requires `pip install mosek`) SolverOptions( backend="cvxpy", cvxpy_solver="MOSEK", cvxpy_accept_inaccurate=True, # default cvxpy_solver_params={ "MSK_DPAR_INTPNT_CO_TOL_PFEAS": 1e-8, # default "MSK_DPAR_INTPNT_CO_TOL_DFEAS": 1e-8, # default "MSK_DPAR_INTPNT_CO_TOL_REL_GAP": 1e-8, # default "warm_start": True, # default }, ) # CVXPY + SDPA (explicit default profile; requires `pip install sdpa-python`) SolverOptions( backend="cvxpy", cvxpy_solver="SDPA", cvxpy_accept_inaccurate=True, # default cvxpy_solver_params={ "maxIteration": 100, # default "epsilonStar": 1e-7, # default "epsilonDash": 1e-7, # default "warm_start": True, # default }, ) # CVXPY + SDPA multiprecision (high-precision profile; requires `pip install sdpa-multiprecision`) SolverOptions( backend="cvxpy", cvxpy_solver="SDPA", cvxpy_accept_inaccurate=True, # default cvxpy_solver_params={ "maxIteration": 500, "epsilonStar": 1e-30, "epsilonDash": 1e-30, "mpfPrecision": 512, "warm_start": True, # default }, ) # CVXPY + SCS (explicit default profile) SolverOptions( backend="cvxpy", cvxpy_solver="SCS", cvxpy_accept_inaccurate=True, # default cvxpy_solver_params={ "eps": 1e-6, # default "max_iters": 200000, # default "acceleration_lookback": 0, # default "warm_start": True, # default }, ) # CVXPY + COPT (explicit default profile; requires `pip install coptpy`) SolverOptions( backend="cvxpy", cvxpy_solver="COPT", cvxpy_accept_inaccurate=True, # default cvxpy_solver_params={ "SDPMethod": 0, # default "BarIterLimit": 500, # default "FeasTol": 1e-7, # default "DualTol": 1e-7, # default "RelGap": 1e-8, # default "AbsGap": 1e-8, # default "Presolve": -1, # default "Scaling": -1, # default "Dualize": -1, # default "warm_start": True, # default }, )