![]() |
aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
|
<agrum/PRM/generator/clusteredLayerGenerator.h> More...
#include <clusteredLayerGenerator.h>
Classes | |
| struct | MyData |
Public Member Functions | |
Constructors and destructor. | |
| ClusteredLayerGenerator () | |
| Default constructor. | |
| ClusteredLayerGenerator (const ClusteredLayerGenerator &source) | |
| Copy constructor. | |
| ClusteredLayerGenerator & | operator= (const ClusteredLayerGenerator &source) |
| Copy operator. | |
| virtual | ~ClusteredLayerGenerator () |
| Destructor. | |
| Size | getDomainSize () const |
| Getters and setters. | |
| void | setDomainSize (Size s) |
| Set the domain size of generated types. | |
| Size | getMaxParents () const |
| Returns the max number of parents allowed for any attribute or aggregator. | |
| void | setMaxParents (Size s) |
| Returns the max number of parents allowed for any attribute or aggregator. | |
| double | getClusterRatio () const |
| Returns the odds of a given class to be replaced by a cluster. | |
| void | setClusterRatio (double ratio) |
| Define the odds of a given class to be replaced by a cluster. | |
| void | setLayers (const std::vector< typename LayerGenerator< GUM_SCALAR >::LayerData > &v) |
| Defines the structure of each layers. | |
| std::vector< typename LayerGenerator< GUM_SCALAR >::LayerData > & | getLayer () |
| Getters and setters. | |
| const std::vector< typename LayerGenerator< GUM_SCALAR >::LayerData > & | getLayer () const |
| Getters and setters. | |
| virtual PRM< GUM_SCALAR > * | generate () |
| Proceeds with the generation of the PRM<GUM_SCALAR>. | |
| void | setNameGenerator (const NameGenerator &name_gen) |
| Getters and setters. | |
| const NameGenerator & | getNameGenerator () const |
| Returns the NameGenerator used by this generator. | |
Protected Attributes | |
| NameGenerator | name_gen_ |
| The name generator used by this class. | |
Private Member Functions | |
| std::string | _generateType_ (PRMFactory< GUM_SCALAR > &f) |
| void | _generateInterfaces_ (PRMFactory< GUM_SCALAR > &f, const std::string &type, std::vector< MyData > &l) |
| void | _generateClasses_ (PRMFactory< GUM_SCALAR > &f, const std::string &type, std::vector< typename ClusteredLayerGenerator::MyData > &l) |
| void | _generateCluster_ (PRMFactory< GUM_SCALAR > &f, const std::string &type, std::vector< typename ClusteredLayerGenerator::MyData > &l, Size lvl, Set< std::string > &i) |
| void | _generateClass_ (PRMFactory< GUM_SCALAR > &f, const std::string &type, std::vector< typename ClusteredLayerGenerator::MyData > &l, Size lvl, Set< std::string > &i) |
| void | _generateClassDag_ (Size lvl, DAG &dag, Bijection< std::string, NodeId > &names, std::vector< typename ClusteredLayerGenerator::MyData > &l) |
| void | _generateSystem_ (PRMFactory< GUM_SCALAR > &factory, std::vector< typename ClusteredLayerGenerator::MyData > &l) |
Private Attributes | |
| std::vector< typename LayerGenerator< GUM_SCALAR >::LayerData > | _layers_ |
| Size | _domain_size_ |
| Size | _max_parents_ |
| double | _cluster_ratio_ |
| HashTable< std::string, std::vector< std::string > * > | _cluster_map_ |
<agrum/PRM/generator/clusteredLayerGenerator.h>
This class generates PRMs with a clustered layer structure.
Definition at line 72 of file clusteredLayerGenerator.h.
| INLINE gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::ClusteredLayerGenerator | ( | ) |
Default constructor.
Definition at line 522 of file clusteredLayerGenerator_tpl.h.
References ClusteredLayerGenerator(), _cluster_ratio_, _domain_size_, _layers_, and _max_parents_.
Referenced by ClusteredLayerGenerator(), ClusteredLayerGenerator(), ~ClusteredLayerGenerator(), and operator=().
| INLINE gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::ClusteredLayerGenerator | ( | const ClusteredLayerGenerator< GUM_SCALAR > & | source | ) |
Copy constructor.
Definition at line 528 of file clusteredLayerGenerator_tpl.h.
References ClusteredLayerGenerator(), _domain_size_, _layers_, and _max_parents_.
|
virtual |
Destructor.
Definition at line 536 of file clusteredLayerGenerator_tpl.h.
References ClusteredLayerGenerator().
|
private |
Definition at line 323 of file clusteredLayerGenerator_tpl.h.
References _generateClassDag_(), gum::prm::PRMFactory< GUM_SCALAR >::addAggregator(), gum::prm::PRMFactory< GUM_SCALAR >::addParent(), gum::prm::PRMFactory< GUM_SCALAR >::addReferenceSlot(), gum::prm::PRMObject::CLASS, gum::prm::PRMFactory< GUM_SCALAR >::endAttribute(), gum::prm::PRMFactory< GUM_SCALAR >::endClass(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::first(), getDomainSize(), gum::prm::PRMGenerator< GUM_SCALAR >::name_gen_, gum::ArcGraphPart::parents(), gum::randomValue(), gum::prm::PRMFactory< GUM_SCALAR >::retrieveClass(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::second(), gum::prm::PRMFactory< GUM_SCALAR >::setRawCPFByLines(), gum::prm::PRMFactory< GUM_SCALAR >::startAttribute(), and gum::prm::PRMFactory< GUM_SCALAR >::startClass().
Referenced by _generateCluster_().
|
private |
Definition at line 382 of file clusteredLayerGenerator_tpl.h.
References _layers_, gum::DAG::addArc(), gum::NodeGraphPart::addNode(), gum::ArcGraphPart::eraseArc(), gum::ArcGraphPart::existsArc(), getMaxParents(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::insert(), gum::NodeGraphPart::nodes(), gum::ArcGraphPart::parents(), gum::randomProba(), gum::randomValue(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::second(), and gum::Set< Key >::size().
Referenced by _generateClass_(), and _generateCluster_().
|
private |
Definition at line 113 of file clusteredLayerGenerator_tpl.h.
References _generateCluster_(), _layers_, and gum::Set< Key >::insert().
Referenced by generate().
|
private |
Definition at line 135 of file clusteredLayerGenerator_tpl.h.
References _cluster_map_, _generateClass_(), _generateClassDag_(), gum::prm::PRMFactory< GUM_SCALAR >::addAggregator(), gum::prm::PRMFactory< GUM_SCALAR >::addParent(), gum::prm::PRMFactory< GUM_SCALAR >::addReferenceSlot(), gum::prm::PRMObject::CLASS, gum::prm::PRMObject::CLASS_ELT, gum::prm::PRMFactory< GUM_SCALAR >::endAttribute(), gum::prm::PRMFactory< GUM_SCALAR >::endClass(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::first(), getDomainSize(), GUM_ERROR, gum::prm::PRMGenerator< GUM_SCALAR >::name_gen_, gum::ArcGraphPart::parents(), gum::randomValue(), gum::prm::PRMFactory< GUM_SCALAR >::retrieveClass(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::second(), gum::prm::PRMFactory< GUM_SCALAR >::setRawCPFByLines(), gum::prm::PRMFactory< GUM_SCALAR >::startAttribute(), and gum::prm::PRMFactory< GUM_SCALAR >::startClass().
Referenced by _generateClasses_().
|
private |
Definition at line 84 of file clusteredLayerGenerator_tpl.h.
References _layers_, gum::prm::PRMFactory< GUM_SCALAR >::addAttribute(), gum::prm::PRMFactory< GUM_SCALAR >::addReferenceSlot(), gum::prm::PRMObject::CLASS_ELT, gum::prm::PRMFactory< GUM_SCALAR >::endInterface(), gum::prm::PRMGenerator< GUM_SCALAR >::name_gen_, gum::prm::PRMObject::PRM_INTERFACE, and gum::prm::PRMFactory< GUM_SCALAR >::startInterface().
Referenced by generate().
|
private |
Definition at line 432 of file clusteredLayerGenerator_tpl.h.
References _cluster_map_, _layers_, gum::prm::PRMFactory< GUM_SCALAR >::addInstance(), gum::prm::PRMFactory< GUM_SCALAR >::endSystem(), getMaxParents(), GUM_ERROR, gum::prm::PRMObject::INSTANCE, gum::prm::PRMGenerator< GUM_SCALAR >::name_gen_, gum::randomProba(), gum::randomValue(), gum::prm::PRMFactory< GUM_SCALAR >::setReferenceSlot(), gum::prm::PRMFactory< GUM_SCALAR >::startSystem(), and gum::prm::PRMObject::SYSTEM.
Referenced by generate().
|
private |
Definition at line 69 of file clusteredLayerGenerator_tpl.h.
References _domain_size_, gum::prm::PRMFactory< GUM_SCALAR >::addLabel(), gum::prm::PRMFactory< GUM_SCALAR >::endDiscreteType(), gum::prm::PRMGenerator< GUM_SCALAR >::name_gen_, gum::prm::PRMFactory< GUM_SCALAR >::startDiscreteType(), and gum::prm::PRMObject::TYPE.
Referenced by generate().
|
virtual |
Proceeds with the generation of the PRM<GUM_SCALAR>.
Implements gum::prm::PRMGenerator< GUM_SCALAR >.
Definition at line 53 of file clusteredLayerGenerator_tpl.h.
References _generateClasses_(), _generateInterfaces_(), _generateSystem_(), _generateType_(), _layers_, GUM_ERROR, and gum::prm::PRMFactory< GUM_SCALAR >::prm().
| INLINE double gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::getClusterRatio | ( | ) | const |
Returns the odds of a given class to be replaced by a cluster.
Definition at line 588 of file clusteredLayerGenerator_tpl.h.
References _cluster_ratio_.
| INLINE Size gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::getDomainSize | ( | ) | const |
Getters and setters.
Returns the domain size of generated types.
Definition at line 550 of file clusteredLayerGenerator_tpl.h.
References _domain_size_.
Referenced by _generateClass_(), and _generateCluster_().
| INLINE std::vector< typename LayerGenerator< GUM_SCALAR >::LayerData > & gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::getLayer | ( | ) |
Getters and setters.
Returns the domain size of generated types.
Definition at line 577 of file clusteredLayerGenerator_tpl.h.
References _layers_.
| INLINE const std::vector< typename LayerGenerator< GUM_SCALAR >::LayerData > & gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::getLayer | ( | ) | const |
Getters and setters.
Returns the domain size of generated types.
Definition at line 583 of file clusteredLayerGenerator_tpl.h.
References _layers_.
| INLINE Size gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::getMaxParents | ( | ) | const |
Returns the max number of parents allowed for any attribute or aggregator.
Definition at line 560 of file clusteredLayerGenerator_tpl.h.
References _max_parents_.
Referenced by _generateClassDag_(), and _generateSystem_().
|
inherited |
Returns the NameGenerator used by this generator.
Definition at line 76 of file PRMGenerator_tpl.h.
References name_gen_.
| INLINE ClusteredLayerGenerator< GUM_SCALAR > & gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::operator= | ( | const ClusteredLayerGenerator< GUM_SCALAR > & | source | ) |
Copy operator.
Definition at line 541 of file clusteredLayerGenerator_tpl.h.
References ClusteredLayerGenerator(), _domain_size_, _layers_, and _max_parents_.
| INLINE void gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::setClusterRatio | ( | double | ratio | ) |
Define the odds of a given class to be replaced by a cluster.
Definition at line 593 of file clusteredLayerGenerator_tpl.h.
References _cluster_ratio_.
| INLINE void gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::setDomainSize | ( | Size | s | ) |
Set the domain size of generated types.
Definition at line 555 of file clusteredLayerGenerator_tpl.h.
References _domain_size_.
| INLINE void gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::setLayers | ( | const std::vector< typename LayerGenerator< GUM_SCALAR >::LayerData > & | v | ) |
Defines the structure of each layers.
Each value in v defines a layer, were v[i].first is the number of different classes in the i-th layer and v[i].second is the number of instances in the i-th layer.
| v | A vector describing each layer. |
Definition at line 570 of file clusteredLayerGenerator_tpl.h.
References _layers_.
| INLINE void gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::setMaxParents | ( | Size | s | ) |
Returns the max number of parents allowed for any attribute or aggregator.
Definition at line 565 of file clusteredLayerGenerator_tpl.h.
References _max_parents_.
|
inherited |
Getters and setters.
Defines the NameGenerator used by this generator.
Definition at line 71 of file PRMGenerator_tpl.h.
References name_gen_.
|
private |
Definition at line 136 of file clusteredLayerGenerator.h.
Referenced by _generateCluster_(), and _generateSystem_().
|
private |
Definition at line 135 of file clusteredLayerGenerator.h.
Referenced by ClusteredLayerGenerator(), getClusterRatio(), and setClusterRatio().
|
private |
Definition at line 133 of file clusteredLayerGenerator.h.
Referenced by ClusteredLayerGenerator(), ClusteredLayerGenerator(), _generateType_(), getDomainSize(), operator=(), and setDomainSize().
|
private |
Definition at line 132 of file clusteredLayerGenerator.h.
Referenced by ClusteredLayerGenerator(), ClusteredLayerGenerator(), _generateClassDag_(), _generateClasses_(), _generateInterfaces_(), _generateSystem_(), generate(), getLayer(), getLayer(), operator=(), and setLayers().
|
private |
Definition at line 134 of file clusteredLayerGenerator.h.
Referenced by ClusteredLayerGenerator(), ClusteredLayerGenerator(), getMaxParents(), operator=(), and setMaxParents().
|
protectedinherited |
The name generator used by this class.
Definition at line 101 of file PRMGenerator.h.
Referenced by PRMGenerator(), gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::_generateClass_(), gum::prm::LayerGenerator< GUM_SCALAR >::_generateClasses_(), gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::_generateCluster_(), gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::_generateInterfaces_(), gum::prm::LayerGenerator< GUM_SCALAR >::_generateInterfaces_(), gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::_generateSystem_(), gum::prm::LayerGenerator< GUM_SCALAR >::_generateSystem_(), gum::prm::ClusteredLayerGenerator< GUM_SCALAR >::_generateType_(), gum::prm::LayerGenerator< GUM_SCALAR >::_generateType_(), getNameGenerator(), and setNameGenerator().