pycvxset.common.constantsΒΆ

The following provides the default constants used in pycvxset.

 1# Copyright (C) 2020-2025 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
33
34# Time limit
35TIME_LIMIT_FOR_CONSTRAINED_ZONOTOPE_CONTAINMENT_GUROBI_IN_S = 60
36
37# Testing workflow constants | You could also do "GUROBI" in cvxpy.installed_solvers()
38# "no", "minimal" (Requires proper set up of GUROBI license OR connection to a gurobi license server), "full"
39TESTING_STATEMENTS_INVOLVING_GUROBI = "minimal"  # (Default: minimal)
40TEST_3D_PLOTTING = False
41TESTING_SHOW_PLOTS = False
42
43# Plotting constants for polytopes
44DEFAULT_PATCH_ARGS_2D = {"edgecolor": "k", "facecolor": "skyblue"}
45DEFAULT_PATCH_ARGS_3D = {"edgecolor": "k", "facecolor": None}
46DEFAULT_VERTEX_ARGS = {"visible": False, "s": 30, "marker": "o", "color": "k"}