1

This sounds like a famous and straightforward question, but I do not know how exactly to solve it, although I have some rather half-baked ideas. I have already looked at these two answers, this and this, which are nice, but do not exactly answer my question.

I have a linear system of inequalities that I can probably rearrange to $ \mathbf{Ax} > \mathbf{b} $, and I am only interested to know the feasibility of the system, that is, yes or no.

In my particular problem, $ \mathbf{A} $ is a square matrix of reals ($ 8 \times 8 $). And there are no sign constraints on the elements of the vector $ \mathbf{x} $. And $ \mathbf{b} = \mathbf{0} $.

I am interested to know how exactly I need to reformulate the problem to be able to feed it to a Linear Programming solver to check for the feasibility of the system.

The issue with LP solvers is that they need an objective function. I know from the answers linked above that this feasibility problem can be converted to an optimization problem by replacing, for instance, the first element of $ \mathbf{b} $ (which is 0) by $ b_1 $, and then maximizing $ b_1 $ under the same constraints.

Now I have an objective function. If a nonnegative $ b_1$ was found, that is, $ b_1 \geqslant 0 $, then the system is feasible. Otherwise, it is not.

Any help, comment, or reference work about my analysis would be appreciated. Look at my specific problem.

Pooya
  • 231
  • You can always use the zero objective function. – Yuval Filmus Jun 09 '18 at 21:01
  • @YuvalFilmus I set objective function to zero and the solver gives me the trivial solution zero which is not even correct. because half of my constraints are strictly less than zero. (I used the R package lpSolve (originally lp_solve)) – Pooya Jun 09 '18 at 23:00
  • You cannot express strict constraints using linear programming. – Yuval Filmus Jun 09 '18 at 23:02
  • The solver found out that your program were feasible. It did its job. – Yuval Filmus Jun 09 '18 at 23:02
  • @YuvalFilmus I understand that you are saying theoretically strict constraints are not allowed. But the software allows for strict signs, < and >, in its documentation and throws no error when I use them. Yet again, the zero solution does not satisfy half of my constraints that are strictly less than zero (see problem picture at the bottom of question). – Pooya Jun 09 '18 at 23:20
  • How can I be sure that the program is feasible when the solution given by the software does not satisfy some of the constraints. – Pooya Jun 09 '18 at 23:41
  • An LP solver returns either an optimal solution, states that the objective function is unbounded, or that the program is infeasible. These are mutually exclusive. – Yuval Filmus Jun 10 '18 at 05:06
  • 1
    In order to fake a strict constraint, replace $x > 0$ by $x \geq \epsilon$ for some small $\epsilon$. – Yuval Filmus Jun 10 '18 at 05:07

1 Answers1

3

Farkas' Lemma gives a criterion for the feasibility of the system $A\mathbf{x} = \mathbf{b}$, $\mathbf{x} \geq \mathbf{0}$, which is an equivalent problem to yours by adding slack variables. It states that such a solution exists if and only if the linear program \begin{align*} min. \, &\mathbf{b}^T\mathbf{y} \\ subject\,to\, &A^T\mathbf{y} \geq \mathbf{0}\end{align*} has a nonnegative optimum. See https://en.wikipedia.org/wiki/Farkas%27_lemma.

  • 2
    I think this worked. To transform my system of inequalities to the equivalent system of equations $ A \mathbf{x} = \mathbf{b}, \ \mathbf{x} \geqslant \mathbf{0} $, I needed to use slack and excess variables, fake strict constraints using a small $ \epsilon $, and substitute all unconstrained in sign variables $ \alpha_i $ with $ \alpha_i = \alpha'_i - \alpha''_i, \ \alpha'_i, \alpha''_i \geqslant 0 $. Thanks to Joshua and @YuvalFilmus. – Pooya Jun 12 '18 at 01:47