Scippy

GCG

Branch-and-Price & Column Generation for Everyone

gcgplugins.c
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program */
4 /* GCG --- Generic Column Generation */
5 /* a Dantzig-Wolfe decomposition based extension */
6 /* of the branch-cut-and-price framework */
7 /* SCIP --- Solving Constraint Integer Programs */
8 /* */
9 /* Copyright (C) 2010-2021 Operations Research, RWTH Aachen University */
10 /* Zuse Institute Berlin (ZIB) */
11 /* */
12 /* This program is free software; you can redistribute it and/or */
13 /* modify it under the terms of the GNU Lesser General Public License */
14 /* as published by the Free Software Foundation; either version 3 */
15 /* of the License, or (at your option) any later version. */
16 /* */
17 /* This program is distributed in the hope that it will be useful, */
18 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
19 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
20 /* GNU Lesser General Public License for more details. */
21 /* */
22 /* You should have received a copy of the GNU Lesser General Public License */
23 /* along with this program; if not, write to the Free Software */
24 /* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.*/
25 /* */
26 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
27 
28 /**@file gcgplugins.c
29  * @brief SCIP plugins for generic column generation
30  * @author Gerald Gamrath
31  * @author Martin Bergner
32  * @author Michael Bastubbe
33  */
34 
35 /*--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
36 
37 #include "gcgplugins.h"
38 #include "scip/debug.h"
39 
40 #define USEHEURS 1
41 #define USESEPA 1
42 #define USEPROP 1
43 
44 /* include header files here, such that the user only has to include
45  * gcgplugins.h
46  */
47 #include "scip/cons_and.h"
48 #include "scip/cons_bounddisjunction.h"
49 #include "scip/cons_indicator.h"
50 #include "scip/cons_integral.h"
51 #include "scip/cons_knapsack.h"
52 #include "scip/cons_linear.h"
53 #include "scip/cons_linking.h"
54 #include "scip/cons_logicor.h"
55 #include "scip/cons_or.h"
56 #include "scip/cons_orbitope.h"
57 #include "scip/cons_setppc.h"
58 #include "scip/cons_varbound.h"
59 #include "scip/cons_xor.h"
60 
61 
62 #if USEHEURS
63 #include "scip/heur_adaptivediving.h"
64 #include "scip/heur_actconsdiving.h"
65 #include "scip/heur_alns.h"
66 #include "scip/heur_bound.h"
67 #include "scip/heur_clique.h"
68 #include "scip/heur_coefdiving.h"
69 #include "scip/heur_completesol.h"
70 #include "scip/heur_conflictdiving.h"
71 #include "scip/heur_crossover.h"
72 #include "scip/heur_dins.h"
73 #include "scip/heur_distributiondiving.h"
74 #include "scip/heur_dps.h"
75 #include "scip/heur_dualval.h"
76 #include "scip/heur_farkasdiving.h"
77 #include "scip/heur_feaspump.h"
78 #include "scip/heur_fixandinfer.h"
79 #include "scip/heur_fracdiving.h"
80 #include "scip/heur_gins.h"
81 #include "scip/heur_guideddiving.h"
82 #include "scip/heur_indicator.h"
83 #include "scip/heur_intdiving.h"
84 #include "scip/heur_intshifting.h"
85 #include "scip/heur_linesearchdiving.h"
86 #include "scip/heur_localbranching.h"
87 #include "scip/heur_locks.h"
88 #include "scip/heur_lpface.h"
89 #include "scip/heur_mpec.h"
90 #include "scip/heur_multistart.h"
91 #include "scip/heur_mutation.h"
92 #include "scip/heur_nlpdiving.h"
93 #include "scip/heur_ofins.h"
94 #include "scip/heur_objpscostdiving.h"
95 #include "scip/heur_octane.h"
96 #include "scip/heur_oneopt.h"
97 #include "scip/heur_padm.h"
98 #include "scip/heur_proximity.h"
99 #include "scip/heur_pscostdiving.h"
100 #include "scip/heur_randrounding.h"
101 #include "scip/heur_rens.h"
102 #include "scip/heur_reoptsols.h"
103 #include "scip/heur_repair.h"
104 #include "scip/heur_rins.h"
105 #include "scip/heur_rootsoldiving.h"
106 #include "scip/heur_rounding.h"
107 #include "scip/heur_shiftandpropagate.h"
108 #include "scip/heur_shifting.h"
109 #include "scip/heur_simplerounding.h"
110 #include "scip/heur_subnlp.h"
111 #include "scip/heur_trivial.h"
112 #include "scip/heur_trivialnegation.h"
113 #include "scip/heur_trustregion.h"
114 #include "scip/heur_trysol.h"
115 #include "scip/heur_twoopt.h"
116 #include "scip/heur_undercover.h"
117 #include "scip/heur_vbounds.h"
118 #include "scip/heur_veclendiving.h"
119 #include "scip/heur_zirounding.h"
120 #include "scip/heur_zeroobj.h"
121 #endif
122 
123 #include "scip/nodesel_bfs.h"
124 #include "scip/nodesel_breadthfirst.h"
125 #include "scip/nodesel_dfs.h"
126 #include "scip/nodesel_estimate.h"
127 #include "scip/nodesel_hybridestim.h"
128 #include "scip/nodesel_restartdfs.h"
129 #include "scip/nodesel_uct.h"
130 
131 #include "scip/event_solvingphase.h"
132 
133 #include "scip/presol_boundshift.h"
134 #include "scip/presol_convertinttobin.h"
135 #include "scip/presol_domcol.h"
136 #include "scip/presol_dualagg.h"
137 #include "scip/presol_dualcomp.h"
138 #include "scip/presol_dualinfer.h"
139 #include "scip/presol_dualsparsify.h"
140 #include "scip/presol_gateextraction.h"
141 #include "scip/presol_implics.h"
142 #include "scip/presol_inttobinary.h"
143 #include "scip/presol_redvub.h"
144 #include "scip/presol_sparsify.h"
145 #include "scip/presol_stuffing.h"
146 #include "scip/presol_trivial.h"
147 #include "scip/presol_tworowbnd.h"
148 
149 #if USEPROP
150 #include "scip/prop_dualfix.h"
151 #include "scip/prop_genvbounds.h"
152 #include "scip/prop_nlobbt.h"
153 #include "scip/prop_obbt.h"
154 #include "scip/prop_probing.h"
155 #include "scip/prop_pseudoobj.h"
156 #include "scip/prop_rootredcost.h"
157 #include "scip/prop_redcost.h"
158 #include "scip/prop_symmetry.h"
159 #include "scip/prop_vbounds.h"
160 #endif
161 
162 #include "scip/reader_bnd.h"
163 #include "scip/reader_ccg.h"
164 #include "scip/reader_cip.h"
165 #include "scip/reader_cnf.h"
166 #include "scip/reader_fix.h"
167 #include "scip/reader_fzn.h"
168 #include "scip/reader_gms.h"
169 #include "scip/reader_lp.h"
170 #include "scip/reader_mps.h"
171 #include "scip/reader_opb.h"
172 #include "scip/reader_osil.h"
173 #include "scip/reader_pip.h"
174 #include "scip/reader_pbm.h"
175 #include "scip/reader_rlp.h"
176 #include "scip/reader_sol.h"
177 #include "scip/reader_wbo.h"
178 #include "scip/reader_zpl.h"
179 
180 #if USESEPA
181 #include "scip/sepa_clique.h"
182 #include "scip/sepa_gomory.h"
183 #include "scip/sepa_impliedbounds.h"
184 #include "scip/sepa_interminor.h"
185 #include "scip/sepa_intobj.h"
186 #include "scip/sepa_mcf.h"
187 #include "scip/sepa_minor.h"
188 #include "scip/sepa_mixing.h"
189 #include "scip/sepa_oddcycle.h"
190 #include "scip/sepa_zerohalf.h"
191 
192 /* added by Jonas */
193 #include "scip/sepa_closecuts.h"
194 #include "scip/sepa_rapidlearning.h"
195 #endif
196 
197 #include "scip/cutsel_hybrid.h"
198 
199 #include "scip/scipshell.h"
200 #include "reader_blk.h"
201 #include "reader_dec.h"
202 #include "pricer_gcg.h"
203 #include "relax_gcg.h"
204 #include "branch_empty.h"
205 
206 #include "cons_origbranch.h"
207 #include "disp_gcg.h"
208 #include "dialog_gcg.h"
209 #include "reader_ref.h"
210 #include "event_bestsol.h"
211 #include "event_mastersol.h"
212 
213 /* visualization */
214 #include "reader_gp.h"
215 #include "reader_tex.h"
216 #include "reader_cls.h"
217 
218 /* detection */
219 #include "cons_decomp.h"
220 #include "dec_constype.h"
221 #include "dec_consclass.h"
222 #include "dec_densemasterconss.h"
223 #include "dec_stairheur.h"
224 #include "dec_compgreedily.h"
225 #include "dec_staircase_lsp.h"
226 #include "dec_postprocess.h"
227 #include "dec_mastersetpack.h"
228 #include "dec_mastersetpart.h"
229 #include "dec_mastersetcover.h"
230 #include "dec_neighborhoodmaster.h"
231 #include "dec_hrcgpartition.h"
232 #include "dec_hrgpartition.h"
233 #include "dec_hcgpartition.h"
234 #include "dec_connectedbase.h"
239 #include "dec_staircase_lsp.h"
240 #include "dec_varclass.h"
241 
242 #ifdef WITH_BLISS
243 #include "dec_isomorph.h"
244 #endif
245 
246 /* Christian's heuristics */
247 #include "heur_gcgcoefdiving.h"
248 #include "heur_gcgdins.h"
249 #include "heur_gcgfeaspump.h"
250 #include "heur_gcgfracdiving.h"
251 #include "heur_gcgguideddiving.h"
252 #include "heur_gcglinesdiving.h"
253 #include "heur_gcgpscostdiving.h"
254 #include "heur_gcgrens.h"
255 #include "heur_gcgrins.h"
256 #include "heur_gcgrounding.h"
257 #include "heur_gcgshifting.h"
258 #include "heur_gcgsimplerounding.h"
259 #include "heur_gcgveclendiving.h"
260 #include "heur_gcgzirounding.h"
261 #include "heur_origdiving.h"
262 #include "heur_xpcrossover.h"
263 #include "heur_xprins.h"
264 
265 /* Friedrike's detection stuff */
266 #include "scip_misc.h"
267 #include "scip/table_default.h"
268 
269 /* Igor's detection with clustering */
270 #include "dec_dbscan.h"
271 #include "dec_mst.h"
272 
273 /* classifiers */
274 #include "clscons_miplibconstypes.h"
275 #include "clscons_nnonzeros.h"
278 #include "clscons_scipconstypes.h"
279 #include "clscons_gamsdomain.h"
280 #include "clscons_gamssymbol.h"
281 
282 #include "clsvar_gamsdomain.h"
283 #include "clsvar_gamssymbol.h"
284 #include "clsvar_objvalues.h"
285 #include "clsvar_scipvartypes.h"
286 #include "clsvar_objvaluesigns.h"
287 
288 
289 /** includes default plugins for generic column generation into SCIP */
291  SCIP* scip /**< SCIP data structure */
292  )
293 {
294  SCIP_CALL( SCIPincludeDialogGcg(scip) );
295 
296  SCIP_CALL( SCIPincludeConshdlrAnd(scip) );
297  SCIP_CALL( SCIPincludeConshdlrBounddisjunction(scip) );
298  SCIP_CALL( SCIPincludeConshdlrLinear(scip) ); /* linear must be first due to constraint upgrading */
299  SCIP_CALL( SCIPincludeConshdlrIndicator(scip) );
300  SCIP_CALL( SCIPincludeConshdlrIntegral(scip) );
301  SCIP_CALL( SCIPincludeConshdlrLinking(scip) );
302  SCIP_CALL( SCIPincludeConshdlrKnapsack(scip) );
303  SCIP_CALL( SCIPincludeConshdlrLogicor(scip) );
304  SCIP_CALL( SCIPincludeConshdlrOr(scip) );
305  SCIP_CALL( SCIPincludeConshdlrOrbitope(scip) );
306  SCIP_CALL( SCIPincludeConshdlrSetppc(scip) );
307  SCIP_CALL( SCIPincludeConshdlrVarbound(scip) );
308  SCIP_CALL( SCIPincludeConshdlrXor(scip) );
309 
310  SCIP_CALL( SCIPincludeReaderBnd(scip) );
311  SCIP_CALL( SCIPincludeReaderCcg(scip) );
312  SCIP_CALL( SCIPincludeReaderCip(scip) );
313  SCIP_CALL( SCIPincludeReaderCnf(scip) );
314  SCIP_CALL( SCIPincludeReaderFix(scip) );
315  SCIP_CALL( SCIPincludeReaderFzn(scip) );
316  SCIP_CALL( SCIPincludeReaderGms(scip) );
317  SCIP_CALL( SCIPincludeReaderLp(scip) );
318  SCIP_CALL( SCIPincludeReaderMps(scip) );
319  SCIP_CALL( SCIPincludeReaderOpb(scip) );
320  SCIP_CALL( SCIPincludeReaderOsil(scip) );
321  SCIP_CALL( SCIPincludeReaderPip(scip) );
322  SCIP_CALL( SCIPincludeReaderPbm(scip) );
323  SCIP_CALL( SCIPincludeReaderRlp(scip) );
324  SCIP_CALL( SCIPincludeReaderSol(scip) );
325  SCIP_CALL( SCIPincludeReaderWbo(scip) );
326  SCIP_CALL( SCIPincludeReaderZpl(scip) );
327 
328  SCIP_CALL( SCIPincludePresolBoundshift(scip) );
329  SCIP_CALL( SCIPincludePresolConvertinttobin(scip) );
330  SCIP_CALL( SCIPincludePresolDomcol(scip) );
331  SCIP_CALL( SCIPincludePresolDualagg(scip) );
332  SCIP_CALL( SCIPincludePresolDualcomp(scip) );
333  SCIP_CALL( SCIPincludePresolDualinfer(scip) );
334  SCIP_CALL( SCIPincludePresolGateextraction(scip) );
335  SCIP_CALL( SCIPincludePresolImplics(scip) );
336  SCIP_CALL( SCIPincludePresolInttobinary(scip) );
337  SCIP_CALL( SCIPincludePresolRedvub(scip) );
338  SCIP_CALL( SCIPincludePresolTrivial(scip) );
339  SCIP_CALL( SCIPincludePresolTworowbnd(scip) );
340  SCIP_CALL( SCIPincludePresolSparsify(scip) );
341  SCIP_CALL( SCIPincludePresolDualsparsify(scip) );
342  SCIP_CALL( SCIPincludePresolStuffing(scip) );
343  // @todo: Papilo
344 
345  SCIP_CALL( SCIPincludeNodeselBfs(scip) );
346  SCIP_CALL( SCIPincludeNodeselBreadthfirst(scip) );
347  SCIP_CALL( SCIPincludeNodeselDfs(scip) );
348  SCIP_CALL( SCIPincludeNodeselEstimate(scip) );
349  SCIP_CALL( SCIPincludeNodeselHybridestim(scip) );
350  SCIP_CALL( SCIPincludeNodeselRestartdfs(scip) );
351  SCIP_CALL( SCIPincludeNodeselUct(scip) );
352 
353  SCIP_CALL( SCIPincludeEventHdlrSolvingphase(scip) );
354 
355 #if USEPROP
356  SCIP_CALL( SCIPincludePropDualfix(scip) );
357  SCIP_CALL( SCIPincludePropGenvbounds(scip) );
358  SCIP_CALL( SCIPincludePropObbt(scip) );
359  SCIP_CALL( SCIPincludePropNlobbt(scip) );
360  SCIP_CALL( SCIPincludePropProbing(scip) );
361  SCIP_CALL( SCIPincludePropPseudoobj(scip) );
362  SCIP_CALL( SCIPincludePropRedcost(scip) );
363  SCIP_CALL( SCIPincludePropRootredcost(scip) );
364  // SCIP_CALL( SCIPincludePropSymmetry(scip) );
365  SCIP_CALL( SCIPincludePropVbounds(scip) );
366 #endif
367 
368 
369 #if USEHEURS
370  SCIP_CALL( SCIPincludeHeurActconsdiving(scip) );
371  SCIP_CALL( SCIPincludeHeurAdaptivediving(scip) );
372  SCIP_CALL( SCIPincludeHeurBound(scip) );
373  SCIP_CALL( SCIPincludeHeurClique(scip) );
374  SCIP_CALL( SCIPincludeHeurCoefdiving(scip) );
375  SCIP_CALL( SCIPincludeHeurCompletesol(scip) );
376  SCIP_CALL( SCIPincludeHeurConflictdiving(scip) );
377  SCIP_CALL( SCIPincludeHeurCrossover(scip) );
378  SCIP_CALL( SCIPincludeHeurDins(scip) );
379  SCIP_CALL( SCIPincludeHeurDistributiondiving(scip) );
380  SCIP_CALL( SCIPincludeHeurDps(scip) );
381  SCIP_CALL( SCIPincludeHeurDualval(scip) );
382  SCIP_CALL( SCIPincludeHeurFarkasdiving(scip) );
383  SCIP_CALL( SCIPincludeHeurFeaspump(scip) );
384  SCIP_CALL( SCIPincludeHeurFixandinfer(scip) );
385  SCIP_CALL( SCIPincludeHeurFracdiving(scip) );
386  SCIP_CALL( SCIPincludeHeurGins(scip) );
387  SCIP_CALL( SCIPincludeHeurGuideddiving(scip) );
388  SCIP_CALL( SCIPincludeHeurIndicator(scip) );
389  SCIP_CALL( SCIPincludeHeurIntdiving(scip) );
390  SCIP_CALL( SCIPincludeHeurIntshifting(scip) );
391  SCIP_CALL( SCIPincludeHeurLinesearchdiving(scip) );
392  SCIP_CALL( SCIPincludeHeurLocalbranching(scip) );
393  SCIP_CALL( SCIPincludeHeurLocks(scip) );
394  SCIP_CALL( SCIPincludeHeurLpface(scip) );
395  SCIP_CALL( SCIPincludeHeurAlns(scip) );
396  SCIP_CALL( SCIPincludeHeurMultistart(scip) );
397  SCIP_CALL( SCIPincludeHeurMpec(scip) );
398  SCIP_CALL( SCIPincludeHeurMutation(scip) );
399  SCIP_CALL( SCIPincludeHeurNlpdiving(scip) );
400  SCIP_CALL( SCIPincludeHeurObjpscostdiving(scip) );
401  SCIP_CALL( SCIPincludeHeurOctane(scip) );
402  SCIP_CALL( SCIPincludeHeurOfins(scip) );
403  SCIP_CALL( SCIPincludeHeurOneopt(scip) );
404  SCIP_CALL( SCIPincludeHeurPADM(scip) );
405  SCIP_CALL( SCIPincludeHeurProximity(scip) );
406  SCIP_CALL( SCIPincludeHeurPscostdiving(scip) );
407  SCIP_CALL( SCIPincludeHeurRandrounding(scip) );
408  SCIP_CALL( SCIPincludeHeurRens(scip) );
409  SCIP_CALL( SCIPincludeHeurReoptsols(scip) );
410  SCIP_CALL( SCIPincludeHeurRepair(scip) );
411  SCIP_CALL( SCIPincludeHeurRins(scip) );
412  SCIP_CALL( SCIPincludeHeurRootsoldiving(scip) );
413  SCIP_CALL( SCIPincludeHeurRounding(scip) );
414  SCIP_CALL( SCIPincludeHeurShiftandpropagate(scip) );
415  SCIP_CALL( SCIPincludeHeurShifting(scip) );
416  SCIP_CALL( SCIPincludeHeurSubNlp(scip) );
417  SCIP_CALL( SCIPincludeHeurTrivial(scip) );
418  SCIP_CALL( SCIPincludeHeurTrivialnegation(scip) );
419  SCIP_CALL( SCIPincludeHeurTrustregion(scip) );
420  SCIP_CALL( SCIPincludeHeurTrySol(scip) );
421  SCIP_CALL( SCIPincludeHeurTwoopt(scip) );
422  SCIP_CALL( SCIPincludeHeurUndercover(scip) );
423  SCIP_CALL( SCIPincludeHeurVbounds(scip) );
424  SCIP_CALL( SCIPincludeHeurVeclendiving(scip) );
425  SCIP_CALL( SCIPincludeHeurZirounding(scip) );
426  SCIP_CALL( SCIPincludeHeurZeroobj(scip) );
427 #endif
428  SCIP_CALL( SCIPincludeHeurSimplerounding(scip) );
429 
430 #if USESEPA
431  SCIP_CALL( SCIPincludeSepaClique(scip) );
432  SCIP_CALL( SCIPincludeSepaGomory(scip) );
433  SCIP_CALL( SCIPincludeSepaImpliedbounds(scip) );
434  SCIP_CALL( SCIPincludeSepaInterminor(scip) );
435  SCIP_CALL( SCIPincludeSepaIntobj(scip) );
436  SCIP_CALL( SCIPincludeSepaMcf(scip) );
437  SCIP_CALL( SCIPincludeSepaMinor(scip) );
438  SCIP_CALL( SCIPincludeSepaMixing(scip) );
439  SCIP_CALL( SCIPincludeSepaOddcycle(scip) );
440  SCIP_CALL( SCIPincludeSepaZerohalf(scip) );
441 
442  /* added by Jonas */
443  SCIP_CALL( SCIPincludeSepaClosecuts(scip) );
444  SCIP_CALL( SCIPincludeSepaRapidlearning(scip) );
445 #endif
446 
447  SCIP_CALL( SCIPincludeCutselHybrid(scip) );
448 
449  SCIP_CALL( SCIPincludeRelaxGcg(scip) );
450  SCIP_CALL( SCIPincludeReaderBlk(scip) );
451  SCIP_CALL( GCGincludeReaderDec(scip) );
452  SCIP_CALL( SCIPincludeReaderRef(scip) );
453  SCIP_CALL( SCIPincludeBranchruleEmpty(scip) );
454 
455  SCIP_CALL( SCIPincludeConshdlrOrigbranch(scip) );
456  SCIP_CALL( SCIPincludeEventHdlrBestsol(scip) );
457  SCIP_CALL( SCIPincludeEventHdlrMastersol(scip) );
458 
459  /* Visualizations */
460  SCIP_CALL( SCIPincludeReaderGp(scip) );
461  SCIP_CALL( SCIPincludeReaderTex(scip) );
462  SCIP_CALL( SCIPincludeReaderCls(scip) );
463 
464  /* Detectors and decompositions */
465  SCIP_CALL( SCIPincludeConshdlrDecomp(scip) );
466  SCIP_CALL( SCIPincludeDetectorConstype(scip) );
467  SCIP_CALL( SCIPincludeDetectorPostprocess(scip) );
468  SCIP_CALL( SCIPincludeDetectorConsclass(scip) );
469  SCIP_CALL( SCIPincludeDetectorDensemasterconss(scip) );
470  SCIP_CALL( SCIPincludeDetectorNeighborhoodmaster(scip) );
471  SCIP_CALL( SCIPincludeDetectorStairheur(scip) );
472  SCIP_CALL( SCIPincludeDetectorStaircaseLsp(scip) );
473 #ifdef WITH_GSL
474  SCIP_CALL( SCIPincludeDetectorDBSCAN(scip) );
475  SCIP_CALL( SCIPincludeDetectorMST(scip) );
476 #endif
477  SCIP_CALL( SCIPincludeDetectorCompgreedily(scip) );
478  SCIP_CALL( SCIPincludeDetectorMastersetcover(scip) );
479  SCIP_CALL( SCIPincludeDetectorMastersetpack(scip) );
480  SCIP_CALL( SCIPincludeDetectorMastersetpart(scip) );
481  SCIP_CALL( SCIPincludeDetectorHcgpartition(scip) );
482  SCIP_CALL( SCIPincludeDetectorHrgpartition(scip) );
483  SCIP_CALL( SCIPincludeDetectorHrcgpartition(scip) );
484  SCIP_CALL( SCIPincludeDetectorConnectedbase(scip) );
486  SCIP_CALL( SCIPincludeDetectorGeneralmastersetpack(scip) );
487  SCIP_CALL( SCIPincludeDetectorGeneralmastersetpart(scip) );
488  SCIP_CALL( SCIPincludeDetectorGeneralmastersetcover(scip) );
489  SCIP_CALL( SCIPincludeDetectorVarclass(scip) );
490 
491  #ifdef WITH_BLISS
492  SCIP_CALL( SCIPincludeDetectorIsomorphism(scip) );
493  #endif
494 
495 
496  /* Classifiers */
497  SCIP_CALL( SCIPincludeConsClassifierNNonzeros(scip) );
498  SCIP_CALL( SCIPincludeConsClassifierScipConstypes(scip) );
499  SCIP_CALL( SCIPincludeConsClassifierMiplibConstypes(scip) );
502  SCIP_CALL( SCIPincludeConsClassifierGamsdomain(scip) );
503  SCIP_CALL( SCIPincludeConsClassifierGamssymbol(scip) );
504 
505  SCIP_CALL( SCIPincludeVarClassifierGamsdomain(scip) );
506  SCIP_CALL( SCIPincludeVarClassifierGamssymbol(scip) );
507  SCIP_CALL( SCIPincludeVarClassifierScipVartypes(scip) );
508  SCIP_CALL( SCIPincludeVarClassifierObjValues(scip) );
509  SCIP_CALL( SCIPincludeVarClassifierObjValueSigns(scip) );
510 
511 
512  /* Christian's heuristics */
513  SCIP_CALL( SCIPincludeEventHdlrOrigdiving(scip) );
514  SCIP_CALL( GCGincludeHeurGcgcoefdiving(scip) );
515  SCIP_CALL( GCGincludeHeurGcgfracdiving(scip) );
516  SCIP_CALL( GCGincludeHeurGcgguideddiving(scip) );
517  SCIP_CALL( GCGincludeHeurGcglinesdiving(scip) );
518  SCIP_CALL( GCGincludeHeurGcgpscostdiving(scip) );
519  SCIP_CALL( GCGincludeHeurGcgveclendiving(scip) );
520  SCIP_CALL( SCIPincludeHeurGcgdins(scip) );
521  SCIP_CALL( SCIPincludeHeurGcgfeaspump(scip) );
522  SCIP_CALL( SCIPincludeHeurGcgrens(scip) );
523  SCIP_CALL( SCIPincludeHeurGcgrins(scip) );
524  SCIP_CALL( SCIPincludeHeurGcgrounding(scip) );
525  SCIP_CALL( SCIPincludeHeurGcgshifting(scip) );
526  SCIP_CALL( SCIPincludeHeurGcgsimplerounding(scip) );
527  SCIP_CALL( SCIPincludeHeurGcgzirounding(scip) );
528  SCIP_CALL( SCIPincludeHeurXpcrossover(scip) );
529  SCIP_CALL( SCIPincludeHeurXprins(scip) );
530 
531  /* Jonas' stuff */
532  SCIP_CALL( SCIPsetSeparating(scip, SCIP_PARAMSETTING_OFF, TRUE) );
533 
534  /* disable conflict analysis since adding constraints after structure detection may destroy symmetries */
535  SCIP_CALL( SCIPsetBoolParam(scip, "conflict/enable", FALSE) );
536  SCIP_CALL( SCIPsetIntParam(scip, "heuristics/clique/freq", -1) );
537  SCIP_CALL( SCIPfixParam(scip, "heuristics/clique/freq") );
538  SCIP_CALL( SCIPfixParam(scip, "conflict/enable") );
539 
540  SCIP_CALL( SCIPincludeDispGcg(scip) );
541  SCIP_CALL( GCGincludeDialogsGraph(scip) );
542  SCIP_CALL( SCIPincludeTableDefault(scip) );
543 
544  return SCIP_OKAY;
545 }
SCIP_RETCODE SCIPincludeDetectorMST(SCIP *scip)
Definition: dec_mst.cpp:544
arrowhead and bordered detector via graph partitioning (uses hmetis)
SCIP_RETCODE SCIPincludeHeurGcgshifting(SCIP *scip)
SCIP_RETCODE GCGincludeReaderDec(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorHcgpartition(SCIP *scip)
SCIP_RETCODE SCIPincludeReaderRef(SCIP *scip)
Definition: reader_ref.c:764
SCIP_RETCODE SCIPincludeReaderCls(SCIP *scip)
Definition: reader_cls.cpp:216
mastersetcover detector
branching rule for original problem in GCG while real branching is in the master
SCIP_RETCODE SCIPincludeConsClassifierScipConstypes(SCIP *scip)
classifies constraints according to their miplib constypes
SCIP_RETCODE SCIPincludeConsClassifierForConsnamesDigitFreeIdentical(SCIP *scip)
SCIP_RETCODE GCGincludeHeurGcgveclendiving(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorIsomorphism(SCIP *scip)
SCIP_RETCODE SCIPincludeVarClassifierObjValueSigns(SCIP *scip)
classifies constraints according to names (without digits)
SCIP_RETCODE SCIPincludeDetectorMastersetcover(SCIP *scip)
CLS reader for writing files containing classification data.
SCIP_RETCODE SCIPincludeBranchruleEmpty(SCIP *scip)
Definition: branch_empty.c:364
SCIP_RETCODE GCGincludeHeurGcglinesdiving(SCIP *scip)
compgreedily detector
zirounding primal heuristic
SCIP_RETCODE SCIPincludeConshdlrOrigbranch(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorPostprocess(SCIP *scip)
SCIP_RETCODE SCIPincludeConsClassifierConsnameLevenshtein(SCIP *scip)
GCG display columns.
SCIP_RETCODE SCIPincludeDetectorCompgreedily(SCIP *scip)
arrowhead and bordered detector via graph partitioning (uses hmetis)
SCIP_RETCODE SCIPincludeGcgPlugins(SCIP *scip)
Definition: gcgplugins.c:290
constraint handler for structure detection
SCIP_RETCODE SCIPincludeHeurXpcrossover(SCIP *scip)
SCIP_RETCODE GCGincludeHeurGcgfracdiving(SCIP *scip)
LP diving heuristic that chooses fixings w.r.t. the matrix coefficients.
SCIP_RETCODE SCIPincludeDetectorStairheur(SCIP *scip)
classifies constraints according to their nonzero entries
primal heuristic interface for LP diving heuristics on the original variables
SCIP_RETCODE SCIPincludeDetectorConnected_noNewLinkingVars(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorGeneralmastersetpart(SCIP *scip)
classifies variables according to their scip vartypes
classifies constraints according to their scip constypes
SCIP_RETCODE SCIPincludeDetectorConnectedbase(SCIP *scip)
detector for staircase structures via ROC algorithms
SCIP_RETCODE SCIPincludeReaderGp(SCIP *scip)
Definition: reader_gp.cpp:527
DEC file reader for structure information.
SCIP_RETCODE SCIPincludeEventHdlrMastersol(SCIP *scip)
SCIP_RETCODE SCIPincludeDispGcg(SCIP *scip)
Definition: disp_gcg.c:1186
SCIP_RETCODE SCIPincludeConsClassifierGamssymbol(SCIP *scip)
SCIP_RETCODE SCIPincludeHeurGcgsimplerounding(SCIP *scip)
SCIP_RETCODE SCIPincludeHeurGcgzirounding(SCIP *scip)
postprocess detector
Constraints which have the same symbol are put into same class.
GCG variable pricer.
various SCIP helper methods
SCIP_RETCODE SCIPincludeDetectorStaircaseLsp(SCIP *scip)
Objective Feasibility Pump 2.0.
SCIP_RETCODE SCIPincludeConsClassifierMiplibConstypes(SCIP *scip)
staircase compontent detector
BLK file reader for structure information.
mastersetpart detector
SCIP_RETCODE GCGincludeHeurGcgpscostdiving(SCIP *scip)
SCIP_RETCODE SCIPincludeHeurGcgrounding(SCIP *scip)
Classifies by domains from which constraints are created TODO: what is together in one class?
LNS heuristic that combines the incumbent with the LP optimum.
SCIP_RETCODE SCIPincludeReaderTex(SCIP *scip)
Definition: reader_tex.cpp:939
SCIP_RETCODE SCIPincludeDetectorGeneralmastersetpack(SCIP *scip)
Extreme Point RINS.
SCIP_RETCODE SCIPincludeDetectorDBSCAN(SCIP *scip)
Definition: dec_dbscan.cpp:537
SCIP_RETCODE SCIPincludeDetectorConstype(SCIP *scip)
LP gcgrounding heuristic that tries to recover from intermediate infeasibilities.
SCIP_RETCODE SCIPincludeHeurGcgrens(SCIP *scip)
Definition: heur_gcgrens.c:814
SCIP_RETCODE SCIPincludeHeurGcgfeaspump(SCIP *scip)
SCIP_RETCODE SCIPincludeEventHdlrOrigdiving(SCIP *scip)
LP diving heuristic that rounds variables with long column vectors.
SCIP_RETCODE GCGincludeHeurGcgguideddiving(SCIP *scip)
SCIP_RETCODE GCGincludeDialogsGraph(SCIP *scip)
connectedbase detector
constraint handler for storing the branching decisions at each node of the tree
SCIP_RETCODE SCIPincludeDetectorHrcgpartition(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorMastersetpack(SCIP *scip)
SCIP_RETCODE SCIPincludeHeurGcgrins(SCIP *scip)
Definition: heur_gcgrins.c:739
mastersetpack detector
connected_noNewLinkingVars detector
SCIP_RETCODE SCIPincludeVarClassifierGamsdomain(SCIP *scip)
generalmastersetcover detector
SCIP_RETCODE SCIPincludeEventHdlrBestsol(SCIP *scip)
SCIP_RETCODE SCIPincludeHeurXprins(SCIP *scip)
Definition: heur_xprins.c:1658
detector for diagonal (bordered) structures via Minimum Spanning Tree clustering algorithm
generalmastersetpart detector
LP diving heuristic that fixes variables with a large difference to their root solution.
SCIP_RETCODE SCIPincludeDetectorDensemasterconss(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorConsclass(SCIP *scip)
consclass detector
LNS heuristic that finds the optimal rounding to a given point.
densemasterconss detector
arrowhead and bordered detector via graph partitioning (uses hmetis)
SCIP_RETCODE SCIPincludeRelaxGcg(SCIP *scip)
Definition: relax_gcg.c:3422
eventhdlr to transfer solutions found in the original problem to the master problem
SCIP_RETCODE SCIPincludeVarClassifierGamssymbol(SCIP *scip)
detector for diagonal (bordered) structures via DBSCAN clustering algorithm
detector for pricing problems that can be aggregated (uses bliss)
SCIP plugins for generic column generation.
GCG relaxator.
SCIP_RETCODE SCIPincludeConsClassifierNNonzeros(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorGeneralmastersetcover(SCIP *scip)
simple and fast LP rounding heuristic
LP diving heuristic that chooses fixings in direction of incumbent solutions.
SCIP_RETCODE GCGincludeHeurGcgcoefdiving(SCIP *scip)
Extreme Point Crossover.
LP gcgrounding heuristic that tries to recover from intermediate infeasibilities and shifts continuou...
SCIP_RETCODE SCIPincludeDialogGcg(SCIP *scip)
Definition: dialog_gcg.c:1187
neighborhoodmaster detector
classifies constraints according to levenshtein distance graph of their names
GCG user interface dialog.
varclass detector
SCIP_RETCODE SCIPincludeVarClassifierObjValues(SCIP *scip)
eventhdlr to record the best primal bound for each heuristic
classifies variables according to their objective function values
SCIP_RETCODE SCIPincludeVarClassifierScipVartypes(SCIP *scip)
constype detector
SCIP_RETCODE SCIPincludeDetectorVarclass(SCIP *scip)
SCIP_RETCODE SCIPincludeHeurGcgdins(SCIP *scip)
GP file reader writing decompositions to gnuplot files.
SCIP_RETCODE SCIPincludeDetectorMastersetpart(SCIP *scip)
DINS primal heuristic.
parameter settings for visualization readers
SCIP_RETCODE SCIPincludeConsClassifierGamsdomain(SCIP *scip)
SCIP_RETCODE SCIPincludeDetectorNeighborhoodmaster(SCIP *scip)
variables which have the same symbol are put into same class
generalmastersetpack detector
classifies variables according to their objective function value signs
SCIP_RETCODE SCIPincludeReaderBlk(SCIP *scip)
Classifies by domains from which variables are created TODO: what is together in one class?
LP diving heuristic that chooses fixings w.r.t. the pseudo cost values.
SCIP_RETCODE SCIPincludeDetectorHrgpartition(SCIP *scip)
LP diving heuristic that chooses fixings w.r.t. the fractionalities.
REF file reader for structure information.
SCIP_RETCODE SCIPincludeConshdlrDecomp(SCIP *scip)
creates the constraint handler for decomp and includes it in SCIP