next up previous contents
Next: Setting the parameters Up: The script sdp.m Previous: The script sdp.m

Preparing the data

  The SDP is defined by the following data:

a matrix with m rows and q columns, where

The kth row of holds the symmetric block diagonal matrix stored as a vector of length q

the vector b defining the dual objective function. Its length m is equal to the number of primal constraints

the block diagonal matrix C defining the primal objective function

a vector whose length is the number p of blocks and whose entries are the block sizes ,

The user has a choice of four ways to set up the data. In all cases, if a matrix has more than one block, it must be stored in sparse format.gif If it has only a single block, then it can be stored either in sparse or in full format, at the user's discretion. However, in the case of a single block, it is recommended that the initial and be provided as full matrices, as the solutions will most likely be full, even if the data itself is sparse.

  1. Constructing directly using the function svec.m, which converts block diagonal matrices in to column vectors of length q. The function smat.m restores the symmetric matrix from such a vector. These routines are invoked by

    By default, the matrix passed to svec.m is assumed to have dense blocks. If the user wishes to take advantage of the sparsity in the blocks of this matrix, then a third, optional parameter sparseblks can be passed to svec.m. When , svec.m treats the blocks as sparse, and returns a sparse vector. These routines preserve the inner product, i.e. if and for matrices , then

    The user must also construct , and .

  2. Using the routine makeA.m, which calls svec.m, to construct from given predefined matrices. This is invoked by

    It requires that the block diagonal matrices be stored in variables named . Thus if m=100, the matrix must be stored in a variable A100.gif The user must also construct , and .

    When makeA.m is called by the user, the blocks of the block diagonal data matrices are treated by default as being dense. If they are sparse, and the user wishes to take advantage of this sparsity, a third parameter sparseblks may be passed to the routine makeA.m, and this parameter should be set to the value 1. In this case the matrix will be stored using the sparse matrix storage option.

  3. Using the routine import.m to load all the data (, , and ) from a plain ASCII file. This is invoked by

    The data must be stored in a special compact formatgif that is described in Appendix A. The routine export.m implements the reverse operation, saving a problem's data in an ASCII file, in a format recognized by import.m.

  4. Loading a mat file defining the data , , , , saved previously by Matlab's save command, using Matlab's load command. This option may be used to load all the examples (LMI problems from control theory and problems from truss topology design) used in Appendix C, for which mat files are available from the SDPpack home page.


next up previous contents
Next: Setting the parameters Up: The script sdp.m Previous: The script sdp.m



Madhu Nayakkankuppam
Fri Mar 28 00:48:56 EST 1997