1    	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2    	/*                                                                           */
3    	/*                  This file is part of the program and library             */
4    	/*         SCIP --- Solving Constraint Integer Programs                      */
5    	/*                                                                           */
6    	/*  Copyright (c) 2002-2023 Zuse Institute Berlin (ZIB)                      */
7    	/*                                                                           */
8    	/*  Licensed under the Apache License, Version 2.0 (the "License");          */
9    	/*  you may not use this file except in compliance with the License.         */
10   	/*  You may obtain a copy of the License at                                  */
11   	/*                                                                           */
12   	/*      http://www.apache.org/licenses/LICENSE-2.0                           */
13   	/*                                                                           */
14   	/*  Unless required by applicable law or agreed to in writing, software      */
15   	/*  distributed under the License is distributed on an "AS IS" BASIS,        */
16   	/*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17   	/*  See the License for the specific language governing permissions and      */
18   	/*  limitations under the License.                                           */
19   	/*                                                                           */
20   	/*  You should have received a copy of the Apache-2.0 license                */
21   	/*  along with SCIP; see the file LICENSE. If not visit scipopt.org.         */
22   	/*                                                                           */
23   	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24   	
25   	/**@file   scipdefplugins.c
26   	 * @ingroup OTHER_CFILES
27   	 * @brief  default SCIP plugins
28   	 * @author Tobias Achterberg
29   	 */
30   	
31   	/*--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32   	
33   	#include "scip/scipdefplugins.h"
34   	#include "scip/debug.h"
35   	
36   	/** includes default SCIP plugins into SCIP */
37   	SCIP_RETCODE SCIPincludeDefaultPlugins(
38   	   SCIP*                 scip                /**< SCIP data structure */
39   	   )
40   	{
41   	   /* include some default dialogs, since other plugins require that at least the root dialog is available */
42   	   SCIP_CALL( SCIPincludeDialogDefaultBasic(scip) );
43   	
44   	   SCIP_CALL( SCIPincludeConshdlrNonlinear(scip) ); /* nonlinear constraint handler must be before linear due to constraint upgrading */
45   	   SCIP_CALL( SCIPincludeConshdlrLinear(scip) ); /* linear must be before its specializations due to constraint upgrading */
46   	   SCIP_CALL( SCIPincludeConshdlrAnd(scip) );
47   	   SCIP_CALL( SCIPincludeConshdlrBenders(scip) );
48   	   SCIP_CALL( SCIPincludeConshdlrBenderslp(scip) );
49   	   SCIP_CALL( SCIPincludeConshdlrBounddisjunction(scip) );
50   	   SCIP_CALL( SCIPincludeConshdlrCardinality(scip) );
51   	   SCIP_CALL( SCIPincludeConshdlrConjunction(scip) );
52   	   SCIP_CALL( SCIPincludeConshdlrCountsols(scip) );
53   	   SCIP_CALL( SCIPincludeConshdlrCumulative(scip) );
54   	   SCIP_CALL( SCIPincludeConshdlrDisjunction(scip) );
55   	   SCIP_CALL( SCIPincludeConshdlrIndicator(scip) );
56   	   SCIP_CALL( SCIPincludeConshdlrIntegral(scip) );
57   	   SCIP_CALL( SCIPincludeConshdlrKnapsack(scip) );
58   	   SCIP_CALL( SCIPincludeConshdlrLinking(scip) );
59   	   SCIP_CALL( SCIPincludeConshdlrLogicor(scip) );
60   	   SCIP_CALL( SCIPincludeConshdlrOr(scip) );
61   	   SCIP_CALL( SCIPincludeConshdlrOrbisack(scip) );
62   	   SCIP_CALL( SCIPincludeConshdlrOrbitope(scip) );
63   	   SCIP_CALL( SCIPincludeConshdlrPseudoboolean(scip) );
64   	   SCIP_CALL( SCIPincludeConshdlrSetppc(scip) );
65   	   SCIP_CALL( SCIPincludeConshdlrSOS1(scip) );
66   	   SCIP_CALL( SCIPincludeConshdlrSOS2(scip) );
67   	   SCIP_CALL( SCIPincludeConshdlrSuperindicator(scip) );
68   	   SCIP_CALL( SCIPincludeConshdlrSymresack(scip) );
69   	   SCIP_CALL( SCIPincludeConshdlrVarbound(scip) );
70   	   SCIP_CALL( SCIPincludeConshdlrXor(scip) );
71   	   SCIP_CALL( SCIPincludeConshdlrComponents(scip) );
72   	
73   	   /* include readers in order of chances to be necessary */
74   	   SCIP_CALL( SCIPincludeReaderMps(scip) );
75   	   SCIP_CALL( SCIPincludeReaderLp(scip) );
76   	   SCIP_CALL( SCIPincludeReaderSol(scip) );
77   	   SCIP_CALL( SCIPincludeReaderOsil(scip) );
78   	   SCIP_CALL( SCIPincludeReaderZpl(scip) );
79   	#ifdef SCIP_WITH_AMPL
80   	   SCIP_CALL( SCIPincludeReaderNl(scip) );
81   	#endif
82   	   SCIP_CALL( SCIPincludeReaderGms(scip) );
83   	   SCIP_CALL( SCIPincludeReaderOpb(scip) );
84   	   SCIP_CALL( SCIPincludeReaderWbo(scip) );
85   	   SCIP_CALL( SCIPincludeReaderPip(scip) );
86   	   SCIP_CALL( SCIPincludeReaderFzn(scip) );
87   	   SCIP_CALL( SCIPincludeReaderCnf(scip) );
88   	   SCIP_CALL( SCIPincludeReaderCip(scip) );
89   	   SCIP_CALL( SCIPincludeReaderSmps(scip) );
90   	   SCIP_CALL( SCIPincludeReaderSto(scip) );
91   	   SCIP_CALL( SCIPincludeReaderTim(scip) );
92   	   SCIP_CALL( SCIPincludeReaderCor(scip) );
93   	   SCIP_CALL( SCIPincludeReaderRlp(scip) );
94   	   SCIP_CALL( SCIPincludeReaderBnd(scip) );
95   	   SCIP_CALL( SCIPincludeReaderDiff(scip) );
96   	   SCIP_CALL( SCIPincludeReaderDec(scip) );
97   	   SCIP_CALL( SCIPincludeReaderFix(scip) );
98   	   SCIP_CALL( SCIPincludeReaderMst(scip) );
99   	   SCIP_CALL( SCIPincludeReaderPpm(scip) );
100  	   SCIP_CALL( SCIPincludeReaderPbm(scip) );
101  	   SCIP_CALL( SCIPincludeReaderCcg(scip) );
102  	
103  	   SCIP_CALL( SCIPincludePresolBoundshift(scip) );
104  	   SCIP_CALL( SCIPincludePresolConvertinttobin(scip) );
105  	   SCIP_CALL( SCIPincludePresolDomcol(scip) );
106  	   SCIP_CALL( SCIPincludePresolDualagg(scip) );
107  	   SCIP_CALL( SCIPincludePresolDualcomp(scip) );
108  	   SCIP_CALL( SCIPincludePresolDualinfer(scip) );
109  	   SCIP_CALL( SCIPincludePresolGateextraction(scip) );
110  	   SCIP_CALL( SCIPincludePresolImplics(scip) );
111  	   SCIP_CALL( SCIPincludePresolInttobinary(scip) );
112  	#ifdef SCIP_WITH_PAPILO
113  	   SCIP_CALL( SCIPincludePresolMILP(scip) );
114  	#endif
115  	   SCIP_CALL( SCIPincludePresolQPKKTref(scip) );
116  	   SCIP_CALL( SCIPincludePresolRedvub(scip) );
117  	   SCIP_CALL( SCIPincludePresolTrivial(scip) );
118  	   SCIP_CALL( SCIPincludePresolTworowbnd(scip) );
119  	   SCIP_CALL( SCIPincludePresolSparsify(scip) );
120  	   SCIP_CALL( SCIPincludePresolDualsparsify(scip) );
121  	   SCIP_CALL( SCIPincludePresolStuffing(scip) );
122  	   SCIP_CALL( SCIPincludeNodeselBfs(scip) );
123  	   SCIP_CALL( SCIPincludeNodeselBreadthfirst(scip) );
124  	   SCIP_CALL( SCIPincludeNodeselDfs(scip) );
125  	   SCIP_CALL( SCIPincludeNodeselEstimate(scip) );
126  	   SCIP_CALL( SCIPincludeNodeselHybridestim(scip) );
127  	   SCIP_CALL( SCIPincludeNodeselRestartdfs(scip) );
128  	   SCIP_CALL( SCIPincludeNodeselUct(scip) );
129  	   SCIP_CALL( SCIPincludeBranchruleAllfullstrong(scip) );
130  	   SCIP_CALL( SCIPincludeBranchruleCloud(scip) );
131  	   SCIP_CALL( SCIPincludeBranchruleDistribution(scip) );
132  	   SCIP_CALL( SCIPincludeBranchruleFullstrong(scip) );
133  	   SCIP_CALL( SCIPincludeBranchruleGomory(scip) );
134  	   SCIP_CALL( SCIPincludeBranchruleInference(scip) );
135  	   SCIP_CALL( SCIPincludeBranchruleLeastinf(scip) );
136  	   SCIP_CALL( SCIPincludeBranchruleLookahead(scip) );
137  	   SCIP_CALL( SCIPincludeBranchruleMostinf(scip) );
138  	   SCIP_CALL( SCIPincludeBranchruleMultAggr(scip) );
139  	   SCIP_CALL( SCIPincludeBranchruleNodereopt(scip) );
140  	   SCIP_CALL( SCIPincludeBranchrulePscost(scip) );
141  	   SCIP_CALL( SCIPincludeBranchruleRandom(scip) );
142  	   SCIP_CALL( SCIPincludeBranchruleRelpscost(scip) );
143  	   SCIP_CALL( SCIPincludeBranchruleVanillafullstrong(scip) );
144  	   SCIP_CALL( SCIPincludeEventHdlrEstim(scip) );
145  	   SCIP_CALL( SCIPincludeEventHdlrSolvingphase(scip) );
146  	   SCIP_CALL( SCIPincludeComprLargestrepr(scip) );
147  	   SCIP_CALL( SCIPincludeComprWeakcompr(scip) );
148  	   SCIP_CALL( SCIPincludeHeurActconsdiving(scip) );
149  	   SCIP_CALL( SCIPincludeHeurAdaptivediving(scip) );
150  	   SCIP_CALL( SCIPincludeHeurBound(scip) );
151  	   SCIP_CALL( SCIPincludeHeurClique(scip) );
152  	   SCIP_CALL( SCIPincludeHeurCoefdiving(scip) );
153  	   SCIP_CALL( SCIPincludeHeurCompletesol(scip) );
154  	   SCIP_CALL( SCIPincludeHeurConflictdiving(scip) );
155  	   SCIP_CALL( SCIPincludeHeurCrossover(scip) );
156  	   SCIP_CALL( SCIPincludeHeurDins(scip) );
157  	   SCIP_CALL( SCIPincludeHeurDistributiondiving(scip) );
158  	   SCIP_CALL( SCIPincludeHeurDps(scip) );
159  	   SCIP_CALL( SCIPincludeHeurDualval(scip) );
160  	   SCIP_CALL( SCIPincludeHeurFarkasdiving(scip) );
161  	   SCIP_CALL( SCIPincludeHeurFeaspump(scip) );
162  	   SCIP_CALL( SCIPincludeHeurFixandinfer(scip) );
163  	   SCIP_CALL( SCIPincludeHeurFracdiving(scip) );
164  	   SCIP_CALL( SCIPincludeHeurGins(scip) );
165  	   SCIP_CALL( SCIPincludeHeurGuideddiving(scip) );
166  	   SCIP_CALL( SCIPincludeHeurZeroobj(scip) );
167  	   SCIP_CALL( SCIPincludeHeurIndicator(scip) );
168  	   SCIP_CALL( SCIPincludeHeurIndicatordiving(scip) );
169  	   SCIP_CALL( SCIPincludeHeurIntdiving(scip) );
170  	   SCIP_CALL( SCIPincludeHeurIntshifting(scip) );
171  	   SCIP_CALL( SCIPincludeHeurLinesearchdiving(scip) );
172  	   SCIP_CALL( SCIPincludeHeurLocalbranching(scip) );
173  	   SCIP_CALL( SCIPincludeHeurLocks(scip) );
174  	   SCIP_CALL( SCIPincludeHeurLpface(scip) );
175  	   SCIP_CALL( SCIPincludeHeurAlns(scip) );
176  	   SCIP_CALL( SCIPincludeHeurNlpdiving(scip) );
177  	   SCIP_CALL( SCIPincludeHeurMutation(scip) );
178  	   SCIP_CALL( SCIPincludeHeurMultistart(scip) );
179  	   SCIP_CALL( SCIPincludeHeurMpec(scip) );
180  	   SCIP_CALL( SCIPincludeHeurObjpscostdiving(scip) );
181  	   SCIP_CALL( SCIPincludeHeurOctane(scip) );
182  	   SCIP_CALL( SCIPincludeHeurOfins(scip) );
183  	   SCIP_CALL( SCIPincludeHeurOneopt(scip) );
184  	   SCIP_CALL( SCIPincludeHeurPADM(scip) );
185  	   SCIP_CALL( SCIPincludeHeurProximity(scip) );
186  	   SCIP_CALL( SCIPincludeHeurPscostdiving(scip) );
187  	   SCIP_CALL( SCIPincludeHeurRandrounding(scip) );
188  	   SCIP_CALL( SCIPincludeHeurRens(scip) );
189  	   SCIP_CALL( SCIPincludeHeurReoptsols(scip) );
190  	   SCIP_CALL( SCIPincludeHeurRepair(scip) );
191  	   SCIP_CALL( SCIPincludeHeurRins(scip) );
192  	   SCIP_CALL( SCIPincludeHeurRootsoldiving(scip) );
193  	   SCIP_CALL( SCIPincludeHeurRounding(scip) );
194  	   SCIP_CALL( SCIPincludeHeurScheduler(scip) );
195  	   SCIP_CALL( SCIPincludeHeurShiftandpropagate(scip) );
196  	   SCIP_CALL( SCIPincludeHeurShifting(scip) );
197  	   SCIP_CALL( SCIPincludeHeurSimplerounding(scip) );
198  	   SCIP_CALL( SCIPincludeHeurSubNlp(scip) );
199  	   SCIP_CALL( SCIPincludeHeurTrivial(scip) );
200  	   SCIP_CALL( SCIPincludeHeurTrivialnegation(scip) );
201  	   SCIP_CALL( SCIPincludeHeurTrustregion(scip) );
202  	   SCIP_CALL( SCIPincludeHeurTrySol(scip) );
203  	   SCIP_CALL( SCIPincludeHeurTwoopt(scip) );
204  	   SCIP_CALL( SCIPincludeHeurUndercover(scip) );
205  	   SCIP_CALL( SCIPincludeHeurVbounds(scip) );
206  	   SCIP_CALL( SCIPincludeHeurVeclendiving(scip) );
207  	   SCIP_CALL( SCIPincludeHeurZirounding(scip) );
208  	   SCIP_CALL( SCIPincludePropDualfix(scip) );
209  	   SCIP_CALL( SCIPincludePropGenvbounds(scip) );
210  	   SCIP_CALL( SCIPincludePropObbt(scip) );
211  	   SCIP_CALL( SCIPincludePropNlobbt(scip) );
212  	   SCIP_CALL( SCIPincludePropProbing(scip) );
213  	   SCIP_CALL( SCIPincludePropPseudoobj(scip) );
214  	   SCIP_CALL( SCIPincludePropRedcost(scip) );
215  	   SCIP_CALL( SCIPincludePropRootredcost(scip) );
216  	   SCIP_CALL( SCIPincludePropSymmetry(scip) );
217  	   SCIP_CALL( SCIPincludePropVbounds(scip) );
218  	   SCIP_CALL( SCIPincludeSepaCGMIP(scip) );
219  	   SCIP_CALL( SCIPincludeSepaClique(scip) );
220  	   SCIP_CALL( SCIPincludeSepaClosecuts(scip) );
221  	   SCIP_CALL( SCIPincludeSepaAggregation(scip) );
222  	   SCIP_CALL( SCIPincludeSepaConvexproj(scip) );
223  	   SCIP_CALL( SCIPincludeSepaDisjunctive(scip) );
224  	   SCIP_CALL( SCIPincludeSepaEccuts(scip) );
225  	   SCIP_CALL( SCIPincludeSepaGauge(scip) );
226  	   SCIP_CALL( SCIPincludeSepaGomory(scip) );
227  	   SCIP_CALL( SCIPincludeSepaImpliedbounds(scip) );
228  	   SCIP_CALL( SCIPincludeSepaInterminor(scip) );
229  	   SCIP_CALL( SCIPincludeSepaIntobj(scip) );
230  	   SCIP_CALL( SCIPincludeSepaLagromory(scip) );
231  	   SCIP_CALL( SCIPincludeSepaMcf(scip) );
232  	   SCIP_CALL( SCIPincludeSepaMinor(scip) );
233  	   SCIP_CALL( SCIPincludeSepaMixing(scip) );
234  	   SCIP_CALL( SCIPincludeSepaOddcycle(scip) );
235  	   SCIP_CALL( SCIPincludeSepaRapidlearning(scip) );
236  	   SCIP_CALL( SCIPincludeSepaRlt(scip) );
237  	   SCIP_CALL( SCIPincludeSepaZerohalf(scip) );
238  	   SCIP_CALL( SCIPincludeDispDefault(scip) );
239  	   SCIP_CALL( SCIPincludeTableDefault(scip) );
240  	   SCIP_CALL( SCIPincludeEventHdlrSofttimelimit(scip) );
241  	   SCIP_CALL( SCIPincludeConcurrentScipSolvers(scip) );
242  	   SCIP_CALL( SCIPincludeBendersDefault(scip) );
243  	   SCIP_CALL( SCIPincludeCutselEnsemble(scip) );
244  	   SCIP_CALL( SCIPincludeCutselHybrid(scip) );
245  	   SCIP_CALL( SCIPincludeCutselDynamic(scip) );
246  	   SCIP_CALL( SCIPincludeExprhdlrAbs(scip) );
247  	   SCIP_CALL( SCIPincludeExprhdlrCos(scip) );
248  	   SCIP_CALL( SCIPincludeExprhdlrEntropy(scip) );
249  	   SCIP_CALL( SCIPincludeExprhdlrExp(scip) );
250  	   SCIP_CALL( SCIPincludeExprhdlrLog(scip) );
251  	   SCIP_CALL( SCIPincludeExprhdlrPow(scip) );
252  	   SCIP_CALL( SCIPincludeExprhdlrProduct(scip) );
253  	   SCIP_CALL( SCIPincludeExprhdlrSignpower(scip) );
254  	   SCIP_CALL( SCIPincludeExprhdlrSin(scip) );
255  	   SCIP_CALL( SCIPincludeExprhdlrSum(scip) );
256  	   SCIP_CALL( SCIPincludeExprhdlrValue(scip) );
257  	   SCIP_CALL( SCIPincludeExprhdlrVar(scip) );
258  	   SCIP_CALL( SCIPincludeExprhdlrVaridx(scip) );
259  	   SCIP_CALL( SCIPincludeNlhdlrDefault(scip) );
260  	   SCIP_CALL( SCIPincludeNlhdlrConvex(scip) );
261  	   SCIP_CALL( SCIPincludeNlhdlrConcave(scip) );
262  	   SCIP_CALL( SCIPincludeNlhdlrBilinear(scip) );
263  	   SCIP_CALL( SCIPincludeNlhdlrPerspective(scip) );
264  	   SCIP_CALL( SCIPincludeNlhdlrQuadratic(scip) );
265  	   SCIP_CALL( SCIPincludeNlhdlrQuotient(scip) );
266  	   SCIP_CALL( SCIPincludeNlhdlrSignomial(scip) );
267  	   SCIP_CALL( SCIPincludeNlhdlrSoc(scip) );
268  	   SCIP_CALL( SCIPincludeNlpSolverIpopt(scip) );
269  	   SCIP_CALL( SCIPincludeNlpSolverFilterSQP(scip) );
270  	   SCIP_CALL( SCIPincludeNlpSolverWorhp(scip, TRUE) );
271  	   SCIP_CALL( SCIPincludeNlpSolverWorhp(scip, FALSE) );
272  	   SCIP_CALL( SCIPincludeNlpSolverAll(scip) );
273  	
274  	#ifdef TPI_TNY
275  	   SCIP_CALL( SCIPincludeExternalCodeInformation(scip, "TinyCThread", "Small, portable implementation of the C11 threads API (tinycthread.github.io)") );
276  	#endif
277  	
278  	   SCIP_CALL( SCIPdebugIncludeProp(scip) ); /*lint !e506 !e774*/
279  	
280  	   return SCIP_OKAY;
281  	}
282