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   type_bandit.h
17  * @ingroup TYPEDEFINITIONS
18  * @brief  type definitions for bandit selection algorithms
19  * @author Gregor Hendel
20  *
21  *  This file defines the interface for bandit selection algorithms implemented in C.
22  *  see \ref PublicBanditMethods for all publicly available bandit methods.
23  */
24 
25 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
26 
27 #ifndef __SCIP_TYPE_BANDIT_H__
28 #define __SCIP_TYPE_BANDIT_H__
29 
30 #include "scip/def.h"
31 #include "scip/type_scip.h"
32 #include "scip/type_result.h"
33 #include "scip/type_timing.h"
34 #include "blockmemshell/memory.h"
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 /** data structure for bandit algorithms */
41 typedef struct SCIP_Bandit SCIP_BANDIT;
42 
43 /** virtual function table for bandit callbacks */
44 typedef struct SCIP_BanditVTable SCIP_BANDITVTABLE;
45 
46 /** data structure for specific bandit algorithm implementation */
47 typedef struct SCIP_BanditData SCIP_BANDITDATA;
48 
49 /*
50  * callbacks for bandit virtual function table
51  */
52 
53 /** callback to free bandit specific data structures */
54 #define SCIP_DECL_BANDITFREE(x) SCIP_RETCODE x (  \
55    BMS_BLKMEM*           blkmem,                  \
56    SCIP_BANDIT*          bandit                   \
57 )
58 
59 /** selection callback for bandit selector */
60 #define SCIP_DECL_BANDITSELECT(x) SCIP_RETCODE x ( \
61    SCIP_BANDIT*          bandit,                   \
62    int*                  selection                 \
63 )
64 
65 /** update callback for bandit algorithms */
66 #define SCIP_DECL_BANDITUPDATE(x) SCIP_RETCODE x ( \
67    SCIP_BANDIT*          bandit,                   \
68    int                   selection,                \
69    SCIP_Real             score                     \
70 )
71 
72 /** reset callback for bandit algorithms */
73 #define SCIP_DECL_BANDITRESET(x) SCIP_RETCODE x (  \
74    BMS_BUFMEM*           bufmem,                   \
75    SCIP_BANDIT*          bandit,                   \
76    SCIP_Real*            priorities                \
77 )
78 
79 #ifdef __cplusplus
80 }
81 #endif
82 
83 #endif
84