help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-glpk] control parameters and round-off error


From: Andrew Makhorin
Subject: Re: [Help-glpk] control parameters and round-off error
Date: Mon, 14 Jan 2008 21:34:00 +0300

> 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.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]