cvxopt: Trying to do LP and get "Terminated (singular KKT matrix)"

1k Views Asked by At

I am new to cvxopt and am trying to understand this fairly cryptic error message "Terminated (singular KKT matrix)." (At least critic for me.)

I am solving a linear program: $$ \min c^Tx \\ s.t. Gx +s=h \\ Ax = b \\ s \ge 0 $$

,where $c=[-1,0,0,0,0,0]^T$, $h=0$, $A=[0,1,1,1,1,1]$, $b=1$. $G$ is slightly more involved:

$$G[0:5,0]=1 \\ 0 \le G[0:5, 1:6] \le 1 \\ G[5:10,0]=0 \\ G[5:10,1:6]=-I_{5x5} $$

I am checking to see if they meet the conditions required by cvxopt. What I know are:

  1. $rank(A)=1$, which is automatically met.
  2. $rank([A;G]) \ge n$ - I think this one is met, too
  3. Each row of $A$ and $G$ need to be linearly independent? I am referring to

the document here. It is not true for this example, as the last few rows in $G$ are like $[0,-1,0,0,0,0], [0,0,0,0,0,-1]$ but the row in $A$ is $[0,1,1,1,1,1]$I am not convinced that this need to be the case.

Anyway, I can successfully find solutions for problems formulated this way most of the time, but occasionally, cvxopt will iterate 5-7 times and abort with an error message "Terminated (singular KKT matrix)."

I think that this error message is not caused by the conditions listed above. But I am out of ideas to fix it. I want to know:

  1. What does this error message mean? What causes it?
  2. How can I try to fix it?