Convex Solvers

Define solver using the cvxpy module, if available.

For np.information on cvxpy, see: http://www.cvxpy.org/en/latest/

If conrad.defs.module_installed() routine does not find the module cvxpy, the variable SolverCVXPY is still defined in this module’s namespace as a lambda returning None with the same method signature as the initializer for SolverCVXPY. If cvxpy is found, the class is defined normally.

solver_cvxpy.SOLVER_DEFAULT

str – Default solver, set to ‘SCS’ if module scs is installed, otherwise set to ‘ECOS’.

Define POGS-based solver using optkit, if available.

For information on POGS, see: https://foges.github.io/pogs/

For infromation on optkit, see: https://github.com/bungun/optkit

If conrad.defs.module_installed() does not find the optkit, the variable SolverOptkit is still defined in the module namespace as a lambda returning None with the same method signature as the initializer for SolverOptkit. If optkit is found, the class is defined normally.

# TODO: change backend switching syntax to check flag .precision_is_64bit instead of current .precision_is_32bit when optkit api updated