[Csdp] initial solution

Brian Borchers borchers at nmt.edu
Fri Jan 4 19:27:21 EST 2008


>I also have a question about the initial solution.
>
>I have a new problem (probably containing typos) which returns 
>
><Iterations...>
>Success: SDP is primal infeasible
>Certificate of primal infeasibility: a'*y=-1.00000e+00,
>||A'(y)-Z||=2.99456e-09
>SDP failed.
>
>In what way is the "initial solution" a solution if it is not feasible?
>What does it mean?

The initial solution X, y, Z must have X and Z strictly positive definite,
but might not satisfy the linear equality constraints.  

>How can I use the certificate to debug the code?

The certificate shows that this SDP is dual unbounded (and by weak duality
primal infeasible.)   You can use the solution returned by CSDP to get
a feasible dual solution with an arbitrarily large negative objective
value.  For example, given ycert and Zcert (the certificate returned by
CSDP), to get a dual solution with with objective value negative 1.0e6, 
 
1. Let y=1.0e6*ycert

2. Let Z=C+1.0e6*Zcert
 
Now, since a'*ycert=-1, a'*y=-1.0e6. Also, since || A'(ycert)-Zcert ||
is tiny (2.99e-9 in your example), ||A'(y)-Z-C || is essentially 0.
Thus y, Z is a dual feasible solution with a very large negative objective
value.  
 
You might examine the ycert vector to see if any of the entries are 
particularly large- these could be related to problematic constraints.
However, I've never found direct examination of this certificate to be
a really useful way to debug a faulty problem.  
 
Note that to get the certificate output to a file, you'll need to run
CSDP with the optional second argument.  Usage is:
 
csdp <input problem> [<final solution>] [<initial solution>]

where both <final solution> and <initial solution> are optional arguments.


More information about the Csdp mailing list