HDSDP: Software for Semidefinite Programming
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
subject to | ||||
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
where the problem data are symmetric matrices () and is a real vector. Matrix inner product is defined by and denotes the cone of positive semidefinite matrices. For brevity we use to denote the relation , and the linear map together with its adjoint is defined by and . denotes the matrix Frobenius norm. With the above notations, we rewrite the primal and dual problems by
and primal and dual feasible regions are
is primal feasible and is dual feasible. The interior of these regions are denoted by and a solution in 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 are linearly independent. 2) Both and admit an interior point solution. 3) an interior dual feasible solution is known. The first two conditions imply strong duality and the existence of an optimal primal-dual solution pair satisfying complementarity . Also, the central path , which serves as a foundation of path-following approaches, is well-defined. Given a centrality parameter , dual method starts from and takes Newton’s step towards the solution of the perturbed KKT system and
(2) | ||||
where the last relation linearizes instead of and is known as a scaling matrix. By geometrically driving to 0, dual-scaling eliminates (primal) infeasibility, approaches optimality, and finally solves the problem to some -optimal solution such that . Theory of dual potential reduction shows an -optimal solution can be obtained in iterations ignoring dimension dependent constants.
An important feature of dual-scaling is that and vanish in the Schur complement of (3.1)
(6) |
and the dual algorithm thereby avoids explicit reference to the primal variable . For brevity we denote the left-hand side matrix in (6) by . If are sparse, any feasible dual slack 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- 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- 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- 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].
0 | ||||
0 | (7) | |||
where are homogenizing variables for infeasibility detection. The central path of barrier parameter is given by
0 | ||||
0 | ||||
(8) | ||||
Here are jointly considered as dual variables. Given an (infeasible) dual point such that , HDSDP selects a damping factor and takes Newton’s step towards
where, similar to DSDP, we modify (8) and linearize . We use this damping factor and the barrier parameter to manage a trade-off between dual infeasibility, centrality and optimality. If we set , then the Newton’s direction is computed through the following Schur complement.
In practice, HDSDP solves , plugs the solution into to get , and finally assembles . With the above relations, satisfies and if and only if the backward Newton step . When is positive definite, a primal upper-bound follows from simple algebraic manipulation
and dividing both sides by . Alternatively, HDSDP extracts a primal objective bound from the projection problem
whose optimal solution is . Here and
Using the Newton’s direction , HDSDP applies a simple ratio test
(10) |
through a Lanczos procedure [24]. But to determine the aforementioned damping factor , we resort to the following adaptive heuristic: assuming that and fixing , the dual update can be decomposed by
where the first term is independent of and improves centrality of the iteration. HDSDP conducts a Lanczos line-search to find such that the logarithmic barrier function is improved
Then given , by a second Lanczos line-search we find the maximum possible such that . Finally, a full Newton’s direction is determined by 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 and to ensure the feasibility of the next iteration. To make further use of the Schur complement , the above procedure is repeated several times in an iteration with unchanged.
In HDSDP, the barrier parameter also significantly affects the algorithm. At the end of each iteration, HDSDP updates the barrier parameter by , where is the best primal bound so far and are pre-defined parameters. By default and . Heuristics also adjust based on and . To get the best of both worlds, HDSDP implements the same dual-scaling algorithm as in DSDP5.8. If dual infeasibility satisfies and is sufficiently small, HDSDP fixes , re-starts with 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
subject to | ||||
Together with its dual, the embedding is given by
where the primal problem is relaxed by two slack variables with penalty to prevent going too large. Using the embedding, HDSDP needs no big- initialization in the dual variable and starts from arbitrary . By default HDSDP starts from and is initialized with . One feature of the embedding is its capability to detect infeasibility. Given infeasibility tolerance , HDSDP classifies the problem as primal unbounded, dual infeasible if and . If , HDSDP starts checking if the Newton’s step 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 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 . 2). Implied dual bound: constraints imply . 3). Empty primal interior: constraints imply . 4). Empty dual interior: constraints imply . 5). Feasibility problem: . 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.

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 . In real-life applications, the SDP objective often does not share the same sparsity or low-rank property as . Therefore, the additional computation from and demands more efficient techniques to set up .
Efficiency of setting up 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 .
The first interface allows HDSDP to set up 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 . Using rank and sparsity information from the pre-solver, HDSDP analyzes the Schur system and generates a permutation of the rows of . The idea is to permute the most computationally-expensive matrices to the left-most position, and this is a direct extension of [9].
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
needs to be computed at the beginning of the algorithm; Technique M3, M4 and M5 exploit sparsity and need evaluation of [9] every iteration.
KKT Technique M1
-
1.
Setup
-
2.
Compute
KKT Technique M2
-
1.
Setup
-
2.
Compute
KKT Technique M3
-
1.
Setup
-
2.
Compute
KKT Technique M4
-
1.
Setup
-
2.
Compute
KKT Technique M5
-
1.
Compute directly
KKT Technique | Floating point operations | Extra cost |
---|---|---|
M1 | 0 | |
M2 | 0 | |
M3 | ||
M4 | ||
M5 |
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 and the Schur complement , 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.
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 and is heuristically adjusted. Either the diagonal of 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, 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.
(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.
(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.
(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.
-
5.
(Algorithm). Default methods in HDSDP, DSDP5.8, and the primal-dual interior point method implemented in COPT are compared.
-
6.
(Tolerance). All the feasibility and optimality tolerances are set to .
-
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 , the solution is considered invalid.
-
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
subject to | ||||
Let be the -th column of the identity matrix and the constraint is decomposed into . Note that is rank-one and has only one non-zero entry, M2 and M5 can greatly reduce the computation of the Schur matrix.
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 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
subject to | ||||
where 1 denotes the all-one vector and are the problem parameters. Although the dual no longer enjoys sparsity, the low-rank structure is still available to accelerate convergence.
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 , finding a diagonal matrix to minimize the condition number can be modeled as an SDP. The formulation for optimal diagonal pre-conditioning is given by
subject to | ||||
Expressing , the problem is exactly in the SDP dual form. If is also sparse, the problem can be efficiently solved using the dual method.
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.
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.
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.
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.
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.
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
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
Solver | Table |
---|---|
HDSDP | Table 9 and 10 |
DSDP5.8 | Table 11 and 12 |
COPT v6.5 | Table 13 and 14 |
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 |
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 |
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 |
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 |
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 |
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 |