RobotLocomotion / drake

Model-based design and verification for robotics.
https://drake.mit.edu
Other
3.18k stars 1.24k forks source link

Including SCIP into drake #19338

Open FranekStark opened 1 year ago

FranekStark commented 1 year ago

SCIP is a fast MI solver. In the past, It was not included into drake, because of license issues. (https://github.com/RobotLocomotion/drake/issues/12997#issuecomment-608827345, https://github.com/RobotLocomotion/drake/issues/3367#issue-175333654)

However, recently the license has been changed to APACHE2.0 (https://scipopt.org/index.php#license). Maybe it would be worth it to consider adding, SCIP as a solver to have a nice (non-commerical) alternative to GUROBI and MOSEK.

RussTedrake commented 1 year ago

Fantastic news! Thank you for letting us know. We'll definitely take another careful look.

FranekStark commented 9 months ago

Are there any new on this? Since we got some fantastic results on Mixed Integer solving with SCIP, and we would love to use it along with drake, we are considering taking over this task. Do you have some guidelines, on how to best integrate a solver (except extending the abstract SolverBase class)?

jwnimmer-tri commented 9 months ago

I'll let others respond with any solver programming tips, but helping with the build system part of this task would be on my plate. One question to help get started on that front...

Looking at the CMakeLists for SCIP, I see that there are some options for turning on/off various dependencies or options. Do we know which options we would want (or need) to have ON for Drake? In particular, if the SCIP library requires other helper libraries then we would also need to check the license terms for those libraries. If you can provide a list of minimum required options to enable, I can help check those licenses.

jwnimmer-tri commented 9 months ago

FYI On a related note, I also did a quick check of helper libraries that are copied into the SCIP codebase directly (under scip/src/...). It looks like for Drake's use of SCIP we would need to use either SYM=nauty or SYM=snauty mode, since the other alternative (bliss) is licensed as LGPL-3.0. That was the only piece inside SCIP with a license problem though; all of the other pieces (cppad, sassy, etc.) have an acceptable license.

jwnimmer-tri commented 8 months ago

FYI #20375 is a recent example of adding a new SolverInterface implementation.

AlexandreAmice commented 5 months ago

I think this would be a great thing to include in Drake. Currently, we don't really have an open-source MIP solver which feels very limiting. For example MaxCliqueViaMipSolver only works if the user can install Mosek or Gurobi. This will also limit the useability of the forthcoming IrisInConfigurationSpaceFromCliqueCover feature.

RussTedrake commented 2 months ago

I'm also very excited about this. Having an open-source MISOCP solver and having any MISDP solver would be fantastic contributions (we would try them immediately in our work on Graph of Convex Sets).