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_;
57 const std::string& GraphicalModel::propertyWithDefault(
const std::string& name,
58 const std::string& byDefault)
const {
60 return _properties_()[name];
61 }
catch (NotFound&) {
return byDefault; }
65 void GraphicalModel::setProperty(
const std::string& name,
const std::string& value) {
67 _properties_()[name] = value;
68 }
catch (NotFound&) { _properties_().insert(name, value); }
73 double GraphicalModel::log10DomainSize()
const {
76 for (
const auto node: nodes()) {
77 dSize += std::log10(variable(node).domainSize());
84 Instantiation GraphicalModel::completeInstantiation()
const {
87 for (
const auto node: nodes())
94 bool GraphicalModel::empty()
const {
return size() == 0; }
97 std::vector< std::string > GraphicalModel::names(
const std::vector< NodeId >& ids)
const {
98 std::vector< std::string > res;
99 const VariableNodeMap& v = variableNodeMap();
100 std::transform(ids.cbegin(), ids.cend(), std::back_inserter(res), [v](NodeId n) {
107 std::vector< std::string > GraphicalModel::names(
const NodeSet& ids)
const {
108 const VariableNodeMap& v = variableNodeMap();
109 std::vector< std::string > res;
111 res.push_back(v.name(n));
117 std::vector< NodeId > GraphicalModel::ids(
const std::vector< std::string >& names)
const {
118 std::vector< NodeId > res;
119 const VariableNodeMap& v = variableNodeMap();
120 std::transform(names.cbegin(),
122 std::back_inserter(res),
123 [v](
const std::string& n) {
return v.idFromName(n); });