29 #ifndef GUM_MC_BAYES_NET_GENERATOR 30 #define GUM_MC_BAYES_NET_GENERATOR 32 #include <agrum/agrum.h> 44 # include <agrum/tools/core/mvsc/dirent.h> 47 #include <agrum/BN/BayesNet.h> 48 #include <agrum/BN/generator/IBayesNetGenerator.h> 49 #include <agrum/BN/generator/simpleCPTDisturber.h> 50 #include <agrum/BN/generator/simpleCPTGenerator.h> 51 #include <agrum/BN/inference/lazyPropagation.h> 52 #include <agrum/tools/core/hashTable.h> 53 #include <agrum/tools/multidim/potential.h> 54 #include <agrum/tools/variables/labelizedVariable.h> 156 template <
typename GUM_SCALAR,
157 template <
typename >
class ICPTGenerator = SimpleCPTGenerator,
158 template <
typename >
class ICPTDisturber = SimpleCPTDisturber >
159 class MCBayesNetGenerator:
160 public IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >,
161 public ICPTDisturber< GUM_SCALAR > {
184 MCBayesNetGenerator(Size nbrNodes,
187 Size iteration = 5000,
205 explicit MCBayesNetGenerator(BayesNet< GUM_SCALAR > bayesNet,
206 Size iteration = 5000,
214 ~MCBayesNetGenerator() override;
227 void generateBN(BayesNet< GUM_SCALAR >& bayesNet) override;
240 void disturbBN(BayesNet< GUM_SCALAR >& bayesNetinit, Size iteration = 0);
255 Size iteration()
const;
274 void setIteration(Size iteration);
289 BayesNet< GUM_SCALAR > bayesNettemp_;
290 HashTable< NodeId, Potential< GUM_SCALAR >* > hashMarginal_;
299 bool _connect_(NodeId i, NodeId j);
304 bool _directedPath_(NodeId tail, NodeId head);
310 void _insertArc_(NodeId i, NodeId j);
317 void _eraseArc_(NodeId i, NodeId j,
bool mustbeconnex =
true);
370 virtual bool _checkConditions_();
385 bool _connect_(NodeId i, NodeId j, NodeSet& excluded);
392 bool _directedPath_(NodeId tail, NodeId head, NodeSet& excluded);
398 void _chooseNodes_(NodeId& i, NodeId& j);
403 void _chooseCloseNodes_(NodeId& i, NodeId& j);
409 void _transformPoly_(Idx nbiter);
414 void _createTree_(Size BNSize);
422 NodeId _createPartTree_(Size BNSize, Idx& n);
426 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 427 extern template class MCBayesNetGenerator<
double >;
432 #include <agrum/BN/generator/MCBayesNetGenerator_tpl.h>