Scippy

GCG

Branch-and-Price & Column Generation for Everyone

branch_bpstrong.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-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 branch_bpstrong.h
29  * @brief generic branch and price strong branching as described in
30  * Pecin, D., Pessoa, A., Poggi, M., Uchoa, E. Improved branch-cut-and-price for capacitated vehicle routing.
31  * In: Math. Prog. Comp. 9:61-100. Springer (2017).
32  * @ingroup BRANCHINGRULES
33  * @author Oliver Gaul
34  */
35 
36 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
37 
38 #ifndef GCG_BRANCH_BPSTRONG_H__
39 #define GCG_BRANCH_BPSTRONG_H__
40 
41 #include "scip/scip.h"
42 #include "type_branchgcg.h"
43 
44 #ifdef __cplusplus
45 extern "C"
46 {
47 #endif
48 
49 /** creates the xyz branching rule and includes it in SCIP */
50 extern SCIP_RETCODE SCIPincludeBranchruleBPStrong(
51  SCIP *scip /**< SCIP data structure */
52 );
53 
55  SCIP* scip, /**< SCIP data structure */
56  SCIP_BRANCHRULE *origbranchrule, /**< pointer storing original branching rule */
57  SCIP_VAR **branchvar, /**< pointer to store output var pointer */
58  SCIP_Bool *upinf, /**< pointer to store whether strong branching detected infeasibility in
59  * the upbranch */
60  SCIP_Bool *downinf, /**< pointer to store whether strong branching detected infeasibility in
61  * the downbranch */
62  SCIP_RESULT *result, /**< pointer to store result */
63  SCIP_Bool *stillusestrong /**< pointer to store whether strong branching has reached a permanent
64  * stopping condition for orig */
65 );
66 
68  SCIP* scip, /**< original SCIP data structure */
69  SCIP_BRANCHRULE* rfbranchrule, /**< Ryan-Foster branchrule */
70  SCIP_VAR **ovar1s, /**< first elements of candidate pairs */
71  SCIP_VAR **ovar2s, /**< second elements of candidate pairs */
72  int *nspricingblock, /**< pricing block numbers corresponding to input pairs */
73  int npairs, /**< number of input pairs */
74  SCIP_VAR **ovar1, /**< pointer to store output var 1 pointer */
75  SCIP_VAR **ovar2, /**< pointer to store output var 2 pointer */
76  int *pricingblock, /**< pointer to store output pricing block number */
77  SCIP_Bool *sameinf, /**< pointer to store whether strong branching detected infeasibility in
78  * the same branch */
79  SCIP_Bool *differinf, /**< pointer to store whether strong branching detected infeasibility in
80  * the differ branch */
81  SCIP_RESULT *result, /**< pointer to store result */
82  SCIP_Bool *stillusestrong /**< pointer to store whether strong branching has reached a permanent
83  * stopping condition for Ryan-Foster */
84 );
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif
type definitions for branching rules in GCG projects
SCIP_RETCODE GCGbranchSelectCandidateStrongBranchingOrig(SCIP *scip, SCIP_BRANCHRULE *origbranchrule, SCIP_VAR **branchvar, SCIP_Bool *upinf, SCIP_Bool *downinf, SCIP_RESULT *result, SCIP_Bool *stillusestrong)
SCIP_RETCODE GCGbranchSelectCandidateStrongBranchingRyanfoster(SCIP *scip, SCIP_BRANCHRULE *rfbranchrule, SCIP_VAR **ovar1s, SCIP_VAR **ovar2s, int *nspricingblock, int npairs, SCIP_VAR **ovar1, SCIP_VAR **ovar2, int *pricingblock, SCIP_Bool *sameinf, SCIP_Bool *differinf, SCIP_RESULT *result, SCIP_Bool *stillusestrong)
SCIP_RETCODE SCIPincludeBranchruleBPStrong(SCIP *scip)