29 #ifndef GUM_CLUSTERED_LAYER_GENERATOR_H 30 #define GUM_CLUSTERED_LAYER_GENERATOR_H 39 #include <agrum/BN/generator/simpleBayesNetGenerator.h> 41 #include <agrum/PRM/PRMFactory.h> 42 #include <agrum/PRM/generator/PRMGenerator.h> 43 #include <agrum/PRM/generator/layerGenerator.h> 55 template <
typename GUM_SCALAR >
56 class ClusteredLayerGenerator:
public PRMGenerator< GUM_SCALAR > {
64 ClusteredLayerGenerator();
66 ClusteredLayerGenerator(
const ClusteredLayerGenerator& source);
68 ClusteredLayerGenerator& operator=(
const ClusteredLayerGenerator& source);
70 virtual ~ClusteredLayerGenerator();
79 Size getDomainSize()
const;
82 void setDomainSize(Size s);
86 Size getMaxParents()
const;
90 void setMaxParents(Size s);
93 double getClusterRatio()
const;
96 void setClusterRatio(
double ratio);
105 void setLayers(
const std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData >& v);
107 std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData >& getLayer();
108 const std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData >& getLayer()
const;
111 virtual PRM< GUM_SCALAR >* generate();
115 std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData > _layers_;
118 double _cluster_ratio_;
119 HashTable< std::string, std::vector< std::string >* > _cluster_map_;
124 std::vector< std::string > a;
125 std::vector< std::string > g;
127 std::vector< std::string > c;
130 std::string _generateType_(PRMFactory< GUM_SCALAR >& f);
132 void _generateInterfaces_(PRMFactory< GUM_SCALAR >& f,
133 const std::string& type,
134 std::vector< MyData >& l);
136 void _generateClasses_(PRMFactory< GUM_SCALAR >& f,
137 const std::string& type,
138 std::vector<
typename ClusteredLayerGenerator::MyData >& l);
140 void _generateCluster_(PRMFactory< GUM_SCALAR >& f,
141 const std::string& type,
142 std::vector<
typename ClusteredLayerGenerator::MyData >& l,
144 Set< std::string >& i);
146 void _generateClass_(PRMFactory< GUM_SCALAR >& f,
147 const std::string& type,
148 std::vector<
typename ClusteredLayerGenerator::MyData >& l,
150 Set< std::string >& i);
152 void _generateClassDag_(Size lvl,
154 Bijection< std::string, NodeId >& names,
155 std::vector<
typename ClusteredLayerGenerator::MyData >& l);
157 void _generateSystem_(PRMFactory< GUM_SCALAR >& factory,
158 std::vector<
typename ClusteredLayerGenerator::MyData >& l);
164 #include <agrum/PRM/generator/clusteredLayerGenerator_tpl.h>