|
New and changed callbacks
- Branching on externally given candidates:
- Restarts:
- The callback SCIP_DECL_PROBEXITSOL(x) in the main problem has one new parameter (see type_prob.h for more details):
- The parameter
restart is TRUE if the callback method was triggered by a restart.
Changed interface methods
- Copying a SCIP instance:
- Every new callback method resulted in a new parameter of the include function for the corresponding plugin, e.g., SCIPincludeBranchrule() has two new parameters
SCIP_DECL_BRANCHCOPY((*branchcopy)) and SCIP_DECL_BRANCHEXECREL((*branchexecrel)) . In the same fashion, the new callbacks SCIP_DECL_VARCOPY and SCIP_DECL_PROBCOPY led to new parameters in SCIPcreateVar() and SCIPcreateProb() in scip.c, respectively.
- SCIPincludeHeur() and SCIPincludeSepa() in scip.h, as well as scip::ObjSepa() and scip::ObjHeur(), have a new parameter:
usessubscip - It can be used to inform SCIP that the heuristic/separator to be included uses a secondary SCIP instance.
- SCIPapplyRens() in heur_rens.h has a new parameter
uselprows . It can be used to switch from LP rows to constraints as basis of the sub-SCIP constructed in the RENS heuristic.
- W.r.t. to copy and the C++ wrapper classes there are two new classes. These are
ObjCloneable and ObjProbCloneable . The constraint handlers and variables pricers are derived from ObjProbCloneable and all other plugin are derived from ObjCloneable . Both classes implement the function iscloneable() which return whether a plugin is clone able or not. Besides that each class has a function named clone() which differ in their signature. See objcloneable.h, objprobcloneable.h, and the TSP example for more details.
- Branching:
- The method SCIPgetVarStrongbranch() has been replaced by two methods SCIPgetVarStrongbranchFrac() and SCIPgetVarStrongbranchInt().
- The methods SCIPgetVarPseudocost() and SCIPgetVarPseudocostCurrentRun() in scip.h now return the pseudocost value of one branching direction, scaled to a unit interval. The former versions of SCIPgetVarPseudocost() and SCIPgetVarPseudocostCurrentRun() are now called SCIPgetVarPseudocostVal() and SCIPgetVarPseudocostValCurrentRun(), respectively.
- The methods SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun() in scip.h are now called SCIPgetVarVSIDS() and SCIPgetVarVSIDSCurrentRun(), respectively.
- The methods SCIPvarGetNInferences(), SCIPvarGetNInferencesCurrentRun(), SCIPvarGetNCutoffs(), and SCIPvarGetNCutoffsCurrentRun() are now called SCIPvarGetInferenceSum(), SCIPvarGetInferenceSumCurrentRun(), SCIPvarGetCutoffSum(), and SCIPvarGetCutoffSumCurrentRun(), respectively. Furthermore, they now return
SCIP_Real instead of SCIP_Longint values.
- Others:
- SCIPcutGenerationHeuristicCmir() in sepa_cmir.h has three new parameters:
maxmksetcoefs - If the mixed knapsack constraint obtained after aggregating LP rows contains more than maxmksetcoefs nonzero coefficients the generation of the c-MIR cut is aborted.
delta - It can be used to obtain the scaling factor which leads to the best c-MIR cut found within the cut generation heuristic. If a NULL pointer is passed, the corresponding c-MIR cut will already be added to SCIP by SCIPcutGenerationHeuristicCmir(). Otherwise, the user can generate the cut and add it to SCIP on demand afterwards.
deltavalid - In case, the user wants to know the best scaling factor, i.e., delta passed is not NULL , deltavalid will be TRUE if the stored scaling factor delta will lead to a violated c-MIR cut.
- All functions for setting user parameters of different types like SCIPparamSetBool(), SCIPparamSetChar(), SCIPparamSetInt(), SCIPparamSetLongint(), and SCIPparamSetString() in pub_paramset.h have a new parameter:
quiet - It prevents any output during the assign to a new value.
Miscellaneous
- The NLPI library is now a separate library that is required when linking against the SCIP library. This requires changes to Makefiles that use SCIP, see the Release notes for more details.
- We do not distinguish between block memory for the original and the transformed problem anymore. The same block memory is now used in both problem stages.
- All C++ objects and constructors have a SCIP pointer, now.
- The predefined setting files like "settings/cuts/off.set,aggressive.set,fast.set" have been replaced by interface methods like SCIPsetHeuristics(), SCIPsetPresolving(), SCIPsetSeparating(), and SCIPsetEmphasis() in scip.h and by user dialogs in the interactive shell like
SCIP> set {heuristics|presolving|separating} emphasis {aggressive|fast|off}
or
SCIP> set emphasis {counter|cpsolver|easycip|feasibility|hardlp|optimality}
For further release notes we refer to the Release notes.
|