47 ScipParaInitialStat::clone(
51 int newMaxDepth = maxDepth;
52 int newMaxTotalDepth = maxTotalDepth;
53 int newNVarBranchStatsDown = nVarBranchStatsDown;
54 int newNVarBranchStatsUp = nVarBranchStatsUp;
55 int *newIdxLBranchStatsVarsDown =
new int[nVarBranchStatsDown];
56 int *newNVarBranchingDown =
new int[nVarBranchStatsDown];
57 int *newIdxLBranchStatsVarsUp =
new int[nVarBranchStatsUp];
58 int *newNVarBranchingUp =
new int[nVarBranchStatsUp];
59 SCIP_Real *newDownpscost =
new SCIP_Real[nVarBranchStatsDown];
60 SCIP_Real *newDownvsids =
new SCIP_Real[nVarBranchStatsDown];
61 SCIP_Real *newDownconflen =
new SCIP_Real[nVarBranchStatsDown];
62 SCIP_Real *newDowninfer =
new SCIP_Real[nVarBranchStatsDown];
63 SCIP_Real *newDowncutoff =
new SCIP_Real[nVarBranchStatsDown];
64 SCIP_Real *newUppscost =
new SCIP_Real[nVarBranchStatsUp];
65 SCIP_Real *newUpvsids =
new SCIP_Real[nVarBranchStatsUp];
66 SCIP_Real *newUpconflen =
new SCIP_Real[nVarBranchStatsUp];
67 SCIP_Real *newUpinfer =
new SCIP_Real[nVarBranchStatsUp];
68 SCIP_Real *newUpcutoff =
new SCIP_Real[nVarBranchStatsUp];
69 for(
int i = 0; i < nVarBranchStatsDown; i++ )
71 newIdxLBranchStatsVarsDown[i] = idxLBranchStatsVarsDown[i];
72 newNVarBranchingDown[i] = nVarBranchingDown[i];
73 newDownpscost[i] = downpscost[i];
74 newDownvsids[i] = downvsids[i];
75 newDownconflen[i] = downconflen[i];
76 newDowninfer[i] = downinfer[i];
77 newDowncutoff[i] = downcutoff[i];
79 for(
int i = 0; i < nVarBranchStatsUp; i++ )
81 newIdxLBranchStatsVarsUp[i] = idxLBranchStatsVarsUp[i];
82 newNVarBranchingUp[i] = nVarBranchingUp[i];
83 newUppscost[i] = uppscost[i];
84 newUpvsids[i] = upvsids[i];
85 newUpconflen[i] = upconflen[i];
86 newUpinfer[i] = upinfer[i];
87 newUpcutoff[i] = upcutoff[i];
91 scipParaComm->createScipParaInitialStat(newMaxDepth, newMaxTotalDepth, newNVarBranchStatsDown, newNVarBranchStatsUp,
92 newIdxLBranchStatsVarsDown, newNVarBranchingDown, newIdxLBranchStatsVarsUp, newNVarBranchingUp,
93 newDownpscost, newDownvsids, newDownconflen, newDowninfer, newDowncutoff,
94 newUppscost, newUpvsids, newUpconflen, newUpinfer, newUpcutoff)
98 ScipParaInitialStat::ScipParaInitialStat(
103 nVarBranchStatsDown(0),
104 nVarBranchStatsUp(0),
105 idxLBranchStatsVarsDown(0),
106 nVarBranchingDown(0),
107 idxLBranchStatsVarsUp(0),
129 SCIP_CALL_ABORT( SCIPgetVarsData(scip, &vars, &nvars, &nbinvars, &nintvars, NULL, NULL) );
130 int ngenvars = nbinvars+nintvars;
133 for(
int i = 0; i < ngenvars; ++i )
135 assert( SCIPvarGetType(vars[i]) == SCIP_VARTYPE_BINARY || SCIPvarGetType(vars[i]) == SCIP_VARTYPE_INTEGER );
136 SCIP_VAR *transformVar = vars[i];
137 SCIP_Real scalar = 1.0;
138 SCIP_Real constant = 0.0;
139 SCIP_CALL_ABORT( SCIPvarGetOrigvarSum(&transformVar, &scalar, &constant ) );
140 assert(transformVar != NULL);
143 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_DOWNWARDS) > 0 )
147 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_UPWARDS) > 0 )
154 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_DOWNWARDS) > 0 )
158 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_UPWARDS) > 0 )
183 for(
int i = 0; i < ngenvars; ++i )
185 assert( SCIPvarGetType(vars[i]) == SCIP_VARTYPE_BINARY || SCIPvarGetType(vars[i]) == SCIP_VARTYPE_INTEGER );
186 SCIP_VAR *transformVar = vars[i];
187 SCIP_Real scalar = 1.0;
188 SCIP_Real constant = 0.0;
189 SCIP_CALL_ABORT( SCIPvarGetOrigvarSum(&transformVar, &scalar, &constant ) );
190 assert(transformVar != NULL);
193 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_DOWNWARDS) > 0 )
196 nVarBranchingDown[nDown] = SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_DOWNWARDS);
197 downpscost[nDown] = SCIPgetVarPseudocost(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
198 downvsids[nDown] = SCIPgetVarVSIDS(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
199 downconflen[nDown] = SCIPgetVarAvgConflictlength(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
200 downinfer[nDown] = SCIPgetVarAvgInferences(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
201 downcutoff[nDown] = SCIPgetVarAvgCutoffs(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
204 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_UPWARDS) > 0 )
207 nVarBranchingUp[nUp] = SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_UPWARDS);
208 uppscost[nUp] = SCIPgetVarPseudocost(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
209 upvsids[nUp] = SCIPgetVarVSIDS(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
210 upconflen[nUp] = SCIPgetVarAvgConflictlength(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
211 upinfer[nUp] = SCIPgetVarAvgInferences(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
212 upcutoff[nUp] = SCIPgetVarAvgCutoffs(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
218 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_DOWNWARDS) > 0 )
221 nVarBranchingUp[nUp] = SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_UPWARDS);
222 uppscost[nUp] = SCIPgetVarPseudocost(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
223 upvsids[nUp] = SCIPgetVarVSIDS(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
224 upconflen[nUp] = SCIPgetVarAvgConflictlength(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
225 upinfer[nUp] = SCIPgetVarAvgInferences(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
226 upcutoff[nUp] = SCIPgetVarAvgCutoffs(scip, vars[i], SCIP_BRANCHDIR_UPWARDS);
229 if( SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_UPWARDS) > 0 )
232 nVarBranchingDown[nDown] = SCIPvarGetNBranchings(transformVar, SCIP_BRANCHDIR_DOWNWARDS);
233 downpscost[nDown] = SCIPgetVarPseudocost(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
234 downvsids[nDown] = SCIPgetVarVSIDS(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
235 downconflen[nDown] = SCIPgetVarAvgConflictlength(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
236 downinfer[nDown] = SCIPgetVarAvgInferences(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
237 downcutoff[nDown] = SCIPgetVarAvgCutoffs(scip, vars[i], SCIP_BRANCHDIR_DOWNWARDS);
250 SCIP_VAR **vars = SCIPgetVars(scip);
256 SCIP_CALL_ABORT( SCIPinitVarBranchStats(scip,vars[
idxLBranchStatsVarsDown[n]],
downpscost[n],0.0,
downvsids[n],0.0,
downconflen[n],0.0,
downinfer[n],0.0,
downcutoff[n],0.0) );
264 SCIP_CALL_ABORT( SCIPinitVarBranchStats(scip,vars[
idxLBranchStatsVarsUp[n]],0.0,
uppscost[n],0.0,
upvsids[n],0.0,
upconflen[n],0.0,
upinfer[n],0.0,
upcutoff[n]) );
static ScipParaCommTh * comm
void accumulateOn(SCIP *scip)
int * idxLBranchStatsVarsUp
ParaComm extension for SCIP solver.
class for initial statistics collecting after racing
int * idxLBranchStatsVarsDown
ParaInitialStat extension for SCIP solver.
Base class of communicator object.
#define DEF_SCIP_PARA_COMM(scip_para_comm, comm)