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);
106 const std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData >& v);
108 std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData >& getLayer();
109 const std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData >&
113 virtual PRM< GUM_SCALAR >* generate();
117 std::vector<
typename LayerGenerator< GUM_SCALAR >::LayerData > layers__;
120 double cluster_ratio__;
121 HashTable< std::string, std::vector< std::string >* > cluster_map__;
126 std::vector< std::string > a;
127 std::vector< std::string > g;
129 std::vector< std::string > c;
132 std::string generateType__(PRMFactory< GUM_SCALAR >& f);
134 void generateInterfaces__(PRMFactory< GUM_SCALAR >& f,
135 const std::string& type,
136 std::vector< MyData >& l);
138 void generateClasses__(
139 PRMFactory< GUM_SCALAR >& f,
140 const std::string& type,
141 std::vector<
typename ClusteredLayerGenerator::MyData >& l);
143 void generateCluster__(
144 PRMFactory< GUM_SCALAR >& f,
145 const std::string& type,
146 std::vector<
typename ClusteredLayerGenerator::MyData >& l,
148 Set< std::string >& i);
150 void generateClass__(
151 PRMFactory< GUM_SCALAR >& f,
152 const std::string& type,
153 std::vector<
typename ClusteredLayerGenerator::MyData >& l,
155 Set< std::string >& i);
157 void generateClassDag__(
160 Bijection< std::string, NodeId >& names,
161 std::vector<
typename ClusteredLayerGenerator::MyData >& l);
163 void generateSystem__(
164 PRMFactory< GUM_SCALAR >& factory,
165 std::vector<
typename ClusteredLayerGenerator::MyData >& l);
171 #include <agrum/PRM/generator/clusteredLayerGenerator_tpl.h>