<div dir="ltr">Thanks Ambros. With a debugger I can see that the solver spends the 8 seconds somewhere inside Ipopt. Here is a typical stack trace during that period:<div><br></div><div>libopenblas.so.0!blas_memory_alloc (Unknown Source:0)<br>libblas.so.3!dtrsv_ (Unknown Source:0)<br>libscip.so.7.0!dmumps_302_ (Unknown Source:0)<br>libscip.so.7.0!dmumps_248_ (Unknown Source:0)<br>libscip.so.7.0!dmumps_245_ (Unknown Source:0)<br>libscip.so.7.0!dmumps_301_ (Unknown Source:0)<br>libscip.so.7.0!dmumps_ (Unknown Source:0)<br>libscip.so.7.0!dmumps_f77_ (Unknown Source:0)<br>libscip.so.7.0!dmumps_c (Unknown Source:0)<br>libscip.so.7.0!Ipopt::MumpsSolverInterface::Solve(int, double*) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::TSymLinearSolver::MultiSolve(Ipopt::SymMatrix const&, std::vector<Ipopt::SmartPtr<Ipopt::Vector const>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&, bool, int) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::StdAugSystemSolver::MultiSolve(Ipopt::SymMatrix const*, double, Ipopt::Vector const*, double, Ipopt::Vector const*, double, Ipopt::Matrix const*, Ipopt::Vector const*, double, Ipopt::Matrix const*, Ipopt::Vector const*, double, std::vector<Ipopt::SmartPtr<Ipopt::Vector const>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector const>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector const>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector const>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&, std::vector<Ipopt::SmartPtr<Ipopt::Vector>, std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&, bool, int) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::AugSystemSolver::Solve(Ipopt::SymMatrix const*, double, Ipopt::Vector const*, double, Ipopt::Vector const*, double, Ipopt::Matrix const*, Ipopt::Vector const*, double, Ipopt::Matrix const*, Ipopt::Vector const*, double, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector&, Ipopt::Vector&, Ipopt::Vector&, Ipopt::Vector&, bool, int) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::PDFullSpaceSolver::SolveOnce(bool, bool, Ipopt::SymMatrix const&, Ipopt::Matrix const&, Ipopt::Matrix const&, Ipopt::Matrix const&, Ipopt::Matrix const&, Ipopt::Matrix const&, Ipopt::Matrix const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector const&, double, double, Ipopt::IteratesVector const&, Ipopt::IteratesVector&) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::PDFullSpaceSolver::Solve(double, double, Ipopt::IteratesVector const&, Ipopt::IteratesVector&, bool, bool) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::QualityFunctionMuOracle::CalculateMu(double, double, double&) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::AdaptiveMuUpdate::UpdateBarrierParameter() (Unknown Source:0)<br>libscip.so.7.0!Ipopt::IpoptAlgorithm::UpdateBarrierParameter() (Unknown Source:0)<br>libscip.so.7.0!Ipopt::IpoptAlgorithm::Optimize(bool) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::IpoptApplication::call_optimize() (Unknown Source:0)<br>libscip.so.7.0!Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&, Ipopt::SmartPtr<Ipopt::AlgorithmBuilder>&) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&) (Unknown Source:0)<br>libscip.so.7.0!Ipopt::IpoptApplication::OptimizeTNLP(Ipopt::SmartPtr<Ipopt::TNLP> const&) (Unknown Source:0)<br>libscip.so.7.0![Unknown/Just-In-Time compiled code] (Unknown Source:0)<br>libscip.so.7.0!SCIPnlpiSolve (Unknown Source:0)<br>libscip.so.7.0![Unknown/Just-In-Time compiled code] (Unknown Source:0)<br>libscip.so.7.0!SCIPsolve (Unknown Source:0)<br>miplib::ScipSolver::solve(miplib::ScipSolver * const this) (/home/marco/projects/gnosis/repo/gp-v2-solver-lib/deps/miplib/miplib/scip/solver.cpp:352)<br>miplib::Solver::solve(miplib::Solver * const this) (/home/marco/projects/gnosis/repo/gp-v2-solver-lib/deps/miplib/miplib/solver.cpp:134)<br>QUCPSolver::solve(QUCPSolver * const this) (/home/marco/projects/gnosis/repo/gp-v2-solver-lib/src/solvers/qucp_solver/QUCPSolver.cpp:619)<br>solve_scaled_ucp(const BatchAuction & scaled_batch_auction, const QUCPSolverParameters & solver_parameters, double max_price, const std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1, 1000000000> > > & start_time) (/home/marco/projects/gnosis/repo/gp-v2-solver-lib/src/solvers/qucp_solver/solve.cpp:128)<br>solve(const BatchAuction & batch_auction, const QUCPSolverParameters & solver_parameters, const std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1, 1000000000> > > & start_time) (/home/marco/projects/gnosis/repo/gp-v2-solver-lib/src/solvers/qucp_solver/solve.cpp:190)<br>main(int argc, char ** argv) (/home/marco/projects/gnosis/repo/gp-v2-solver-lib/src/solvers/qucp_solver/cli.cpp:52)<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 29, 2021 at 10:57 AM Ambros Gleixner <<a href="mailto:gleixner@zib.de">gleixner@zib.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Marco,<br>
<br>
But I agree that 18 vs 10 s is a bit odd.  You can look at the <br>
statistics and check whether there is one plugin that took a long time, <br>
then probably there we should include more regular checks.  If you have <br>
any insight like this, then please report this as a bug.<br>
<br>
Best,<br>
Ambros<br>
<br>
<br>
Am 28.09.21 um 21:05 schrieb Marc Pfetsch:<br>
> <br>
> <br>
> Hi Marco,<br>
> <br>
> the time limit is only checked from time to time. Thus, it might be that <br>
> SCIP runs slightly longer than the time limit. This behavior is <br>
> independent of whether SCIP found a solution or not.<br>
> <br>
> Best<br>
> <br>
> Marc<br>
> <br>
> On 28/09/2021 10.32, Marco Correia wrote:<br>
>> Hi,<br>
>><br>
>> It appears sometimes SCIP has a very relaxed interpretation of the <br>
>> "limits/time" parameter. For example, I just run an instance with <br>
>> "limits/time = 10s" and SCIP tool 18s.<br>
>><br>
>> Not sure if relevant, but this is a quadratic problem, and has lazy <br>
>> constraints (time in lazy constraint generation is negligible though, <br>
>> in this particular instance it was 0.01s).<br>
>><br>
>> I am expecting that SCIP honors the timelimit parameter, even if it <br>
>> can't find any solution. Maybe this assumption is wrong?<br>
>><br>
>> Thanks<br>
>> Marco<br>
>><br>
>> _______________________________________________<br>
>> Scip mailing list<br>
>> <a href="mailto:Scip@zib.de" target="_blank">Scip@zib.de</a><br>
>> <a href="https://listserv.zib.de/mailman/listinfo/scip" rel="noreferrer" target="_blank">https://listserv.zib.de/mailman/listinfo/scip</a><br>
>><br>
> _______________________________________________<br>
> Scip mailing list<br>
> <a href="mailto:Scip@zib.de" target="_blank">Scip@zib.de</a><br>
> <a href="https://listserv.zib.de/mailman/listinfo/scip" rel="noreferrer" target="_blank">https://listserv.zib.de/mailman/listinfo/scip</a><br>
_______________________________________________<br>
Scip mailing list<br>
<a href="mailto:Scip@zib.de" target="_blank">Scip@zib.de</a><br>
<a href="https://listserv.zib.de/mailman/listinfo/scip" rel="noreferrer" target="_blank">https://listserv.zib.de/mailman/listinfo/scip</a><br>
</blockquote></div>