/*! \defgroup DSDPBasic DSDP Basics DSDP can be used within a C application through a set of subroutines. The subroutines listed below use DSDP to solve problems in \ref PDForm "DSDP Standard Form". Several examples of applications that use the DSDP application program interface are included in the distribution. Each of these applications includes the header \code #include dsdp5.h \endcode and link to the DSDP library. \retval 0 if successful The documentation of DSDP subroutines in this chapter will not show the return integer, but we highly recommend that applications check for errors after each subroutine. */ /*! \defgroup DSDPConverge DSDP Convergence The subroutines listed below define convergence and termination criteria for the solver and problems in \ref PDForm "DSDP Standard Form". \code #include dsdp5.h \endcode \retval 0 if successful */ /*! \defgroup DSDPSolution DSDP Statistics for Data and Current Solution DSDP can provide information about the problem and its current solution in \ref PDForm "DSDP Standard Form". \code #include dsdp5.h \endcode \retval 0 if successful */ /*! \defgroup DSDPSolver DSDP Tuning Options Improve performance of DSDP and customize the solver for problems in \ref PDForm "DSDP Standard Form". \code #include dsdp5.h \endcode \retval 0 if successful */ /*! \defgroup SDPBasic Semidefinite Blocks (Basics) Routines that create the SDPCone object, set the data, and get the solution for problems. \code #include dsdp5.h \endcode In \ref PDForm "DSDP Standard Form", a semidefinite program is given by the pair of problems \f[ \begin{array}{llllllllll} (P) \ \ \ & \mbox{minimize} & {\displaystyle \sum_{j=0}^{n_b-1} C_j \bullet X_j } &\mbox{subject to}& {\displaystyle \sum_{j=0}^{n_b-1} A_{i,j} \bullet X_{j} = b_i } ,& i=1,\ldots, m, & & X_j \succeq 0, \\ \end{array} \f] \f[ \begin{array}{lllllllll} (D) \ \ \ & \mbox{maximize} & {\displaystyle \sum_{i=1}^m b_i \ y_i } &\mbox{subject to}&{\displaystyle \sum_{i=1}^m A_{i,j}y_i + S_{j} } = C_{j}, & j=0, \ldots, n_b-1, & S_j \succeq 0 \\ \end{array} \f] where the data \f$A_{i,j}\f$ and \f$C_j\f$ are symmetric matrices of the same dimension and the inner product of two \f$n \times n\f$ matrices \f$C=(c_{k,l})\f$ and \f$X=(x_{k,l})\f$ is defined by \f$ C \bullet X := trace (C^T X) = \sum_{k,l}c_{k,l} x_{k,l} \f$. Blocks are labelled from 0 to \e nblocks, where \e nblocks is the total number of blocks in the SDPCone object. Variables y are numbered 1 through m. Variable 0 designates the C matrices, which are also denoted \f$ A_{0,j}\f$. By default, this cone represents symmetric \f$ n \times n\f$ matrices in packed symmetric format. This format uses an array of length \f$ n(n+1)/2 \f$ and orders the the elements of the matrix as follows: \f[ \begin{array}{llllllll} [ a_{1,1} & a_{2,1} & a_{2,2} & a_{3,1} & a_{3,2} & a_{3,3} & \ldots & a_{n,n} ] \\ \end{array}. \f] \retval 0 if successful */ /*! \defgroup SDPRoutines Semidefinite Blocks (Operational Routines) Additional routines that operate on the data. \code #include dsdp5.h \endcode In \ref PDForm "DSDP Standard Form" a semidefinite program is given by the pair of problems \f[ \begin{array}{llllllllll} (P) \ \ \ & \mbox{minimize} & {\displaystyle \sum_{j=0}^{n_b-1} C_j \bullet X_j } &\mbox{subject to}& {\displaystyle \sum_{j=0}^{n_b-1} A_{i,j} \bullet X_{j} = b_i } ,& i=1,\ldots, m, & & X_j \succeq 0, \\ \end{array} \f] \f[ \begin{array}{lllllllll} (D) \ \ \ & \mbox{maximize} & {\displaystyle \sum_{i=1}^m b_i \ y_i } &\mbox{subject to}&{\displaystyle \sum_{i=1}^m A_{i,j}y_i + S_{j} } = C_{j}, & j=0, \ldots, n_b-1, & S_j \succeq 0 \\ \end{array} \f] where the data \f$A_{i,j}\f$ and \f$C_j\f$ are symmetric matrices of the same dimension and the inner product of two \f$n \times n\f$ matrices \f$C=(c_{k,l})\f$ and \f$X=(x_{k,l})\f$ is defined by \f$ C \bullet X := trace (C^T X) = \sum_{k,l}c_{k,l} x_{k,l} \f$. Blocks are labelled from 0 to \e nblocks, where \e nblocks is the total number of blocks in the SDPCone object. Variables y are numbered 1 through m. Variable 0 designates the C matrices, which are also denoted \f$ A_{0,j}\f$. \retval 0 if successful */ /*! \defgroup SDPData Semidefinite Blocks (Advanced Data) Less frequently used routines to set data into the SDPCone object and operate on the variables. \code #include dsdp5.h \endcode In \ref PDForm "DSDP Standard Form", a semidefinite program is given by the pair of problems \f[ \begin{array}{llllllllll} (P) \ \ \ & \mbox{minimize} & {\displaystyle \sum_{j=0}^{n_b-1} C_j \bullet X_j } &\mbox{subject to}& {\displaystyle \sum_{j=0}^{n_b-1} A_{i,j} \bullet X_{j} = b_i } ,& i=1,\ldots, m, & & X_j \succeq 0, \\ \end{array} \f] \f[ \begin{array}{lllllllll} (D) \ \ \ & \mbox{maximize} & {\displaystyle \sum_{i=1}^m b_i \ y_i } &\mbox{subject to}&{\displaystyle \sum_{i=1}^m A_{i,j}y_i + S_{j} } = C_{j}, & j=0, \ldots, n_b-1, & S_j \succeq 0 \\ \end{array} \f] where the data \f$A_{i,j}\f$ and \f$C_j\f$ are symmetric matrices of the same dimension and the inner product of two \f$n \times n\f$ matrices \f$C=(c_{k,l})\f$ and \f$X=(x_{k,l})\f$ is defined by \f$ C \bullet X := trace (C^T X) = \sum_{k,l}c_{k,l} x_{k,l} \f$. Blocks are labelled from 0 to \e nblocks, where \e nblocks is the total number of blocks in the SDPCone object. Variables y are numbered 1 through m. Variable 0 designates the C matrices, which are also denoted \f$ A_{0,j}\f$. \retval 0 if successful */ /*! \defgroup LPRoutines Linear Programming Routines that create the LP cone object for linear inequalites, set the data, and provide access to the solutions. \code #include dsdp5.h \endcode In \ref PDForm "DSDP Standard Form" a pure linear program is given by the following pair of problems. \f[ \begin{array}{lllllllll} \mbox{Maximize} & b^T y & & \mbox{such that} & A^T y & \leq c \\ \mbox{Minimize} & c^T x & & \mbox{such that} & A x & = b, & x \geq 0 \\ \end{array} \f] Slack variables \f$ s:= c - A^Ty \f$ must be positive. Variables \f$ x,s \in \Re^n\f$. LP data may be used in conjuction with semidefinite data. \retval 0 if successful */ /*! \defgroup Bounds Bounds Bounds on the variables y are a special type of semidefinite and LP cone. Corresponding to lower and upper bounds on the y variables are surplus and slack variables in (P) with an a cost. Variables y are numbered 1 through m. \code #include dsdp5.h \endcode \retval 0 if successful */ /*! \defgroup Examples Examples Examples that formulate problems in \ref PDForm "DSDP Standard Form". and solve them using DSDP. \note These routines are examples! They not part of the subroutine library. */