This software is designed to solve primal and dual semidefinite-quadratic-linear conic programming problems (known as SQLP problems) whose constraint cone is a product of semidefinite cones, second-order cones, nonnegative orthants and Euclidean spaces, and whose objective function is the sum of linear functions and logbarrier terms associated with the constraint cones. This includes the special case of determinant maximization problems with linear matrix inequalities. It employs an infeasible primal-dual predictor-corrector path-following method, with either the HKM or the NT search direction. The basic code is written in Matlab, but key subroutines in C are incorporated via Mex files. Routines are provided to read in problems in either SDPA or SeDuMi format. Sparsity and block diagonal structure are exploited. We also exploit low-rank structures in the constraint matrices associated with the semidefinite blocks if such structures are explicitly given. To help the users in using our software, we also include some examples to illustrate the coding of problem data for our solver. Various techniques to improve the efficiency and robustness of the main solver are incorporated. For example, step-lengths associated with semidefinite cones are calculated via the Lanczos method. The current version also implements algorithms for solving a 3-parameter homogeneous self-dual model of the primal and dual SQLP problems. Routines are also provided to determine whether ).1 the primal and dual feasible regions of a given SQLP have empty interiors. Numerical experiments show that this general-purpose code can solve more than 80% of a total of about 430 test problems to an accuracy of at least 10 −6 in relative duality gap and infeasibilities.
At{i}= [q i x m sparse], C{i}, X{i}, Z{i} = [q i x 1 double or sparse]. If the kth block is the linear block, then blk{k,1} = 'l', blk{k, 2} = n l , At{k} = [n l x m sparse], C{k}, X{k}, Z{k} = [n l x 1 double or sparse]. Similarly, if the kth block is the unrestricted block, then blk{k,1} = 'u', blk{k, 2} = n u , At{k} = [n u x m sparse], C{k}, X{k}, Z{k} = [n u x 1 double or sparse].