Skip to content

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

Draft
wants to merge 17 commits into
base: master
Choose a base branch
from
Draft

SCIP 10 #1009

wants to merge 17 commits into from

Conversation

Joao-Dionisio
Copy link
Member

@Joao-Dionisio Joao-Dionisio commented Jun 5, 2025

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 and var.isIntegral() returning True.

@Joao-Dionisio Joao-Dionisio requested a review from Copilot June 5, 2025 15:42
@Joao-Dionisio Joao-Dionisio self-assigned this Jun 5, 2025
Copy link

@Copilot Copilot AI left a 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

@DominikKamp
Copy link
Contributor

It's probably on purpose, but feels a bit strange to have a variable with a CONTINUOUS vtype and var.isIntegral() returning True.

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!

@Joao-Dionisio
Copy link
Member Author

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.

@DominikKamp
Copy link
Contributor

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 master API functions can change at any time.

@Joao-Dionisio
Copy link
Member Author

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.

@DominikKamp
Copy link
Contributor

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.

@DominikKamp
Copy link
Contributor

Nowadays, SCIPiisGreedyMinimize() is rather called SCIPiisGreedyMakeIrreducible().

@DominikKamp
Copy link
Contributor

For exact SCIP an interface between fractions.Fraction and SCIP_RATIONAL* would be nice, but maybe rather in the long run because the memory handling might be involved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants