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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

◆◆In Concert Technology, use the method:IloCplex::getQuality(IloCplex::Kappa) (C++)IloCplex.getQuality(IloCplex.QualityType.Kappa) (Java)Cplex.GetQuality(Cplex.QualityType.Kappa) (.NET)In the Callable Library, use the routine CPXgetdblquality to access the conditionnumber in the double-precision variable dvalue, like this:status = CPXgetdblquality(env, lp, &dvalue, CPX_KAPPA);Repeated SingularitiesWhenever <strong>ILOG</strong> <strong>CPLEX</strong> encounters a singularity, it removes a column from the currentbasis and proceeds with its work. <strong>ILOG</strong> <strong>CPLEX</strong> reports such actions to the log file (bydefault) and to the screen (if you are working in the Interactive Optimizer or if themessage-to-screen indicator CPX_PARAM_SCRIND is set to 1 (one)). Once it finds an optimalsolution under these conditions, <strong>ILOG</strong> <strong>CPLEX</strong> will then re-include the discarded column tobe sure that no better solution is available. If no better objective value can be obtained, thenthe problem has been solved. Otherwise, <strong>ILOG</strong> <strong>CPLEX</strong> continues its work until it reachesoptimality.Occasionally, new singularities occur, or the same singularities recur. <strong>ILOG</strong> <strong>CPLEX</strong>observes a limit on the number of singularities it tolerates. The parameter SingLim specifiesthis limit. By default, the limit is ten. After encountering this many singularities,<strong>ILOG</strong> <strong>CPLEX</strong> will save in memory the best factorable basis found so far and stop itssolution process. You may want to save this basis to a file for later use.To save the best factorable basis found so far in the Interactive Optimizer, use the writecommand with the file type bas. When using the Component Libraries, use the methodcplex.writeBasis or the routine CPXwriteprob.If <strong>ILOG</strong> <strong>CPLEX</strong> encounters repeated singularities in your problem, you may want to tryalternative scaling on the problem (rather than simply increasing <strong>ILOG</strong> <strong>CPLEX</strong> tolerancefor singularities). Scaling on page 181 explains how to try alternative scaling.If alternate scaling does not help, another tactic to try is to increase the Markowitz tolerance.The Markowitz tolerance controls the kinds of pivots permitted. If you set it near itsmaximum value of 0.99999, it may make iterations slower but more numerically stable.Inability to Stay Feasible on page 189 shows how to change the Markowitz tolerance.If none of these ideas help, you may need to alter the model of your problem. Considerremoving the offending variables manually from your model, and review the model to findother ways to represent the functions of those variables.Stalling Due to DegeneracyHighly degenerate linear programs tend to stall optimization progress in the primal and dualsimplex optimizers. When stalling occurs with the primal simplex optimizer, <strong>ILOG</strong> <strong>CPLEX</strong>188 <strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL

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

Saved successfully!

Ooh no, something went wrong!