41 #include "../NumConstants.h"
42 #include "../../Utils/MapTools.h"
43 #include "../../Text/TextTools.h"
49 const vector<double>& probas ) :
56 if (distributions.size() != probas.size())
61 size_t size = distributions.size();
62 for (
size_t i = 0; i < size; i++)
64 if (distributions[i] == 0)
68 for (
size_t i = 0; i < size; i++)
78 for (
size_t i = 0; i < size - 1; i++)
85 for (
size_t i = 0; i < size; i++)
87 vdd_.push_back(distributions[i]->
clone());
92 for (
size_t i = 0; i < size; i++)
97 for (
size_t i = 0; i < size; i++)
102 for (
size_t i = 0; i < size; i++)
117 for (
size_t i = 0; i < mdd.
vdd_.size(); i++)
120 vdd_.push_back(mdd.
vdd_[i]->clone());
133 for (
size_t i = 0; i < mdd.
vdd_.size(); i++)
136 vdd_.push_back(mdd.
vdd_[i]->clone());
145 for (
size_t i = 0; i <
vdd_.size(); i++)
155 for (
size_t i = 0; i <
vdd_.size(); i++)
157 vdd_[i]->setNumberOfCategories(nbClasses);
167 size_t size =
vdd_.size();
169 for (
size_t i = 0; i < size - 1; i++)
178 for (
size_t i = 0; i < size; i++)
180 vdd_[i]->matchParametersValues(parameters);
188 size_t size =
vdd_.size();
192 for (
size_t i = 0; i < size; i++)
194 vector<double> values =
vdd_[i]->getCategories();
195 for (
size_t j = 0; j < values.size(); j++)
201 for (
size_t i = 0; i < size; i++)
203 vector<double> values =
vdd_[i]->getCategories();
204 vector<double> probas2 =
vdd_[i]->getProbabilities();
205 for (
size_t j = 0; j < values.size(); j++)
219 bool suB =
true, slB =
true;
221 for (
size_t i = 0; i < size; i++)
225 lB =
vdd_[i]->getLowerBound();
226 slB =
vdd_[i]->strictLowerBound();
230 uB =
vdd_[i]->getUpperBound();
231 suB =
vdd_[i]->strictUpperBound();
239 vector<double> values = MapTools::getKeys<double, double, AbstractDiscreteDistribution::Order>(
distribution_);
246 bounds_[i] = (values[i] + values[i + 1]) / 2.;
255 for (
size_t i = 0; i <
vdd_.size(); i++)
257 vdd_[i]->setMedian(median);
264 for (
size_t i = 0; i <
vdd_.size(); i++)
266 vdd_[i]->discretize();
275 for (
size_t i = 0; i <
vdd_.size(); i++)
284 throw Exception(
"MixtureOfDiscreteDistributions::qProb to difficult to compute: not implemented");
291 for (
size_t i = 0; i <
vdd_.size(); i++)
300 for (
size_t i = 0; i <
vdd_.size(); i++)
302 vdd_[i]->restrictToConstraint(c);
314 for (
size_t i = 0; i <
vdd_.size(); i++)