- Added automated script for generating type stubs
- Include parameter names in type stubs
- Speed up MatrixExpr.sum(axis=...) via quicksum
- all fundamental callbacks now raise an error if not implemented
- Fixed the type of MatrixExpr.sum(axis=...) result from MatrixVariable to MatrixExpr.
- Updated IIS result in PyiisfinderExec()
- changed default value of enablepricing flag to True
- Support for SCIP 10.0.0
- Added support for IIS - Irreducible Inconsistent Subsystems
- Added 4 new events: TYPECHANGED, IMPLTYPECHANGED, DUALBOUNDIMPROVED, GAPUPDATED.
- Support for new implied integrality
- Wrapped varIsBinary(), varIsIntegral(), varIsImpliedIntegral(), varIsNonImpliedIntegral(), varGetImplType()
- Interfaced some exact SCIP methods
- wrapped SCIPprintStatisticsJson
- Removed methods chgAndConsCheckFlagWhenUpgr, chgAndConsRemovableFlagWhenUpgr
- Added possibility of having variables in exponent.
- Added basic type stubs to help with IDE autocompletion and type checking.
- MatrixVariable comparisons (<=, >=, ==) now support numpy's broadcast feature.
- Added methods: getMaxDepth(), getPlungeDepth(), getLowerbound(), getCutoffbound(), getNNodeLPIterations(), getNStrongbranchLPIterations().
- setup.py now automatically detects conda environments when SCIPOPTDIR is not defined.
- Added function getStatus() to get variable status in variable class
- Added function isActive() to get whether a variable is active in variable class
- Added function markDoNotAggrVar() to prevent a variable from being aggregated
- Added function markDoNotMultaggrVar() to prevent a variable from being multi-aggregated
- Implemented all binary operations between MatrixExpr and GenExpr
- Fixed the type of @ matrix operation result from MatrixVariable to MatrixExpr.
- Fixed the case for returning None from the nodeselect callback in Node Selector plugins.
- Fixed segmentation fault during Benders decomposition cleanup caused by double-free bug
- Add package extras for test dependencies in
pyproject.toml - Speed up MatrixVariable.sum(axis=None) via quicksum
- MatrixVariable now supports comparison with Expr
- Benders subproblem memory is now automatically managed by the master Model -
freeBendersSubproblems()is deprecated and no longer needed
- More support for AND-Constraints
- Added support for knapsack constraints
- Added isPositive(), isNegative(), isFeasLE(), isFeasLT(), isFeasGE(), isFeasGT(), isHugeValue(), and tests
- Added SCIP_LOCKTYPE, addVarLocksType(), getNLocksDown(), getNLocksUp(), getNLocksDownType(), getNLocksUpType(), and tests
- Added addMatrixConsIndicator(), and tests
- Added SCIPvarMarkRelaxationOnly, SCIPvarIsRelaxationOnly, SCIPvarMarkDeletable, SCIPvarIsDeletable, and tests
- Wrapped SCIPgetNLPBranchCands
- Added getConsVals() to get coefficients of any linear type constraint
- Generalized getLhs() and getRhs() to additionally support any linear type constraint
- Added recipe for getting local constraints
- Added enableDebugSol() and disableDebugSol() for controlling the debug solution mechanism if DEBUGSOL=true
- Added getVarPseudocostScore() and getVarPseudocost()
- Added getNBranchings() and getNBranchingsCurrentRun()
- Raised an error when an expression is used when a variable is required
- Fixed some compile warnings
- MatrixExpr.sum() now supports axis arguments and can return either a scalar or MatrixExpr, depending on the result dimensions.
- AddMatrixCons() also accepts ExprCons.
- Wrapped SCIPgetChildren and added getChildren and test (also test getOpenNodes)
- Wrapped SCIPgetLeaves, SCIPgetNLeaves, and added getLeaves, getNLeaves and test
- Wrapped SCIPgetSiblings, SCIPgetNSiblings, and added getSiblings, getNSiblings and test
- Wrapped SCIPdeactivatePricer, SCIPsetConsModifiable, and added deactivatePricer, setModifiable and test
- Added getLinearConsIndicator
- Added SCIP_LPPARAM, setIntParam, setRealParam, getIntParam, getRealParam, isOptimal, getObjVal, getRedcost for lpi
- Added isFeasPositive
- Added SCIP function SCIProwGetDualsol and wrapper getDualsol
- Added SCIP function SCIProwGetDualfarkas and wrapper getDualfarkas
- Fixed bug when accessing matrix variable attributes
- Stopped tests from running in draft PRs
- Added option to get Lhs, Rhs of nonlinear constraints
- Added cutoffNode and test
- Added getMajorVersion, getMinorVersion, and getTechVersion
- Added addMatrixVar and addMatriCons
- Added MatrixVariable, MatrixConstraint, MatrixExpr, and MatrixExprCons
- Warning at Model initialisation now uses new version calls
- Removed universal wheel type from setup.cfg (support for Python 2)
- Added cdef type declaration of loop variables for slight speedup
- Added wrappers for setting and getting heuristic timing
- Added transformed option to getVarDict, updated test
- Added categorical data example
- Added printProblem to print problem to stdout
- Added stage checks to presolve, freereoptsolve, freetransform
- Added primal_dual_evolution recipe and a plot recipe
- Added python wrappers for usage of SCIPcopyLargeNeighborhoodSearch, SCIPtranslateSubSol and SCIPhashmapCreate
- Added default names to indicator constraints
- GitHub actions using Mac now use precompiled SCIP from latest release
- Expanded Statistics class to more problems.
- Created Statistics class
- Added parser to read .stats file
- Release checklist in
RELEASE.md - Added Python definitions and wrappers for SCIPstartStrongbranch, SCIPendStrongbranch SCIPgetBranchScoreMultiple, SCIPgetVarStrongbranchInt, SCIPupdateVarPseudocost, SCIPgetVarStrongbranchFrac, SCIPcolGetAge, SCIPgetVarStrongbranchLast, SCIPgetVarStrongbranchNode, SCIPallColsInLP, SCIPcolGetAge
- Added getBipartiteGraphRepresentation
- Added helper functions that facilitate testing
- Added Python definitions and wrappers for SCIPgetNImplVars, SCIPgetNContVars, SCIPvarMayRoundUp, SCIPvarMayRoundDown, SCIPcreateLPSol, SCIPfeasFloor, SCIPfeasCeil, SCIPfeasRound, SCIPgetPrioChild, SCIPgetPrioSibling
- Added additional tests to test_nodesel, test_heur, and test_strong_branching
- Migrated documentation to Readthedocs
attachEventHandlerCallbackmethod to Model for a more ergonomic way to attach event handlers- Added Model method: optimizeNogil
- Added Solution method: getOrigin, retransform, translate
- Added SCIP.pxd: SCIP_SOLORIGIN, SCIPcopyOrigVars, SCIPcopyOrigConss, SCIPsolve nogil, SCIPretransformSol, SCIPtranslateSubSol, SCIPsolGetOrigin, SCIPhashmapCreate, SCIPhashmapFree
- Added additional tests to test_multi_threads, test_solution, and test_copy
- Fixed too strict getObjVal, getVal check
- Changed createSol to now have an option of initialising at the current LP solution
- Unified documentation style of scip.pxi to numpydocs
- Added SCIP_STATUS_DUALLIMIT and SCIP_STATUS_PRIMALLIMIT
- Added SCIPprintExternalCodes (retrieves version of linked symmetry, lp solver, nl solver etc)
- Added recipe with reformulation for detecting infeasible constraints
- Wrapped SCIPcreateOrigSol and added tests
- Added verbose option for writeProblem and writeParams
- Expanded locale test
- Added methods for creating expression constraints without adding to problem
- Added methods for creating/adding/appending disjunction constraints
- Added check for pt_PT locale in test_model.py
- Added SCIPgetOrigConss and SCIPgetNOrigConss Cython bindings.
- Added transformed=False option to getConss, getNConss, and getNVars
- Fixed locale errors in reading
- Made readStatistics a standalone function
- Added recipe for nonlinear objective functions
- Added method for adding piecewise linear constraints
- Add SCIP function SCIPgetTreesizeEstimation and wrapper getTreesizeEstimation
- New test for model setLogFile
- Fixed locale fix
- Fixed model.setLogFile(None) error
- Add recipes sub-package
- Fixed "weakly-referenced object no longer exists" when calling dropEvent in test_customizedbenders
- Fixed incorrect writing/printing when user had a non-default locale
- Added SCIP function addExprNonlinear
- Add support for Cython 3
- Added methods for getting the names of the current stage and of an event
- Add support for SCIP symmetry graph callbacks in constraint handlers
- Fixed README links
- Fixed outdated time.clock call in gcp.py
- Changed default installation option via pypi to package pre-build SCIP
- Add getConshdlrName to class Constraint
- Added all event types and tests for checking them
- Added SCIP functions SCIPconsGetNVars, SCIPconsGetVars
- Added SCIP functions SCIPchgCoefLinear, SCIPaddCoefLinear and SCIPdelCoefLinear
- Added SCIP function SCIPgetSolTime and wrapper getSolTime
- Added convenience methods relax and getVarDict
- Added SCIP functions hasPrimalRay, getPrimalRay, getPrimalRayVal
- Fixed mistake with outdated values for several enums
- Correctly set result, lowerbound in PyRelaxExec
- Fixed typo in documentation of chgRhs
- Pricer plugin fundamental callbacks now raise an error if not implemented
- Brachrule plugin fundamental callbacks now raise an error if not implemented
- Fixed segmentation fault when accessing the Solution class directly
- Changed getSols so that it prints solutions in terms of the original variables
- Fixed error message in _checkStage
- Made it so SCIP macros are used directly, instead of being manually inputted.
- Improved error message when using < or > instead of <= or >=
- Removed double declaration of SCIPfindEventhdlr
- Add SCIP function SCIprowGetOriginCons
- Add getConsOriginConshdlrtype to Row
- Add possibility to use sine and cosing
- Add ability to set priced variable score
- Removed function rowGetNNonz
- Interface to include custom reader plugins
- New test for reader plugin
- revert change from #543 to fix #570 (closing file descriptors)
- use correct offset value when updating the objective function
- Interface to include custom cut selector plugins
- New test for cut selector plugin
- Add SCIP function SCIPgetCutLPSolCutoffDistance and wrapper getCutLPSolCutoffDistance
- Add SCIP function SCIPprintBestTransSol and wrapper writeBestTransSol
- Add SCIP function SCIPprintTransSol and wrapper writeTransSol
- Add SCIP function SCIPgetRowNumIntCols and wrapper getRowNumIntCols
- Add SCIP function SCIProwGetNNonz and wrapper rowGetNNonz
- Add SCIP function SCIPgetRowObjParallelism and wrapper getRowObjParallelism
- Add SCIP function SCIPgetNSepaRounds and wrapper getNSepaRounds
- Add SCIP function SCIPgetRowLinear and wrapper getRowLinear
- Add SCIP function SCIProwIsInGlobalCutpool and wrapper isInGlobalCutpool
- Add SCIP function SCIProwGetParallelism and wrapper getRowParallelism
- Add getObjCoeff call to Column
- Add isLocal call to Row
- Add getNorm call to Row
- Add getRowDualSol to Row
- Add getDualSolVal to Model
- added activeone parameter of addConsIndicator() allows to activate the constraint if the binary (indicator) variable is 1 or 0.
- added function getSlackVarIndicator(), returns the slack variable of the indicator constraint.
- cmake / make install works from build directory
- many functions regarding the new cons expression logic and implementation
- fixed tests and github actions to fit the new SCIP version.
- SCIP8 changes the way nonlinear constraints are handled inside SCIP. These changes have consequences for their respective PySCIPOpt wrappers and have changed regardingly. Please refer to the latest SCIP report for an in-depth explanation of these changes.
- small changes to the documentation.
- some of the deprecated functions that could not be made backwards compatible
- close file descriptors after file operation is finished
- fixed deletion of variable pointer from model when calling delVar
- fixed scip install for MAC integration test
- Fixing assert failure if scip is compiled using quadprecision
- fixed missing GIL by @AntoinePrv in #539
- changed integration test to include scip TPI (tinycthreads)
- removed Mac integration test until the segmentation fault in test_memory.py is fixed on Mac
- add support for concurrent optimization
- note that SCIP needs to be linked to a TPI (task processing interface) to use this feature
- SCIPsolverConcurrent implementation from issue #229 by @TNonet in #535
- fix action to also run on external PRs by @mattmilten in #536
- fix concurrent solve test by @mattmilten in #537
- add SCIP function
getPseudoBranchCands
- add SCIP functions
getNSolsFound,getNSolsFound,getNLimSolsFoundandgetNBestSolsFound
- documentation build parameter EXTRACT_ALL = YES
- Continuous Integration: move from travis to github actions:
- integration with scipoptsuite and
- publishing documentation and packages.
- CI files
- add convenience function
Model.addConss()to add multiple constraints at once
- add SCIP function
SCIPsetMessagehdlrLogfile
- fix
Model.writeLPmethod
- check for correct stage when querying solution values (raise warning otherwise)
- check for NULL pointers when creating Solution objects (will return None): #494
- add
Model.getNReadersthat returns the number of available readers
- add evaluation of
ExprinSolution.
- add more SCIP functions:
getNSols,createPartialSol
- consistent handling of filenames for reading/writing
- fix error when no SCIPOPTDIR env var is set on Windows
- add more SCIP functions:
getNTotalNodes,getNIntVars,getNBinVars
getTransformedVarnow usesSCIPgetTransformedVarinstead ofSCIPtransformVarwhich captures the variable
- add parameter genericnames to Model.writeProblem() to allow for generic variable and constraint names
- strip quotes from SCIPOPTDIR path variable that might confuse Windows systems
- allow creation of implicit integer variables
- make some more SCIP functionality available
- fix reference counters for Python constraints
- expose even more SCIP functionality in
scip.pxd
Model.from_ptrandModel.to_ptruse aPyCapsuleto exchange the SCIP pointer rather than an integer.- mark getDualMultiplier() as deprecated, only getDualSolLinear() is supposed to be used to get duals of constraints
- removed
__div__from Expr and GenExpr to make it compatible with cython 0.29.20
- add Model.getParams that returns a dict mapping all parameter names to their values
- add Model.setParams to set multiple parameters at once using a dict
- Add Model.from_ptr and Model.to_ptr to interface with SCIP* managed outside of PySCIPOpt
- add NULL pointer checks to all Python wrapper classes
- add Event.getRow() and Row.name
- expose domain changes, bound changes, branching decisions, added constraints for nodes
- define Python object identity based on underlying SCIP object pointers, so that e.g. rows and columns can be added to sets, and testing for equality is consistent over time.
- add Row.isRemovable and Row.getOrigintype
- add Model.applyCutsProbing and Model.propagateProbing
- add Model.separateSol
- add methods to work with nonlinear rows
- adds new "threadsafe" parameter to the PyBendersCopy member function. Also, the "threadsafe" parameter can be passed when creating a Model instance
- adds the boolean return options of "infeasible" and "auxviol" to the Benders.benderspresubsolve function. "infeasible" indicates that the input solution induces an infeasible instance of at least one Benders' subproblems. "auxviol" indicates that the objective value of at least on Benders' subproblem is greater than the auxiliary variable value.
- adds chgVarUbProbing and chgVarLbProbing to change a variables upper or lower bound during probing mode.
- Node.getParent() returns None if the node has no parent
- remove Python 2.7 support
- fix documentation errors
- setupBendersSubproblem now requires a checktype input. This input indicates the reason for solving the Benders' subproblems, either enforcing the LP, relaxation or pseudo solution (LP, RELAX or PSEUDO) or checking a candidate primal feasible solution (CHECK).
- expose even more SCIP functionality in
scip.pxd
- move the main Python class declarations into scip.pxd; this makes it possible to write custom
pyxextensions.
- support for node selector plugin
- getOpenNodes() to access all open nodes
- new Benders functionality
- evaluate polynomial expressions using the given solution values
- convenient access to solution data, via
solution[x]syntax instead ofmodel.getVal(x) - store Variable objects in Model for faster access
releaseVar(): potentially harmful and not necessary anymore
- recommend
pip install .overpython setup.py installin INSTALL
lpiGetIterations()to get LP iterations of last solved LP relaxation
- rework
setup.pyto support developer versions of SCIP libraries built with Makefiles
- fix methods to get and set char and string parameters