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:
- $rank(A)=1$, which is automatically met.
- $rank([A;G]) \ge n$ - I think this one is met, too
- 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:
- What does this error message mean? What causes it?
- How can I try to fix it?