Papers
Topics
Authors
Recent
Search
2000 character limit reached

Disciplined Biconvex Programming (DBCP)

Updated 10 November 2025
  • Disciplined Biconvex Programming (DBCP) is a framework that defines biconvex optimization problems with a clear block structure, ensuring biconvexity by design.
  • It extends Disciplined Convex Programming by enforcing strict syntax and variable-interaction rules through a restricted product rule.
  • The framework automatically splits problems into DCP-compliant subproblems solved via alternate convex search, facilitating rapid prototyping in CVXPY.

Disciplined Biconvex Programming (DBCP) is a modeling and solution framework for specifying and solving biconvex optimization problems. Biconvex problems are nonconvex optimization problems in which variables can be partitioned into two blocks so that, when one block is fixed, the objective and constraints are convex in the other block. The DBCP framework extends the principles of Disciplined Convex Programming (DCP) to the biconvex setting, providing a syntax and verification mechanism that guarantees biconvexity by construction, and enabling automatic generation and solution of the resulting subproblems via alternate convex search (ACS). DBCP is implemented as an open-source extension to the Python package CVXPY.

1. Formal Structure of Biconvex Problems

Let X⊆Rn\mathcal X \subseteq \mathbb R^n and Y⊆Rk\mathcal Y \subseteq \mathbb R^k be nonempty closed convex sets. A set B⊆X×YB \subseteq \mathcal X \times \mathcal Y is biconvex if all slices By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \} are convex for each fixed y∈Yy \in \mathcal Y, and all Bx={y∈Y∣(x,y)∈B}B_x = \{ y \in \mathcal Y \mid (x,y) \in B \} are convex for each fixed x∈Xx \in \mathcal X. An extended-real-valued function f:X×Y→R∪{+∞}f : \mathcal X \times \mathcal Y \to \mathbb R \cup \{+\infty\} is biconvex if its effective domain is biconvex and both fy(x)f_y(x) and fx(y)f_x(y) are convex in Y⊆Rk\mathcal Y \subseteq \mathbb R^k0 and Y⊆Rk\mathcal Y \subseteq \mathbb R^k1 for fixed Y⊆Rk\mathcal Y \subseteq \mathbb R^k2 and Y⊆Rk\mathcal Y \subseteq \mathbb R^k3, respectively.

A canonical biconvex optimization problem is:

Y⊆Rk\mathcal Y \subseteq \mathbb R^k4

where each Y⊆Rk\mathcal Y \subseteq \mathbb R^k5 is biconvex and each Y⊆Rk\mathcal Y \subseteq \mathbb R^k6 is biaffine (affine in Y⊆Rk\mathcal Y \subseteq \mathbb R^k7). The feasible set is thus biconvex, but globally solving such problems is generally NP-hard. Practical algorithms target stationary or partially optimal points.

Arithmetic and composition rules extend from convex analysis: non-negative weighted sums and pointwise maxima of biconvex functions are biconvex; if Y⊆Rk\mathcal Y \subseteq \mathbb R^k8 is convex and nondecreasing in each argument and Y⊆Rk\mathcal Y \subseteq \mathbb R^k9 is biaffine, then B⊆X×YB \subseteq \mathcal X \times \mathcal Y0 is biconvex.

2. Syntax and Verification Rules in DBCP

DBCP extends DCP with a carefully restricted product rule to express admissible biconvex terms. In DCP, objective and constraint expressions are recursively constructed from atomic operations with known curvature and monotonicity, strictly forbidding arbitrary products unless one operand is a constant or of known sign. DBCP introduces the following product rule:

A product B⊆X×YB \subseteq \mathcal X \times \mathcal Y1 is permitted if B⊆X×YB \subseteq \mathcal X \times \mathcal Y2 and B⊆X×YB \subseteq \mathcal X \times \mathcal Y3 are DCP-compliant and one of the following ensures biconvexity:

  1. B⊆X×YB \subseteq \mathcal X \times \mathcal Y4 and B⊆X×YB \subseteq \mathcal X \times \mathcal Y5 are both affine in B⊆X×YB \subseteq \mathcal X \times \mathcal Y6.
  2. B⊆X×YB \subseteq \mathcal X \times \mathcal Y7 is affine, nonnegative, and B⊆X×YB \subseteq \mathcal X \times \mathcal Y8 is convex.
  3. B⊆X×YB \subseteq \mathcal X \times \mathcal Y9 is affine, nonpositive, and By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}0 is concave.
  4. By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}1 is convex, nonnegative, and By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}2 is convex, nonnegative.
  5. By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}3 is concave, nonpositive, and By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}4 is concave, nonpositive.

Additionally, the variable-interaction graph (nodes are variables, edges indicate variables on opposite sides of a product) must be acyclic and bipartite, preventing cyclic "multi-block" dependencies that would destroy biconvexity.

Variables are partitioned into two blocks, By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}5 and By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}6. Any remaining variables that only appear in convex expressions may be left outside the partition as these do not participate in alternation.

3. Automatic Problem Transformation and Solver Generation

Once a compliant DBCP problem is specified, the problem is automatically split into two DCP subproblems according to the supplied partition. The solution loop is an instance of alternate convex search (ACS), also known as block coordinate descent in this setting.

Given an initial feasible By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}7, the iterates are: By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}8

Each subproblem is DCP-compliant and can be solved with any conic, QP, or SOCP solver supported by CVXPY (e.g., ECOS, OSQP).

A generic ACS implementation in pseudocode:

Bx={y∈Y∣(x,y)∈B}B_x = \{ y \in \mathcal Y \mid (x,y) \in B \}1

DBCP supports proximal-regularized subproblems by augmenting the objective with By={x∈X∣(x,y)∈B}B_y = \{ x \in \mathcal X \mid (x,y) \in B \}9 or y∈Yy \in \mathcal Y0 to promote stability and strong convexity; the proximal weight y∈Yy \in \mathcal Y1 is user-configurable via the lbd keyword.

For initialization, if no feasible y∈Yy \in \mathcal Y2 is supplied, DBCP solves a relaxed feasibility problem

y∈Yy \in \mathcal Y3

via ACS until the total slack is zero, producing a feasible point. Alternatively, an infeasible-start penalized ACS variant minimizes y∈Yy \in \mathcal Y4 over the same relaxed constraints, controlled by the penalty parameter y∈Yy \in \mathcal Y5.

4. Convergence and Theoretical Properties

Under the assumption that each convex subproblem possesses a unique minimizer or attains its infimum, and that all relevant level sets are compact, the ACS sequence of objective values is monotone nonincreasing and bounded below:

y∈Yy \in \mathcal Y6

with y∈Yy \in \mathcal Y7 for some y∈Yy \in \mathcal Y8. If y∈Yy \in \mathcal Y9, the limit is a stationary or partially optimal point of the original biconvex problem. There is no guarantee of finding a global minimum; in general, different initializations may yield convergence to different local optima.

5. Practical Implementation in CVXPY/dbcp: Examples

DBCP is implemented as a lightweight extension of CVXPY, under the Python package dbcp. Users express biconvex problems at a high level as in DCP, then specify the block partition of variables.

Example 1: Low-Rank Approximation

Bx={y∈Y∣(x,y)∈B}B_x = \{ y \in \mathcal Y \mid (x,y) \in B \}2

Example 2: Nonnegative Matrix Factorization

Bx={y∈Y∣(x,y)∈B}B_x = \{ y \in \mathcal Y \mid (x,y) \in B \}3

Example 3: Bx={y∈Y∣(x,y)∈B}B_x = \{ y \in \mathcal Y \mid (x,y) \in B \}0-Means Clustering via Soft Assignments

Bx={y∈Y∣(x,y)∈B}B_x = \{ y \in \mathcal Y \mid (x,y) \in B \}4

Infeasible start and relaxation variants can be accessed via BiconvexRelaxProblem, allowing penalty-based constraint handling.

6. Benefits, Limitations, and Extensions

The DBCP framework centralizes the modeling and solution of biconvex problems:

Aspect DBCP Mechanism Comment
Modeling Simplicity High-level syntax, automated splitting No manual ACS coding
Correctness Syntax/graph checks for biconvexity Ensures each subproblem is DCP-compliant
Modularity User options for proximal weights, penalties Easily adapted to problem structure
Expressiveness Rapid prototyping of new problem forms Swap objectives/constraints in seconds

However, DBCP only guarantees locally optimal or stationary points and is sensitive to initialization. Overhead can be high since each ACS iteration invokes an external convex solver. Not all biconvex problems are representable if the DBCP product rule or variable-interaction graph constraints are violated.

Open directions include:

  • Extension to multi-convex programming for more than two blocks (Shen et al., 2016).
  • Heuristic combination with global optimization methods for valid lower and upper bounds.
  • Embedded biconvex subproblems within stochastic or dynamic models (e.g., inside EM loops).

Disciplined biconvex programming thus provides a rigorous, modular way to formulate and solve a broad class of biconvex optimization problems in a manner that is robust to user modeling errors and allows rapid experimentation, provided the inherent local nature of the solution landscape is accepted as a fundamental limitation.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (1)

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to Disciplined Biconvex Programming (DBCP).