PySCIPOpt icon indicating copy to clipboard operation
PySCIPOpt copied to clipboard

SCIP 10

Open Joao-Dionisio opened this issue 6 months ago • 7 comments

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 avatar Jun 05 '25 15:06 Joao-Dionisio

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!

DominikKamp avatar Jun 05 '25 17:06 DominikKamp

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.

Joao-Dionisio avatar Jun 05 '25 23:06 Joao-Dionisio

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.

DominikKamp avatar Jun 06 '25 03:06 DominikKamp

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.

Joao-Dionisio avatar Jun 06 '25 08:06 Joao-Dionisio

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 avatar Jun 11 '25 09:06 DominikKamp

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

DominikKamp avatar Jun 19 '25 14:06 DominikKamp

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.

DominikKamp avatar Jun 19 '25 15:06 DominikKamp

Extended the description by remaining fails.

DominikKamp avatar Jul 02 '25 08:07 DominikKamp

Build error updated.

DominikKamp avatar Jul 20 '25 08:07 DominikKamp

@Opt-Mucca, in your opinion, which IIS methods should be wrapped? Currently, I have

SCIP_RETCODE SCIPincludeIISfinder()
SCIPiisfinderGetData()
SCIPincludeIISfinderGreedy()
SCIPiisGreedyMakeIrreducible();
SCIPiisIsSubscipInfeasible();
SCIPiisIsSubscipIrreducible();
SCIPiisGetSubscip();

I don't know if SCIPiisfinderGetData makes much sense, since I guess people will just handle data on the python side.

Joao-Dionisio avatar Jul 24 '25 17:07 Joao-Dionisio

@Joao-Dionisio looks good aside from the most important one: SCIPgenerateIIS I don't think the include greedy IIS is needed either.

Opt-Mucca avatar Jul 25 '25 12:07 Opt-Mucca

Closing this until SCIP 10 is released.

mmghannam avatar Oct 09 '25 10:10 mmghannam