User Tools

Site Tools


solver:improving_the_precision_of_the_results_of_the_interior_point_method

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

solver:improving_the_precision_of_the_results_of_the_interior_point_method [2007/08/15 15:31] (current)
Line 1: Line 1:
 +====== "​Improving"​ the precision of the interior point method ======
 +
 +Q: //Using Cplex to solve my QCP model returns a slightly different solution (e.g. 256.949847) than the one I get back from MINOS (e.g. 256.949789699778700). Is this just a matter of cplex using smaller precision internally and therefore having a slightly different answer? ​ I've noticed that it probably only uses 6 or 7 decimal places of precision whereas the same problem formulated as an nlp and solved in MINOS has a much higher precision, say 15 decimal places.//
 +
 +All of GAMS solvers, and GAMS/Base itself, work internally with double precision values. ​ However, using these values it is not in general possible to compute function values to this amount of accuracy. ​ For example, the difference of two large number that are nearly equal can be stored in a double but the result will not have 15 digits of accuracy. For this reason, solvers only get feasible with respect to some tolerance, say 1e-5.  They can sometimes do much better, but they are content to solve things to within the feasibility tolerance. ​ In your case MINOS, which is a pivotal method, was giving a much more precise answer than the interior point method used by CPLEX.  ​
 +
 +Try using this CPLEX option file (cplex.opt):​
 +<​code>​ barqcpepcomp = 1e-9 </​code>​
 +and set ''​optfile=1''​ on the command line or in the parameter window of the IDE.
 +
 +This should increase the iterations CPLEX takes just a bit (the default value of 1e-7 is achieved more quickly) and give a more accurate solution. ​ You can push down even more but eventually CPLEX will not be able to achieve what you specify. ​
 +
 +You may also try solving the model first with CPLEX to get a solution, then solving with PATHNLP to clean up the solution. ​  This also works with the solvers CONOPT and MINOS - all of these are pivotal methods that return more accurate solutions in this case.  And none of the "​cleanup"​ solves take very long when they start with the CPLEX solution as their initial point.
  
IMPRESSUM / LEGAL NOTICEPRIVACY POLICY solver/improving_the_precision_of_the_results_of_the_interior_point_method.txt ยท Last modified: 2007/08/15 15:31 (external edit)