title: Why does scipy.optimize.linprog return a solution that does not satisfy constraints?
body: <p>Am I doing something wrong or it is a bug?</p>
  
  <pre><code>c = np.array([-1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
  A_ub = np.array([[   1., -724.,  911., -551., -555., -896.,  478.,  -80., -293.],
         [   1.,  566.,   42.,  937.,  233.,  883.,  392., -909.,   57.],
         [   1., -208., -894.,  539.,  321.,  532., -924.,  942.,   55.],
         [   1.,  857., -859.,   83.,  462., -265., -971.,  826.,  482.],
         [   1.,  314., -424.,  245., -424.,  194., -443., -104., -429.],
         [   1.,  540.,  679.,  361.,  149., -827.,  876.,  633.,  302.],
         [   0.,   -1.,   -0.,   -0.,   -0.,   -0.,   -0.,   -0.,   -0.],
         [   0.,   -0.,   -1.,   -0.,   -0.,   -0.,   -0.,   -0.,   -0.],
         [   0.,   -0.,   -0.,   -1.,   -0.,   -0.,   -0.,   -0.,   -0.],
         [   0.,   -0.,   -0.,   -0.,   -1.,   -0.,   -0.,   -0.,   -0.],
         [   0.,   -0.,   -0.,   -0.,   -0.,   -1.,   -0.,   -0.,   -0.],
         [   0.,   -0.,   -0.,   -0.,   -0.,   -0.,   -1.,   -0.,   -0.],
         [   0.,   -0.,   -0.,   -0.,   -0.,   -0.,   -0.,   -1.,   -0.],
         [   0.,   -0.,   -0.,   -0.,   -0.,   -0.,   -0.,   -0.,   -1.],
         [   0.,    1.,    0.,    0.,    0.,    0.,    0.,    0.,    0.],
         [   0.,    0.,    1.,    0.,    0.,    0.,    0.,    0.,    0.],
         [   0.,    0.,    0.,    1.,    0.,    0.,    0.,    0.,    0.],
         [   0.,    0.,    0.,    0.,    1.,    0.,    0.,    0.,    0.],
         [   0.,    0.,    0.,    0.,    0.,    1.,    0.,    0.,    0.],
         [   0.,    0.,    0.,    0.,    0.,    0.,    1.,    0.,    0.],
         [   0.,    0.,    0.,    0.,    0.,    0.,    0.,    1.,    0.],
         [   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    1.]])
  b_ub = np.array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 
                   0., 0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
  A_eq = np.array([[ 0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.]])
  b_eq = np.array([[ 1.]])
  bounds = [(None, None), (None, None), (None, None), (None, None), (None, None), 
           (None, None), (None, None), (None, None), (None, None)]
  
  soln = scipy.optimize.linprog(c, A_ub, b_ub, A_eq, b_eq, bounds)
  print(soln)
  print(A_ub.dot(soln['x']) &lt;= b_ub)
  print(A_ub.dot(soln['x']) - b_ub)
  print(abs(A_eq.dot(soln['x']) - b_eq))](url)
  </code></pre>
  
  <p>outputs</p>
  
  <pre><code>     fun: 39.866871820032244
   message: 'Optimization terminated successfully.'
       nit: 19
     slack: array([   0.   ,    0.   ,    0.   ,    0.   ,  365.161,    0.   ,
            0.   ,    0.   ,    0.   ,    0.   ,    0.167,    0.61 ,
            0.115,    0.518,    1.   ,    1.   ,    1.   ,    1.   ,
            0.833,    0.39 ,    0.885,    0.482])
    status: 0
   success: True
         x: array([-39.812,  -0.281,  -0.625,   0.   ,  -0.031,  -0.125,   0.625,
           0.312,   0.406])
  
  [ True  True False False  True False False False  True False False  True
    True  True  True  True  True  True  True  True  True  True]
  [-121.5   -358.812  240.125  121.781 -357.781  350.656    0.281    0.625
      0.       0.031    0.125   -0.625   -0.312   -0.406   -1.281   -1.625
     -1.      -1.031   -1.125   -0.375   -0.688   -0.594]
  [[ 0.719]]
  </code></pre>
  
  <p>From middle part of <code>A_ub</code> that must be clear that solution must satisfy <code>soln['x'][1:] &gt; 0</code>, however, it is clearly not satisfied!</p>
  
  <p>Am I doing something wrong?</p>
  
  <p>Python 3.6
  scipy==0.18.1</p>