Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Including SCIP into drake #19338

Open
FranekStark opened this issue May 3, 2023 · 7 comments
Open

Including SCIP into drake #19338

FranekStark opened this issue May 3, 2023 · 7 comments
Assignees
Labels
component: mathematical program Formulating and solving mathematical programs; our autodiff and symbolic libraries type: feature request

Comments

@FranekStark
Copy link

SCIP is a fast MI solver. In the past, It was not included into drake, because of license issues. (#12997 (comment), #3367 (comment))

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.

@jwnimmer-tri jwnimmer-tri added the component: mathematical program Formulating and solving mathematical programs; our autodiff and symbolic libraries label May 3, 2023
@RussTedrake
Copy link
Contributor

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

@FranekStark
Copy link
Author

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
Copy link
Collaborator

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
Copy link
Collaborator

jwnimmer-tri commented Oct 12, 2023

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
Copy link
Collaborator

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

@AlexandreAmice
Copy link
Contributor

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
Copy link
Contributor

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: mathematical program Formulating and solving mathematical programs; our autodiff and symbolic libraries type: feature request
Projects
Status: TODO (MathematicalProgram)
Development

No branches or pull requests

5 participants