58 template <
typename GUM_SCALAR >
65 template <
typename GUM_SCALAR >
73 template <
typename GUM_SCALAR >
78 template <
typename GUM_SCALAR >
85 bool stop_iteration =
false;
87 for (
Idx j = 1; j < this->
nbrDim(); j++) {
88 current =
fold_(this->
variable(j), i.
val(this->variable(j)), current, stop_iteration);
90 if (stop_iteration)
break;
96 template <
typename GUM_SCALAR >
108 return (i.
val(agg) == current) ? (GUM_SCALAR)1.0 : (GUM_SCALAR)0.0;
111 template <
typename GUM_SCALAR >
116 for (
Idx i = 1; i < this->
nbrDim(); i++) {
127 template <
typename GUM_SCALAR >
131 if (p->name() != this->name()) {
133 "Can not copy from a " << p->name() <<
" to a " << this->name());
141 template <
typename GUM_SCALAR >
147 template <
typename GUM_SCALAR >
149 static const std::string str =
"MultiDimAggregator";
153 template <
typename GUM_SCALAR >
159 template <
typename GUM_SCALAR >
164 template <
typename GUM_SCALAR >
170 template <
typename GUM_SCALAR >
173 template <
typename GUM_SCALAR >
176 template <
typename GUM_SCALAR >
179 template <
typename GUM_SCALAR >
182 template <
typename GUM_SCALAR >
185 template <
typename GUM_SCALAR >
190 template <
typename GUM_SCALAR >
Base class for discrete random variable.
virtual Size domainSize() const =0
Class for assigning/browsing values to tuples of discrete variables.
Idx val(Idx i) const
Returns the current value of the variable at position i.
std::string toString() const
Give a string version of instantiation.
virtual void copyFrom(const MultiDimContainer< GUM_ELEMENT > &src) const
Basic copy of a MultiDimContainer.
const DiscreteVariable & variable(Idx i) const override
Returns a const ref to the ith var.
Idx nbrDim() const override
Returns the number of vars in the multidimensional container.
Abstract base class for all multi dimensionnal read only structure.
MultiDimReadOnly()
Default constructor.
Exception : operation not allowed.
~MultiDimAggregator() override
Class destructor.
void setFirstNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
GUM_ELEMENT get(const Instantiation &i) const override
Returns the scalar parameter of this aggregator, if it has one.
void setChangeNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
bool isDecomposable() const
void setIncNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
void changeNotification(const gum::Instantiation &, const gum::DiscreteVariable *const, gum::Idx, gum::Idx) override
Returns the scalar parameter of this aggregator, if it has one.
MultiDimAggregator()
Default constructor.
virtual Idx fold_(const DiscreteVariable &v, Idx i1, Idx i2, bool &stop_iteration) const =0
fold_ is applied on value i1 for variable v. the actual result for precedent applications is i2.
std::string toString() const override
Returns the scalar parameter of this aggregator, if it has one.
void setDecNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
virtual Idx buildValue_(const gum::Instantiation &i) const
by default, buildValue_ uses a "fold" scheme and the user has to implement neutralElt_ and fold_ but ...
void setLastNotification(const gum::Instantiation &) override
Returns the scalar parameter of this aggregator, if it has one.
virtual std::optional< Idx > value() const
Returns the scalar parameter of this aggregator, if it has one.
Size realSize() const override
virtual Idx neutralElt_() const =0
neutralElt_() is the result value for the first application of fold_
virtual std::string aggregatorName() const =0
Returns the scalar parameter of this aggregator, if it has one.
void copyFrom(const MultiDimContainer< GUM_ELEMENT > &src) const override
Copy of a multiDimICIModel.
const std::string & name() const override
Returns the real name of the multiDimArray.
bool decomposable_
decomposable_ indicates if the aggregator can be decomposed
#define GUM_ERROR(type, msg)
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Size Idx
Type for indexes.
Aggregators are functional description of CPTs.
std::ostream & operator<<(std::ostream &s, const MultiDimAggregator< GUM_ELEMENT > &ag)
For friendly displaying the content of the array.
gum is the global namespace for all aGrUM entities