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
Flattening does not seems to stop for the model I attached. This makes it so that the solver time-limit is not respected, since we get stuck in the transformations before the actual solve call.
f = 'lastmodel1691934027.144177.pickle'
with open(f, 'rb') as fpcl:
modle, originalmodel, mutatorsused = pickle.loads(fpcl.read())
modle.solve(time_limit=3) #does not stop (yet)
I think the problem lies within the fact that we attempt to optimize flattening by applying distributivity over disjunctions of conjunctions. This avoids creating aux vars, but in the case of many conjunctions inside a disjunction this explodes the number of constraints exponentially.
So we need some heuristic to decide when to apply distributivity, or not apply it at all (since aux var creation can cause a small slowdown but never exponential, it is the safe option)
It seems that removing the rule for applying distributivity is very beneficial! It is always better to have more aux variables than more constraints, so imo, we should test different cases and how it performs and then if it confirms our intuition, we should remove the rule
Flattening does not seems to stop for the model I attached. This makes it so that the solver time-limit is not respected, since we get stuck in the transformations before the actual solve call.
lastmodel1691934027.144177.zip
The text was updated successfully, but these errors were encountered: