undo HybridBayesNet changes
parent
26e1f088e4
commit
c7c42afbaf
|
@ -19,7 +19,6 @@
|
|||
#include <gtsam/discrete/DiscreteBayesNet.h>
|
||||
#include <gtsam/discrete/DiscreteConditional.h>
|
||||
#include <gtsam/discrete/DiscreteFactorGraph.h>
|
||||
#include <gtsam/discrete/DiscreteTableConditional.h>
|
||||
#include <gtsam/hybrid/HybridBayesNet.h>
|
||||
#include <gtsam/hybrid/HybridGaussianFactorGraph.h>
|
||||
#include <gtsam/hybrid/HybridValues.h>
|
||||
|
@ -121,24 +120,6 @@ GaussianBayesNet HybridBayesNet::choose(
|
|||
return gbn;
|
||||
}
|
||||
|
||||
DiscreteValues HybridBayesNet::discreteMaxProduct(
|
||||
const DiscreteFactorGraph &dfg) const {
|
||||
TableFactor product = TableProductAndNormalize(dfg);
|
||||
|
||||
uint64_t maxIdx = 0;
|
||||
double maxValue = 0.0;
|
||||
Eigen::SparseVector<double> sparseTable = product.sparseTable();
|
||||
for (TableFactor::SparseIt it(sparseTable); it; ++it) {
|
||||
if (it.value() > maxValue) {
|
||||
maxIdx = it.index();
|
||||
maxValue = it.value();
|
||||
}
|
||||
}
|
||||
|
||||
DiscreteValues assignment = product.findAssignments(maxIdx);
|
||||
return assignment;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
HybridValues HybridBayesNet::optimize() const {
|
||||
// Collect all the discrete factors to compute MPE
|
||||
|
@ -151,7 +132,7 @@ HybridValues HybridBayesNet::optimize() const {
|
|||
}
|
||||
|
||||
// Solve for the MPE
|
||||
DiscreteValues mpe = this->discreteMaxProduct(discrete_fg);
|
||||
DiscreteValues mpe = discrete_fg.optimize();
|
||||
|
||||
// Given the MPE, compute the optimal continuous values.
|
||||
return HybridValues(optimize(mpe), mpe);
|
||||
|
|
Loading…
Reference in New Issue