[SCIP] Time limit

Marco Correia marco.v.correia at gmail.com
Wed Sep 29 12:53:05 CEST 2021


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:

libopenblas.so.0!blas_memory_alloc (Unknown Source:0)
libblas.so.3!dtrsv_ (Unknown Source:0)
libscip.so.7.0!dmumps_302_ (Unknown Source:0)
libscip.so.7.0!dmumps_248_ (Unknown Source:0)
libscip.so.7.0!dmumps_245_ (Unknown Source:0)
libscip.so.7.0!dmumps_301_ (Unknown Source:0)
libscip.so.7.0!dmumps_ (Unknown Source:0)
libscip.so.7.0!dmumps_f77_ (Unknown Source:0)
libscip.so.7.0!dmumps_c (Unknown Source:0)
libscip.so.7.0!Ipopt::MumpsSolverInterface::Solve(int, double*) (Unknown
Source:0)
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)
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)
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)
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)
libscip.so.7.0!Ipopt::PDFullSpaceSolver::Solve(double, double,
Ipopt::IteratesVector const&, Ipopt::IteratesVector&, bool, bool) (Unknown
Source:0)
libscip.so.7.0!Ipopt::QualityFunctionMuOracle::CalculateMu(double, double,
double&) (Unknown Source:0)
libscip.so.7.0!Ipopt::AdaptiveMuUpdate::UpdateBarrierParameter() (Unknown
Source:0)
libscip.so.7.0!Ipopt::IpoptAlgorithm::UpdateBarrierParameter() (Unknown
Source:0)
libscip.so.7.0!Ipopt::IpoptAlgorithm::Optimize(bool) (Unknown Source:0)
libscip.so.7.0!Ipopt::IpoptApplication::call_optimize() (Unknown Source:0)
libscip.so.7.0!Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP>
const&, Ipopt::SmartPtr<Ipopt::AlgorithmBuilder>&) (Unknown Source:0)
libscip.so.7.0!Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP>
const&) (Unknown Source:0)
libscip.so.7.0!Ipopt::IpoptApplication::OptimizeTNLP(Ipopt::SmartPtr<Ipopt::TNLP>
const&) (Unknown Source:0)
libscip.so.7.0![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libscip.so.7.0!SCIPnlpiSolve (Unknown Source:0)
libscip.so.7.0![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libscip.so.7.0!SCIPsolve (Unknown Source:0)
miplib::ScipSolver::solve(miplib::ScipSolver * const this)
(/home/marco/projects/gnosis/repo/gp-v2-solver-lib/deps/miplib/miplib/scip/solver.cpp:352)
miplib::Solver::solve(miplib::Solver * const this)
(/home/marco/projects/gnosis/repo/gp-v2-solver-lib/deps/miplib/miplib/solver.cpp:134)
QUCPSolver::solve(QUCPSolver * const this)
(/home/marco/projects/gnosis/repo/gp-v2-solver-lib/src/solvers/qucp_solver/QUCPSolver.cpp:619)
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)
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)
main(int argc, char ** argv)
(/home/marco/projects/gnosis/repo/gp-v2-solver-lib/src/solvers/qucp_solver/cli.cpp:52)

On Wed, Sep 29, 2021 at 10:57 AM Ambros Gleixner <gleixner at zib.de> wrote:

> Hi Marco,
>
> But I agree that 18 vs 10 s is a bit odd.  You can look at the
> statistics and check whether there is one plugin that took a long time,
> then probably there we should include more regular checks.  If you have
> any insight like this, then please report this as a bug.
>
> Best,
> Ambros
>
>
> Am 28.09.21 um 21:05 schrieb Marc Pfetsch:
> >
> >
> > Hi Marco,
> >
> > the time limit is only checked from time to time. Thus, it might be that
> > SCIP runs slightly longer than the time limit. This behavior is
> > independent of whether SCIP found a solution or not.
> >
> > Best
> >
> > Marc
> >
> > On 28/09/2021 10.32, Marco Correia wrote:
> >> Hi,
> >>
> >> It appears sometimes SCIP has a very relaxed interpretation of the
> >> "limits/time" parameter. For example, I just run an instance with
> >> "limits/time = 10s" and SCIP tool 18s.
> >>
> >> Not sure if relevant, but this is a quadratic problem, and has lazy
> >> constraints (time in lazy constraint generation is negligible though,
> >> in this particular instance it was 0.01s).
> >>
> >> I am expecting that SCIP honors the timelimit parameter, even if it
> >> can't find any solution. Maybe this assumption is wrong?
> >>
> >> Thanks
> >> Marco
> >>
> >> _______________________________________________
> >> Scip mailing list
> >> Scip at zib.de
> >> https://listserv.zib.de/mailman/listinfo/scip
> >>
> > _______________________________________________
> > Scip mailing list
> > Scip at zib.de
> > https://listserv.zib.de/mailman/listinfo/scip
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20210929/435c04e7/attachment.html>


More information about the Scip mailing list