Troubleshooting

is_dbcp() returns false

Inspect problem.x_prob and problem.y_prob separately with CVXPY’s is_dcp() diagnostics. One of the problems still contains a non-DCP composition after the opposite variable block has been replaced by parameters. Check that the two supplied groups are disjoint and that every variable omitted from both can remain active in both subproblems. The groups need not be exhaustive. Also check that CVXPY knows any signs required by the product composition rules.

The constructor itself can raise TypeError for a specialized constraint class that DBCP does not know how to copy. See the supported constraint families.

Feasible initialization fails

A direct solve can raise dbcp.error.InitiationError when its alternating slack-minimization phase cannot find a point satisfying the original constraints. Assign feasible or nearly feasible values to the model variables, try another random seed, or call solve(mode="penalty") when a penalized infeasible start is appropriate.

A convex subproblem fails

dbcp.error.SolveError means a fixed convex subproblem failed or returned a status other than CVXPY’s optimal or optimal_inaccurate. Try another compatible CVXPY solver, improve scaling or initial values, or increase lbd to strengthen the proximal regularization.

The solve reaches the iteration limit

converged_inaccurate and converged_inaccurate_with_slack mean the objective-gap stopping test was not met within max_iter. The _with_slack suffix additionally means that the final total slack exceeds slack_tol. Inspect the variable values and objective, then consider another starting point, a larger iteration budget, or a different lbd. If the objective is near zero, adjust abs_tol; if its magnitude is large, adjust rel_tol. Calling solve() again continues from the current variable values.

A penalty-mode result has excess slack

Statuses ending in _with_slack mean the total absolute slack is greater than slack_tol. Inspect the original constraint residuals, then consider increasing the strictly positive nu, initializing closer to the original feasible set, or using another convex solver.

CVXPY reports a non-DPP or canonicalization-backend warning

DBCP requires each fixed problem to be DCP, but it does not require the parameterized problem to be DPP. CVXPY may therefore warn that a parameterized subproblem will be canonicalized again or that it selected the SciPy canonicalization backend. These warnings concern compilation and performance; they do not by themselves mean that is_dbcp() should be false. Prefer an equivalent DPP formulation when one exists, and select a canonicalization backend explicitly only when that choice is intentional.