> I faced the following problem. I repeatedly call glp_simplex on the > same lp object (only continuous variables) after manipulating the > objective function. The objective function value i get seems to be a > bit inaccurate (say the third digit seems to be incorrect).
Try using lpx_check_kkt to check lp solution accuracy. The objective may be inaccurate also due to reduced cost tolerance which is 1e-7 by default. Besides, if the objective coefficients are too small (much less than 1.0), it would be desired to scale them. > As the > computation involves several thousand iterations, probably this is due > to the accumulation of round-off errors. I always check the returned > value of glp_get_status and it is GLP_OPT. > Can i set the solver to automatically refactor the basis matrix > (probably with stricter tolerances) if it is needed? > Which parameters should be changed to set stricter tolerances? Try changing the factorization control parameters before the first call to glp_simplex: glp_bfcp parm; glp_get_bfcp(lp, &parm); parm.type = GLP_BF_GR; parm.nrs_max = 20; /* or even 10 */ > I am OK with a slower solution process if the values are more precise. > Is it possible to obtain some kind of estimate on the error of the > objective function value? > My LP problem is supposed to be badly scaled. I call > lpx_scale_prob(lp); before calling glp_simplex however i do not know > if it is enough or not. > Should i change the scaling parameter? If you think that a new row/column added to the instance is badly scaled, you can change its scale factor with glp_set_rii (for row) or with glp_set_sjj (for column). For more details please see the reference manual. _______________________________________________ Help-glpk mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-glpk
