Open jac0320 opened 6 years ago
Did you run the crudeoil_lee1_09,...,crudeoil_lee2_09
instances all with a 60s time limit?
The time limit at the moment checks only inside the tree search (not for relaxation) :/
I'll add this but this can't be the reason for your other test cases, I suppose.
Or are these extremely big instances where Ipopt takes that long?
At the moment I would also set the time limit inside of Ipopt as well. Have to think about how to implement this inside Juniper in the best way for all kinds of different NLP solvers.
Yes. All were fed with 60s limit. They are large instances but not necessarily super large.
For example, crudeoil_lee1_09
is with 2065 linear cons, 288 nonlinear cons, 964 variables, 72 binaries. No super long equations among all constraints.
@Wikunia just did a Ipopt test with crudeoil_lee1_09, the root relaxation with Ipopt took 591s on a single core node.
I guess the question is where time is spent outside the BnB search.
BTW, thanks @Wikunia
I think there are two keys points,
This is a pretty common problem among non-commercial solvers (incl. bonmin). If a sub-solver is spinning the master solver will not check it's time limit.
@Wikunia, the only robust solution I can think of is to run the complete solver algorithm in it's own separate process (incl. pre solve, FP, and search). The master thread monitors the current best solution and bound, and time limit. It then kills the solver alg. process when the limit is reached.
Until JuMP v0.19, we should not try to have Juniper set the NLP solver runtime limit. The parameters differ by solver, so the user should specify this.
This still needs to set the time limit for the nlp solver if you want to be safe.
At the moment I use https://github.com/lanl-ansi/Juniper.jl/blob/master/src/fpump.jl#L152-L157 to limit the time inside the feasibility pump. This might be an option (maybe this changes in JuMP v0.19)
Was trying to connect Juniper with POD for some large scale runs.
Juniper solver is configed as:
Here is a sample output of problem chp_shorttermplan2a. The "wall time" (getsolvetime(m)=283.986s) is much longer then 60s.
Is the solver configured wrongly? Some other cases suggested excessive long running time.