24#include <boost/range/adaptor/reversed.hpp>
31template <
class CONDITIONAL>
34 std::cout << (s.empty() ?
"" : s +
" ") << std::endl;
35 std::cout <<
"size: " << this->size() << std::endl;
36 for (
size_t i = 0; i < this->size(); i++) {
37 const auto& conditional = this->at(i);
39 ss <<
"conditional " << i <<
": ";
40 if (conditional) conditional->print(ss.str(), formatter);
45template <
class CONDITIONAL>
52 for (
Key key : this->keys()) {
59 for (
auto conditional : boost::adaptors::reverse(*
this)) {
60 auto frontals = conditional->frontals();
61 const Key me = frontals.front();
62 auto parents = conditional->parents();
63 for (
const Key& p : parents) {
64 os <<
" var" << p <<
"->var" << me <<
"\n";
73template <
class CONDITIONAL>
77 dot(ss, keyFormatter, writer);
82template <
class CONDITIONAL>
86 std::ofstream of(filename.c_str());
87 dot(of, keyFormatter, writer);
92template <
class CONDITIONAL>
95 for (
const auto& gc : *
this) {
96 if (gc) sum += gc->logProbability(x);
102template <
class CONDITIONAL>
103double BayesNet<CONDITIONAL>::evaluate(
const HybridValues& x)
const {
104 return exp(-logProbability(x));
Global functions in a separate testing namespace.
Definition chartTesting.h:28
double dot(const V1 &a, const V2 &b)
Dot product.
Definition Vector.h:195
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:100
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
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:38
A BayesNet is a tree of conditionals, stored in elimination order.
Definition BayesNet.h:35
void print(const std::string &s="BayesNet", const KeyFormatter &formatter=DefaultKeyFormatter) const override
print out graph
Definition BayesNet-inst.h:32
void dot(std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
Output to graphviz format, stream version.
Definition BayesNet-inst.h:46
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:83
DotWriter is a helper class for writing graphviz .dot files.
Definition DotWriter.h:35
void drawVariable(Key key, const KeyFormatter &keyFormatter, const boost::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
boost::optional< Vector2 > variablePos(Key key) const
Return variable position or none.
Definition DotWriter.cpp:79