32 #include <agrum/tools/core/math/math_utils.h> 33 #include <agrum/tools/graphicalModels/graphicalModel.h> 38 const std::string& GraphicalModel::property(
const std::string& name)
const {
40 return properties__()[name];
42 std::string msg =
"The following property does not exists: ";
43 GUM_ERROR(NotFound, msg + name);
48 HashTable< std::string, std::string >& GraphicalModel::properties__()
const {
49 if (propertiesMap__ ==
nullptr) {
50 propertiesMap__ =
new HashTable< std::string, std::string >();
53 return *propertiesMap__;
58 GraphicalModel::propertyWithDefault(
const std::string& name,
59 const std::string& byDefault)
const {
61 return properties__()[name];
62 }
catch (NotFound&) {
return byDefault; }
66 void GraphicalModel::setProperty(
const std::string& name,
67 const std::string& value) {
69 properties__()[name] = value;
70 }
catch (NotFound&) { properties__().insert(name, value); }
75 double GraphicalModel::log10DomainSize()
const {
78 for (
const auto node: nodes()) {
79 dSize += std::log10(variable(node).domainSize());
86 Instantiation GraphicalModel::completeInstantiation()
const {
89 for (
const auto node: nodes())
96 bool GraphicalModel::empty()
const {
return size() == 0; }
99 std::vector< std::string >
100 GraphicalModel::names(
const std::vector< NodeId >& ids)
const {
101 std::vector< std::string > res;
102 const VariableNodeMap& v = variableNodeMap();
103 std::transform(ids.cbegin(),
105 std::back_inserter(res),
106 [v](NodeId n) {
return v[n].name(); });
111 std::vector< std::string > GraphicalModel::names(
const NodeSet& ids)
const {
112 const VariableNodeMap& v = variableNodeMap();
113 std::vector< std::string > res;
115 res.push_back(v.name(n));
121 std::vector< NodeId >
122 GraphicalModel::ids(
const std::vector< std::string >& names)
const {
123 std::vector< NodeId > res;
124 const VariableNodeMap& v = variableNodeMap();
125 std::transform(names.cbegin(),
127 std::back_inserter(res),
128 [v](
const std::string& n) {
return v.idFromName(n); });