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   struct_history.h
17  * @ingroup INTERNALAPI
18  * @brief  datastructures for branching and inference history
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_STRUCT_HISTORY_H__
25 #define __SCIP_STRUCT_HISTORY_H__
26 
27 
28 #include "scip/def.h"
29 #include "scip/type_history.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /** branching and inference history information for single variable independent of the domain value */
36 struct SCIP_History
37 {
38    SCIP_Real             pscostcount[2];     /**< nr of (partial) summands in down/upwards pseudo costs (may be fractional) */
39    SCIP_Real             pscostweightedmean[2]; /**< weighted mean of (partial) pseudo cost values for down/upwards branching */
40    SCIP_Real             pscostvariance[2];  /**< weighted variance of (partial) pseudo cost history for down/upwards branching */
41    SCIP_Real             vsids[2];           /**< degree of how often the variable was reason for a conflict */
42    SCIP_Real             conflengthsum[2];   /**< overall length of all active conflicts for which the variable gave reason */
43    SCIP_Real             inferencesum[2];    /**< degree of how often branching on the variable lead to inference of another bound */
44    SCIP_Real             cutoffsum[2];       /**< degree of how often branching on the variable lead to an infeasible sub problem */
45    SCIP_Real             ratio;              /**< Most recently computed value of the unpowered ratio (phi^l) in the Treemodel rules */
46    SCIP_Real             balance;            /**< Most recently value of r/l used to compute a ratio in the Treemodel rules */
47    SCIP_Bool             ratiovalid;         /**< Whether the ratio value is valid for the Treemodel rules */
48    SCIP_Longint          nactiveconflicts[2];/**< number of active conflicts for which the variable gave reason */
49    SCIP_Longint          nbranchings[2];     /**< nr of times, the variable changed its bounds due to branching */
50    SCIP_Longint          branchdepthsum[2];  /**< sum of depth levels, at which the branching bound changes took place */
51 };
52 
53 /** branching and inference history information for single variable dependent on the domain value */
54 struct SCIP_ValueHistory
55 {
56    SCIP_HISTORY**        histories;          /**< branching and inference history information for individual domain values */
57    SCIP_Real*            values;             /**< (sorted) array containing the domain values */
58    int                   nvalues;            /**< number of different domain values */
59    int                   sizevalues;         /**< size of the both arrays */
60 };
61 
62 #ifdef __cplusplus
63 }
64 #endif
65 
66 #endif
67