123 for( j = 0; j < 3; ++j )
127 for( k = 0; k < 3; ++k )
139 for( states[0] = 0; states[0] < nstates && ncutscreated <
MAXCUTSCREATED; ++states[0] )
146 states[1] = succs1[j];
152 states[2] = succs2[k];
157 if( (states[0] != states[1] && states[0] != states[2] && states[1] > states[2]) )
160 for( l = 0; l < 3 ; ++l )
162 violation[ncutscreated] = sign[l][0]
164 violation[ncutscreated] += sign[l][1]
166 violation[ncutscreated] += sign[l][2]
169 if( violation[ncutscreated] > 0 )
178 getEdgevar(edgevars, states[1], states[2], 0), sign[l][2]) );
180 getEdgevar(edgevars, states[0], states[1], 1), sign[l][0]) );
182 getEdgevar(edgevars, states[0], states[2], 1), sign[l][1]) );
186 if( ncutscreated >= size - 1 )
196 violation[ncutscreated] = sign[l][0]
198 violation[ncutscreated] += sign[l][1]
200 violation[ncutscreated] += sign[l][2]
203 if( violation[ncutscreated] > 0)
212 getEdgevar(edgevars, states[1], states[2], 0), sign[l][2]) );
214 getEdgevar(edgevars, states[1], states[0], 1), sign[l][0]) );
216 getEdgevar(edgevars, states[2], states[0], 1), sign[l][1]) );
220 if( ncutscreated >= size - 1 )
232 if( states[0] > states[1] && states[1] > states[2] )
234 for( l = 0; l < 3; ++l )
236 violation[ncutscreated] = sign[l][0]
238 violation[ncutscreated] += sign[l][1]
240 violation[ncutscreated] += sign[l][2]
243 if( violation[ncutscreated] > 0 )
249 getEdgevar(edgevars, states[0], states[1], 0), sign[l][0]) );
251 getEdgevar(edgevars, states[0], states[2], 0), sign[l][1]) );
253 getEdgevar(edgevars, states[1], states[2], 0), sign[l][2]) );
255 if( ncutscreated >= size - 1 )
273 for( states[0] = 0; states[0] < nstates; ++states[0] )
280 states[1] = succs1[j];
286 states[2] = succs2[k];
295 if( violation[ncutscreated] > 0 )
304 getEdgevar(edgevars, states[0], states[1], 1), 1.0) );
306 getEdgevar(edgevars, states[1], states[2], 1), 1.0) );
308 getEdgevar(edgevars, states[2], states[0], 1), -1.0) );
312 if( ncutscreated >= size - 1 )
326 if( ncutscreated > 0 )
329 if( usecutselection )
341 goodmaxparall, maxparall, dircutoffdist, efficacyweight, objparalweight, intsuppweight,
342 ncutscreated, 0,
MAXCUTS, &ncutsapplied) );
350 for( j = 0; j < ncutsapplied; ++j )
358 for( j = 0; j < ncutscreated; ++j )
364 for( j = 0; j < 3; ++j )
SCIP_RETCODE SCIPselectCutsHybrid(SCIP *scip, SCIP_ROW **cuts, SCIP_ROW **forcedcuts, SCIP_RANDNUMGEN *randnumgen, SCIP_Real goodscorefac, SCIP_Real badscorefac, SCIP_Real goodmaxparall, SCIP_Real maxparall, SCIP_Real dircutoffdistweight, SCIP_Real efficacyweight, SCIP_Real objparalweight, SCIP_Real intsupportweight, int ncuts, int nforcedcuts, int maxselectedcuts, int *nselectedcuts)