Renamed BayesNet::insert -> push_back. BayesTree now uses Bayes nets as nodes.
parent
a8d267c4ca
commit
eab038651e
33
.cproject
33
.cproject
|
@ -300,6 +300,7 @@
|
|||
<buildTargets>
|
||||
<target name="install" path="wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>install</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -307,6 +308,7 @@
|
|||
</target>
|
||||
<target name="check" path="wrap" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>check</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -314,14 +316,15 @@
|
|||
</target>
|
||||
<target name="check" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildArguments>-k</buildArguments>
|
||||
<buildTarget>check</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
<useDefaultCommand>false</useDefaultCommand>
|
||||
<runAllBuilders>true</runAllBuilders>
|
||||
</target>
|
||||
<target name="testSimpleCamera.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testSimpleCamera.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -337,7 +340,6 @@
|
|||
</target>
|
||||
<target name="testVSLAMFactor.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testVSLAMFactor.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -345,6 +347,7 @@
|
|||
</target>
|
||||
<target name="testCalibratedCamera.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testCalibratedCamera.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -352,7 +355,6 @@
|
|||
</target>
|
||||
<target name="testConditionalGaussian.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testConditionalGaussian.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -360,6 +362,7 @@
|
|||
</target>
|
||||
<target name="testPose2.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testPose2.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -375,6 +378,7 @@
|
|||
</target>
|
||||
<target name="testRot3.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testRot3.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -382,7 +386,6 @@
|
|||
</target>
|
||||
<target name="testNonlinearOptimizer.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testNonlinearOptimizer.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -390,6 +393,7 @@
|
|||
</target>
|
||||
<target name="testLinearFactor.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testLinearFactor.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -397,6 +401,7 @@
|
|||
</target>
|
||||
<target name="testConstrainedNonlinearFactorGraph.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testConstrainedNonlinearFactorGraph.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -404,6 +409,7 @@
|
|||
</target>
|
||||
<target name="testLinearFactorGraph.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testLinearFactorGraph.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -411,7 +417,6 @@
|
|||
</target>
|
||||
<target name="testNonlinearFactorGraph.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testNonlinearFactorGraph.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -419,6 +424,7 @@
|
|||
</target>
|
||||
<target name="testPose3.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testPose3.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -426,7 +432,6 @@
|
|||
</target>
|
||||
<target name="testConstrainedLinearFactorGraph.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testConstrainedLinearFactorGraph.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -434,7 +439,6 @@
|
|||
</target>
|
||||
<target name="testVectorConfig.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testVectorConfig.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -442,7 +446,6 @@
|
|||
</target>
|
||||
<target name="testPoint2.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testPoint2.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -450,6 +453,7 @@
|
|||
</target>
|
||||
<target name="testNonlinearFactor.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testNonlinearFactor.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -457,6 +461,7 @@
|
|||
</target>
|
||||
<target name="timeLinearFactor.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>timeLinearFactor.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -464,6 +469,7 @@
|
|||
</target>
|
||||
<target name="timeLinearFactorGraph.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>timeLinearFactorGraph.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -471,6 +477,7 @@
|
|||
</target>
|
||||
<target name="testGaussianBayesNet.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testGaussianBayesNet.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -478,7 +485,6 @@
|
|||
</target>
|
||||
<target name="testBayesTree.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testBayesTree.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>false</useDefaultCommand>
|
||||
|
@ -486,7 +492,6 @@
|
|||
</target>
|
||||
<target name="testSymbolicBayesChain.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testSymbolicBayesChain.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>false</useDefaultCommand>
|
||||
|
@ -494,7 +499,6 @@
|
|||
</target>
|
||||
<target name="testSymbolicFactorGraph.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testSymbolicFactorGraph.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>false</useDefaultCommand>
|
||||
|
@ -502,6 +506,7 @@
|
|||
</target>
|
||||
<target name="testVector.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testVector.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -509,6 +514,7 @@
|
|||
</target>
|
||||
<target name="testMatrix.run" path="cpp" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>testMatrix.run</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -516,7 +522,6 @@
|
|||
</target>
|
||||
<target name="install" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>install</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -524,7 +529,6 @@
|
|||
</target>
|
||||
<target name="clean" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>clean</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
@ -532,7 +536,6 @@
|
|||
</target>
|
||||
<target name="check" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>check</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace gtsam {
|
|||
|
||||
/* ************************************************************************* */
|
||||
template<class Conditional>
|
||||
void BayesNet<Conditional>::insert
|
||||
void BayesNet<Conditional>::push_back
|
||||
(const boost::shared_ptr<Conditional>& conditional) {
|
||||
indices_.insert(make_pair(conditional->key(),conditionals_.size()));
|
||||
conditionals_.push_back(conditional);
|
||||
|
|
|
@ -67,8 +67,8 @@ namespace gtsam {
|
|||
/** check equality */
|
||||
bool equals(const BayesNet& other, double tol = 1e-9) const;
|
||||
|
||||
/** insert: use reverse topological sort (i.e. parents last / elimination order) */
|
||||
void insert(const boost::shared_ptr<Conditional>& conditional);
|
||||
/** push_back: use reverse topological sort (i.e. parents last / elimination order) */
|
||||
void push_back(const boost::shared_ptr<Conditional>& conditional);
|
||||
|
||||
/** size is the number of nodes */
|
||||
inline size_t size() const {
|
||||
|
|
|
@ -13,36 +13,32 @@ namespace gtsam {
|
|||
|
||||
/* ************************************************************************* */
|
||||
template<class Conditional>
|
||||
Front<Conditional>::Front(const conditional_ptr& conditional) {
|
||||
add(conditional);
|
||||
separator_ = conditional->parents();
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Conditional>
|
||||
void Front<Conditional>::print(const string& s) const {
|
||||
cout << s;
|
||||
BOOST_FOREACH(const conditional_ptr& conditional, conditionals_)
|
||||
cout << " " << conditional->key();
|
||||
if (!separator_.empty()) {
|
||||
cout << " :";
|
||||
BOOST_FOREACH(string key, separator_)
|
||||
cout << " " << key;
|
||||
BayesTree<Conditional>::Node::Node(const boost::shared_ptr<Conditional>& conditional) {
|
||||
separator_ = conditional->parents();
|
||||
this->push_back(conditional);
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Conditional>
|
||||
bool Front<Conditional>::equals(const Front<Conditional>& other, double tol) const {
|
||||
return equal(conditionals_.begin(),conditionals_.end(),other.conditionals_.begin(),equals_star<Conditional>);
|
||||
}
|
||||
void BayesTree<Conditional>::Node::print(const string& s) const {
|
||||
cout << s;
|
||||
BOOST_REVERSE_FOREACH(const conditional_ptr& conditional, this->conditionals_)
|
||||
cout << " " << conditional->key();
|
||||
if (!separator_.empty()) {
|
||||
cout << " :";
|
||||
BOOST_FOREACH(string key, separator_)
|
||||
cout << " " << key;
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Conditional>
|
||||
void Front<Conditional>::add(const conditional_ptr& conditional) {
|
||||
conditionals_.push_front(conditional);
|
||||
}
|
||||
void BayesTree<Conditional>::Node::printTree(const string& indent) const {
|
||||
print(indent);
|
||||
BOOST_FOREACH(shared_ptr child, children_)
|
||||
child->printTree(indent+" ");
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Conditional>
|
||||
|
@ -104,12 +100,13 @@ namespace gtsam {
|
|||
"BayesTree::insert('"+key+"'): parent '" + parent + "' was not yet inserted"));
|
||||
int index = it->second;
|
||||
node_ptr parent_clique = nodes_[index];
|
||||
if (verbose) cout << "Parent clique " << index << " of size " << parent_clique->size() << endl;
|
||||
|
||||
// if the parents and parent clique have the same size, add to parent clique
|
||||
if (parent_clique->size() == parents.size()) {
|
||||
if (verbose) cout << "Adding to clique " << index << endl;
|
||||
nodeMap_.insert(make_pair(key, index));
|
||||
parent_clique->add(conditional);
|
||||
parent_clique->push_back(conditional);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,36 +13,12 @@
|
|||
#include <vector>
|
||||
#include <boost/serialization/map.hpp>
|
||||
#include <boost/serialization/list.hpp>
|
||||
|
||||
#include "Testable.h"
|
||||
#include "BayesNet.h"
|
||||
|
||||
namespace gtsam {
|
||||
|
||||
/** A clique in a Bayes tree consisting of frontal nodes and conditionals */
|
||||
template<class Conditional>
|
||||
class Front: Testable<Front<Conditional> > {
|
||||
private:
|
||||
typedef boost::shared_ptr<Conditional> conditional_ptr;
|
||||
std::list<conditional_ptr> conditionals_; /** conditionals */
|
||||
std::list<std::string> separator_; /** separator keys */
|
||||
public:
|
||||
|
||||
/** constructor */
|
||||
Front(const conditional_ptr& conditional);
|
||||
|
||||
/** print */
|
||||
void print(const std::string& s = "") const;
|
||||
|
||||
/** check equality */
|
||||
bool equals(const Front<Conditional>& other, double tol = 1e-9) const;
|
||||
|
||||
/** add a frontal node */
|
||||
void add(const conditional_ptr& conditional);
|
||||
|
||||
/** return size of the clique */
|
||||
inline size_t size() const {return conditionals_.size() + separator_.size();}
|
||||
};
|
||||
|
||||
/**
|
||||
* Bayes tree
|
||||
* Templated on the Conditional class, the type of node in the underlying Bayes chain.
|
||||
|
@ -58,20 +34,27 @@ namespace gtsam {
|
|||
|
||||
private:
|
||||
|
||||
/** A Node in the tree is a Front with tree connectivity */
|
||||
struct Node : public Front<Conditional> {
|
||||
/** A Node in the tree is an incomplete Bayes net: the variables
|
||||
* in the Bayes net are the frontal nodes, and the variables conditioned
|
||||
* on is the separator. We also have pointers up and down the tree.
|
||||
*/
|
||||
struct Node : public BayesNet<Conditional> {
|
||||
typedef boost::shared_ptr<Node> shared_ptr;
|
||||
shared_ptr parent_;
|
||||
std::list<std::string> separator_; /** separator keys */
|
||||
std::list<shared_ptr> children_;
|
||||
|
||||
Node(const boost::shared_ptr<Conditional>& conditional):Front<Conditional>(conditional) {}
|
||||
//* Constructor */
|
||||
Node(const boost::shared_ptr<Conditional>& conditional);
|
||||
|
||||
/** The size *includes* the separator */
|
||||
size_t size() const { return this->conditionals_.size() + separator_.size(); }
|
||||
|
||||
/** print this node */
|
||||
void print(const std::string& s="Bayes tree node") const;
|
||||
|
||||
/** print this node and entire subtree below it*/
|
||||
void printTree(const std::string& indent) const {
|
||||
print(indent);
|
||||
BOOST_FOREACH(shared_ptr child, children_)
|
||||
child->printTree(indent+" ");
|
||||
}
|
||||
void printTree(const std::string& indent) const;
|
||||
};
|
||||
|
||||
/** vector of Nodes */
|
||||
|
@ -107,7 +90,7 @@ namespace gtsam {
|
|||
inline size_t size() const { return nodes_.size();}
|
||||
|
||||
/** return root clique */
|
||||
const Front<Conditional>& root() const {return *(nodes_[0]);}
|
||||
const BayesNet<Conditional>& root() const {return *(nodes_[0]);}
|
||||
|
||||
}; // BayesTree
|
||||
|
||||
|
|
|
@ -79,12 +79,12 @@ GaussianBayesNet::shared_ptr ConstrainedLinearFactorGraph::eliminate(const Order
|
|||
if (is_constrained(key))
|
||||
{
|
||||
ConditionalGaussian::shared_ptr ccg = eliminate_constraint(key);
|
||||
cbn->insert(ccg);
|
||||
cbn->push_back(ccg);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConditionalGaussian::shared_ptr cg = eliminateOne<ConditionalGaussian>(key);
|
||||
cbn->insert(cg);
|
||||
cbn->push_back(cg);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ LinearFactorGraph::eliminate_partially(const Ordering& ordering)
|
|||
|
||||
BOOST_FOREACH(string key, ordering) {
|
||||
ConditionalGaussian::shared_ptr cg = eliminateOne<ConditionalGaussian>(key);
|
||||
chordalBayesNet->insert(cg);
|
||||
chordalBayesNet->push_back(cg);
|
||||
}
|
||||
|
||||
return chordalBayesNet;
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace gtsam {
|
|||
|
||||
BOOST_FOREACH(string key, ordering) {
|
||||
SymbolicConditional::shared_ptr conditional = eliminateOne<SymbolicConditional>(key);
|
||||
bayesNet->insert(conditional);
|
||||
bayesNet->push_back(conditional);
|
||||
}
|
||||
|
||||
return bayesNet;
|
||||
|
|
|
@ -203,8 +203,8 @@ GaussianBayesNet createSmallGaussianBayesNet()
|
|||
Px_y(new ConditionalGaussian("x",d1,R11,"y",S12)),
|
||||
Py(new ConditionalGaussian("y",d2,R22));
|
||||
GaussianBayesNet cbn;
|
||||
cbn.insert(Px_y);
|
||||
cbn.insert(Py);
|
||||
cbn.push_back(Px_y);
|
||||
cbn.push_back(Py);
|
||||
|
||||
return cbn;
|
||||
}
|
||||
|
|
|
@ -27,10 +27,12 @@ SymbolicConditional::shared_ptr B(new SymbolicConditional("B")), L(
|
|||
/* ************************************************************************* */
|
||||
TEST( BayesTree, Front )
|
||||
{
|
||||
Front<SymbolicConditional> f1(B);
|
||||
f1.add(L);
|
||||
Front<SymbolicConditional> f2(L);
|
||||
f2.add(B);
|
||||
BayesNet<SymbolicConditional> f1;
|
||||
f1.push_back(B);
|
||||
f1.push_back(L);
|
||||
BayesNet<SymbolicConditional> f2;
|
||||
f2.push_back(L);
|
||||
f2.push_back(B);
|
||||
CHECK(f1.equals(f1));
|
||||
CHECK(!f1.equals(f2));
|
||||
}
|
||||
|
@ -51,21 +53,24 @@ TEST( BayesTree, constructor )
|
|||
LONGS_EQUAL(4,bayesTree.size());
|
||||
|
||||
// Check root
|
||||
Front<SymbolicConditional> expected_root(B);
|
||||
expected_root.add(L);
|
||||
expected_root.add(E);
|
||||
Front<SymbolicConditional> actual_root = bayesTree.root();
|
||||
BayesNet<SymbolicConditional> expected_root;
|
||||
expected_root.push_back(B);
|
||||
expected_root.push_back(L);
|
||||
expected_root.push_back(E);
|
||||
BayesNet<SymbolicConditional> actual_root = bayesTree.root();
|
||||
CHECK(assert_equal(expected_root,actual_root));
|
||||
|
||||
// Create from symbolic Bayes chain in which we want to discover cliques
|
||||
SymbolicBayesNet ASIA;
|
||||
ASIA.insert(X);
|
||||
ASIA.insert(T);
|
||||
ASIA.insert(S);
|
||||
ASIA.insert(E);
|
||||
ASIA.insert(L);
|
||||
ASIA.insert(B);
|
||||
BayesTree<SymbolicConditional> bayesTree2(ASIA);
|
||||
ASIA.push_back(X);
|
||||
ASIA.push_back(T);
|
||||
ASIA.push_back(S);
|
||||
ASIA.push_back(E);
|
||||
ASIA.push_back(L);
|
||||
ASIA.push_back(B);
|
||||
bool verbose = true;
|
||||
BayesTree<SymbolicConditional> bayesTree2(ASIA,verbose);
|
||||
if (verbose) bayesTree2.print("bayesTree2");
|
||||
|
||||
// Check whether the same
|
||||
CHECK(assert_equal(bayesTree,bayesTree2));
|
||||
|
|
|
@ -276,9 +276,9 @@ TEST( LinearFactorGraph, eliminateAll )
|
|||
ConditionalGaussian::shared_ptr cg3(new ConditionalGaussian("x2",d3, R3, "l1", A21, "x1", A22));
|
||||
|
||||
GaussianBayesNet expected;
|
||||
expected.insert(cg3);
|
||||
expected.insert(cg2);
|
||||
expected.insert(cg1);
|
||||
expected.push_back(cg3);
|
||||
expected.push_back(cg2);
|
||||
expected.push_back(cg1);
|
||||
|
||||
// Check one ordering
|
||||
LinearFactorGraph fg1 = createLinearFactorGraph();
|
||||
|
|
|
@ -27,9 +27,9 @@ TEST( SymbolicBayesNet, constructor )
|
|||
l1(new SymbolicConditional("l1","x1")),
|
||||
x1(new SymbolicConditional("x1"));
|
||||
SymbolicBayesNet expected;
|
||||
expected.insert(x2);
|
||||
expected.insert(l1);
|
||||
expected.insert(x1);
|
||||
expected.push_back(x2);
|
||||
expected.push_back(l1);
|
||||
expected.push_back(x1);
|
||||
|
||||
// Create from a factor graph
|
||||
LinearFactorGraph factorGraph = createLinearFactorGraph();
|
||||
|
|
|
@ -129,9 +129,9 @@ TEST( LinearFactorGraph, eliminate )
|
|||
SymbolicConditional::shared_ptr x1(new SymbolicConditional("x1"));
|
||||
|
||||
SymbolicBayesNet expected;
|
||||
expected.insert(x2);
|
||||
expected.insert(l1);
|
||||
expected.insert(x1);
|
||||
expected.push_back(x2);
|
||||
expected.push_back(l1);
|
||||
expected.push_back(x1);
|
||||
|
||||
// create a test graph
|
||||
LinearFactorGraph factorGraph = createLinearFactorGraph();
|
||||
|
|
Loading…
Reference in New Issue