45 template <
typename GUM_SCALAR >
50 __agg_type(aggType), __type(new
PRMType(rvType)),
51 __label(
std::shared_ptr<
Idx >(new
Idx(INT_MAX))) {
54 PRMObject::LEFT_CAST() + __type->name() + PRMObject::RIGHT_CAST() + name;
55 this->__type->variable().setName(name);
58 template <
typename GUM_SCALAR >
64 __agg_type(aggType), __type(new
PRMType(rvType)),
65 __label(
std::shared_ptr<
Idx >(new
Idx(label))) {
68 PRMObject::LEFT_CAST() + __type->name() + PRMObject::RIGHT_CAST() + name;
69 this->__type->variable().setName(name);
72 template <
typename GUM_SCALAR >
78 template <
typename GUM_SCALAR >
86 template <
typename GUM_SCALAR >
92 template <
typename GUM_SCALAR >
95 return this->prm_aggregate;
98 template <
typename GUM_SCALAR >
104 template <
typename GUM_SCALAR >
106 if (*__label != INT_MAX)
return *__label;
110 template <
typename GUM_SCALAR >
112 return __label_value;
115 template <
typename GUM_SCALAR >
120 template <
typename GUM_SCALAR >
122 __label_value = value;
125 template <
typename GUM_SCALAR >
127 return *__label != INT_MAX;
130 template <
typename GUM_SCALAR >
135 template <
typename GUM_SCALAR >
140 template <
typename GUM_SCALAR >
145 template <
typename GUM_SCALAR >
150 template <
typename GUM_SCALAR >
153 switch (agg_type()) {
154 case AggregateType::MIN: {
157 case AggregateType::MAX: {
160 case AggregateType::OR: {
163 case AggregateType::AND: {
166 case AggregateType::AMPLITUDE: {
169 case AggregateType::MEDIAN: {
172 case AggregateType::EXISTS: {
175 case AggregateType::FORALL: {
178 case AggregateType::COUNT: {
189 template <
typename GUM_SCALAR >
194 template <
typename GUM_SCALAR >
198 template <
typename GUM_SCALAR >
208 "this PRMAggregate can not have cast descendant");
216 for (inst.setFirst(); !inst.end(); inst.inc()) {
217 if (type().label_map()[inst.val(my_var)] == inst.val(cast_var)) {
218 cast->
cpf().set(inst, 1);
220 cast->
cpf().set(inst, 0);
227 template <
typename GUM_SCALAR >
232 template <
typename GUM_SCALAR >
235 this->__label = label;
aGrUM's Potential is a multi-dimensional array with tensor operators.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Abstract class representing an element of PRM class.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Base class for discrete random variable.
virtual PRMType & type()
See gum::PRMClassElement::type().
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual const Potential< GUM_SCALAR > & cpf() const
See gum::PRMClassElement::cpf().
PRMAggregate(const std::string &name, AggregateType aggType, const PRMType &rvType)
Default constructor.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
This is a decoration of the DiscreteVariable class.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
AggregateType
The different type of aggregates we can have.
Class for assigning/browsing values to tuples of discrete variables.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
<agrum/multidim/multiDimImplementation.h>
Size Idx
Type for indexes.
PRMAttribute is a member of a Class in a PRM.
virtual void addParent(const PRMClassElement< GUM_SCALAR > &elt)
See gum::PRMClassElement::_addParent().
<agrum/PRM/elements/scalarAttribute.h>
#define GUM_ERROR(type, msg)
ClassElementType
Returns true if obj_ptr is of type PRMReferenceSlot.