Preparing SCIP 10
To make the transition to SCIP 10 smoother, I figured I'd take some notes on what needs to be done to ensure compatibility and which functions need to be wrapped.
- [x] New event types
SCIP_EVENTTYPE_IMPLTYPECHANGED,SCIP_EVENTTYPE_DUALBOUNDIMPROVED,SCIP_EVENTTYPE_GAPUPDATED - [ ] IISFINDER functions (almost done)
- [x] Statistics Json functions
- [x]
SCIPvarGetImplType(),SCIPvarIsBinary(),SCIPvarIsIntegral(),SCIPvarIsImpliedIntegral(), andSCIPvarIsNonimpliedIntegral() - [ ] Exact SCIP functions
- [ ] Many many new API functions
Before merging these things, would like to add a bunch of tests as well.
Please also consider support for SCIPvarGetImplType(), SCIPvarIsBinary(), SCIPvarIsIntegral(), SCIPvarIsImpliedIntegral(), and SCIPvarIsNonimpliedIntegral().
Something we might need to look into is that test_pricer seems to fail with SCIP10. Maybe it's only on my machine, though.
I guess it is always better to describe the fail instead of only saying that there is one.
Ouch, but point taken. I said a bit more in the PR: "The pricer test is also failing. Even with heuristics disabled, it seems that SCIP is finding solutions outside of the pricer."
We're counting every solution the pricer finds, and we get 2 in the end. With model.getNSols we get 3, where up until now we also got 2.
But this was just from surface-level observation, I didn't look into it.
No problem, this just makes me nervous, and this way it is easier to handle. In pricerredcost() there is self.model.data["nSols"] = self.model.getNSolsFound() so self.model.data["nSols"] is the number of solutions when pricerredcost() was called the last time. If the optimal solution is found in the last LP, then I would expect the stored number of solutions one less than the number of all solutions but I am not sure why the number of solutions matters.
I looked a bit more into it, and it turns out that the trivial heuristic is not disabled even with s.setHeuristics(0). Apparently, the trivial heuristic didn't find anything before.
Oh, just re-read your comment, it's more likely that that's what's happening yeah. Need to think how to adapt the test, though. EDIT: Yeah, not too difficult. Thanks!
Try with s.setHeuristics(pyscipopt.SCIP_PARAMSETTING.OFF), 0 means default.