30template <
class CONDITIONAL>
33 std::cout << (s.empty() ?
"" : s +
" ") << std::endl;
34 std::cout <<
"size: " << this->
size() << std::endl;
35 for (
size_t i = 0; i < this->
size(); i++) {
36 const auto& conditional = this->
at(i);
38 ss <<
"conditional " << i <<
": ";
39 if (conditional) conditional->print(ss.str(), formatter);
44template <
class CONDITIONAL>
58 for (
auto it = std::make_reverse_iterator(this->
end());
59 it != std::make_reverse_iterator(this->
begin()); ++it) {
60 const auto& conditional = *it;
61 auto frontals = conditional->frontals();
62 const Key me = frontals.front();
63 auto parents = conditional->parents();
64 for (
const Key& p : parents) {
65 os <<
" var" << p <<
"->var" << me <<
"\n";
74template <
class CONDITIONAL>
78 dot(ss, keyFormatter, writer);
83template <
class CONDITIONAL>
87 std::ofstream of(filename.c_str());
88 dot(of, keyFormatter, writer);
93template <
class CONDITIONAL>
94double BayesNet<CONDITIONAL>::logProbability(
const HybridValues& x)
const {
96 for (
const auto& gc : *
this) {
97 if (gc) sum += gc->logProbability(x);
103template <
class CONDITIONAL>
104double BayesNet<CONDITIONAL>::evaluate(
const HybridValues& x)
const {
105 return exp(-logProbability(x));
Global functions in a separate testing namespace.
Definition chartTesting.h:28
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
double dot(const V1 &a, const V2 &b)
Dot product.
Definition Vector.h:191
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:43
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:37
void print(const std::string &s="BayesNet", const KeyFormatter &formatter=DefaultKeyFormatter) const override
print out graph
Definition BayesNet-inst.h:31
void dot(std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
Output to graphviz format, stream version.
Definition BayesNet-inst.h:45
void saveGraph(const std::string &filename, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
output to file with graphviz format.
Definition BayesNet-inst.h:84
size_t size() const
Definition FactorGraph.h:297
const_iterator end() const
Definition FactorGraph.h:342
const_iterator begin() const
Definition FactorGraph.h:339
const sharedFactor at(size_t i) const
Definition FactorGraph.h:306
DotWriter is a helper class for writing graphviz .dot files.
Definition DotWriter.h:36
void drawVariable(Key key, const KeyFormatter &keyFormatter, const std::optional< Vector2 > &position, std::ostream *os) const
Create a variable dot fragment.
Definition DotWriter.cpp:42
void digraphPreamble(std::ostream *os) const
Write out preamble for digraph, including size.
Definition DotWriter.cpp:36
std::optional< Vector2 > variablePos(Key key) const
Return variable position or none.
Definition DotWriter.cpp:79