aGrUM
0.20.3
a C++ library for (probabilistic) graphical models
ICPTGenerator.h
Go to the documentation of this file.
1
/**
2
*
3
* Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
4
* info_at_agrum_dot_org
5
*
6
* This library is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this library. If not, see <http://www.gnu.org/licenses/>.
18
*
19
*/
20
21
22
/** @file
23
* @brief Interface-like class for generating Conditional Probability Tables.
24
*
25
* @author Christophe GONZALES(@AMU) and Pierre-Henri WUILLEMIN(@LIP6) and
26
*Ariele-Paolo MAESANO
27
*/
28
#
ifndef
GUM_I_CPT_GENERATOR_H
29
#
define
GUM_I_CPT_GENERATOR_H
30
31
#
include
<
agrum
/
agrum
.
h
>
32
#
include
<
agrum
/
tools
/
multidim
/
potential
.
h
>
33
34
namespace
gum
{
35
/** @class ICPTGenerator
36
* @headerfile ICPTGenerator.h <agrum/BN/generator/ICPTGenerator.h>
37
* @brief Abstract class for generating Conditional Probability Tables.
38
* @ingroup bn_generator
39
*
40
* This abstract class is an implementation of the strategy pattern to
41
* help changing CPT generation policies for the BayesNetGenerator class.
42
*/
43
template
<
typename
GUM_SCALAR >
44
class
ICPTGenerator {
45
public
:
46
// ############################################################################
47
/// @name Constructors / Destructor
48
// ############################################################################
49
/// @{
50
/**
51
* Default constructor.
52
*/
53
ICPTGenerator();
54
55
/**
56
* Destructor.
57
*/
58
virtual
~ICPTGenerator();
59
/// @}
60
61
// ############################################################################
62
/// @name CPT generation methods
63
// ############################################################################
64
/// @{
65
/**
66
* Generates a CPT using floats.
67
* @param varId The variable id of the CPT owner.
68
* @param cpt A reference on the CPT to fill.
69
*/
70
virtual
void
generateCPT(
const
Idx& varId,
const
Potential< GUM_SCALAR >& cpt) = 0;
71
/// @}
72
};
73
74
#
ifndef
GUM_NO_EXTERN_TEMPLATE_CLASS
75
extern
template
class
ICPTGenerator<
double
>;
76
#
endif
77
78
}
/* namespace gum */
79
80
#
include
<
agrum
/
BN
/
generator
/
ICPTGenerator_tpl
.
h
>
81
#
endif
/* GUM_I_CPT_GENERATOR_H */
gum::Set::emplace
INLINE void emplace(Args &&... args)
Definition:
set_tpl.h:643