Detailed Description
public methods for problem copies
Definition in file scip_copy.c.
#include "blockmemshell/memory.h"
#include "scip/benders.h"
#include "scip/clock.h"
#include "scip/conflictstore.h"
#include "scip/cons.h"
#include "scip/cons_linear.h"
#include "scip/dcmp.h"
#include "scip/debug.h"
#include "scip/primal.h"
#include "scip/prob.h"
#include "scip/pub_cons.h"
#include "scip/pub_cutpool.h"
#include "scip/pub_implics.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_sol.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_cut.h"
#include "scip/scip_general.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_nodesel.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_pricer.h"
#include "scip/scip_prob.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_timing.h"
#include "scip/scip_var.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/struct_mem.h"
#include "scip/struct_scip.h"
#include "scip/struct_set.h"
#include "scip/struct_stat.h"
#include "scip/struct_var.h"
#include "scip/syncstore.h"
#include "scip/var.h"
Go to the source code of this file.
Functions | |
static SCIP_Bool | takeCut (SCIP *scip, SCIP_CUT *cut, char cutsel) |
static SCIP_RETCODE | copyCuts (SCIP *sourcescip, SCIP *targetscip, SCIP_CUT **cuts, int ncuts, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, int *ncutsadded) |
SCIP_RETCODE | SCIPcopyPlugins (SCIP *sourcescip, SCIP *targetscip, SCIP_Bool copyreaders, SCIP_Bool copypricers, SCIP_Bool copyconshdlrs, SCIP_Bool copyconflicthdlrs, SCIP_Bool copypresolvers, SCIP_Bool copyrelaxators, SCIP_Bool copyseparators, SCIP_Bool copypropagators, SCIP_Bool copyheuristics, SCIP_Bool copyeventhdlrs, SCIP_Bool copynodeselectors, SCIP_Bool copybranchrules, SCIP_Bool copydisplays, SCIP_Bool copydialogs, SCIP_Bool copytables, SCIP_Bool copynlpis, SCIP_Bool passmessagehdlr, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopyBenders (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_Bool threadsafe, SCIP_Bool *valid) |
static SCIP_RETCODE | copyProb (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool original, SCIP_Bool global, const char *name) |
SCIP_RETCODE | SCIPcopyProb (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, const char *name) |
SCIP_RETCODE | SCIPcopyOrigProb (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name) |
SCIP_RETCODE | SCIPenableConsCompression (SCIP *scip) |
SCIP_Bool | SCIPisConsCompressionEnabled (SCIP *scip) |
SCIP_RETCODE | SCIPgetVarCopy (SCIP *sourcescip, SCIP *targetscip, SCIP_VAR *sourcevar, SCIP_VAR **targetvar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *success) |
static SCIP_RETCODE | copyVars (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool original, SCIP_Bool global) |
SCIP_RETCODE | SCIPcopyVars (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool global) |
SCIP_RETCODE | SCIPcopyOrigVars (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars) |
SCIP_RETCODE | SCIPmergeVariableStatistics (SCIP *sourcescip, SCIP *targetscip, SCIP_VAR **sourcevars, SCIP_VAR **targetvars, int nvars) |
static SCIP_RETCODE | translateSubSol (SCIP *scip, SCIP *subscip, SCIP_SOL *subsol, SCIP_VAR **subvars, SCIP_Real *solvals) |
SCIP_RETCODE | SCIPtranslateSubSol (SCIP *scip, SCIP *subscip, SCIP_SOL *subsol, SCIP_HEUR *heur, SCIP_VAR **subvars, SCIP_SOL **newsol) |
SCIP_RETCODE | SCIPtranslateSubSols (SCIP *scip, SCIP *subscip, SCIP_HEUR *heur, SCIP_VAR **subvars, SCIP_Bool *success, int *solindex) |
SCIP_RETCODE | SCIPgetConsCopy (SCIP *sourcescip, SCIP *targetscip, SCIP_CONS *sourcecons, SCIP_CONS **targetcons, SCIP_CONSHDLR *sourceconshdlr, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool global, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopyConss (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopyOrigConss (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool enablepricing, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPconvertCutsToConss (SCIP *scip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, int *ncutsadded) |
SCIP_RETCODE | SCIPcopyCuts (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, int *ncutsadded) |
SCIP_RETCODE | SCIPcopyConflicts (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopyImplicationsCliques (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *infeasible, int *nbdchgs, int *ncopied) |
SCIP_RETCODE | SCIPcopyParamSettings (SCIP *sourcescip, SCIP *targetscip) |
int | SCIPgetSubscipDepth (SCIP *scip) |
void | SCIPsetSubscipDepth (SCIP *scip, int newdepth) |
static SCIP_RETCODE | doCopy (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool useconscompression, SCIP_Bool global, SCIP_Bool original, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopy (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopyConsCompression (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopyOrig (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid) |
SCIP_RETCODE | SCIPcopyOrigConsCompression (SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid) |
static SCIP_RETCODE | getCopyTimelimit (SCIP *sourcescip, SCIP_Real *timelimit) |
static SCIP_RETCODE | copySofttimelimit (SCIP *sourcescip, SCIP *targetscip) |
static SCIP_RETCODE | getCopyMemlimit (SCIP *sourcescip, SCIP_Real *memorylimit) |
SCIP_RETCODE | SCIPcheckCopyLimits (SCIP *sourcescip, SCIP_Bool *success) |
SCIP_RETCODE | SCIPcopyLimits (SCIP *sourcescip, SCIP *targetscip) |
SCIP_RETCODE | SCIPsetCommonSubscipParams (SCIP *sourcescip, SCIP *subscip, SCIP_Longint nsubnodes, SCIP_Longint nstallnodes, int bestsollimit) |
Function Documentation
◆ takeCut()
returns true if the cut
matches the selection criterium for copying
- Parameters
-
scip SCIP data structure cut a cut cutsel cut selection for sub SCIPs ('a'ge, activity 'q'uotient)
Definition at line 83 of file scip_copy.c.
References FALSE, NULL, SCIP_Bool, SCIPABORT, SCIPcutGetAge(), SCIPcutGetLPActivityQuot(), SCIPcutGetRow(), SCIPerrorMessage, SCIProwIsInLP(), SCIP_Set::sepa_minactivityquot, and Scip::set.
Referenced by copyCuts().
◆ copyCuts()
|
static |
copy active and tight cuts from one SCIP instance to linear constraints of another SCIP instance
- Parameters
-
sourcescip source SCIP data structure targetscip target SCIP data structure cuts cuts to copy ncuts number of cuts to copy varmap a hashmap to store the mapping of source variables corresponding target variables, or NULL consmap a hashmap to store the mapping of source constraints to the corresponding target constraints, or NULL global create a global or a local copy? ncutsadded pointer to store number of copied cuts
Definition at line 116 of file scip_copy.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddCons(), SCIPallocBufferArray, SCIPcolGetVar(), SCIPconsGetName(), SCIPcreateConsLinear(), SCIPcutGetRow(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfreeBufferArray, SCIPgetNRuns(), SCIPgetVarCopy(), SCIPisInRestart(), SCIPreleaseCons(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPsnprintf(), SCIPvarIsRelaxationOnly(), SCIP_Set::sepa_cutselrestart, SCIP_Set::sepa_cutselsubscip, Scip::set, takeCut(), and TRUE.
Referenced by SCIPcopyCuts().
◆ copyProb()
|
static |
create a problem by copying the problem data of the source SCIP
- Parameters
-
sourcescip source SCIP data structure targetscip target SCIP data structure varmap a hashmap to store the mapping of source variables corresponding target variables, or NULL consmap a hashmap to store the mapping of source constraints to the corresponding target constraints, or NULL original should the original problem be copied? global create a global or a local copy? (set to TRUE for original copy) name problem name of target
Definition at line 388 of file scip_copy.c.
References Scip::conflictstore, Scip::decompstore, Scip::mem, Scip::messagehdlr, NULL, Scip::origprimal, Scip::origprob, SCIP_Mem::probmem, SCIP_Bool, SCIP_CALL, SCIP_DECOMPSTORE_CAPA, SCIP_OKAY, SCIP_STAGE_INIT, SCIP_STAGE_PROBLEM, SCIPblkmem(), SCIPconflictstoreCreate(), SCIPdecompstoreCreate(), SCIPfreeProb(), SCIPgetNConss(), SCIPgetNVars(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPisTransformed(), SCIPprimalCreate(), SCIPprobCopy(), SCIPstatCreate(), Scip::set, SCIP_Set::stage, Scip::stat, SCIP_Stat::subscipdepth, and Scip::transprob.
Referenced by SCIPcopyOrigProb(), and SCIPcopyProb().
◆ copyVars()
|
static |
copies all original or active variables from source-SCIP except those that are marked as relaxation-only, fixed, or aggregated and adds these variable to the target-SCIP
the mapping between these variables are stored in the variable hashmap target-SCIP has to be in problem creation stage
- Parameters
-
sourcescip source SCIP data structure targetscip target SCIP data structure varmap a hashmap to store the mapping of source variables to the corresponding target variables, or NULL consmap a hashmap to store the mapping of source constraints to the corresponding target constraints, or NULL fixedvars source variables whose copies should be fixed in the target SCIP environment, or NULL fixedvals array of fixing values for target SCIP variables, or NULL nfixedvars number of source variables whose copies should be fixed in the target SCIP environment, or NULL original should original variables be copied? global should global or local bounds be used? (for original=FALSE)
Definition at line 932 of file scip_copy.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPblkmem(), SCIPerrorMessage, SCIPfixVar(), SCIPgetFixedVars(), SCIPgetNBinVars(), SCIPgetNConss(), SCIPgetNContVars(), SCIPgetNFixedVars(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPgetNVars(), SCIPgetOrigVarsData(), SCIPgetVarCopy(), SCIPgetVarsData(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPvarGetType(), and SCIPvarIsRelaxationOnly().
Referenced by doCopy(), SCIPcopyOrigVars(), and SCIPcopyVars().
◆ translateSubSol()
|
static |
provides values of a solution from a subscip according to the variable in the main scip
Given a subscip solution, fills an array with solution values, matching the variables given by SCIPgetVars(). Variables that are relaxation-only in the master SCIP are set to 0 or the bound closest to 0. Such variables are represented as NULL entry in the subvars
array.
- Parameters
-
scip SCIP data structure of the original problem subscip SCIP data structure of the subproblem subsol solution of the subproblem subvars the variables from the subproblem in the same order as the main scip
solvals array where to set values taken from subsol, must have length at least SCIPgetNVars(scip)
Definition at line 1316 of file scip_copy.c.
References MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIPgetSolVal(), SCIPgetVarsData(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by SCIPtranslateSubSol(), and SCIPtranslateSubSols().
◆ doCopy()
|
static |
copies source SCIP data into target SCIP data structure
distinguishes between
- local and global copies
- copies of the original or transformed problem
Allows for constraint compression by specifying a number of source variables and values that should be fixed in the copy.
- Parameters
-
sourcescip source SCIP data structure targetscip target SCIP data structure varmap a hashmap to store the mapping of source variables corresponding target variables, or NULL consmap a hashmap to store the mapping of source constraints to the corresponding target constraints, or NULL suffix optional suffix for problem name inside the target SCIP fixedvars source variables whose copies should be fixed in the target SCIP environment, or NULL fixedvals array of fixing values for target SCIP variables, or NULL nfixedvars number of source variables whose copies should be fixed in the target SCIP environment, or NULL useconscompression should constraint compression be used when constraints are created? global create a global or a local copy? original copy original or transformed problem? if TRUE, a copy using local bounds is not possible enablepricing should pricing be enabled in copied SCIP instance? If TRUE, pricer plugins will be copied and activated, and the modifiable flag of constraints will be respected. If FALSE, valid will be set to FALSE, when there are pricers present threadsafe FALSE, if data can be safely shared between the source and target SCIP, otherwise TRUE. This is usually set to FALSE passmessagehdlr should the message handler be passed valid pointer to store whether the copying was valid or not, or NULL
Definition at line 2593 of file scip_copy.c.
References Scip::concurrent, SCIP_Stat::copyclock, copyVars(), FALSE, SCIP_Stat::maxcopytime, Scip::messagehdlr, SCIP_Stat::mincopytime, SCIP_Stat::ncopies, NULL, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PROBLEM, SCIPblkmem(), SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPcopyBenders(), SCIPcopyConss(), SCIPcopyOrigConss(), SCIPcopyOrigProb(), SCIPcopyParamSettings(), SCIPcopyPlugins(), SCIPcopyProb(), SCIPdebugMsg, SCIPenableConsCompression(), SCIPgetNActivePricers(), SCIPgetNConss(), SCIPgetNVars(), SCIPgetProbName(), SCIPgetStage(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPmessagehdlrIsQuiet(), SCIPsetMessagehdlrQuiet(), SCIPsnprintf(), SCIPsyncstoreCapture(), SCIPsyncstoreRelease(), Scip::set, Scip::stat, Scip::syncstore, and TRUE.
Referenced by SCIPcopy(), SCIPcopyConsCompression(), SCIPcopyOrig(), and SCIPcopyOrigConsCompression().
◆ getCopyTimelimit()
|
static |
return updated time limit for a sub-SCIP
- Parameters
-
sourcescip source SCIP data structure timelimit pointer to store sub-SCIP time limit
Definition at line 3122 of file scip_copy.c.
References SCIP_CALL, SCIP_OKAY, SCIPgetRealParam(), SCIPgetSolvingTime(), and SCIPisInfinity().
Referenced by SCIPcheckCopyLimits(), and SCIPcopyLimits().
◆ copySofttimelimit()
|
static |
set updated time limit for a sub-SCIP
- Parameters
-
sourcescip source SCIP data structure targetscip target SCIP data structure
Definition at line 3136 of file scip_copy.c.
References MAX, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPgetParam(), SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPisNegative(), and SCIPsetRealParam().
Referenced by SCIPcopyLimits().
◆ getCopyMemlimit()
|
static |
return updated memory limit for a sub-SCIP
- Parameters
-
sourcescip source SCIP data structure memorylimit pointer to store sub-SCIP memory limit
Definition at line 3161 of file scip_copy.c.
References SCIP_CALL, SCIP_OKAY, SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetRealParam(), and SCIPisInfinity().
Referenced by SCIPcheckCopyLimits(), and SCIPcopyLimits().