1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /*                                                                           */
3 /*                  This file is part of the program and library             */
4 /*         SCIP --- Solving Constraint Integer Programs                      */
5 /*                                                                           */
6 /*    Copyright (C) 2002-2021 Konrad-Zuse-Zentrum                            */
7 /*                            fuer Informationstechnik Berlin                */
8 /*                                                                           */
9 /*  SCIP is distributed under the terms of the ZIB Academic License.         */
10 /*                                                                           */
11 /*  You should have received a copy of the ZIB Academic License              */
12 /*  along with SCIP; see the file COPYING. If not visit scipopt.org.         */
13 /*                                                                           */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file   branch_relpscost.h
17  * @ingroup BRANCHINGRULES
18  * @brief  reliable pseudo costs branching rule
19  * @author Tobias Achterberg
20  *
21  * The reliable pseudo costs branching rule uses the notion of pseudo costs to measure the expected
22  * gain in the dual bound when branching on a particular variable.
23  * The pseudo cost information is collected during the branch-and-bound search in the same manner as for
24  * the pseudo costs branching rule.
25  *
26  * The reliable pseudo costs branching rule, however, uses a limited number of look-ahead LP-iterations
27  * at the beginning of the search in order to obtain better pseudo cost estimates and make branching decisions in a
28  * sense more "reliable" at an early stage of the search,
29  * at the price of a higher computational cost at the beginning of the search.
30  *
31  * For a more mathematical description and a comparison between the reliable pseudo costs rule and other branching rules
32  * in SCIP, we refer to
33  *
34  * @par
35  * Tobias Achterberg@n
36  * Constraint Integer Programming@n
37  * PhD Thesis, Technische Universität Berlin, 2007@n
38  */
39 
40 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
41 
42 #ifndef __SCIP_BRANCH_RELPSCOST_H__
43 #define __SCIP_BRANCH_RELPSCOST_H__
44 
45 
46 #include "scip/def.h"
47 #include "scip/type_result.h"
48 #include "scip/type_retcode.h"
49 #include "scip/type_scip.h"
50 #include "scip/type_var.h"
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
56 /** creates the reliable pseudo cost branching rule and includes it in SCIP
57  *
58  *  @ingroup BranchingRuleIncludes
59  */
60 SCIP_EXPORT
61 SCIP_RETCODE SCIPincludeBranchruleRelpscost(
62    SCIP*                 scip                /**< SCIP data structure */
63    );
64 
65 /**@addtogroup BRANCHINGRULES
66  *
67  * @{
68  */
69 
70 /** execution reliability pseudo cost branching with the given branching candidates */
71 SCIP_EXPORT
72 SCIP_RETCODE SCIPexecRelpscostBranching(
73    SCIP*                 scip,               /**< SCIP data structure */
74    SCIP_VAR**            branchcands,        /**< branching candidates */
75    SCIP_Real*            branchcandssol,     /**< solution value for the branching candidates */
76    SCIP_Real*            branchcandsfrac,    /**< fractional part of the branching candidates */
77    int                   nbranchcands,       /**< number of branching candidates */
78    SCIP_Bool             executebranching,   /**< perform a branching step after probing */
79    SCIP_RESULT*          result              /**< pointer to the result of the execution */
80    );
81 
82 /** @} */
83 
84 #ifdef __cplusplus
85 }
86 #endif
87 
88 #endif
89