pycvxset.common.constantsΒΆ

The following provides the default constants used in pycvxset.

 1# Copyright (C) 2020-2026 Mitsubishi Electric Research Laboratories (MERL)
 2#
 3# SPDX-License-Identifier: AGPL-3.0-or-later
 4
 5# Code purpose:  Specify the constants to be used with cvxpy when optimization problems as well as testing workflows
 6
 7PYCVXSET_ZERO = 1e-6  # Zero threshold for numerical stability
 8PYCVXSET_ZERO_GUROBI = 1e-5  # Zero threshold for numerical stability when using GUROBI
 9# Zero threshold for vertex clustering when computing polytopic inner-approximation of constrained zonotopes
10PYCVXSET_ZERO_CDD = 1e-5
11PLOTTING_DECIMAL_PRECISION_CDD = 3
12
13# Solvers used by default
14DEFAULT_LP_SOLVER_STR = "CLARABEL"  # CLARABEL, MOSEK, CVXOPT, SCS, ECOS, GUROBI, OSQP
15DEFAULT_SOCP_SOLVER_STR = "CLARABEL"  # CLARABEL, MOSEK, CVXOPT, SCS, ECOS, GUROBI
16DEFAULT_SDP_SOLVER_STR = "SCS"  # CLARABEL, MOSEK, CVXOPT, SCS
17
18# CVXPY args used by default (use "reoptimize": True when using GUROBI)
19DEFAULT_CVXPY_ARGS_LP = {"solver": DEFAULT_LP_SOLVER_STR}
20DEFAULT_CVXPY_ARGS_SOCP = {"solver": DEFAULT_SOCP_SOLVER_STR}
21DEFAULT_CVXPY_ARGS_SDP = {"solver": DEFAULT_SDP_SOLVER_STR}
22
23# Constants for spread_points_on_a_unit_sphere (SPOAUS)
24SPOAUS_SLACK_TOLERANCE = 1e-8
25SPOAUS_COST_TOLERANCE = 1e-5
26SPOAUS_INITIAL_TAU = 1.0
27SPOAUS_SCALING_TAU = 1.1
28SPOAUS_TAU_MAX = 1e4
29SPOAUS_ITERATIONS_AT_TAU_MAX = 20
30SPOAUS_MINIMUM_NORM_VALUE_SQR = 0.8**2
31# For SPOAUS_DIRECTIONS_PER_QUADRANT=20, we have 2D = 84, 3D = 166, 4D = 328, 5D = 650
32SPOAUS_DIRECTIONS_PER_QUADRANT = 20
33SPOAUS_SAVE_POINTS_ON_A_UNIT_SPHERE = True
34
35# Time limit
36TIME_LIMIT_FOR_CONSTRAINED_ZONOTOPE_CONTAINMENT_GUROBI_IN_S = 60
37
38# Testing workflow constants | You could also do "GUROBI" in cvxpy.installed_solvers()
39# "no", "minimal", "full" ("minimal", "full" need GUROBI license set up / connection to a gurobi license server)
40# "full" also tests spread_points_on_a_unit_sphere with SPOAUS_DIRECTIONS_PER_QUADRANT for 3D
41TESTING_STATEMENTS_INVOLVING_GUROBI = "minimal"  # (Default: minimal)
42TESTING_SHOW_PLOTS = False
43
44# Plotting constants for polytopes
45DEFAULT_PATCH_ARGS_2D = {"edgecolor": "k", "facecolor": "skyblue"}
46DEFAULT_PATCH_ARGS_3D = {"edgecolor": "k", "facecolor": None}
47DEFAULT_VERTEX_ARGS = {"visible": False, "s": 30, "marker": "o", "color": "k"}
48
49# Default constants for qhull options
50# Be resilient to slight degeneracies by default
51DEFAULT_QHULL_OPTIONS = ""
52# Prefer QHULL over CDD for vertex-facet enumerations (plot still uses CDD)
53PREFER_QHULL_OVER_CDD = False