relax_gcg.h
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-2018 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 
36 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
37 
38 #ifndef GCG_RELAX_GCG_H__
39 #define GCG_RELAX_GCG_H__
40 
41 #include "scip/scip.h"
42 #include "type_branchgcg.h"
43 #include "type_decomp.h"
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
50 extern
51 SCIP_RETCODE SCIPincludeRelaxGcg(
52  SCIP* scip
53  );
54 
56 extern
57 SCIP_RETCODE GCGrelaxIncludeBranchrule(
58  SCIP* scip,
59  SCIP_BRANCHRULE* branchrule,
60  GCG_DECL_BRANCHACTIVEMASTER((*branchactivemaster)),
61  GCG_DECL_BRANCHDEACTIVEMASTER ((*branchdeactivemaster)),
62  GCG_DECL_BRANCHPROPMASTER((*branchpropmaster)),
63  GCG_DECL_BRANCHMASTERSOLVED((*branchmastersolved)),
64  GCG_DECL_BRANCHDATADELETE((*branchdatadelete))
65  );
66 
68 extern
69 SCIP_RETCODE GCGrelaxBranchActiveMaster(
70  SCIP* scip,
71  SCIP_BRANCHRULE* branchrule,
72  GCG_BRANCHDATA* branchdata
73  );
74 
76 extern
77 SCIP_RETCODE GCGrelaxBranchDeactiveMaster(
78  SCIP* scip,
79  SCIP_BRANCHRULE* branchrule,
80  GCG_BRANCHDATA* branchdata
81  );
82 
84 extern
85 SCIP_RETCODE GCGrelaxBranchPropMaster(
86  SCIP* scip,
87  SCIP_BRANCHRULE* branchrule,
88  GCG_BRANCHDATA* branchdata,
89  SCIP_RESULT* result
90  );
91 
93 extern
94 SCIP_RETCODE GCGrelaxBranchMasterSolved(
95  SCIP* scip,
96  SCIP_BRANCHRULE* branchrule,
97  GCG_BRANCHDATA* branchdata,
98  SCIP_Real newlowerbound
99  );
100 
102 extern
103 SCIP_RETCODE GCGrelaxBranchDataDelete(
104  SCIP* scip,
105  SCIP_BRANCHRULE* branchrule,
106  GCG_BRANCHDATA** branchdata
107  );
108 
111 extern
112 SCIP_RETCODE GCGrelaxTransOrigToMasterCons(
113  SCIP* scip,
114  SCIP_CONS* cons,
115  SCIP_CONS** transcons
116  );
117 
119 extern
120 SCIP_SOL* GCGrelaxGetCurrentOrigSol(
121  SCIP* scip
122  );
123 
125 extern
126 SCIP_Bool GCGrelaxIsOrigSolFeasible(
127  SCIP* scip
128  );
129 
136 extern
137 SCIP_RETCODE GCGrelaxStartProbing(
138  SCIP* scip,
139  SCIP_HEUR* probingheur
140  );
141 
143 extern
144 SCIP_HEUR* GCGrelaxGetProbingheur(
145  SCIP* scip
146  );
147 
152 extern
153 SCIP_RETCODE GCGrelaxNewProbingnodeOrig(
154  SCIP* scip
155  );
156 
163 extern
164 SCIP_RETCODE GCGrelaxNewProbingnodeMaster(
165  SCIP* scip
166  );
167 
172 extern
173 SCIP_RETCODE GCGrelaxBacktrackProbing(
174  SCIP* scip,
175  int probingdepth
176  );
177 
179 extern
180 SCIP_RETCODE GCGrelaxPerformProbing(
181  SCIP* scip,
182  int maxlpiterations,
183  SCIP_Longint* nlpiterations,
184  SCIP_Real* lpobjvalue,
185  SCIP_Bool* lpsolved,
186  SCIP_Bool* lperror,
188  SCIP_Bool* cutoff
189  );
190 
192 extern
194  SCIP* scip,
195  int maxpricerounds,
196  SCIP_Longint* nlpiterations,
197  int* npricerounds,
198  SCIP_Real* lpobjvalue,
199  SCIP_Bool* lpsolved,
200  SCIP_Bool* lperror,
202  SCIP_Bool* cutoff
203  );
204 
206 extern
207 SCIP_RETCODE GCGrelaxEndProbing(
208  SCIP* scip
209  );
210 
213 extern
214 SCIP_RETCODE GCGrelaxUpdateCurrentSol(
215  SCIP* scip
216  );
217 
219 extern
221  SCIP* scip
222  );
223 
227 extern
229  SCIP* masterprob
230  );
231 
232 #ifdef __cplusplus
233 }
234 #endif
235 
236 #endif
SCIP_HEUR * GCGrelaxGetProbingheur(SCIP *scip)
Definition: relax_gcg.c:4219
SCIP_RETCODE GCGrelaxEndProbing(SCIP *scip)
Definition: relax_gcg.c:4512
SCIP_RETCODE GCGrelaxBranchDataDelete(SCIP *scip, SCIP_BRANCHRULE *branchrule, GCG_BRANCHDATA **branchdata)
Definition: relax_gcg.c:3610
SCIP_RETCODE GCGrelaxNewProbingnodeMaster(SCIP *scip)
Definition: relax_gcg.c:4288
SCIP_RETCODE GCGrelaxBranchDeactiveMaster(SCIP *scip, SCIP_BRANCHRULE *branchrule, GCG_BRANCHDATA *branchdata)
Definition: relax_gcg.c:3530
#define GCG_DECL_BRANCHMASTERSOLVED(x)
SCIP_RETCODE GCGrelaxIncludeBranchrule(SCIP *scip, SCIP_BRANCHRULE *branchrule, GCG_DECL_BRANCHACTIVEMASTER((*branchactivemaster)), GCG_DECL_BRANCHDEACTIVEMASTER((*branchdeactivemaster)), GCG_DECL_BRANCHPROPMASTER((*branchpropmaster)), GCG_DECL_BRANCHMASTERSOLVED((*branchmastersolved)), GCG_DECL_BRANCHDATADELETE((*branchdatadelete)))
Definition: relax_gcg.c:3451
SCIP_RETCODE GCGrelaxStartProbing(SCIP *scip, SCIP_HEUR *probingheur)
Definition: relax_gcg.c:4174
SCIP_RETCODE GCGrelaxNewProbingnodeOrig(SCIP *scip)
Definition: relax_gcg.c:4241
type definitions for decomposition information in GCG projects
enum Decmode DEC_DECMODE
Definition: type_decomp.h:67
SCIP_RETCODE GCGrelaxBranchMasterSolved(SCIP *scip, SCIP_BRANCHRULE *branchrule, GCG_BRANCHDATA *branchdata, SCIP_Real newlowerbound)
Definition: relax_gcg.c:3655
DEC_DECMODE GCGgetDecompositionMode(SCIP *scip)
Definition: relax_gcg.c:5075
SCIP_Bool GCGrelaxIsOrigSolFeasible(SCIP *scip)
Definition: relax_gcg.c:4112
SCIP_RETCODE GCGrelaxTransOrigToMasterCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)
Definition: relax_gcg.c:3695
#define GCG_DECL_BRANCHDATADELETE(x)
SCIP_RETCODE GCGrelaxPerformProbingWithPricing(SCIP *scip, int maxpricerounds, SCIP_Longint *nlpiterations, int *npricerounds, SCIP_Real *lpobjvalue, SCIP_Bool *lpsolved, SCIP_Bool *lperror, SCIP_Bool *cutoff)
Definition: relax_gcg.c:4492
DEC_DECMODE GCGgetMasterDecompMode(SCIP *masterprob)
Definition: relax_gcg.c:5096
type definitions for branching rules in GCG projects
#define GCG_DECL_BRANCHACTIVEMASTER(x)
#define GCG_DECL_BRANCHDEACTIVEMASTER(x)
SCIP_SOL * GCGrelaxGetCurrentOrigSol(SCIP *scip)
Definition: relax_gcg.c:4093
SCIP_RETCODE SCIPincludeRelaxGcg(SCIP *scip)
Definition: relax_gcg.c:3349
SCIP_RETCODE GCGrelaxBacktrackProbing(SCIP *scip, int probingdepth)
Definition: relax_gcg.c:4337
SCIP_RETCODE GCGrelaxUpdateCurrentSol(SCIP *scip)
Definition: relax_gcg.c:4650
#define GCG_DECL_BRANCHPROPMASTER(x)
SCIP_RETCODE GCGrelaxBranchPropMaster(SCIP *scip, SCIP_BRANCHRULE *branchrule, GCG_BRANCHDATA *branchdata, SCIP_RESULT *result)
Definition: relax_gcg.c:3568
SCIP_RETCODE GCGrelaxBranchActiveMaster(SCIP *scip, SCIP_BRANCHRULE *branchrule, GCG_BRANCHDATA *branchdata)
Definition: relax_gcg.c:3492
SCIP_RETCODE GCGrelaxPerformProbing(SCIP *scip, int maxlpiterations, SCIP_Longint *nlpiterations, SCIP_Real *lpobjvalue, SCIP_Bool *lpsolved, SCIP_Bool *lperror, SCIP_Bool *cutoff)
Definition: relax_gcg.c:4473