42 template <
typename GUM_SCALAR >
47 __agg_type(aggType), __type(new
PRMType(rvType)),
48 __label(
std::shared_ptr<
Idx >(new
Idx(INT_MAX))) {
51 PRMObject::LEFT_CAST() + __type->name() + PRMObject::RIGHT_CAST() + name;
52 this->__type->variable().setName(name);
55 template <
typename GUM_SCALAR >
61 __agg_type(aggType), __type(new
PRMType(rvType)),
62 __label(
std::shared_ptr<
Idx >(new
Idx(label))) {
65 PRMObject::LEFT_CAST() + __type->name() + PRMObject::RIGHT_CAST() + name;
66 this->__type->variable().setName(name);
69 template <
typename GUM_SCALAR >
75 template <
typename GUM_SCALAR >
83 template <
typename GUM_SCALAR >
89 template <
typename GUM_SCALAR >
92 return this->prm_aggregate;
95 template <
typename GUM_SCALAR >
101 template <
typename GUM_SCALAR >
103 if (*__label != INT_MAX)
return *__label;
107 template <
typename GUM_SCALAR >
109 return __label_value;
112 template <
typename GUM_SCALAR >
117 template <
typename GUM_SCALAR >
119 __label_value = value;
122 template <
typename GUM_SCALAR >
124 return *__label != INT_MAX;
127 template <
typename GUM_SCALAR >
132 template <
typename GUM_SCALAR >
137 template <
typename GUM_SCALAR >
142 template <
typename GUM_SCALAR >
147 template <
typename GUM_SCALAR >
150 switch (agg_type()) {
151 case AggregateType::MIN: {
154 case AggregateType::MAX: {
157 case AggregateType::OR: {
160 case AggregateType::AND: {
163 case AggregateType::AMPLITUDE: {
166 case AggregateType::MEDIAN: {
169 case AggregateType::EXISTS: {
172 case AggregateType::FORALL: {
175 case AggregateType::COUNT: {
184 template <
typename GUM_SCALAR >
189 template <
typename GUM_SCALAR >
193 template <
typename GUM_SCALAR >
203 "this PRMAggregate can not have cast descendant");
211 for (inst.setFirst(); !inst.end(); inst.inc()) {
212 if (type().label_map()[inst.val(my_var)] == inst.val(cast_var)) {
213 cast->
cpf().set(inst, 1);
215 cast->
cpf().set(inst, 0);
222 template <
typename GUM_SCALAR >
227 template <
typename GUM_SCALAR >
230 this->__label = label;
aGrUM's Potential is a multi-dimensional array with tensor operators.
Abstract class representing an element of PRM class.
Base class for discrete random variable.
virtual PRMType & type()
See gum::PRMClassElement::type().
gum is the global namespace for all aGrUM entities
virtual const Potential< GUM_SCALAR > & cpf() const
See gum::PRMClassElement::cpf().
PRMAggregate(const std::string &name, AggregateType aggType, const PRMType &rvType)
Default constructor.
This is a decoration of the DiscreteVariable class.
AggregateType
The different type of aggregates we can have.
Class for assigning/browsing values to tuples of discrete variables.
<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.