You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a time limit is set in Ecole using the scip parameter limits/time, and occurs while the LP is being constructed at a node, the LP construction is aborted, but for some reason the brancher still gets called. This results in weird states where there is no LP, and SCIPgetNLPCols returns 0, yet some variables might have nonzero LP column indices, etc. Quite dangerous.
In particular, this led to a segfault here at line 76 of
because lp_index was nonzero but strong_branching_scores was a xtensor of length nb_cols=0.
This is symptomatic of more general issues: what should happen if an observation extraction function gets called after SCIP is in a stopped state? (SCIPisStopped() returns True.) My suggestion would be to add a check, in the code common to all observation functions for all environments, that avoids calling the extraction function if SCIPisStopped()==True. In that case the observation function would return {}/None.
The text was updated successfully, but these errors were encountered:
dchetelat
changed the title
Branching function gets called when timit limit hit during LP construction
Branching function gets called when time limit hit during LP construction
Jun 18, 2021
When a time limit is set in Ecole using the scip parameter
limits/time
, and occurs while the LP is being constructed at a node, the LP construction is aborted, but for some reason the brancher still gets called. This results in weird states where there is no LP, andSCIPgetNLPCols
returns 0, yet some variables might have nonzero LP column indices, etc. Quite dangerous.In particular, this led to a segfault here at line 76 of
ecole/libecole/src/observation/strongbranchingscores.cpp
Lines 70 to 77 in 2c19430
because
lp_index
was nonzero butstrong_branching_scores
was a xtensor of lengthnb_cols=0
.This is symptomatic of more general issues: what should happen if an observation extraction function gets called after SCIP is in a stopped state? (
SCIPisStopped()
returns True.) My suggestion would be to add a check, in the code common to all observation functions for all environments, that avoids calling the extraction function ifSCIPisStopped()==True
. In that case the observation function would return{}/None
.The text was updated successfully, but these errors were encountered: