Hi, Is it possible to warm-start the DAQP solver for perturbed solutions through JuMP, or can I only do it through the cumbersome sense interface? I see there’s a warm-start tutorial for SCS but I wasn’t sure if it applied to all warm-start enabled solvers. I tried recreating the exact method shown for SCS but for DAQP but it didn’t work.
Hi @kziliask, this appears to be an issue with DAQP: Setting VariablePrimalStart doesn't do anything · Issue #21 · darnstrom/DAQP.jl · GitHub
I don’t know if it’s just a missing feature or if there is some reason that it wasn’t implemented.
@darnstrom hangs out on this forum and may want to chime in.
Thanks for bringing this issue up @kziliask, and thanks @odow for the ping.
Since DAQP is a dual active-set solver, a primal starting point is not that useful in itself (this is why I haven’t implemented this functionality yet.)
DAQP can, however, be warm started given an active set. So one option would be to compute the constraints that are active for the provided iterate behind the scene, and then warm start with that active set.
Hi @darnstrom thanks for the response. Can it be warm-started through JuMP? I’m currently building a new sense vector by iterating through the constraints to find the active ones, but that means not using JuMP which would be more intuitive for me.
It is currently not supported in DAQP’s Julia interface. I could add this feature.
Just so I fully understand: do you want to use an iterate from a previous solution to a problem solved by DAQP? Or does the starting iterate come from somewhere else?
I am asking, since if the former is true, one might be able to use the internal DAQP workspace of the JuMP Model to do some more efficient things. Nevertheless, adding support for primal iterates coming from “outside” would for sure be a useful feature.
For my usecase, I am basically solving many perturbed QPs, so in theory the new solution will be close to the previous one. I am using DAQP to solve both problems but I see how it could come from a different source. I am currently computing the active set manually after each solution which can’t be the best way to do it but it was fairly straightforward to set up, and would easily accept outside solutions. It would be great if this was added to DAQP (and subsequently JuMP) as a feature.