Andrew,
I managed to trigger the xassert(dx != 0.0) in ios_pcost_update (line
508 of glpios09.c). What I think happens is that the branching
variable has a value over 10000, so that tol_mip is smaller than the
product of tol_piv and the unscaled variable, so it is a candidate for
branching but doesn't change value afterwards. The attached patch
papers over the symptom, but I'm not sure this is the best way.
Best Regards,
Chris Matrakidis
diff --git a/src/glpios09.c b/src/glpios09.c
index a6a4e82..bea1fd6 100644
--- a/src/glpios09.c
+++ b/src/glpios09.c
@@ -505,7 +505,9 @@ void ios_pcost_update(glp_tree *tree)
x[j] in optimal solution to LP relaxation of the parent
subproblem */
dx = tree->mip->col[j]->prim - tree->curr->up->br_val;
- xassert(dx != 0.0);
+ /* if tol_int is smaller than tol_piv times the unscaled variable,
+ dx may be zero or close to it */
+ if (fabs(dx) < tree->parm->tol_int) goto skip;
/* determine corresponding change dz = new dz - old dz in the
objective function value */
dz = tree->mip->obj_val - tree->curr->up->lp_obj;
_______________________________________________
Bug-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-glpk