This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

HDSDP: Software for Semidefinite Programming

Wenzhi Gao  Dongdong Ge  Yinyu Ye [email protected]@[email protected]
Abstract

HDSDP is a numerical software solving the semidefinite programming problems. The main framework of HDSDP resembles the dual-scaling interior point solver DSDP[2] and several new features, including a dual method based on the simplified homogeneous self-dual embedding, have been implemented. The embedding technique enhances stability of the dual method and several new heuristics and computational techniques are designed to accelerate its convergence. HDSDP aims to show how dual-scaling algorithm benefits from the self-dual embedding and it is developed in parallel to DSDP5.8. Numerical experiments over several classical benchmark datasets exhibit its robustness and efficiency, and particularly its advantages on SDP instances featuring low-rank structure and sparsity. HDSDP is open-sourced under MIT license and available at https://github.com/COPT-Public/HDSDP.

1 Introduction

Semidefinite programming (SDP) is defined by

min𝐗\displaystyle\min_{\mathbf{X}} 𝐂,𝐗\displaystyle\left\langle\mathbf{C},\mathbf{X}\right\rangle
subject to 𝒜𝐗=𝐛\displaystyle\mathcal{A}\mathbf{X}=\mathbf{b}
𝐗𝕊+n,\displaystyle\mathbf{X}\in\mathbb{S}_{+}^{n},

where we study linear optimization subject to affine constraints over the cone of positive-semidefinite matrices. Due to its extensive modeling capability, SDP has been broadly adopted by communities including combinatorial optimization [11, 16], dynamic systems [26], sums of squares optimization [15], quantum information [12], and distance geometry [5, 23]. We refer the interested readers to [28] for a more comprehensive review.

While SDP proves useful in practice, a fundamental issue is to numerically solve it. Theoretically, SDP is a convex conic problem admitting polynomial-time algorithms, and for general SDPs, the interior point method (IPM) is known as a robust and efficient approach. Since the 1990s, high-performance SDP softwares based on the IPM have been developed, including DSDP [2], COPT [10], Mosek [1], Sedumi [19], SDPT3 [25], CSDP [7], SDPA [29] and so forth. While most SDP codes are IPM-based, there are also successful attempts using other methods (for example, [13, 14, 30]) and a list of these softwares is reviewed by [17].

SDP solvers based on IPM variants exhibit competitive convergence behavior both theoretically and practically. Most softwares implement primal-dual path-following approaches using either infeasible start [21] or the embedding technique [20], with DSDP being an exception: DSDP adopts a dual IPM method based on the potential reduction framework developed by [4]. Since its initial release [3], DSDP has gone through several major updates and evolved into a popular SDP software [2]. To further improve DSDP, we make an important extension by incorporating the homogeneous self-dual embedding technique into the dual algorithm. This new implementation, named HDSDP, is presented in this manuscript.

The manuscript is organized as follows. Section 2 describes the formulation of interest and some basic notations; Section 3 reviews the dual-scaling algorithm and describes how embedding technique can be applied. In Section 4 and 5, we introduce the practical aspects for HDSDP, including software design and algorithm configuration. Last we present comprehensive numerical results on SDP problems.

2 Formulation and Notations

HDSDP solves both primal and dual SDPs in standard form

(P)min𝐗𝐂,𝐗subject to𝐀i,𝐗=𝐛,i=1,,m𝐗𝕊+n\begin{array}[]{lccl}(P)&\min_{\mathbf{X}}&\left\langle\mathbf{C},\mathbf{X}\right\rangle&\\ &\text{subject to}&\left\langle\mathbf{A}_{i},\mathbf{X}\right\rangle=\mathbf{b},&i=1,\ldots,m\\ &&\mathbf{X}\in\mathbb{S}_{+}^{n}&\end{array}  (D)max𝐲,𝐒𝐛𝐲subject toi=1m𝐀iyi+𝐒=𝐂𝐒𝕊+n,\begin{array}[]{lcc}(D)&\max_{\mathbf{y},\mathbf{S}}&\mathbf{b}^{\top}\mathbf{y}\\ &\text{subject to}&\sum_{i=1}^{m}\mathbf{A}_{i}y_{i}+\mathbf{S}=\mathbf{C}\\ &&\mathbf{S}\in\mathbb{S}_{+}^{n},\end{array}

where the problem data {𝐀i},𝐂\{\mathbf{A}_{i}\},\mathbf{C} are n×nn\times n symmetric matrices (𝕊n\mathbb{S}^{n}) and 𝐛m\mathbf{b}\in\mathbb{R}^{m} is a real vector. Matrix inner product ,\langle\cdot,\cdot\rangle is defined by 𝐀,𝐗:=i,jcijxij\left\langle\mathbf{A},\mathbf{X}\right\rangle:=\sum_{i,j}c_{ij}x_{ij} and 𝕊+n\mathbb{S}_{+}^{n} denotes the cone of positive semidefinite matrices. For brevity we use 𝐗0\mathbf{X}\succeq\textbf{0} to denote the relation 𝐗𝕊+n\mathbf{X}\in\mathbb{S}_{+}^{n}, and the linear map 𝒜:𝕊nm\mathcal{A}:\mathbb{S}^{n}\rightarrow\mathbb{R}^{m} together with its adjoint 𝒜:m𝕊n\mathcal{A}^{\ast}:\mathbb{R}^{m}\rightarrow\mathbb{S}^{n} is defined by 𝒜𝐗:=(𝐀,𝐗1,,𝐀m,𝐗m)\mathcal{A}\mathbf{X}:=\left(\left\langle\mathbf{A},\mathbf{X}_{1}\right\rangle,\ldots,\left\langle\mathbf{A}_{m},\mathbf{X}_{m}\right\rangle\right)^{\top} and 𝒜𝐲:=i=1m𝐀iyi\mathcal{A}^{\ast}\mathbf{y}:=\sum_{i=1}^{m}\mathbf{A}_{i}y_{i}. 𝐀F:=ijaij2\left\|\mathbf{A}\right\|_{F}:=\sqrt{\sum_{ij}a_{ij}^{2}} denotes the matrix Frobenius norm. With the above notations, we rewrite the primal and dual problems by

(P)min𝐗𝐂,𝐗subject to𝒜𝐗=𝐛,𝐗0\begin{array}[]{lccl}(P)&\min_{\mathbf{X}}&\left\langle\mathbf{C},\mathbf{X}\right\rangle&\\ &\text{subject to}&\mathcal{A}\mathbf{X}=\mathbf{b},&\\ &&\mathbf{X}\succeq\textbf{0}&\end{array}  (D)max𝐲,𝐒𝐛𝐲subject to𝒜𝐲+𝐒=𝐂𝐒0.\begin{array}[]{lcc}(D)&\max_{\mathbf{y},\mathbf{S}}&\mathbf{b}^{\top}\mathbf{y}\\ &\text{subject to}&\mathcal{A}^{\ast}\mathbf{y}+\mathbf{S}=\mathbf{C}\\ &&\mathbf{S}\succeq\textbf{0}.\end{array}

and primal and dual feasible regions are

(P):={𝐗:𝒜𝐗=𝐛,𝐗0}(D):={(𝐲,𝐒):𝒜𝐲+𝐒=𝐂,𝐒0}.\mathcal{F}(P):=\left\{\mathbf{X}:\mathcal{A}\mathbf{X}=\mathbf{b},\mathbf{X}\succeq\textbf{0}\right\}\qquad\mathcal{F}(D):=\left\{\left(\mathbf{y},\mathbf{S}\right):\mathcal{A}^{\ast}\mathbf{y}+\mathbf{S}=\mathbf{C},\mathbf{S}\succeq\textbf{0}\right\}.

𝐗(P)\mathbf{X}\in\mathcal{F}(P) is primal feasible and (𝐲,𝐒)(D)\left(\mathbf{y},\mathbf{S}\right)\in\mathcal{F}(D) is dual feasible. The interior of these regions are denoted by 0(P),0(D)\mathcal{F}^{0}(P),\mathcal{F}^{0}(D) and a solution in 0\mathcal{F}^{0} is an interior point solution. HDSDP implements a dual method solving (P) and (D) through the self-dual embedding technique.

3 Dual and Homogeneous Dual Scaling Algorithm

In this section, we briefly review the dual-scaling algorithm in DSDP, and give its interpretation through Newton’s method on the KKT system. Then we show how it naturally generalizes to the embedding.

3.1 Dual-scaling Algorithm

Dual-scaling method [4] works under three conditions. 1) the data {𝐀i}\left\{\mathbf{A}_{i}\right\} are linearly independent. 2) Both (P)(P) and (D)(D) admit an interior point solution. 3) an interior dual feasible solution (𝐲0,𝐒0)0(D)\left(\mathbf{y}^{0},\mathbf{S}^{0}\right)\in\mathcal{F}^{0}(D) is known. The first two conditions imply strong duality and the existence of an optimal primal-dual solution pair (𝐗,𝐲,𝐒)\left(\mathbf{X}^{\ast},\mathbf{y}^{\ast},\mathbf{S}^{\ast}\right) satisfying complementarity 𝐗,𝐒=0\left\langle\mathbf{X}^{\ast},\mathbf{S}^{\ast}\right\rangle=0. Also, the central path 𝒞(μ):={(𝐗,𝐲,𝐒)0(P)×0(D):𝐗𝐒=μ𝐈}\mathcal{C}(\mu):=\left\{\left(\mathbf{X},\mathbf{y},\mathbf{S}\right)\in\mathcal{F}^{0}(P)\times\mathcal{F}^{0}(D):\mathbf{X}\mathbf{S}=\mu\mathbf{I}\right\}, which serves as a foundation of path-following approaches, is well-defined. Given a centrality parameter μ\mu, dual method starts from (𝐲,𝐒)0(D)\left(\mathbf{y},\mathbf{S}\right)\in\mathcal{F}^{0}(D) and takes Newton’s step towards the solution of the perturbed KKT system 𝒜𝐗=𝐛,𝒜𝐲+𝐒=𝐂\mathcal{A}\mathbf{X}=\mathbf{b},\mathcal{A}^{\ast}\mathbf{y}+\mathbf{S}=\mathbf{C} and 𝐗𝐒=μ𝐈\mathbf{X}\mathbf{S}=\mu\mathbf{I}

𝒜(𝐗+Δ𝐗)\displaystyle\mathcal{A}\left(\mathbf{X}+\Delta\mathbf{X}\right) =𝐛\displaystyle=\mathbf{b}
𝒜Δ𝐲+Δ𝐒\displaystyle\mathcal{A}^{\ast}\Delta\mathbf{y}+\Delta\mathbf{S} =0\displaystyle=\textbf{0} (2)
μ𝐒1Δ𝐒𝐒1+Δ𝐗\displaystyle\mu\mathbf{S}^{-1}\Delta\mathbf{S}\mathbf{S}^{-1}+\Delta\mathbf{X} =μ𝐒1𝐗,\displaystyle=\mu\mathbf{S}^{-1}-\mathbf{X},

where the last relation linearizes 𝐗=μ𝐒1\mathbf{X}=\mu\mathbf{S}^{-1} instead of 𝐗𝐒=μ𝐈\mathbf{X}\mathbf{S}=\mu\mathbf{I} and 𝐒1\mathbf{S}^{-1} is known as a scaling matrix. By geometrically driving μ\mu to 0, dual-scaling eliminates (primal) infeasibility, approaches optimality, and finally solves the problem to some ε\varepsilon-optimal solution (𝐲ε,𝐒ε)0(D)(\mathbf{y_{\varepsilon}},\mathbf{S_{\varepsilon}})\in\mathcal{F}^{0}(D) such that 𝐛,𝐲ε𝐛,𝐲ε\langle\mathbf{b},\mathbf{y_{\varepsilon}}\rangle\geq\langle\mathbf{b},\mathbf{y^{*}}\rangle-\varepsilon. Theory of dual potential reduction shows an ε\varepsilon-optimal solution can be obtained in 𝒪(log(1/ε))\mathcal{O}(\log(1/\varepsilon)) iterations ignoring dimension dependent constants.

An important feature of dual-scaling is that 𝐗\mathbf{X} and Δ𝐗\Delta\mathbf{X} vanish in the Schur complement of (3.1)

(𝐀1,𝐒1𝐀1𝐒1𝐀1,𝐒1𝐀m𝐒1𝐀m,𝐒1𝐀1𝐒1𝐀m,𝐒1𝐀m𝐒1)Δ𝐲=1μ𝐛𝒜𝐒1,\displaystyle\left(\begin{array}[]{ccc}\left\langle\mathbf{A}_{1},\mathbf{S}^{-1}\mathbf{A}_{1}\mathbf{S}^{-1}\right\rangle&\cdots&\left\langle\mathbf{A}_{1},\mathbf{S}^{-1}\mathbf{A}_{m}\mathbf{S}^{-1}\right\rangle\\ \vdots&\ddots&\vdots\\ \left\langle\mathbf{A}_{m},\mathbf{S}^{-1}\mathbf{A}_{1}\mathbf{S}^{-1}\right\rangle&\cdots&\left\langle\mathbf{A}_{m},\mathbf{S}^{-1}\mathbf{A}_{m}\mathbf{S}^{-1}\right\rangle\end{array}\right)\Delta\mathbf{y}=\frac{1}{\mu}\mathbf{b}-\mathcal{A}\mathbf{S}^{-1}, (6)

and the dual algorithm thereby avoids explicit reference to the primal variable 𝐗\mathbf{X}. For brevity we denote the left-hand side matrix in (6) by 𝐌\mathbf{M}. If {𝐀i},𝐂\left\{\mathbf{A}_{i}\right\},\mathbf{C} are sparse, any feasible dual slack 𝐒=𝐂𝒜𝐲\mathbf{S}=\mathbf{C}-\mathcal{A}^{\ast}\mathbf{y} inherits the aggregated sparsity pattern from the data and it is computationally cheaper to iterate in the dual space. Another feature of dual-scaling is the availability of primal solution by solving a projection subproblem at the end of the algorithm [2]. The aforementioned properties characterize the behavior of the dual-scaling method.

However, the desirable theoretical properties of the dual method is not free. First, an initial dual feasible solution is needed, while obtaining such a solution is often as difficult as solving the original problem. Second, due to a lack of information from primal space, dual-scaling method has to be properly guided to avoid deviating from the central path. To overcome the aforementioned difficulties, DSDP introduces artificial variables with big-MM penalty to ensure a nonempty interior and a trivial dual feasible solution. Moreover, a potential function is introduced to guide the dual iterations. This works well in practice and enhance performance of DSDP. We refer the interested readers to [3, 2] for more implementation details.

Although DSDP proves efficient in real practice, the big-MM method requires prior estimation of the optimal solution to avoid losing optimality. Also, a large penalty often leads to numerical difficulties and mis-classification of infeasible problems when the problem is ill-conditioned. Therefore it is natural to seek better alternatives to the big-MM method, and the self-dual embedding is an ideal candidate.

3.2 Dual-scaling Algorithm using Embedding Technique

Given a standard form SDP, its homogeneous self-dual model is a skew symmetric system containing the original problem data, whose non-trivial interior point solution certificates primal-dual feasibility. HDSDP adopts the following simplified embedding [20].

𝒜𝐗𝐛τ=\displaystyle\mathcal{A}\mathbf{X}-\mathbf{b}\tau={} 0
𝒜𝐲+𝐂τ𝐒=\displaystyle-\mathcal{A}^{\ast}\mathbf{y}+\mathbf{C}\tau-\mathbf{S}={} 0 (7)
𝐛𝐲𝐂,𝐗κ=\displaystyle\mathbf{b}^{\top}\mathbf{y}-\langle\mathbf{C},\mathbf{X}\rangle-\kappa={} 0\displaystyle 0
𝐗,𝐒0,κ,τ\displaystyle\mathbf{X},\mathbf{S}\succeq 0,\kappa,\tau\geq{} 0,\displaystyle 0,

where κ,τ\kappa,\tau are homogenizing variables for infeasibility detection. The central path of barrier parameter μ\mu is given by

𝒜𝐗𝐛τ=\displaystyle\mathcal{A}\mathbf{X}-\mathbf{b}\tau={} 0
𝒜𝐲+𝐂τ𝐒=\displaystyle-\mathcal{A}^{\ast}\mathbf{y}+\mathbf{C}\tau-\mathbf{S}={} 0
𝐛𝐲𝐂,𝐗κ=\displaystyle\mathbf{b}^{\top}\mathbf{y}-\langle\mathbf{C},\mathbf{X}\rangle-\kappa={} 0\displaystyle 0
𝐗𝐒=μ𝐈,κτ=\displaystyle\mathbf{X}\mathbf{S}=\mu\mathbf{I},\kappa\tau={} μ\displaystyle\mu (8)
𝐗,𝐒0,κ,τ\displaystyle\mathbf{X},\mathbf{S}\succeq 0,\kappa,\tau\geq{} 0.\displaystyle 0.

Here (𝐲,𝐒,τ)\left(\mathbf{y},\mathbf{S},\tau\right) are jointly considered as dual variables. Given an (infeasible) dual point (𝐲,𝐒,τ)\left(\mathbf{y},\mathbf{S},\tau\right) such that 𝒜𝐲+𝐂τ𝐒=𝐑-\mathcal{A}^{\ast}\mathbf{y}+\mathbf{C}\tau-\mathbf{S}=\mathbf{R}, HDSDP selects a damping factor γ[0,1]\gamma\in[0,1] and takes Newton’s step towards

𝒜(𝐗+Δ𝐗)𝐛(τ+Δτ)\displaystyle\mathcal{A}(\mathbf{X}+\Delta\mathbf{X})-\mathbf{b}(\tau+\Delta\tau) =0\displaystyle=\textbf{0}
𝒜(𝐲+Δ𝐲)+𝐂(τ+Δτ)(𝐒+Δ𝐒)\displaystyle-\mathcal{A}^{\ast}(\mathbf{y}+\Delta\mathbf{y})+\mathbf{C}(\tau+\Delta\tau)-(\mathbf{S}+\Delta\mathbf{S}) =γ𝐑\displaystyle=-\gamma\mathbf{R}
μ𝐒1Δ𝐒𝐒1+Δ𝐗\displaystyle\mu\mathbf{S}^{-1}\Delta\mathbf{S}\mathbf{S}^{-1}+\Delta\mathbf{X} =μ𝐒1𝐗,\displaystyle=\mu\mathbf{S}^{-1}-\mathbf{X},
μτ2Δτ+Δκ\displaystyle\mu\tau^{-2}\Delta\tau+\Delta\kappa =μτ1κ,\displaystyle=\mu\tau^{-1}-\kappa,

where, similar to DSDP, we modify (8) and linearize 𝐗=μ𝐒1,κ=μτ1\mathbf{X}=\mu\mathbf{S}^{-1},\kappa=\mu\tau^{-1}. We use this damping factor γ\gamma and the barrier parameter μ\mu to manage a trade-off between dual infeasibility, centrality and optimality. If we set γ=0\gamma=0, then the Newton’s direction (Δ𝐲,Δτ)\left(\Delta\mathbf{y},\Delta\tau\right) is computed through the following Schur complement.

(μ𝐌𝐛μ𝒜𝐒1𝐂𝐒1𝐛+μ𝒜𝐒1𝐂𝐒1μ(𝐂,𝐒1𝐂𝐒1+τ2))(Δ𝐲Δτ)=(𝐛τ𝐛𝐲μτ1)μ(𝒜𝐒1𝐂,𝐒1)+μ(𝒜𝐒1𝐑𝐒1𝐂,𝐒1𝐑𝐒1)\displaystyle\Bigg{(}\begin{array}[]{cc}\mu\mathbf{M}&-\mathbf{b}-\mu\mathcal{A}\mathbf{S}^{-1}\mathbf{C}\mathbf{S}^{-1}\\ -\mathbf{b}+\mu\mathcal{A}\mathbf{S}^{-1}\mathbf{C}\mathbf{S}^{-1}&-\mu(\langle\mathbf{C},\mathbf{S}^{-1}\mathbf{C}\mathbf{S}^{-1}\rangle+\tau^{-2})\end{array}\Bigg{)}\left(\begin{array}[]{c}\Delta\mathbf{y}\\ \Delta\tau\end{array}\right)=\left(\begin{array}[]{c}\mathbf{b}\tau\\ \mathbf{b}^{\top}\mathbf{y}-\mu\tau^{-1}\end{array}\right)-\mu\left(\begin{array}[]{c}\mathcal{A}\mathbf{S}^{-1}\\ \langle\mathbf{C},\mathbf{S}^{-1}\rangle\end{array}\right)+\mu\left(\begin{array}[]{c}\mathcal{A}\mathbf{S}^{-1}\mathbf{R}\mathbf{S}^{-1}\\ \langle\mathbf{C},\mathbf{S}^{-1}\mathbf{R}\mathbf{S}^{-1}\rangle\end{array}\right)

In practice, HDSDP solves Δ𝐲1:=𝐌1𝐛,Δ𝐲2:=𝐌1𝒜𝐒1,Δ𝐲3:=𝐌1𝒜𝐒1𝐑𝐒1,Δ𝐲4=𝐌1𝒜𝐒1𝐂𝐒1\Delta\mathbf{y}_{1}:=\mathbf{M}^{-1}\mathbf{b},\Delta\mathbf{y}_{2}:=\mathbf{M}^{-1}\mathcal{A}\mathbf{S}^{-1},\Delta\mathbf{y}_{3}:=\mathbf{M}^{-1}\mathcal{A}\mathbf{S}^{-1}\mathbf{R}\mathbf{S}^{-1},\Delta\mathbf{y}_{4}=\mathbf{M}^{-1}\mathcal{A}\mathbf{S}^{-1}\mathbf{C}\mathbf{S}^{-1}, plugs the solution into Δ𝐲=τ+ΔτμΔ𝐲1Δ𝐲2+Δ𝐲3+Δ𝐲4Δτ\Delta\mathbf{y}=\frac{\tau+\Delta\tau}{\mu}\Delta\mathbf{y}_{1}-\Delta\mathbf{y}_{2}+\Delta\mathbf{y}_{3}+\Delta\mathbf{y}_{4}\Delta\tau to get Δτ\Delta\tau, and finally assembles Δ𝐲\Delta\mathbf{y}. With the above relations, 𝐗(μ):=μ𝐒1(𝐒𝐑+𝒜Δ𝐲𝐂Δτ)𝐒1\mathbf{X}(\mu):=\mu\mathbf{S}^{-1}(\mathbf{S}-\mathbf{R}+\mathcal{A}^{\ast}\Delta\mathbf{y}-\mathbf{C}\Delta\tau)\mathbf{S}^{-1} satisfies 𝒜𝐗(μ)𝐛(τ+Δτ)=0\mathcal{A}\mathbf{X}(\mu)-\mathbf{b}(\tau+\Delta\tau)=\textbf{0} and 𝐗(μ)0\mathbf{X}(\mu)\succeq\textbf{0} if and only if the backward Newton step 𝒜(𝐲Δ𝐲)+𝐂(τΔτ)𝐑0-\mathcal{A}^{\ast}(\mathbf{y}-\Delta\mathbf{y})+\mathbf{C}(\tau-\Delta\tau)-\mathbf{R}\succeq\textbf{0}. When 𝒜(𝐲Δ𝐲)+𝐂(τΔτ)𝐑-\mathcal{A}^{\ast}(\mathbf{y}-\Delta\mathbf{y})+\mathbf{C}(\tau-\Delta\tau)-\mathbf{R} is positive definite, a primal upper-bound follows from simple algebraic manipulation

z¯=\displaystyle\bar{z}={} 𝐂τ,𝐗(μ)\displaystyle\langle\mathbf{C}\tau,\mathbf{X}(\mu)\rangle
=\displaystyle={} 𝐑+𝐒+𝒜𝐲,μ𝐒1(𝐒𝐑+𝒜Δ𝐲𝐂Δτ)𝐒1\displaystyle\langle\mathbf{R}+\mathbf{S}+\mathcal{A}^{\ast}\mathbf{y},\mu\mathbf{S}^{-1}(\mathbf{S}-\mathbf{R}+\mathcal{A}^{\ast}\Delta\mathbf{y}-\mathbf{C}\Delta\tau)\mathbf{S}^{-1}\rangle
=\displaystyle={} (τ+Δτ)𝐛𝐲+nμ+(𝒜𝐒1+𝒜𝐒1𝐑𝐒1)Δ𝐲+μ(𝐂,𝐒1+𝐂,𝐒1𝐂𝐒1)Δτ\displaystyle(\tau+\Delta\tau)\mathbf{b}^{\top}\mathbf{y}+n\mu+(\mathcal{A}\mathbf{S}^{-1}+\mathcal{A}\mathbf{S}^{-1}\mathbf{R}\mathbf{S}^{-1})^{\top}\Delta\mathbf{y}+\mu(\langle\mathbf{C},\mathbf{S}^{-1}\rangle+\langle\mathbf{C},\mathbf{S}^{-1}\mathbf{C}\mathbf{S}^{-1}\rangle)\Delta\tau

and dividing both sides by τ\tau. Alternatively, HDSDP extracts a primal objective bound from the projection problem

min𝐗𝐒1/2𝐗𝐒1/2μ𝐈F2subject to𝒜𝐗=𝐛τ\min_{\mathbf{X}}~{}\|\mathbf{S}^{1/2}\mathbf{X}\mathbf{S}^{1/2}-\mu\mathbf{I}\|_{F}^{2}\quad\text{subject to}\quad\mathcal{A}\mathbf{X}=\mathbf{b}\tau

whose optimal solution is 𝐗(μ):=μ𝐒1(𝐂τ𝒜(𝐲Δ𝐲)𝐑)𝐒1\mathbf{X}^{\prime}(\mu):=\mu\mathbf{S}^{-1}(\mathbf{C}\tau-\mathcal{A}^{\ast}(\mathbf{y}-\Delta^{\prime}\mathbf{y})-\mathbf{R})\mathbf{S}^{-1}. Here Δ𝐲=τμΔ𝐲1Δ𝐲2\Delta\mathbf{y}^{\prime}=\frac{\tau}{\mu}\Delta\mathbf{y}_{1}-\Delta\mathbf{y}_{2} and

z=𝐂τ,𝐗(μ)=μ{𝐑,𝐒1+(𝒜𝐒1𝐑𝐒1+𝒜𝐒1)Δ𝐲+n}+τ𝐛𝐲.z^{\prime}=\langle\mathbf{C}\tau,\mathbf{X}^{\prime}(\mu)\rangle=\mu\{\langle\mathbf{R},\mathbf{S}^{-1}\rangle+(\mathcal{A}\mathbf{S}^{-1}\mathbf{R}\mathbf{S}^{-1}+\mathcal{A}\mathbf{S}^{-1})^{\top}\Delta^{\prime}\mathbf{y}+n\}+\tau\mathbf{b}^{\top}\mathbf{y}.

Using the Newton’s direction Δ𝐲\Delta\mathbf{y}, HDSDP applies a simple ratio test

α=max{α[0,1]:𝐒+αΔ𝐒0,τ+αΔτ0}\alpha=\max\left\{\alpha\in[0,1]:\mathbf{S}+\alpha\Delta\mathbf{S}\succeq\textbf{0},\tau+\alpha\Delta\tau\geq 0\right\} (10)

through a Lanczos procedure [24]. But to determine the aforementioned damping factor γ\gamma, we resort to the following adaptive heuristic: assuming that μ,τ=1\mu\rightarrow\infty,\tau=1 and fixing Δτ=0\Delta\tau=0, the dual update can be decomposed by

𝐒+αΔ𝐒=\displaystyle\mathbf{S}+\alpha\Delta\mathbf{S}={} 𝐒+α(γ𝐑𝒜Δ𝐲)\displaystyle\mathbf{S}+\alpha(\gamma\mathbf{R}-\mathcal{A}^{\ast}\Delta\mathbf{y})
=\displaystyle={} 𝐒+α(γ𝐑𝒜(γΔ𝐲3Δ𝐲2))\displaystyle\mathbf{S}+\alpha(\gamma\mathbf{R}-\mathcal{A}^{\ast}(\gamma\Delta\mathbf{y}_{3}-\Delta\mathbf{y}_{2}))
=\displaystyle={} 𝐒+α𝒜Δ𝐲2+αγ(𝐑𝒜Δ𝐲3),\displaystyle\mathbf{S}+\alpha\mathcal{A}^{\ast}\Delta\mathbf{y}_{2}+\alpha\gamma(\mathbf{R}-\mathcal{A}^{\ast}\Delta\mathbf{y}_{3}),

where the first term 𝐒+α𝒜Δ𝐲2\mathbf{S}+\alpha\mathcal{A}^{\ast}\Delta\mathbf{y}_{2} is independent of γ\gamma and improves centrality of the iteration. HDSDP conducts a Lanczos line-search to find αc\alpha_{c} such that the logarithmic barrier function is improved

logdet(𝐒+αcΔ𝐒)logdet(τ+αcΔτ)logdet𝐒logdetτ.-\log\det(\mathbf{S}+\alpha_{c}\Delta\mathbf{S})-\log\det(\tau+\alpha_{c}\Delta\tau)\leq-\log\det\mathbf{S}-\log\det\tau.

Then given α=αc\alpha=\alpha_{c}, by a second Lanczos line-search we find the maximum possible γ1\gamma\leq 1 such that 𝐒+αcΔ𝐒=𝐒+αc𝒜Δ𝐲2+αcγ(𝐑𝒜Δ𝐲3)0\mathbf{S}+\alpha_{c}\Delta\mathbf{S}=\mathbf{S}+\alpha_{c}\mathcal{A}^{\ast}\Delta\mathbf{y}_{2}+\alpha_{c}\gamma(\mathbf{R}-\mathcal{A}^{\ast}\Delta\mathbf{y}_{3})\succeq 0. Finally, a full Newton’s direction is determined by γ\gamma and a third Lanczos procedure finally carries out the ratio test (10). The intuition of the above heuristic is to eliminate infeasibility under centrality restrictions, so that the iterations stay away from the boundary of the cone. After the ratio test, HDSDP updates 𝐲𝐲+0.95αΔ𝐲\mathbf{y}\leftarrow\mathbf{y}+0.95\alpha\Delta\mathbf{y} and ττ+0.95αΔτ\tau\leftarrow\tau+0.95\alpha\Delta\tau to ensure the feasibility of the next iteration. To make further use of the Schur complement 𝐌\mathbf{M}, the above procedure is repeated several times in an iteration with 𝐌\mathbf{M} unchanged.

In HDSDP, the barrier parameter μ\mu also significantly affects the algorithm. At the end of each iteration, HDSDP updates the barrier parameter μ\mu by (z𝐛𝐲+θ𝐑F)/ρn(z-\mathbf{b}^{\top}\mathbf{y}+\theta\left\|\mathbf{R}\right\|_{F})/\rho n, where zz is the best primal bound so far and ρ,θ\rho,\theta are pre-defined parameters. By default ρ=4\rho=4 and θ=108\theta=10^{8}. Heuristics also adjust μ\mu based on αc\alpha_{c} and γ\gamma. To get the best of both worlds, HDSDP implements the same dual-scaling algorithm as in DSDP5.8. If dual infeasibility satisfies 𝒜𝐲+𝐒𝐂Fετ\left\|\mathcal{A}^{\ast}\mathbf{y}+\mathbf{S}-\mathbf{C}\right\|_{F}\leq\varepsilon\tau and μ\mu is sufficiently small, HDSDP fixes τ=1\tau=1, re-starts with (𝐲/τ,𝐒/τ)(\mathbf{y}/\tau,\mathbf{S}/\tau) and instead applies dual potential function to guide convergence. To sum up, HDSDP implements strategies and computational tricks tailored for the embedding and can switch to DSDP5.8 once a dual feasible solution is available.

4 Initialization and Feasibility Certificate

Internally HDSDP deals with the following problem

min𝐗\displaystyle\min_{\mathbf{X}} 𝐂,𝐗+𝐮𝐱u+𝐥𝐱l\displaystyle\left\langle\mathbf{C},\mathbf{X}\right\rangle+\mathbf{u}^{\top}\mathbf{x}_{u}+\mathbf{l}^{\top}\mathbf{x}_{l}
subject to 𝒜𝐗+𝐱u𝐱l=𝐛\displaystyle\mathcal{A}\mathbf{X}+\mathbf{x}^{u}-\mathbf{x}^{l}=\mathbf{b}
𝐗0,𝐱u0,𝐱l0.\displaystyle\mathbf{X}\succeq\textbf{0},\mathbf{x}_{u}\geq\textbf{0},\mathbf{x}_{l}\geq\textbf{0}.

Together with its dual, the embedding is given by

𝒜𝐗+𝐱u𝐱l𝐛τ\displaystyle\mathcal{A}\mathbf{X}+\mathbf{x}^{u}-\mathbf{x}^{l}-\mathbf{b}\tau =0\displaystyle=\textbf{0}
𝒜𝐲+𝐂τ𝐒\displaystyle-\mathcal{A}^{\ast}\mathbf{y}+\mathbf{C}\tau-\mathbf{S} =0\displaystyle=\textbf{0}
𝐛𝐲𝐂,𝐗𝐮𝐱u𝐥𝐱lκ\displaystyle\mathbf{b}^{\top}\mathbf{y}-\left\langle\mathbf{C},\mathbf{X}\right\rangle-\mathbf{u}^{\top}\mathbf{x}_{u}-\mathbf{l}^{\top}\mathbf{x}_{l}-\kappa =0\displaystyle=0
𝐗,𝐒0,\displaystyle\mathbf{X},\mathbf{S}\succeq 0, κ,τ0,\displaystyle\kappa,\tau\geq 0,

where the primal problem is relaxed by two slack variables with penalty l,𝐮\textbf{{{l}}},\mathbf{u} to prevent 𝐲\mathbf{y} going too large. Using the embedding, HDSDP needs no big-MM initialization in the dual variable and starts from arbitrary 𝐒0,τ>0\mathbf{S}\succ\textbf{0},\tau>0. By default HDSDP starts from τ=1,𝐲=𝟎\tau=1,\mathbf{y}=\mathbf{0} and 𝐒\mathbf{S} is initialized with 𝐂+10p𝐂𝐈\mathbf{C}+10^{p}\cdot\|\mathbf{C}\|\mathbf{I}. One feature of the embedding is its capability to detect infeasibility. Given infeasibility tolerance εf\varepsilon_{f}, HDSDP classifies the problem as primal unbounded, dual infeasible if 𝐑F>εfτ,τ/κ<εf\left\|\mathbf{R}\right\|_{F}>\varepsilon_{f}\tau,\tau/\kappa<\varepsilon_{f} and μ/μ0εf2\mu/\mu_{0}\leq\varepsilon_{f}^{2}. If 𝐛𝐲>εf1\mathbf{b}^{\top}\mathbf{y}>\varepsilon_{f}^{-1}, HDSDP starts checking if the Newton’s step (Δ𝐲,Δ𝐒)(\Delta\mathbf{y},\Delta\mathbf{S}) is a dual improving ray. Once a ray is detected, the problem is classified as primal infeasible and dual unbounded.

5 HDSDP Software

HDSDP is written in ANSI C according to the standard of commercial numerical softwares, and provides a self-contained user interface. While DSDP5.8 serves as a sub-routine library, HDSDP is designed to be a stand-alone SDP solver and re-written to accommodate the new computational techniques and third-party packages. After the user inputs the data and invokes the optimization routine, HDSDP goes through several modules including input check, pre-solving, two-phase optimization and post-solving. The modules are implemented independently and are sequentially organized in a pipeline. Compared with DSDP, two most important computational improvements of HDSDP lie in its conic KKT solver and its abstract linear system interface. To our knowledge, HDSDP has the most advanced KKT solver in the history of dual-scaling SDP softwares.

5.1 Pre-solver

One new feature of HDSDP is a special pre-solving module designed for SDPs. It inherits techniques from DSDP5.8 and adds new strategies to work jointly with the optimization module. After the pre-solver is invoked, it first goes through {𝐀i}\{\mathbf{A}_{i}\} two rounds to detect the possible low-rank structure. The first round uses Gaussian elimination for rank-one structure and the second round applies eigenvalue decomposition from Lapack. Two exceptions are when the data matrix is too dense or sparse. Unlike in DSDP5.8 where eigen-decomposition is mandatory, matrices that are too dense to be eigen-decomposed efficiently will be skipped in HDSDP; if a matrix has very few entries, then a strategy from DSDP5.8 is applied: 1) a permutation gathers the non-zeros to a much smaller dense block. 2) dense eigen routines from Lapack applies. 3) the inverse permutation recovers the decomposition.

After detecting the hidden low-rank structures, the pre-solver moves on to collecting the sparsity and rank information of the matrices. The information will be kept for the KKT analysis to be described in Section 5.3.

Finally, the pre-solver scales down the large objective coefficients by their Frobenius norm and goes on to identify the following seven structures. 1). Implied trace: constraints imply tr(𝐗)=θ\operatorname{tr}(\mathbf{X})=\theta. 2). Implied dual bound: constraints imply 𝐥𝐲𝐮\mathbf{l}\leq\mathbf{y}\leq\mathbf{u}. 3). Empty primal interior: constraints imply tr(𝐗𝐚𝐚)0\operatorname{tr}(\mathbf{X}\mathbf{a}\mathbf{a}^{\top})\approx 0. 4). Empty dual interior: constraints imply 𝒜𝐲=𝐂\mathcal{A}^{*}\mathbf{y}=\mathbf{C}. 5). Feasibility problem: 𝐂=0\mathbf{C}=\textbf{0}. 6). Dense problem: whether all the constraint matrices are totally dense. 7). Multi-block problem: whether there are many SDP cones. For each of the cases the solver adjusts its internal parameters to enhance its numerical stability and convergence.

5.2 Two-phase Optimization

Underlie the procedure control of HDSDP is a two-phase method which integrates the embedding technique (Phase A) and dual-scaling (Phase B).  Phase A targets feasibility certificate, while Phase B aims to efficiently drive a dual-feasible solution to optimality.

Refer to caption
Figure 1: Pipeline of HDSDP

The two phases share the same backend computation routines but are associated with different goals and strategies. HDSDP decides which strategy to use based on the behavior of algorithm iterations.

5.3 Conic KKT Solver

The most computationally intensive part in HDSDP is in the Schur complement matrix 𝐌\mathbf{M}. In real-life applications, the SDP objective 𝐂\mathbf{C} often does not share the same sparsity or low-rank property as {𝐀i}\{\mathbf{A}_{i}\}. Therefore, the additional computation from 𝒜𝐒1𝐂𝐒1\mathcal{A}\mathbf{S}^{-1}\mathbf{C}\mathbf{S}^{-1} and 𝐂,𝐒1𝐂𝐒1\langle\mathbf{C},\mathbf{S}^{-1}\mathbf{C}\mathbf{S}^{-1}\rangle demands more efficient techniques to set up 𝐌\mathbf{M}.

Efficiency of setting up 𝐌\mathbf{M} depends mainly on two aspects: 1). the structure of the cones participating in forming the Schur complement, and 2) the structure of the coefficients inside each cone. To exploit both structures, KKT solver in HDSDP implements two abstract interfaces, one from conic coefficient to conic operations, the other from cone to 𝐌\mathbf{M}.

The first interface allows HDSDP to set up 𝐌\mathbf{M} faster, while the second allows the extension of dual-scaling to arbitrary cones. These two interfaces already appeared in DSDP5.8, but unifying them in a conic KKT solver makes the algorithm implementation more compact. Till the date when this manuscript is written, four cones and five types SDP coefficients have been implemented by HDSDP.

The interface from SDP coefficients to conic operations is directly relevant to the set up of 𝐌\mathbf{M}. Using rank and sparsity information from the pre-solver, HDSDP analyzes the Schur system and generates a permutation σ(m)\sigma(m) of the rows of 𝐌\mathbf{M}. The idea is to permute the most computationally-expensive matrices to the left-most position, and this is a direct extension of [9].

(𝐀σ(1),𝐒1𝐀σ(1)𝐒1𝐀σ(1),𝐒1𝐀σ(m)𝐒1𝐀σ(m),𝐒1𝐀σ(m)𝐒1)\left(\begin{array}[]{ccc}\langle\mathbf{A}_{\sigma(1)},\mathbf{S}^{-1}\mathbf{A}_{\sigma(1)}\mathbf{S}^{-1}\rangle&\cdots&\langle\mathbf{A}_{\sigma(1)},\mathbf{S}^{-1}\mathbf{A}_{\sigma(m)}\mathbf{S}^{-1}\rangle\\ &\ddots&\vdots\\ &&\langle\mathbf{A}_{\sigma(m)},\mathbf{S}^{-1}\mathbf{A}_{\sigma(m)}\mathbf{S}^{-1}\rangle\end{array}\right)

After deciding the permutation, for each row of the permuted system, HDSDP chooses one out of a pool of five candidate techniques. We denote them by M1 to M5, and they are efficient under different coefficient structures: Technique M1 and M2 are inherited from DSDP. They exploit the low-rank structure of the coefficient data and an eigen-decomposition of the data 𝐀i=r=1rank(𝐀i)λir𝐚i,r𝐚i,r\mathbf{A}_{i}=\sum_{r=1}^{\operatorname{rank}(\mathbf{A}_{i})}\lambda_{ir}\mathbf{a}_{i,r}\mathbf{a}^{\top}_{i,r} needs to be computed at the beginning of the algorithm; Technique M3, M4 and M5 exploit sparsity and need evaluation of 𝐒1\mathbf{S}^{-1} [9] every iteration.

KKT Technique M1

  1. 1.

    Setup 𝐁σ(i)=r=1rank(𝐀σ(i))λr(𝐒1𝐚σ(i),r)(𝐒1𝐚σ(i),r)\mathbf{B}_{\sigma(i)}=\sum_{r=1}^{\operatorname{rank}(\mathbf{A}_{\sigma(i)})}\lambda_{r}\big{(}\mathbf{S}^{-1}\mathbf{a}_{\sigma(i),r}\big{)}(\mathbf{S}^{-1}\mathbf{a}_{\sigma(i),r})^{\top}

  2. 2.

    Compute Mσ(i)σ(j)=𝐁σ(i),𝐀σ(j),for all jiM_{\sigma(i)\sigma(j)}=\langle\mathbf{B}_{\sigma(i)},\mathbf{A}_{\sigma(j)}\rangle,\text{for all }j\geq i

KKT Technique M2

  1. 1.

    Setup 𝐒1𝐚σ(i),r,r=1,,rσ(i)\mathbf{S}^{-1}\mathbf{a}_{\sigma(i),r},r=1,\ldots,r_{\sigma(i)}

  2. 2.

    Compute Mσ(i)σ(j)=r=1rank(𝐀σ(i))λr(𝐒1𝐚σ(i),r)𝐀σ(j)(𝐒1𝐚σ(i),r)M_{\sigma(i)\sigma(j)}=\sum_{r=1}^{\operatorname{rank}(\mathbf{A}_{\sigma(i)})}\lambda_{r}(\mathbf{S}^{-1}\mathbf{a}_{\sigma(i),r})^{\top}\mathbf{A}_{\sigma(j)}(\mathbf{S}^{-1}\mathbf{a}_{\sigma(i),r})

KKT Technique M3

  1. 1.

    Setup 𝐁σ(i)=𝐒1𝐀σ(i)𝐒1\mathbf{B}_{\sigma(i)}=\mathbf{S}^{-1}\mathbf{A}_{\sigma(i)}\mathbf{S}^{-1}

  2. 2.

    Compute Mσ(i)σ(j)=𝐁σ(i),𝐀σ(j),for all jiM_{\sigma(i)\sigma(j)}=\langle\mathbf{B}_{\sigma(i)},\mathbf{A}_{\sigma(j)}\rangle,\text{for all }j\geq i

KKT Technique M4

  1. 1.

    Setup 𝐁σ(i)=𝐒1𝐀σ(i)\mathbf{B}_{\sigma(i)}=\mathbf{S}^{-1}\mathbf{A}_{\sigma(i)}

  2. 2.

    Compute Mσ(i)σ(j)=𝐁σ(i)𝐒1,𝐀σ(j),for all jiM_{\sigma(i)\sigma(j)}=\langle\mathbf{B}_{\sigma(i)}\mathbf{S}^{-1},\mathbf{A}_{\sigma(j)}\rangle,\text{for all }j\geq i

KKT Technique M5

  1. 1.

    Compute Mσ(i)σ(j)=𝐒1𝐀σ(i)𝐒1,𝐀σ(j),for all jiM_{\sigma(i)\sigma(j)}=\langle\mathbf{S}^{-1}\mathbf{A}_{\sigma(i)}\mathbf{S}^{-1},\mathbf{A}_{\sigma(j)}\rangle,\text{for all }j\geq i directly

Table 1: Approximate flops for each strategy. fif_{i} is the number of nonzeros of 𝐀i\mathbf{A}_{i}; rir_{i} is rank of 𝐀i\mathbf{A}_{i}, κ\kappa is the slow down ratio of discontinuous memory access
KKT Technique Floating point operations Extra cost
M1 rσ(i)(n2+2n2)+κjifσ(j)r_{\sigma(i)}(n^{2}+2n^{2})+\kappa\sum_{j\geq i}f_{\sigma(j)} 0
M2 rσ(i)(n2+κjifσ(j))r_{\sigma(i)}(n^{2}+\kappa\sum_{j\geq i}f_{\sigma(j)}) 0
M3 nκfσ(i)+n3+jiκfσ(j)n\kappa f_{\sigma(i)}+n^{3}+\sum_{j\geq i}\kappa f_{\sigma(j)} n3n^{3}
M4 nκfσ(i)+jiκ(n+1)fσ(j)n\kappa f_{\sigma(i)}+\sum_{j\geq i}\kappa(n+1)f_{\sigma(j)} n3n^{3}
M5 κ(2κfσ(i)+1)jifσ(j)\kappa(2\kappa f_{\sigma(i)}+1)\sum_{j\geq i}f_{\sigma(j)} n3n^{3}

This newly developed KKT solver improves the speed of HDSDP on a broad set of instances. And to our knowledge HDSDP is the first SDP software that simultaneously incorporates all the commonly-used Schur complement strategies.

5.4 Linear System Interface and Parallel Computation

Linear system solving is the core of any interior point software, and most of the linear system solvers nowadays provide support for multi-threading. In HDSDP, matrix decomposition is required for both the dual matrix 𝐒\mathbf{S} and the Schur complement 𝐌\mathbf{M}, both of which would need different decomposition routines based on matrix data structure and numerical conditioning. To meet this requirement, HDSDP adopts a plug-in type abstract linear system interface which allows users to adopt any linear system routine. Table 2 summarizes the routines supported by HDSDP, and by default the multi-threaded Intel MKL routines are used and threading is controlled by a user-specified parameter.

Table 2: Linear systems in HDSDP
Linear system type Implementation Parallel Available in Public
Dense Restarted PCG HDSDP Yes Yes
Positive definite sparse direct (MKL) Pardiso [27] Yes No
Quasi-definite sparse direct COPT [10] Yes No
Positive-definite dense direct COPT [10] Yes No
Positive definite sparse direct SuiteSparse [8] No Yes
Positive definite dense direct (MKL) Lapack [27] Yes Yes
Symmetric indefinite dense direct (MKL) Lapack [27] Yes Yes

Aside from the third-party routines, HDSDP itself implements a pre-conditioned conjugate gradient (CG) method with restart to solve the Schur complement system. The maximum number of iterations is chosen around 50/m50/m and is heuristically adjusted. Either the diagonal of 𝐌\mathbf{M} or its Cholesky decomposition is chosen as pre-conditioner and after a Cholesky pre-conditioner is computed, HDSDP reuses it for the consecutive solves till a heuristic determines that the current pre-conditioner is outdated. When the algorithm approaches optimality, 𝐌\mathbf{M} might become ill-conditioned and HDSDP switches to LDL decomposition in case Cholesky fails.

6 Computational results

The efficiency of DSDP5.8 has been proven through years of computational experience, and HDSDP aims to achieve further improvement on instances where dual method has advantage over the primal-dual method. In this section, we introduce several types of SDPs suitable for the dual method and we compare the performance of HDSDP, DSDP5.8 and COPT 6.5 (fastest solver on Mittelmann’s benchmark) on several benchmark datasets to verify the performance improvement of HDSDP.

6.1 Experiment Setup

We configure the experiment as follows

  1. 1.

    (Testing platform). The tests are run on an intel i11700K PC with 128GB memory and 12 threads.We choose HDSDP, DSDP5.8 and COPT6.5 are selected as benchmark softwares.

  2. 2.

    (Compiler and third-party dependency). Both HDSDP and DSDP5.8 are compiled using icc with -O2 optimization and linked with threaded version intel MKL. Executable of COPT is directly obtained from its official website.

  3. 3.

    (Threading). We set the number of MKL threads to be 12 for DSDP5.8; the Threads parameter of COPT is also set to 12. To enhance reproducibility HDSDP uses 8 threads.

  4. 4.

    (Dataset). Datasets are chosen from three sources: 1). SDP benchmark datasets from Hans Mittelmann’s website [18]; 2). SDP benchmark datasets from SDPLIB [6]. 3). Optimal diagonal pre-conditioner SDPs generated according to [22].

  5. 5.

    (Algorithm). Default methods in HDSDP, DSDP5.8, and the primal-dual interior point method implemented in COPT are compared.

  6. 6.

    (Tolerance). All the feasibility and optimality tolerances are set to 5×1065\times 10^{-6}.

  7. 7.

    (Solution status). We adopt the broadly accepted DIMACs error to determine if a solution is qualified. According to [18], if any of the DIMACS errors exceeds 10210^{-2}, the solution is considered invalid.

  8. 8.

    (Performance Metric). We use shifted geometric mean to compare the overall speed between different solvers.

6.2 Maximum Cut

The SDP relaxation of the max-cut problem is represented by

min𝐗\displaystyle\min_{\mathbf{X}} 𝐂,𝐗\displaystyle\left\langle\mathbf{C},\mathbf{X}\right\rangle
subject to diag(𝐗)=1\displaystyle\operatorname{diag}\left(\mathbf{X}\right)=\textbf{1}
𝐗0.\displaystyle\mathbf{X}\succeq\textbf{0}.

Let 𝐞i\mathbf{e}_{i} be the ii-th column of the identity matrix and the constraint diag(𝐗)=𝐞\operatorname{diag}\left(\mathbf{X}\right)=\mathbf{e} is decomposed into 𝐗,𝐞i𝐞i=1,i=1,,n\left\langle\mathbf{X},\mathbf{e}_{i}\mathbf{e}_{i}^{\top}\right\rangle=1,i=1,\ldots,n. Note that 𝐞i𝐞i\mathbf{e}_{i}\mathbf{e}_{i}^{\top} is rank-one and has only one non-zero entry, M2 and M5 can greatly reduce the computation of the Schur matrix.

Table 3: Max-cut problems
Instance HDSDP DSDP5.8 COPT v6.5 Instance HDSDP DSDP5.8 COPT v6.5
mcp100 0.03 0.02 0.11 maxG51 1.45 2.52 14.40
mcp124-1 0.04 0.02 0.17 maxG55 38.21 273.60 1096.02
mcp124-2 0.04 0.02 0.17 maxG60 87.59 535.20 2926.11
mcp124-3 0.05 0.02 0.16 G40_mb 15.77 8.77 98.97
mcp124-4 0.06 0.05 0.17 G40_mc 6.53 18.68 80.45
mcp250-1 0.09 0.08 0.70 G48_mb 17.83 12.48 183.95
mcp250-2 0.08 0.09 0.72 G48mc 5.09 8.43 118.79
mcp250-3 0.09 0.12 0.65 G55mc 38.06 168.1 1026.10
mcp250-4 0.19 0.16 0.71 G59mc 48.73 302.3 1131.24
mcp500-1 0.26 0.21 2.78 G60_mb 211.22 213.4 5188.11
mcp500-2 0.25 0.32 2.82 G60mc 208.96 218.8 5189.29
mcp500-3 0.30 0.50 2.59 torusg3-8 0.50 0.77 1.04
mcp500-4 0.39 0.86 2.86 torusg3-15 15.30 178.8 137.60
maxG11 0.60 0.46 7.15 toruspm3-8-50 0.41 0.40 2.65
maxG32 4.68 3.66 68.32 toruspm3-15-50 13.32 43.67 309.25

Computational experience suggests that on large-scale sparse max-cut instances, HDSDP is more than 55 times faster than DSDP5.8. Two exceptions are G60mc and G60_mb, where the aggregated sparsity pattern of the dual matrix is lost due to the dense objective coefficient, and thereby the dense MKL routines take up most of the computation.

6.3 Graph Partitioning

The SDP relaxation of the graph partitioning problem is given by

min𝐗\displaystyle\min_{\mathbf{X}} 𝐂,𝐗\displaystyle\langle\mathbf{C},\mathbf{X}\rangle
subject to diag(𝐗)=1\displaystyle\operatorname{diag}\left(\mathbf{X}\right)=\textbf{1}
11,𝐗=β\displaystyle\langle\textbf{{{1}}1}^{\top},\mathbf{X}\rangle=\beta
k𝐗110\displaystyle k\mathbf{X}-\textbf{{{1}}1}^{\top}\succeq\textbf{0}
𝐗0,\displaystyle\mathbf{X}\geq\textbf{0},

where 1 denotes the all-one vector and k,βk,\beta are the problem parameters. Although the dual 𝐒\mathbf{S} no longer enjoys sparsity, the low-rank structure is still available to accelerate convergence.

Table 4: Graph partitioning problems
Instance HDSDP DSDP5.8 COPT v6.5 Instance HDSDP DSDP5.8 COPT v6.5
gpp100 0.05 0.05 0.19 gpp250-4 0.15 0.14 1.52
gpp124-1 0.07 0.07 0.33 gpp500-1 0.89 0.44 5.52
gpp124-2 0.06 Failed 0.30 gpp500-2 0.80 0.43 5.43
gpp124-3 0.06 0.06 0.31 gpp500-3 0.65 0.36 5.54
gpp124-4 0.06 0.06 0.29 gpp500-4 0.68 0.38 5.40
gpp250-1 0.20 Failed 1.65 bm1 2.28 1.18 18.45
gpp250-2 0.17 0.14 1.21 biomedP 171.64 Failed Failed
gpp250-3 0.17 0.13 1.41

On graph partitioning instances, we see that HDSDP has comparable performance to DSDP but is more robust on some of the problems.

6.4 Optimal Diagonal Pre-conditioning

The optimal diagonal pre-conditioning problem originates from [22], where given a matrix 𝐁0\mathbf{B}\succ\textbf{0}, finding a diagonal matrix 𝐃\mathbf{D} to minimize the condition number κ(𝐃1/2𝐁𝐃1/2)\kappa(\mathbf{D}^{-1/2}\mathbf{B}\mathbf{D}^{-1/2}) can be modeled as an SDP. The formulation for optimal diagonal pre-conditioning is given by

maxτ,𝐃\displaystyle\max_{\tau,\mathbf{D}} τ\displaystyle\tau
subject to 𝐃𝐁\displaystyle\mathbf{D}\preceq\mathbf{B}
τ𝐁𝐃0.\displaystyle\tau\mathbf{B}-\mathbf{D}\preceq\textbf{0}.

Expressing 𝐃=i𝐞i𝐞idi\mathbf{D}=\sum_{i}\mathbf{e}_{i}\mathbf{e}_{i}^{\top}d_{i}, the problem is exactly in the SDP dual form. If 𝐁\mathbf{B} is also sparse, the problem can be efficiently solved using the dual method.

Table 5: Optimal diagonal pre-conditioning problems
Instance HDSDP DSDP5.8 COPT v6.5
diag-bench-1000-0.01 37.670 207.500 38.61
diag-bench-2000-0.05 276.960 971.700 161.17
diag-bench-west0989 35.280 Failed 76.900
diag-bench-DK01R 5.010 Failed Failed
diag-bench-micromass_10NN 20.510 38.45 17.430

6.5 Other Problems

So far HDSDP is tested and tuned over a broad set of benchmarks including SDPLIB [6] and Hans Mittelmann’s sparse SDP benchmark [18]. Using geometric mean as the metric, compared to DSDP5.8, HDSDP achieves a speedup of 21% on SDPLIB and around 17% speedup on Hans Mittelmann’s benchmark dataset. Below we list some example benchmark datasets of nice structure for HDSDP to exploit.

Table 6: Features of several benchmark problems
Instance Background Feature HDSDP DSDP5.8 COPT v6.5
checker_1.5 unknown sparse, low-rank 39.55 64.04 868.37
foot unknown sparse, low-rank 26.68 13.65 245.41
hand unknown low-rank 6.60 2.64 49.39
ice_2.0 unknown low-rank 284.90 504.70 8561.74
p_auss2_3.0 unknown sparse, low-rank 528.00 1066.00 1111.72
rendl1_2000_1e-6 unknown low-rank 16.17 14.38 111.43
trto4 topology design sparse, low-rank 6.25 6.30 27.16
trto5 topology design sparse, low-rank 67.22 75.20 391.83
sensor_500b sensor network localization sparse, low-rank 19.84 35.11 8.97
sensor_1000b sensor network localization sparse, low-rank 76.39 98.18 38.96

7 When (not) to use DSDP/HDSDP

While HDSDP is designed for general SDPs, it targets the problems more tractable in the dual form than by the primal-dual methods. This is the principle for the techniques implemented by HDSDP. Here are some rules in mind when deciding whether to use the dual method (or HDSDP).

  1. 1.

    Does the problem enjoys nice dual structure?

    Many combinatorial problems have formulations friendly to the dual methods. Some typical features include (aggregated) sparsity and low-rank structure. Dual methods effectively exploit these features by iterating in the dual space and using efficient computational tricks. If the problem is dense and most constraints are full-rank, dual method has no advantage over the primal-dual solvers due to 1) comparable iteration cost to primal-dual methods. 2) more iterations for convergence.

  2. 2.

    Do we need the primal optimal solution or just the optimal value?

    For some applications dual method fails to recover a correct primal solution due to numerical difficulties. If the optimal value is sufficient, there is no problem. But if an accurate primal optimal solution is always necessary, it is better to be more careful and to test the recovery procedure in case of failure at the last step.

  3. 3.

    Do we need to certificate infeasibility strictly?

    One weakness of the dual method is the difficulty in infeasibility certificate. Although on the dual side this issue is addressed by HDSDP using the embedding, dual methods still suffer from failure to identify primal infeasibility.

  4. 4.

    Is dual-feasibility hard to attain?

    The first phase of HDSDP adopts the infeasible Newton’s method and focuses on eliminating the dual infeasibility. This principle works well if the dual constraints are relatively easy to satisfy, but if this condition fails to hold (for example, empty dual interior), experiments suggest the embedding spend a long time deciding feasibility. In this case it is suggested using DSDP5.8 or supply an initial dual solution.

8 Conclusions

We propose an extension of the dual-scaling algorithm based on the embedding technique. The resultant solver, HDSDP, is presented to demonstrate how dual method can be effectively integrated with the embedding. HDSDP is developed in parallel to DSDP5.8 and is entailed with several newly added features, especially an advanced conic KKT solver. The solver exhibits promising performance on several benchmark datasets and is under active development. Now HDSDP works as one of the candidate SDP methods in the state-of-the-art commercial solver COPT. Users are welcome to try the solver and provide valuable suggestions.

9 Acknowledgement

We thank Dr. Qi Huangfu and Dr. Joachim Dahl from COPT development team [10] for their valuable suggestions in the solver design and implementation. We also appreciate Hans Mittelmann’s efforts in benchmarking the solver. Finally, we sincerely respect the developers of DSDP for their precious suggestions [2] and their invaluable efforts getting DSDP through all along the way. It is the efficient and elegant implementation from DSDP5.8 that guides HDSDP to where it is.

References

  • [1] Mosek ApS. Mosek optimization toolbox for matlab. User’s Guide and Reference Manual, Version, 4, 2019.
  • [2] Steven J Benson and Yinyu Ye. Algorithm 875: Dsdp5–software for semidefinite programming. ACM Transactions on Mathematical Software (TOMS), 34(3):1–20, 2008.
  • [3] Steven J Benson, Yinyu Ye, and Xiong Zhang. Solving large-scale sparse semidefinite programs for combinatorial optimization. SIAM Journal on Optimization, 10(2):443–461, 2000.
  • [4] Steven J Benson, Yinyu Yeb, and Xiong Zhang. Mixed linear and semidefinite programming for combinatorial and quadratic optimization. Optimization Methods and Software, 11(1-4):515–544, 1999.
  • [5] Pratik Biswas and Yinyu Ye. Semidefinite programming for ad hoc wireless sensor network localization. In Proceedings of the 3rd international symposium on Information processing in sensor networks, pages 46–54, 2004.
  • [6] Brian Borchers. Sdplib 1.2, a library of semidefinite programming test problems. Optimization Methods and Software, 11(1-4):683–690, 1999.
  • [7] Brian Borchers. Csdp user’s guide, 2006.
  • [8] Timothy A Davis. Direct methods for sparse linear systems. SIAM, 2006.
  • [9] Katsuki Fujisawa, Masakazu Kojima, and Kazuhide Nakata. Exploiting sparsity in primal-dual interior-point methods for semidefinite programming. Mathematical Programming, 79(1):235–253, 1997.
  • [10] Dongdong Ge, Qi Huangfu, Zizhuo Wang, Jian Wu, and Yinyu Ye. Cardinal optimizer (copt) user guide. arXiv preprint arXiv:2208.14314, 2022.
  • [11] Michel X Goemans and David P Williamson. Improved approximation algorithms for maximum cut and satisfiability problems using semidefinite programming. Journal of the ACM (JACM), 42(6):1115–1145, 1995.
  • [12] Masahito Hayashi. Quantum information theory. Springer, 2016.
  • [13] Michal Kocvara, Michael Stingl, and PENOPT GbR. Pensdp users guide (version 2.2). PENOPT GbR, 1435:1436, 2006.
  • [14] Tomasz Kwasniewicz and François Glineur. Implementation of a semidefinite optimization solver in the julia programming language. 2021.
  • [15] Monique Laurent. Sums of squares, moment matrices and optimization over polynomials. In Emerging applications of algebraic geometry, pages 157–270. Springer, 2009.
  • [16] Monique Laurent and Franz Rendl. Semidefinite programming and integer programming. Handbooks in Operations Research and Management Science, 12:393–514, 2005.
  • [17] Anirudha Majumdar, Georgina Hall, and Amir Ali Ahmadi. Recent scalability improvements for semidefinite programming with applications in machine learning, control, and robotics. Annual Review of Control, Robotics, and Autonomous Systems, 3:331–360, 2020.
  • [18] Hans D Mittelmann. An independent benchmarking of sdp and socp solvers. Mathematical Programming, 95(2):407–430, 2003.
  • [19] Imre Polik, Tamas Terlaky, and Yuriy Zinchenko. Sedumi: a package for conic optimization. In IMA workshop on Optimization and Control, Univ. Minnesota, Minneapolis. Citeseer, 2007.
  • [20] Florian A Potra and Rongqin Sheng. On homogeneous interrior-point algorithms for semidefinite programming. Optimization Methods and Software, 9(1-3):161–184, 1998.
  • [21] Florian A Potra and Rongqin Sheng. A superlinearly convergent primal-dual infeasible-interior-point algorithm for semidefinite programming. SIAM Journal on Optimization, 8(4):1007–1028, 1998.
  • [22] Zhaonan Qu, Yinyu Ye, and Zhengyuan Zhou. Diagonal preconditioning: Theory and algorithms. arXiv preprint arXiv:2003.07545, 2020.
  • [23] Anthony Man-Cho So and Yinyu Ye. Theory of semidefinite programming for sensor network localization. Mathematical Programming, 109(2):367–384, 2007.
  • [24] Kim-Chuan Toh. A note on the calculation of step-lengths in interior-point methods for semidefinite programming. Computational Optimization and Applications, 21(3):301–310, 2002.
  • [25] Kim-Chuan Toh, Michael J Todd, and Reha H Tütüncü. On the implementation and usage of sdpt3–a matlab software package for semidefinite-quadratic-linear programming, version 4.0. In Handbook on semidefinite, conic and polynomial optimization, pages 715–754. Springer, 2012.
  • [26] Lieven Vandenberghe and Stephen Boyd. Semidefinite programming. SIAM review, 38(1):49–95, 1996.
  • [27] Endong Wang, Qing Zhang, Bo Shen, Guangyong Zhang, Xiaowei Lu, Qing Wu, Yajuan Wang, Endong Wang, Qing Zhang, Bo Shen, et al. Intel math kernel library. High-Performance Computing on the Intel® Xeon Phi™: How to Fully Exploit MIC Architectures, pages 167–188, 2014.
  • [28] Henry Wolkowicz. Semidefinite and cone programming bibliography/comments. http://orion. uwaterloo. ca/~ hwolkowi/henry/book/fronthandbk. d/sdpbibliog. pdf, 2005.
  • [29] Makoto Yamashita, Katsuki Fujisawa, Mituhiro Fukuda, Kazuhiro Kobayashi, Kazuhide Nakata, and Maho Nakata. Latest developments in the sdpa family for solving large-scale sdps. In Handbook on semidefinite, conic and polynomial optimization, pages 687–713. Springer, 2012.
  • [30] Liuqin Yang, Defeng Sun, and Kim-Chuan Toh. Sdpnal++: a majorized semismooth newton-cg augmented lagrangian method for semidefinite programming with nonnegative constraints. Mathematical Programming Computation, 7(3):331–366, 2015.

Appendix A Mittlelmann’s Benchmark Test

This section summarizes the benchmark result of HDSDP on part of Hans Mittelmann’s SDP collection. [18]. The main setup is consistent with the experiment section. If an instance fails, its solution time is recorded to be 40000 seconds.

A.1 Summary Statistics

Table 7: Summary statistics on the benchmark
Solver Number of solved instances Shifted geometric mean
HDSDP 67 228.64
DSDP5.8 62 276.96
COPT v6.5 72 100.53

A.2 Detailed Solution Statistics

Table 8: Tables of detailed solution statistics
Solver Table
HDSDP Table 9 and 10
DSDP5.8 Table 11 and 12
COPT v6.5 Table 13 and 14
Table 9: HDSDP: Mittelmann’s Benchmark Test Part 1
Instance Error 1 Error 2 Error 3 Error 4 Error 5 Error 6 Time
1dc.1024 4.16e-14 0.00e+00 0.00e+00 -0.00e+00 5.56e-07 5.56e-07 730.950
1et.1024 2.90e-12 0.00e+00 0.00e+00 -0.00e+00 8.20e-08 8.20e-08 62.870
1tc.1024 2.72e-13 0.00e+00 0.00e+00 -0.00e+00 2.60e-07 2.60e-07 44.270
1zc.1024 2.79e-14 0.00e+00 0.00e+00 -0.00e+00 1.30e-07 1.30e-07 369.410
AlH_1-Sigma+_STO-6GN14r20g1T2_5 2.20e-01 -0.00e+00 0.00e+00 -0.00e+00 -9.95e-01 0.00e+00 Failed
Bex2_1_5 7.15e-10 0.00e+00 9.02e-12 0.00e+00 3.98e-07 1.15e-07 199.260
BH2_2A1_STO-6GN7r14g1T2 1.40e-10 0.00e+00 2.37e-09 0.00e+00 1.36e-07 3.17e-07 282.880
biggs 8.36e-10 2.29e-15 1.87e-12 0.00e+00 2.76e-08 2.95e-08 8.580
broyden25 9.98e-14 0.00e+00 0.00e+00 -0.00e+00 1.92e-08 1.92e-08 1066.460
Bst_jcbpaf2 1.15e-13 0.00e+00 1.66e-10 0.00e+00 1.94e-07 1.52e-07 317.920
buck4 2.27e-11 0.00e+00 0.00e+00 -0.00e+00 3.83e-07 2.07e-07 21.100
buck5 1.39e-07 0.00e+00 0.00e+00 -0.00e+00 6.48e-04 3.36e-04 185.080
butcher 3.03e-07 0.00e+00 3.63e-07 0.00e+00 -9.42e-05 8.56e-09 333.150
cancer_100 2.85e-12 0.00e+00 0.00e+00 -0.00e+00 3.58e-09 1.42e-08 213.620
CH2_1A1_STO-6GN8r14g1T2 2.05e-11 0.00e+00 4.35e-09 0.00e+00 1.53e-07 2.65e-07 271.080
checker_1.5 6.71e-14 0.00e+00 0.00e+00 -0.00e+00 7.17e-07 7.17e-07 39.550
chs_5000 0.00e+00 0.00e+00 0.00e+00 -0.00e+00 3.34e-08 3.34e-08 57.980
cnhil10 3.39e-08 0.00e+00 0.00e+00 -0.00e+00 7.39e-09 1.73e-08 37.520
cphil12 8.00e-15 0.00e+00 0.00e+00 -0.00e+00 1.06e-09 1.06e-09 253.960
diamond_patch 1.00e+00 -0.00e+00 5.25e-05 0.00e+00 1.00e+00 1.00e+00 Failed
e_moment_quadknap_17_100_0.5_2_2 1.63e-10 0.00e+00 4.92e-09 0.00e+00 -1.71e-06 8.77e-09 118.180
e_moment_stable_17_0.5_2_2 1.05e-12 0.00e+00 3.63e-07 0.00e+00 -1.20e-05 2.76e-08 123.590
foot 9.94e-06 0.00e+00 0.00e+00 -0.00e+00 2.18e-04 1.20e-05 26.680
G40_mb 4.02e-09 0.00e+00 0.00e+00 -0.00e+00 2.66e-07 2.17e-07 15.770
G40mc 7.81e-15 0.00e+00 0.00e+00 -0.00e+00 3.66e-07 3.66e-07 6.530
G48_mb 3.28e-05 0.00e+00 0.00e+00 -0.00e+00 -6.27e-04 4.31e-07 17.830
G48mc 2.38e-14 0.00e+00 0.00e+00 -0.00e+00 2.36e-07 2.36e-07 5.090
G55mc 2.82e-15 0.00e+00 0.00e+00 -0.00e+00 1.67e-07 1.67e-07 38.060
G59mc 1.28e-14 0.00e+00 0.00e+00 -0.00e+00 2.33e-07 2.33e-07 48.730
G60_mb 8.93e-09 0.00e+00 0.00e+00 -0.00e+00 2.46e-07 2.52e-07 211.220
G60mc 8.93e-09 0.00e+00 0.00e+00 -0.00e+00 2.46e-07 2.52e-07 208.960
H3O+_1-A1_STO-6GN10r16g1T2_5 2.09e-12 0.00e+00 6.27e-12 0.00e+00 2.32e-07 2.32e-07 1086.470
hand 1.82e-08 0.00e+00 0.00e+00 -0.00e+00 6.54e-07 3.73e-07 6.600
ice_2.0 1.48e-13 0.00e+00 0.00e+00 -0.00e+00 1.72e-07 1.72e-07 284.900
inc_1200 1.85e-04 0.00e+00 0.00e+00 -0.00e+00 -2.27e-03 2.53e-06 46.420
neosfbr25 8.64e-13 0.00e+00 0.00e+00 -0.00e+00 7.00e-08 7.00e-08 543.240
neosfbr30e8 2.27e-11 0.00e+00 0.00e+00 -0.00e+00 4.15e-08 4.15e-08 2733.590
neu1 1.66e-11 0.00e+00 1.60e-07 0.00e+00 4.85e-06 2.08e-05 86.940
neu1g 1.92e-08 0.00e+00 7.94e-10 0.00e+00 4.09e-08 8.37e-08 65.970
neu2c 5.24e-03 0.00e+00 3.79e-10 0.00e+00 -9.87e-05 9.07e-04 183.370
Table 10: HDSDP: Mittelmann’s Benchmark Test Part 2
Instance Error 1 Error 2 Error 3 Error 4 Error 5 Error 6 Time
neu2 5.44e-01 0.00e+00 6.14e-03 0.00e+00 9.98e-01 1.28e-01 Failed
neu2g 3.76e-10 1.66e-16 7.94e-10 0.00e+00 3.39e-09 2.42e-08 57.240
neu3 1.11e-14 0.00e+00 6.42e-07 0.00e+00 -1.97e-06 2.04e-08 788.670
neu3g 2.76e-14 0.00e+00 0.00e+00 -0.00e+00 7.71e-09 2.04e-08 861.030
NH2-.1A1.STO6G.r14 1.07e-12 0.00e+00 3.37e-09 0.00e+00 2.74e-07 3.25e-07 259.130
NH3_1-A1_STO-6GN10r16g1T2_5 4.14e-12 0.00e+00 6.20e-09 0.00e+00 1.29e-07 2.18e-07 1076.710
NH4+.1A1.STO6GN.r18 6.50e-10 0.00e+00 3.22e-09 0.00e+00 8.83e-06 9.02e-06 3601.580
nonc_500 5.47e-11 0.00e+00 0.00e+00 -0.00e+00 7.58e-08 7.58e-08 6.080
p_auss2_3.0 9.88e-15 0.00e+00 0.00e+00 -0.00e+00 2.37e-07 2.37e-07 311.050
rabmo 1.36e-11 0.00e+00 1.63e-07 0.00e+00 -4.28e-05 1.18e-08 66.380
reimer5 4.65e-02 -0.00e+00 1.15e-07 0.00e+00 9.38e-01 0.00e+00 Failed
rendl1_2000_1e-6 1.74e-11 0.00e+00 0.00e+00 -0.00e+00 3.88e-07 3.87e-07 16.170
ros_2000 4.44e-16 0.00e+00 0.00e+00 -0.00e+00 9.09e-08 9.09e-08 9.110
ros_500 4.52e-11 0.00e+00 0.00e+00 -0.00e+00 1.33e-07 1.34e-07 2.040
rose15 1.13e-08 0.0e+00 1.40e-07 0.00e+00 -9.69e-05 8.37e-09 46.850
sensor_1000 1.06e-11 0.00e+00 0.00e+00 -0.00e+00 3.19e-07 7.21e-08 98.180
sensor_500 3.38e-12 0.00e+00 0.00e+00 -0.00e+00 1.21e-07 2.27e-08 35.110
shmup4 1.83e-09 0.00e+00 0.00e+00 -0.00e+00 6.63e-07 4.67e-07 73.280
shmup5 2.18e-08 0.00e+00 8.54e-11 0.00e+00 -2.91e-06 4.98e-07 663.480
swissroll 9.48e-06 0.00e+00 0.00e+00 -0.00e+00 -7.34e-03 1.19e-07 31.170
taha1a 9.01e-11 0.00e+00 1.84e-07 0.00e+00 -1.41e-07 1.78e-07 135.320
taha1b 2.20e-11 0.00e+00 2.51e-10 0.00e+00 4.90e-08 6.07e-08 391.190
taha1c 1.50e-10 0.00e+00 3.76e-07 0.00e+00 -2.06e-07 1.93e-07 1631.100
theta102 1.89e-14 0.00e+00 0.00e+00 -0.00e+00 6.65e-08 6.65e-08 1196.390
theta12 1.84e-14 0.00e+00 0.00e+00 -0.00e+00 2.89e-08 2.89e-08 167.570
tiger_texture 4.33e-05 0.00e+00 1.05e-09 0.00e+00 6.48e-04 9.81e-04 47.520
trto4 2.88e-09 0.00e+00 0.00e+00 -0.00e+00 2.49e-07 8.11e-08 6.250
trto5 3.26e-08 0.00e+00 0.00e+00 -0.00e+00 -3.72e-07 1.84e-07 67.220
vibra4 1.94e-06 0.00e+00 0.00e+00 -0.00e+00 6.11e-06 3.21e-06 27.360
vibra5 4.31e-07 0.00e+00 1.46e-08 0.00e+00 2.11e-04 1.11e-04 293.290
yalsdp 2.00e-07 0.00e+00 0.00e+00 -0.00e+00 9.83e-07 9.82e-07 118.100
Table 11: DSDP5.8: Mittelmann’s Benchmark Test Part 1
Instance Error 1 Error 2 Error 3 Error 4 Error 5 Error 6 Time
1dc.1024 2.00e-06 0.00e+00 0.00e+00 0.00e+00 8.26e-01 7.95e+00 Failed
1et.1024 6.22e+01 0.00e+00 0.00e+00 0.00e+00 6.55e-01 1.04e+02 Failed
1tc.1024 5.13e-10 0.00e+00 0.00e+00 0.00e+00 6.34e-08 7.46e-08 44.310
1zc.1024 5.43e-10 0.00e+00 0.00e+00 0.00e+00 5.47e-09 7.61e-09 497.000
AlH_1-Sigma+_STO-6GN14r20g1T2_5 2.27e-10 0.00e+00 0.00e+00 0.00e+00 9.53e-05 1.09e-04 7296.000
Bex2_1_5 1.84e-06 0.00e+00 0.00e+00 0.00e+00 6.79e-07 1.15e-06 47.120
BH2_2A1_STO-6GN7r14g1T2 3.16e-10 0.00e+00 0.00e+00 0.00e+00 1.16e-07 1.18e-07 182.200
biggs 7.21e-09 0.00e+00 0.00e+00 0.00e+00 1.98e-09 4.08e-08 3.729
broyden25 5.14e-11 0.00e+00 0.00e+00 0.00e+00 1.20e-07 1.68e-07 392.900
Bst_jcbpaf2 3.30e-08 0.00e+00 0.00e+00 0.00e+00 8.72e-08 2.12e-07 60.910
buck4 7.06e-06 0.00e+00 0.00e+00 0.00e+00 2.20e-07 3.54e-07 18.760
buck5 2.94e-05 0.00e+00 0.00e+00 0.00e+00 1.21e-06 1.59e-06 421.900
butcher 8.33e-05 4.61e-14 0.00e+00 0.00e+00 3.03e-06 3.21e-06 125.200
cancer_100 1.77e-09 0.00e+00 0.00e+00 0.00e+00 3.60e-08 4.68e-06 137.700
CH2_1A1_STO-6GN8r14g1T2 1.61e-10 0.00e+00 0.00e+00 0.00e+00 1.34e-07 1.35e-07 184.800
checker_1.5 3.19e-09 0.00e+00 0.00e+00 0.00e+00 5.25e-07 5.25e-07 64.040
chs_5000 1.84e-10 0.00e+00 0.00e+00 0.00e+00 2.23e-07 6.53e-07 539.100
cnhil10 7.00e-07 0.00e+00 0.00e+00 0.00e+00 3.46e-06 1.56e-05 11.710
cphil12 1.03e-11 0.00e+00 0.00e+00 0.00e+00 2.05e-06 6.89e-06 85.760
diamond_patch 1.41e-07 0.00e+00 0.00e+00 0.00e+00 5.04e-04 8.43e-02 Failed
e_moment_quadknap_17_100_0.5_2_2 1.84e-08 2.61e-15 0.00e+00 0.00e+00 3.42e-09 1.20e-07 35.770
e_moment_stable_17_0.5_2_2 1.68e-01 1.41e-16 0.00e+00 0.00e+00 -1.83e-02 6.56e-01 Failed
foot 2.90e-09 0.00e+00 0.00e+00 0.00e+00 1.08e-07 7.66e-08 13.650
G40_mb 2.00e-09 0.00e+00 0.00e+00 0.00e+00 6.49e-08 4.10e-06 8.774
G40mc 2.26e-09 0.00e+00 0.00e+00 0.00e+00 1.10e-07 1.12e-07 18.680
G48_mb 3.05e-09 0.00e+00 0.00e+00 0.00e+00 4.18e-07 5.24e-06 12.480
G48mc 2.77e-09 0.00e+00 0.00e+00 0.00e+00 1.23e-07 1.23e-07 8.434
G55mc 3.57e-09 0.00e+00 0.00e+00 0.00e+00 5.15e-07 5.18e-07 168.100
G59mc 3.57e-09 0.00e+00 0.00e+00 0.00e+00 3.43e-07 3.44e-07 302.300
G60_mb 7.10e-09 0.00e+00 0.00e+00 0.00e+00 2.30e-06 2.35e-05 213.400
G60mc 7.10e-09 0.00e+00 0.00e+00 0.00e+00 2.30e-06 2.35e-05 218.800
H3O+_1-A1_STO-6GN10r16g1T2_5 3.94e-12 0.00e+00 0.00e+00 0.00e+00 1.17e-07 1.20e-07 821.800
hand 1.38e-09 0.00e+00 0.00e+00 0.00e+00 8.10e-08 4.03e-07 2.641
ice_2.0 4.67e-09 0.00e+00 0.00e+00 0.00e+00 5.12e-07 5.12e-07 504.700
inc_1200 1.58e+00 0.00e+00 0.00e+00 0.00e+00 2.24e-01 2.13e-01 Failed
mater-5 5.19e-09 0.00e+00 0.00e+00 0.00e+00 5.66e-07 6.32e-07 20.280
mater-6 1.06e-08 0.00e+00 0.00e+00 0.00e+00 8.67e-07 9.51e-07 68.250
neosfbr25 1.30e-10 0.00e+00 0.00e+00 0.00e+00 1.52e-08 1.91e-08 233.800
neosfbr30e8 1.65e-10 0.00e+00 0.00e+00 0.00e+00 5.42e-09 6.60e-09 1286.000
neu1 7.00e-11 0.00e+00 0.00e+00 0.00e+00 2.35e-04 2.08e-02 Failed
neu1g 8.17e-09 0.00e+00 0.00e+00 0.00e+00 2.25e-07 3.77e-05 38.390
neu2c 1.84e-03 2.70e-15 0.00e+00 0.00e+00 -2.00e-03 1.70e-05 88.330
Table 12: DSDP5.8: Mittelmann’s Benchmark Test Part 2
Instance Error 1 Error 2 Error 3 Error 4 Error 5 Error 6 Time
neu2 3.42e-13 0.00e+00 0.00e+00 0.00e+00 8.97e-08 1.28e-05 30.270
neu2g 7.84e-08 0.00e+00 0.00e+00 0.00e+00 -1.73e-09 7.55e-06 28.600
neu3 2.23e-09 0.00e+00 0.00e+00 0.00e+00 4.13e-08 5.76e-04 194.300
neu3g 1.22e-08 0.00e+00 0.00e+00 0.00e+00 3.77e-08 4.41e-04 252.100
NH2-.1A1.STO6G.r14 2.56e-01 8.85e-16 0.00e+00 0.00e+00 -5.24e-02 4.50e-02 Failed
NH3_1-A1_STO-6GN10r16g1T2_5 5.71e-12 0.00e+00 0.00e+00 0.00e+00 1.45e-07 1.48e-07 802.500
NH4+.1A1.STO6GN.r18 1.65e-01 9.75e-15 0.00e+00 0.00e+00 -4.93e-02 2.94e-03 Failed
nonc_500 1.40e-09 0.00e+00 0.00e+00 0.00e+00 2.38e-07 5.83e-07 2.225
p_auss2_3.0 4.83e-09 0.00e+00 0.00e+00 0.00e+00 1.96e-07 1.96e-07 528.000
rabmo 6.39e-04 5.41e-16 0.00e+00 0.00e+00 -7.59e-06 4.24e-07 37.470
reimer5 4.95e-08 4.57e-15 0.00e+00 0.00e+00 2.41e-09 1.24e-06 244.200
rendl1_2000_1e-6 1.91e-09 0.00e+00 0.00e+00 0.00e+00 3.53e-08 3.57e-08 14.380
ros_2000 6.88e-11 0.00e+00 0.00e+00 0.00e+00 1.39e-08 6.75e-08 16.620
ros_500 4.22e-11 0.00e+00 0.00e+00 0.00e+00 8.85e-08 3.87e-07 2.039
rose15 6.74e-08 0.00e+00 0.00e+00 0.00e+00 1.34e-02 2.68e-02 Failed
sensor_1000 9.41e-10 0.00e+00 0.00e+00 0.00e+00 3.75e-07 5.58e-07 76.390
sensor_500 7.91e-10 0.00e+00 0.00e+00 0.00e+00 5.06e-07 8.71e-07 19.840
shmup4 5.17e-06 0.00e+00 0.00e+00 0.00e+00 3.63e-07 4.81e-07 93.490
shmup5 2.73e-05 0.00e+00 0.00e+00 0.00e+00 3.64e-07 6.92e-07 668.800
spar060-020-1_LS 1.63e-08 0.00e+00 0.00e+00 0.00e+00 9.06e-08 9.73e-08 109.300
swissroll 1.53e-03 0.00e+00 0.00e+00 0.00e+00 -1.39e-02 7.32e-01 Failed
taha1a 1.04e-01 0.00e+00 0.00e+00 0.00e+00 2.03e-02 1.56e+00 Failed
taha1b 1.64e-11 0.00e+00 0.00e+00 0.00e+00 1.97e-07 4.15e-04 139.700
taha1c 9.63e-01 0.00e+00 0.00e+00 0.00e+00 3.52e-01 1.81e-02 Failed
theta102 2.50e-10 0.00e+00 0.00e+00 0.00e+00 7.40e-09 1.13e-08 705.800
theta12 3.00e-10 0.00e+00 0.00e+00 0.00e+00 6.94e-09 8.56e-09 182.600
tiger_texture 6.12e-08 0.00e+00 0.00e+00 0.00e+00 1.57e-06 1.77e-03 245.300
trto4 1.52e-04 0.00e+00 0.00e+00 0.00e+00 6.81e-08 4.16e-07 6.302
trto5 6.89e-04 0.00e+00 0.00e+00 0.00e+00 3.61e-06 5.38e-06 75.200
vibra4 6.05e-05 0.00e+00 0.00e+00 0.00e+00 2.25e-07 3.59e-07 24.370
vibra5 2.83e-04 0.00e+00 0.00e+00 0.00e+00 1.19e-06 1.54e-06 314.000
yalsdp 1.65e-10 0.00e+00 0.00e+00 0.00e+00 4.84e-07 4.88e-07 93.430
Table 13: COPT: Mittelmann’s Benchmark Test Part 1
Instance Error 1 Error 2 Error 3 Error 4 Error 5 Error 6 Time
1dc.1024 2.04e-08 0.00e+00 0.00e+00 0.00e+00 -5.73e-10 9.19e-08 196.160
1et.1024 1.50e-09 0.00e+00 0.00e+00 0.00e+00 -3.92e-11 1.04e-08 37.670
1tc.1024 1.87e-08 0.00e+00 0.00e+00 0.00e+00 -5.02e-10 1.38e-07 31.410
1zc.1024 2.98e-08 0.00e+00 0.00e+00 0.00e+00 -1.17e-09 1.64e-07 63.790
AlH_1-Sigma+_STO-6GN14r20g1T2_5 7.34e-10 0.00e+00 0.00e+00 0.00e+00 2.50e-09 4.56e-09 1835.230
Bex2_1_5 2.51e-07 0.00e+00 0.00e+00 0.00e+00 -4.07e-10 2.54e-06 5.630
BH2_2A1_STO-6GN7r14g1T2 8.39e-10 0.00e+00 0.00e+00 0.00e+00 2.54e-09 7.04e-09 30.500
biggs 7.32e-07 0.00e+00 6.03e-09 0.00e+00 -3.51e-09 2.13e-06 1.760
broyden25 3.81e-08 0.00e+00 0.00e+00 0.00e+00 -7.77e-10 1.95e-06 12.460
Bst_jcbpaf2 8.55e-09 0.00e+00 0.00e+00 0.00e+00 1.56e-10 1.13e-07 7.270
buck4 4.17e-06 0.00e+00 0.00e+00 0.00e+00 -2.94e-09 7.70e-06 41.940
buck5 2.16e-05 0.00e+00 0.00e+00 0.00e+00 -6.07e-09 4.48e-05 834.240
butcher 1.28e-03 0.00e+00 0.00e+00 0.00e+00 -1.10e-05 3.39e-01 Failed
cancer_100 4.10e-05 0.00e+00 0.00e+00 0.00e+00 -8.40e-09 2.66e-06 38.400
CH2_1A1_STO-6GN8r14g1T2 9.90e-10 0.00e+00 4.64e-10 0.00e+00 3.68e-09 7.75e-09 27.450
checker_1.5 6.02e-10 0.00e+00 0.00e+00 0.00e+00 2.48e-09 2.57e-09 868.370
chs_5000 1.09e-10 0.00e+00 0.00e+00 0.00e+00 7.40e-11 2.59e-09 39.060
cnhil10 2.20e-06 0.00e+00 0.00e+00 0.00e+00 4.10e-07 2.09e-05 3.430
cphil12 1.58e-11 0.00e+00 0.00e+00 0.00e+00 3.90e-12 6.03e-10 14.960
diamond_patch 7.08e-07 0.00e+00 1.15e-06 0.00e+00 -1.65e-07 7.68e-04 2939.110
e_moment_quadknap_17_100_0.5_2_2 2.78e-07 0.00e+00 0.00e+00 0.00e+00 -2.51e-09 1.57e-05 7.450
e_moment_stable_17_0.5_2_2 7.00e-08 0.00e+00 0.00e+00 0.00e+00 2.64e-09 3.21e-06 5.670
foot 7.32e-06 0.00e+00 0.00e+00 0.00e+00 -7.37e-09 7.76e-06 245.410
G40_mb 8.27e-07 0.00e+00 0.00e+00 0.00e+00 3.45e-09 4.97e-06 98.970
G40mc 5.06e-11 0.00e+00 0.00e+00 0.00e+00 1.72e-10 1.41e-08 80.450
G48_mb 7.27e-11 0.00e+00 0.00e+00 0.00e+00 1.53e-09 5.07e-08 183.950
G48mc 1.12e-12 0.00e+00 0.00e+00 0.00e+00 -4.22e-10 6.32e-10 118.790
G55mc 1.48e-10 0.00e+00 0.00e+00 0.00e+00 -3.67e-09 4.28e-09 1026.100
G59mc 4.67e-10 0.00e+00 0.00e+00 0.00e+00 -3.86e-11 7.64e-09 1131.240
G60_mb 2.09e-07 0.00e+00 0.00e+00 0.00e+00 9.02e-09 4.96e-07 5188.110
G60mc 2.09e-07 0.00e+00 0.00e+00 0.00e+00 9.02e-09 4.96e-07 5189.290
H3O+_1-A1_STO-6GN10r16g1T2_5 7.27e-10 0.00e+00 0.00e+00 0.00e+00 3.49e-09 5.11e-09 93.900
hand 4.68e-07 0.00e+00 0.00e+00 0.00e+00 -2.50e-09 2.34e-07 49.390
ice_2.0 3.03e-10 0.00e+00 0.00e+00 0.00e+00 3.90e-08 4.01e-08 8561.740
inc_1200 1.10e-07 0.00e+00 0.00e+00 0.00e+00 -1.25e-09 4.89e-06 99.020
mater-5 9.00e-07 0.00e+00 0.00e+00 0.00e+00 -9.24e-10 1.60e-05 2.840
mater-6 1.08e-06 0.00e+00 0.00e+00 0.00e+00 -3.08e-10 1.64e-05 7.100
neosfbr25 1.50e-09 0.00e+00 0.00e+00 0.00e+00 8.65e-10 6.25e-09 85.810
neosfbr30e8 9.48e-09 0.00e+00 0.00e+00 0.00e+00 4.62e-09 4.07e-08 438.710
neu1 2.58e-09 0.00e+00 2.91e-09 0.00e+00 -8.26e-09 2.31e-06 3.610
neu1g 7.58e-07 0.00e+00 0.00e+00 0.00e+00 -2.01e-09 9.33e-07 3.000
neu2c 2.81e-07 0.00e+00 1.41e-07 0.00e+00 -7.33e-10 6.68e-07 7.560
Table 14: COPT: Mittelmann’s Benchmark Test Part 2
Instance Error 1 Error 2 Error 3 Error 4 Error 5 Error 6 Time
neu2 7.66e-09 0.00e+00 1.19e-08 0.00e+00 -4.11e-10 8.68e-08 2.980
neu2g 1.65e-07 0.00e+00 3.05e-10 0.00e+00 -1.30e-09 3.31e-07 4.340
neu3 2.15e-08 0.00e+00 0.00e+00 0.00e+00 8.48e-09 7.05e-07 19.410
neu3g 1.44e-08 0.00e+00 0.00e+00 0.00e+00 9.38e-09 2.84e-07 24.360
NH2-.1A1.STO6G.r14 1.77e-09 0.00e+00 0.00e+00 0.00e+00 2.55e-09 7.60e-09 25.890
NH3_1-A1_STO-6GN10r16g1T2_5 5.22e-10 0.00e+00 0.00e+00 0.00e+00 2.98e-09 4.26e-09 94.540
NH4+.1A1.STO6GN.r18 1.48e-08 0.00e+00 0.00e+00 0.00e+00 2.09e-09 9.87e-09 591.090
nonc_500 1.60e-09 0.00e+00 1.65e-10 0.00e+00 3.20e-10 2.60e-09 0.340
p_auss2_3.0 1.47e-08 0.00e+00 2.26e-14 0.00e+00 3.58e-09 3.58e-09 12868.900
rabmo 1.36e-07 0.00e+00 0.00e+00 0.00e+00 -1.63e-09 1.74e-05 5.150
reimer5 1.54e-06 0.00e+00 0.00e+00 0.00e+00 -2.10e-09 3.84e-04 14.440
rendl1_2000_1e-6 9.69e-07 0.00e+00 0.00e+00 0.00e+00 3.37e-09 8.81e-07 111.430
ros_2000 5.85e-10 0.00e+00 5.52e-11 0.00e+00 3.74e-10 2.78e-09 1.460
ros_500 1.80e-09 0.00e+00 5.12e-10 0.00e+00 8.15e-10 1.25e-08 0.280
rose15 1.02e-08 0.00e+00 5.60e-10 0.00e+00 -9.33e-09 9.29e-07 3.180
sensor_1000 9.62e-09 0.00e+00 1.27e-08 0.00e+00 1.40e-10 5.41e-08 38.960
sensor_500 5.85e-08 0.00e+00 0.00e+00 0.00e+00 4.41e-10 1.91e-07 9.570
shmup4 2.70e-07 0.00e+00 0.00e+00 0.00e+00 -4.62e-09 2.36e-05 469.190
shmup5 1.78e-06 0.00e+00 0.00e+00 0.00e+00 -6.45e-09 6.97e-05 7118.160
spar060-020-1_LS 5.90e-07 0.00e+00 0.00e+00 0.00e+00 4.96e-10 2.11e-06 11.910
swissroll 2.95e-03 0.00e+00 0.00e+00 0.00e+00 -2.68e-05 2.37e-02 Failed
taha1a 2.46e-09 0.00e+00 0.00e+00 0.00e+00 6.98e-10 5.31e-08 5.030
taha1b 5.56e-09 0.00e+00 6.74e-10 0.00e+00 1.28e-09 6.38e-08 21.220
taha1c 7.48e-09 0.00e+00 0.00e+00 0.00e+00 1.90e-09 2.37e-07 38.820
theta102 4.25e-09 0.00e+00 0.00e+00 0.00e+00 -4.15e-10 8.05e-09 484.170
theta12 2.87e-09 0.00e+00 0.00e+00 0.00e+00 -1.25e-10 6.44e-09 60.580
tiger_texture 7.48e-07 0.00e+00 1.08e-06 0.00e+00 -6.88e-08 1.14e-04 117.210
trto4 5.40e-05 0.00e+00 0.00e+00 0.00e+00 -1.90e-08 3.83e-05 27.160
trto5 1.95e-04 0.00e+00 0.00e+00 0.00e+00 -2.34e-08 1.52e-04 391.830
vibra4 1.14e-05 0.00e+00 0.00e+00 0.00e+00 -6.30e-08 1.94e-04 64.660
vibra5 5.93e-05 0.00e+00 0.00e+00 0.00e+00 -3.75e-07 3.78e-03 841.620
yalsdp 8.63e-10 0.00e+00 8.86e-11 0.00e+00 -4.99e-10 1.45e-09 9.460