gtsam
4.1.0
gtsam

This LPInitSolver implements the strategy in Matlab: http://www.mathworks.com/help/optim/ug/linearprogrammingalgorithms.html#brozyzb9 Solve for x and y: min y st Ax = b Cx  y <= d where y \in R, x \in R^n, and Ax = b and Cx <= d is the constraints of the original problem.
If the solution for this problem {x*,y*} has y* <= 0, we'll have x* a feasible initial point of the original problem otherwise, if y* > 0 or the problem has no solution, the original problem is infeasible.
The initial value of this initial problem can be found by solving min x^2 s.t. Ax = b to have a solution x0 then y = max_j ( Cj*x0  dj ) – due to the constraints y >= Cx  d
WARNING: If some xj in the inequality constraints does not exist in the equality constraints, set them as zero for now. If that is the case, the original problem doesn't have a unique solution (it could be either infeasible or unbounded). So, if the initialization fails because we enforce xj=0 in the problematic inequality constraint, we can't conclude that the problem is infeasible. However, whether it is infeasible or unbounded, we don't have a unique solution anyway.
Public Member Functions  
LPInitSolver (const LP &lp)  
Construct with an LP problem.  
VectorValues  solve () const 
Friends  
class  LPInitSolverInitializationTest 
VectorValues gtsam::LPInitSolver::solve  (  )  const 