views:

111

answers:

2

Hi, I need an algorithm that automatically makes a linear programming problem feasible. Concretely, the algorithm is such that its input is a linear programming problem which potentially does not have feasible solutions, and its output is a similar programming (with parameters modified with minimum) which is bound to have feasible solutions. I am a newbie in algorithms and inquire if there is any existing research/work for such problems? Any suggestions and comments are appreciated. Thanks, Richard

+1  A: 

You could just add slack variables to the constraints then minimize the sum of the values squared.

anonymous_21321
A: 

Add a set of "artificial variables", one per equation, with unit weight in that equation and zero weight everywhere else. Then, you can choose that set as your first basis, and add "eliminate the artificial variables" as an initial goal. If you can eliminate all the artificial variables, you can discard them, and you will have a feasible basis for your initial problem; if you cannot eliminate the artificial variables, there is no feasible solution.

original problem (in canonical form -- any LP problem can be converted to this!):

minimize c.x, given: [A]x = b, x_i>=0
  (but first, need feasible solution)

to find a feasible solution (assuming all b_j>=0; if not, just multiply the row by -1):

minimize sum(y), given:  y + [A]x = b, x_i>=0, y_j>=0
  with initial, feasible solution: x_i=0, y_j=b_j

There are variations and optimizations on this kind of scheme; for instance, you don't necessarily need to convert everything to canonical form to do this kind of thing (though it is useful for simplicity of explanation). You should be able to find more details in any linear programming text.

Note that this is similar to the other answer of "slack variables", except that there is no point in squaring anything (which would make the problem nonlinear, and thus more difficult to solve within a linear programming framework...)

comingstorm