← Documentation
ADS-IDAC Engine 5.0.0
manager.cpp
Go to the documentation of this file.
2
3namespace bncore {
4
6 : max_bins_per_var_(max_bins_per_var) {}
7
8bool DiscretizationManager::should_split(const Graph &graph, NodeId var) const {
9 const auto &metadata = graph.get_variable(var);
10 return metadata.num_states() < max_bins_per_var_;
11}
12
14 std::size_t state_idx) {
15 if (!should_split(graph, var))
16 return;
17 const auto &metadata = graph.get_variable(var);
18
19 std::string old_name = metadata.states[state_idx];
20 graph.split_state(var, state_idx, old_name + "_low", old_name + "_high");
21}
22
23} // namespace bncore
DiscretizationManager(std::size_t max_bins_per_var=50)
Definition: manager.cpp:5
bool should_split(const Graph &graph, NodeId var) const
Tests whether a variable still has fewer states than the limit.
Definition: manager.cpp:8
void split_bin(Graph &graph, NodeId var, std::size_t state_idx)
Splits one state of a variable into two.
Definition: manager.cpp:13
std::size_t max_bins_per_var_
split_bin() is a no-op at or above this state count
Definition: manager.hpp:46
Directed graphical model over discrete variables.
Definition: graph.hpp:28
const VariableMetadata & get_variable(NodeId id) const
Metadata of a variable.
Definition: graph.cpp:92
void split_state(NodeId id, std::size_t state_idx, const std::string &new_state1, const std::string &new_state2)
Replaces one state of a variable by two states.
Definition: graph.cpp:22
bncore::DiscretizationManager, a helper that refines the state list of a Graph variable by splitting ...
std::uint32_t NodeId
Handle of a variable within one Graph.
Definition: node.hpp:20
std::size_t num_states() const
Number of states of the variable.
Definition: node.hpp:34
std::vector< std::string > states
Definition: node.hpp:28