Andrew,

In function ios_driver(), the root node is identified by checking whether
the node level is zero (T->curr->level == 0). However, the node level may
be zero even after branching if one of the branches is hopeless, in which
case the node is reused. With the existing check, several procedures that
are intended for the root node only are run again (e.g. proximity search,
feasibility pump and heavy node preprocessing).

This can be seen using neos13.mps from miplib with:
glpsol --fpump --cuts neos13.mps

The attached patch introduces a new variable "root_done" which is initially
zero and is set to one before the first branching decision. All checks for
the root node are replaced with !root_done, and two more checks are added
before the calls to ios_feas_pump() and ios_proxy_heur() where the original
checks are inside the functions.

Best Regards,

Chris Matrakidis

Attachment: root.patch
Description: Binary data

_______________________________________________
Bug-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-glpk

Reply via email to