Remove FromConditionals
parent
7ba5392525
commit
d4ee6997f7
|
@ -42,15 +42,12 @@ const GaussianMixture::Conditionals &GaussianMixture::conditionals() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* *******************************************************************************/
|
/* *******************************************************************************/
|
||||||
GaussianMixture GaussianMixture::FromConditionals(
|
GaussianMixture::GaussianMixture(
|
||||||
const KeyVector &continuousFrontals, const KeyVector &continuousParents,
|
const KeyVector &continuousFrontals, const KeyVector &continuousParents,
|
||||||
const DiscreteKeys &discreteParents,
|
const DiscreteKeys &discreteParents,
|
||||||
const std::vector<GaussianConditional::shared_ptr> &conditionalsList) {
|
const std::vector<GaussianConditional::shared_ptr> &conditionalsList)
|
||||||
Conditionals dt(discreteParents, conditionalsList);
|
: GaussianMixture(continuousFrontals, continuousParents, discreteParents,
|
||||||
|
Conditionals(discreteParents, conditionalsList)) {}
|
||||||
return GaussianMixture(continuousFrontals, continuousParents, discreteParents,
|
|
||||||
dt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* *******************************************************************************/
|
/* *******************************************************************************/
|
||||||
GaussianMixture::Sum GaussianMixture::add(
|
GaussianMixture::Sum GaussianMixture::add(
|
||||||
|
|
|
@ -114,7 +114,7 @@ class GTSAM_EXPORT GaussianMixture
|
||||||
* @param discreteParents Discrete parents variables
|
* @param discreteParents Discrete parents variables
|
||||||
* @param conditionals List of conditionals
|
* @param conditionals List of conditionals
|
||||||
*/
|
*/
|
||||||
static This FromConditionals(
|
GaussianMixture(
|
||||||
const KeyVector &continuousFrontals, const KeyVector &continuousParents,
|
const KeyVector &continuousFrontals, const KeyVector &continuousParents,
|
||||||
const DiscreteKeys &discreteParents,
|
const DiscreteKeys &discreteParents,
|
||||||
const std::vector<GaussianConditional::shared_ptr> &conditionals);
|
const std::vector<GaussianConditional::shared_ptr> &conditionals);
|
||||||
|
|
|
@ -66,13 +66,14 @@ class GaussianMixtureFactor : gtsam::HybridFactor {
|
||||||
|
|
||||||
#include <gtsam/hybrid/GaussianMixture.h>
|
#include <gtsam/hybrid/GaussianMixture.h>
|
||||||
class GaussianMixture : gtsam::HybridFactor {
|
class GaussianMixture : gtsam::HybridFactor {
|
||||||
static GaussianMixture FromConditionals(
|
GaussianMixture(const gtsam::KeyVector& continuousFrontals,
|
||||||
const gtsam::KeyVector& continuousFrontals,
|
|
||||||
const gtsam::KeyVector& continuousParents,
|
const gtsam::KeyVector& continuousParents,
|
||||||
const gtsam::DiscreteKeys& discreteParents,
|
const gtsam::DiscreteKeys& discreteParents,
|
||||||
const std::vector<gtsam::GaussianConditional::shared_ptr>&
|
const std::vector<gtsam::GaussianConditional::shared_ptr>&
|
||||||
conditionalsList);
|
conditionalsList);
|
||||||
|
|
||||||
|
gtsam::GaussianMixtureFactor* likelihood(const gtsam::VectorValues &frontals) const;
|
||||||
|
|
||||||
void print(string s = "GaussianMixture\n",
|
void print(string s = "GaussianMixture\n",
|
||||||
const gtsam::KeyFormatter& keyFormatter =
|
const gtsam::KeyFormatter& keyFormatter =
|
||||||
gtsam::DefaultKeyFormatter) const;
|
gtsam::DefaultKeyFormatter) const;
|
||||||
|
@ -104,7 +105,7 @@ class HybridBayesTree {
|
||||||
gtsam::DefaultKeyFormatter) const;
|
gtsam::DefaultKeyFormatter) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include <gtsam/hybrid/HybridBayesTree.h>
|
#include <gtsam/hybrid/HybridBayesNet.h>
|
||||||
class HybridBayesNet {
|
class HybridBayesNet {
|
||||||
HybridBayesNet();
|
HybridBayesNet();
|
||||||
void add(const gtsam::HybridConditional& s);
|
void add(const gtsam::HybridConditional& s);
|
||||||
|
@ -113,6 +114,11 @@ class HybridBayesNet {
|
||||||
void addDiscrete(const gtsam::DiscreteConditional* s);
|
void addDiscrete(const gtsam::DiscreteConditional* s);
|
||||||
|
|
||||||
void emplaceMixture(const gtsam::GaussianMixture& s);
|
void emplaceMixture(const gtsam::GaussianMixture& s);
|
||||||
|
void emplaceMixture(const gtsam::KeyVector& continuousFrontals,
|
||||||
|
const gtsam::KeyVector& continuousParents,
|
||||||
|
const gtsam::DiscreteKeys& discreteParents,
|
||||||
|
const std::vector<gtsam::GaussianConditional::shared_ptr>&
|
||||||
|
conditionalsList);
|
||||||
void emplaceGaussian(const gtsam::GaussianConditional& s);
|
void emplaceGaussian(const gtsam::GaussianConditional& s);
|
||||||
void emplaceDiscrete(const gtsam::DiscreteConditional& s);
|
void emplaceDiscrete(const gtsam::DiscreteConditional& s);
|
||||||
void emplaceDiscrete(const gtsam::DiscreteKey& key, string spec);
|
void emplaceDiscrete(const gtsam::DiscreteKey& key, string spec);
|
||||||
|
@ -162,9 +168,8 @@ class HybridGaussianFactorGraph {
|
||||||
void push_back(const gtsam::HybridBayesNet& bayesNet);
|
void push_back(const gtsam::HybridBayesNet& bayesNet);
|
||||||
void push_back(const gtsam::HybridBayesTree& bayesTree);
|
void push_back(const gtsam::HybridBayesTree& bayesTree);
|
||||||
void push_back(const gtsam::GaussianMixtureFactor* gmm);
|
void push_back(const gtsam::GaussianMixtureFactor* gmm);
|
||||||
|
void push_back(gtsam::DecisionTreeFactor* factor);
|
||||||
void add(gtsam::DecisionTreeFactor* factor);
|
void push_back(gtsam::JacobianFactor* factor);
|
||||||
void add(gtsam::JacobianFactor* factor);
|
|
||||||
|
|
||||||
bool empty() const;
|
bool empty() const;
|
||||||
void remove(size_t i);
|
void remove(size_t i);
|
||||||
|
|
|
@ -148,9 +148,7 @@ static GaussianMixture createSimpleGaussianMixture() {
|
||||||
GaussianConditional::FromMeanAndStddev(Z(0), I, X(0), Vector1(0), 0.5));
|
GaussianConditional::FromMeanAndStddev(Z(0), I, X(0), Vector1(0), 0.5));
|
||||||
const auto conditional1 = boost::make_shared<GaussianConditional>(
|
const auto conditional1 = boost::make_shared<GaussianConditional>(
|
||||||
GaussianConditional::FromMeanAndStddev(Z(0), I, X(0), Vector1(0), 3));
|
GaussianConditional::FromMeanAndStddev(Z(0), I, X(0), Vector1(0), 3));
|
||||||
const auto gm = GaussianMixture::FromConditionals(
|
return GaussianMixture({Z(0)}, {X(0)}, {mode}, {conditional0, conditional1});
|
||||||
{Z(0)}, {X(0)}, {mode}, {conditional0, conditional1});
|
|
||||||
return gm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
|
|
@ -88,8 +88,8 @@ TEST(HybridBayesNet, evaluateHybrid) {
|
||||||
// Create hybrid Bayes net.
|
// Create hybrid Bayes net.
|
||||||
HybridBayesNet bayesNet;
|
HybridBayesNet bayesNet;
|
||||||
bayesNet.emplaceGaussian(continuousConditional);
|
bayesNet.emplaceGaussian(continuousConditional);
|
||||||
bayesNet.emplaceMixture(GaussianMixture::FromConditionals(
|
GaussianMixture gm({X(1)}, {}, {Asia}, {conditional0, conditional1});
|
||||||
{X(1)}, {}, {Asia}, {conditional0, conditional1}));
|
bayesNet.emplaceMixture(gm); // copy :-(
|
||||||
bayesNet.emplaceDiscrete(Asia, "99/1");
|
bayesNet.emplaceDiscrete(Asia, "99/1");
|
||||||
|
|
||||||
// Create values at which to evaluate.
|
// Create values at which to evaluate.
|
||||||
|
|
|
@ -42,14 +42,13 @@ class TestHybridBayesNet(GtsamTestCase):
|
||||||
conditional1 = GaussianConditional(X(1), [2], I_1x1, model1)
|
conditional1 = GaussianConditional(X(1), [2], I_1x1, model1)
|
||||||
dkeys = DiscreteKeys()
|
dkeys = DiscreteKeys()
|
||||||
dkeys.push_back(Asia)
|
dkeys.push_back(Asia)
|
||||||
gm = GaussianMixture.FromConditionals([X(1)], [], dkeys,
|
gm = GaussianMixture([X(1)], [], dkeys, [conditional0, conditional1])
|
||||||
[conditional0, conditional1]) #
|
|
||||||
|
|
||||||
# Create hybrid Bayes net.
|
# Create hybrid Bayes net.
|
||||||
bayesNet = HybridBayesNet()
|
bayesNet = HybridBayesNet()
|
||||||
bayesNet.addGaussian(gc)
|
bayesNet.addGaussian(gc)
|
||||||
bayesNet.addMixture(gm)
|
bayesNet.addMixture(gm)
|
||||||
bayesNet.addDiscrete(Asia, "99/1")
|
bayesNet.emplaceDiscrete(Asia, "99/1")
|
||||||
|
|
||||||
# Create values at which to evaluate.
|
# Create values at which to evaluate.
|
||||||
values = HybridValues()
|
values = HybridValues()
|
||||||
|
|
Loading…
Reference in New Issue