AI and Data Science Master the art of data science. Join now
Given the following linear program in matrix/vector notation:
Min cxs.t. Ax R b x >= 0
where R is any relation from <= or = or >= or a mix of these in case of matrix/vector notation and multiple constraints.
I am looking to provide a starting basis via CPXcopybase (documentation available at https://www.ibm.com/docs/en/icos/22.1.1?topic=c-cpxxcopybase-cpxcopybase)
Usage of this function requires specifying the basis status of variables and constraints via cstat and rstat arguments.
From a separate heuristic I have a tentative solution, let us call this xbar.
At present, my heuristic for providing the basis status of variables is very simply indicating as basic all of the variables that have a nonzeo value in xbar and specifying as nonbasic all of the variables that have a zero value in xbar.
Then, I explicitly iterate using this xbar calculating the actual value of the left hand side, LHS of the constraints, A xbar. Those constraints where this evaluates to exactly the corresponding entry in b, I specify that constraint to be nonbasic. The idea is that the constraint is tight and hence the corresponding slack/surplus/artificial variable is of value 0.
Those constraints where A xbar evaluates to something different from the corresponding entry in b, I specify that constraint to be basic. The idea is that the constraint is not tight and hence the corresponding slack/surplus/artificial variable is not of value 0.
Due to degeneracy, or possibly other reasons, this specification of cstat and rstat arguments may not be correct.
Does CPLEX guarantee that it will somehow fix this basis if something is incorrect in what the user provides and use as much information from cstat and rstat as possible?
Is there any way to provide directly the xbar values to CPLEX and if this xbar is indeed a feasible corner point solution, CPLEX will automatically construct the correct basis corresponding to xbar for the problem and proceed from there? What if the provided xbar is not a basic solution but an otherwise feasible solution?