12.07.2015 Views

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Basis InformationWhen solving an LP using all but IloCplex.Algorithm.Barrier without crossover, orwhen solving a QP with a Simplex optimizer, basis information is available as well. Basisinformation can be queried for the variables and ranged constraints of the active model usingmethod IloCplex.getBasisStatus. This method returns basis statuses for the variablesor constraints using objects of type IloCplex.BasisStatus, with possible values:IloCplex.BasisStatus.Basic,IloCplex.BasisStatus.AtLower,IloCplex.BasisStatus.AtUpper, andIloCplex.BasisStatus.FreeOrSuperbasic.The availability of a basis for an LP allows you to perform sensitivity analysis for yourmodel. Such analysis tells you by how much you can modify your model without affectingthe solution you found. The modifications supported by the sensitivity analysis functioninclude variable bound changes, changes to the bounds of ranged constraints, and changes tothe objective function. They are analyzed by methods IloCplex.getBoundSA,IloCplex.getRangeSA, IloCplex.getRHSSA and IloCplex.getObjSA, respectively.Infeasible Solution InformationAn important feature of <strong>ILOG</strong> <strong>CPLEX</strong> is that even if no feasible solution has been found,(that is, if cplex.solve returns false), some information about the problem can still bequeried. All the methods discussed so far may successfully return information about thecurrent (infeasible) solution that <strong>ILOG</strong> <strong>CPLEX</strong> maintains.Unfortunately, there is no simple comprehensive rule about whether or not current solutioninformation can be queried. This is because by default, <strong>ILOG</strong> <strong>CPLEX</strong> uses a presolveprocedure to simplify the model. If, for example, the model is proven to be infeasible duringthe presolve, no current solution is generated by the optimizer. If, in contrast, infeasibility isonly proven by the optimizer, current solution information is available to be queried. Thestatus returned by calling cplex.getCplexStatus may help you decide which case youare facing, but it is probably safer and easier to include the methods for querying the solutionwithin try / catch statements.The method IloCplex.isPrimalFeasible can be called to learn whether a primalfeasible solution has been found and can be queried. Similarly, the methodIloCplex.isDualFeasible can be called to learn whether a dual feasible solution hasbeen found and can be queried.When an LP has been proven to be infeasible, <strong>ILOG</strong> <strong>CPLEX</strong> provides assistance forinvestigating the cause of the infeasibility through two different approaches: the conflictrefiner and FeasOpt.<strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL 89

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!