-
Notifications
You must be signed in to change notification settings - Fork 269
SCIP 10 #1009
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
base: master
Are you sure you want to change the base?
SCIP 10 #1009
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR updates support for SCIP version 10, addressing changes in variable types and adding new functionality for statistics reporting and IIS finder callbacks.
- Updated variable type handling and tests (e.g. treating M/IMPLINT as CONTINUOUS in SCIP10)
- Enhanced SCIP interface in scip.pxi and scip.pxd, including new functions for binary/integral checks
- Added JSON-based statistics output and preliminary IIS finder support
Reviewed Changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
tests/test_vars.py | Updated test for variable type, reflecting SCIP10 behavior |
tests/test_reader.py | Added test for JSON statistics output |
src/pyscipopt/scip.pxi | Updated version definitions and added variable type helper methods; potential issue with non-implied check |
src/pyscipopt/scip.pxd | Updated SCIP external declarations accordingly |
src/pyscipopt/relax.pxi | Updated docstring for relaxexec method |
src/pyscipopt/reader.pxi | Updated function signature for PyReaderWrite |
src/pyscipopt/iisfinder.pxi | Added base IISFinder class and implementations for copy, free, and exec callbacks (incomplete) |
CHANGELOG.md | Documented new JSON statistics output feature and other changes |
The variable type is just more independent from the integrality property now, so on purpose. Here it means that integrality can be assumed but will not be enforced, maybe worth a small comment. Good that this works! |
Found this comment interesting. It wasn't something that was tested when merging? This gives me an idea. What about having a PySCIPOpt branch always up-to-date with SCIP master, and then people keep adding tests to it? Of course, some things would still need to be tested in SCIP proper, but new/changed API functions could perhaps be tested directly on PySCIPOpt. |
Not sure what should have been tested. The implint type just does no longer exist. In principle having a permanent development branch sounds fine, just be aware of that on |
Yeah, I meant mostly as a way to more easily test out new features. At least for me, not having to deal with Criterion, Gdb, and recompiling the tests after every little change is a godsend. Maybe the other devs would also be more willing to create tests this way. And there are cases where it doesn't make a difference where the test is in C-SCIP or PySCIPOpt. |
I also believe that if there were a regular development branch, it would be more possible that developers contribute to it, however, some delay makes sense as long as something is under development on the SCIP master branch, which is normally the case until it is released. |
Nowadays, |
For exact SCIP an interface between |
Fix #1006
Fix #955
Naturally the tests won't pass, since we need to update the SCIP version. The IIS stuff still needs more work.
Interesting behaviors:
It seems that an empty relaxator now does not raise an error (or at least pyscipopt is not catching it). Would like to find the explanation before removing the test.
Fixed -> The pricer test is also failing, even with heuristics disabled, it seems that SCIP is finding solutions outside of the pricer.
Not an issue -> Even though implied integers are only gonna be removed in SCIP 11, adding a variable with an
M
vtype appears to add a continuous variable already. It's probably on purpose, but feels a bit strange to have a variable with a CONTINUOUS vtype andvar.isIntegral()
returning True.