[Csdp] Help - adjusting parameters

Brian Borchers borchers at nmt.edu
Thu Dec 20 11:25:49 EST 2007


>I am using CSDP and , frequently,  It return  the return 
>edge of primal feasibility) and 6(Stuck at edge of dual i
>know my problems are feasible and have optimun solution.

These errors indicate that the algorithm failed to converge to a good
enough solution.  This can happen for lots of different reasons, see 
below.

>What are the parameters i can to change for try to solve 

You need to first understand why CSDP is failing to converge to a
solution.  Without looking at your particular problems, I can't tell
you what's going on.  If you send me an example or two, I'd be happy
to see if I can figure out what the difficulty is.  Once you
understand the difficulty, the solution is nearly always to change the
problem rather than adjusting CSDP's parameters.
 
In my experience, once you've eliminated completely incorrect problem
formulations, there are two typical causes of this behavior.
 
1. Problems in which the linear system A(X)=b is very badly conditioned.  
This can happen because of linear dependence of the constraint matrices (in
which case you should eliminate redundant constraints) or poor scaling of
the problem.  The easiest way to check for this (and what I'll do if you send
me a sample problem) is to load the problem into MATLAB and check the 
conditioning of the A matrix there.  
 
2. Problem formulations in which are ill-conditioned because of the
interaction of the linear constraints and the positive
semidefiniteness constraint.

The problem can be very badly conditioned in the sense that the
intersection of the A(X)=b feasible points and the set of positive
semidefinite matrices is very small.  Even if there is an exact matrix
X that satisfies both constraints, this might not be true in inexact
floating point arithmetic.  Visualize, if you can, a problem where the
intersection of the set of matrices X that satisfy A(X)=b and the set
of positive semidefinite matrices is a single point and this
particular matrix is singular.  

This kind of problem can be very hard for CSDP to solve because csdp
always enforces strict positive definiteness on X.  By "strict
positive definiteness", CSDP means "has a Cholesky factorization in
double precision arithmetic."  It's not hard to create a problem which
has a solution in exact arithmetic but which has no feasible solution
with a Cholesky factorization in double precision arithemtic.

The solution to this difficulty is nearly always to relax the
constraints!  For example, you can relax the positive definiteness
constraint on X by adding a small positive multiple of the identity to
X.  You can do the same thing on the dual side with respect to the
Z matrix.  

It's worth noting that SeDuMi can often solve such problems by
producing solutions with small negative eigenvalues (e.g. -1.0e-10.)
If you're willing to live with such solutions and want to obtain them
with CSDP, then you should try the "add a small multiple of the
identity" trick.

If you do this you need to be careful though- the optimal solution to your
problem may be very sensitive to your exact tolerance for negative eigenvalues.
If that's the case, then you're solving an ill-conditioned problem and your
answers are going to be very sensitive to noise in your problem data.  A better
way to phrase this is that your answers will be worthless random numbers...  


More information about the Csdp mailing list