| Title: | R Interface to DSDP Semidefinite Programming Library |
|---|---|
| Description: | R interface to DSDP semidefinite programming library. The DSDP software is a free open source implementation of an interior-point method for semidefinite programming. It provides primal and dual solutions, exploits low-rank structure and sparsity in the data, and has relatively low memory requirements for an interior-point method. |
| Authors: | Zhisu Zhu [aut, cre], Yinyu Ye [aut] (DSDP by Steve Benson, Yinyu Ye and Xiong Zhang) |
| Maintainer: | Zhisu Zhu <[email protected]> |
| License: | GPL-3 |
| Version: | 1.0.6 |
| Built: | 2026-07-16 04:40:27 UTC |
| Source: | https://github.com/cran/Rdsdp |
Rdsdp is the R package providing a R interface to DSDP semidefinite programming library. The DSDP package implements a dual-scaling algorithm to
find solutions (, ) to linear and semidefinite optimization problems of the form
with
where means X is positive
semidefinite, and all are symmetric matrices of the same
size and is a
vector of length .
The dual of the problem is
where
Matrices and are assumed to be block diagonal
structured, and must be specified that way (see Details).
Steven J. Benson and Yinyu Ye:
Algorithm 875: DSDP5 software for semidefinite programming ACM Transactions on Mathematical Software (TOMS) 34(3), 2008
http://web.stanford.edu/~yyye/DSDP5-Paper.pdf
Steven J. Benson and Yinyu Ye and Xiong Zhang:
Solving Large-Scale Sparse Semidefinite Programs for Combinatorial Optimization SIAM Journal on Optimization 10(2):443-461, 2000
http://web.stanford.edu/~yyye/yyye/largesdp.ps.gz
Interface to DSDP semidefinite programming library.
dsdp(A,b,C,K,OPTIONS=NULL)dsdp(A,b,C,K,OPTIONS=NULL)
A |
An object of class |
b |
A numeric vector of length |
C |
An object of class |
K |
Describes the sizes of each block of the sdp problem. It is a list with the following elements:
|
OPTIONS |
A list of OPTIONS parameters passed to dsdp. It may contain any of the following fields: |
= k to display output at each k iteration, else = 0 [default 10].
= 1 print timing information if set to 1.
to set the filename to save solution file in SDPA format.
= 1 to output full information about the solution statistics in STATS.
tolerance for duality gap as a fraction of the value of the objective functions [default 1e-6].
maximum number of iterations allowed [default 1000].
Please refer to DSDP User Guide for additional OPTIONS parameters available.
All problem matrices are assumed to be of block diagonal structure, the input matrix A must be specified as follows:
The coefficients for nonnegative cone block are put in the first K$l columns of A.
The coefficients for positive semidefinite cone blocks are put after nonnegative cone block in the the same order as those in K$s.
The ith positive semidefinite cone block takes (K$s)[i] times (K$s)[[i]] columns, with each row defining
a symmetric matrix of size (K$s)[[i]].
This function does not check for symmetry in the problem data.
Returns a list of three objects:
X |
Optimal primal solution |
y |
Optimal dual solution |
STATS |
A list with three to eight fields that describe the solution of the problem:
The last five fields are optional, and only available when |
Steven J. Benson and Yinyu Ye:
DSDP5 User Guide — Software for Semidefinite Programming Technical Report ANL/MCS-TM-277, 2005
https://www.mcs.anl.gov/hs/software/DSDP/DSDP5-Matlab-UserGuide.pdf
K=NULL K$s=c(2,3) K$l=2 C=matrix(c(0,0,2,1,1,2,c(3,0,1, 0,2,0, 1,0,3)),1,15,byrow=TRUE) A=matrix(c(0,1,0,0,0,0,c(3,0,1, 0,4,0, 1,0,5), 1,0,3,1,1,3,rep(0,9)), 2,15,byrow=TRUE) b <- c(1,2) OPTIONS=NULL OPTIONS$gaptol=0.000001 OPTIONS$logsummary=0 OPTIONS$outputstats=1 result = dsdp(A,b,C,K,OPTIONS)K=NULL K$s=c(2,3) K$l=2 C=matrix(c(0,0,2,1,1,2,c(3,0,1, 0,2,0, 1,0,3)),1,15,byrow=TRUE) A=matrix(c(0,1,0,0,0,0,c(3,0,1, 0,4,0, 1,0,5), 1,0,3,1,1,3,rep(0,9)), 2,15,byrow=TRUE) b <- c(1,2) OPTIONS=NULL OPTIONS$gaptol=0.000001 OPTIONS$logsummary=0 OPTIONS$outputstats=1 result = dsdp(A,b,C,K,OPTIONS)
Function to read the semidefinite program input data in SDPA format and solve it.
dsdp.readsdpa(sdpa_filename, options_filename="")dsdp.readsdpa(sdpa_filename, options_filename="")
sdpa_filename |
The location of the SDPA input file. |
options_filename |
The location of the OPTIONS file [default ""]. |