Added print with keyformatter

release/4.3a0
Frank Dellaert 2021-12-23 15:13:28 -05:00
parent 1eb27ed90a
commit c6925987e1
2 changed files with 18 additions and 3 deletions

View File

@ -147,10 +147,10 @@ void DiscreteConditional::solveInPlace(DiscreteValues* values) const {
keys & dk; keys & dk;
} }
// Get all Possible Configurations // Get all Possible Configurations
vector<DiscreteValues> allPosbValues = cartesianProduct(keys); const auto allPosbValues = cartesianProduct(keys);
// Find the MPE // Find the MPE
for(DiscreteValues& frontalVals: allPosbValues) { for(const auto& frontalVals: allPosbValues) {
double pValueS = pFS(frontalVals); // P(F=value|S=parentsValues) double pValueS = pFS(frontalVals); // P(F=value|S=parentsValues)
// Update MPE solution if better // Update MPE solution if better
if (pValueS > maxP) { if (pValueS > maxP) {

View File

@ -32,7 +32,22 @@ namespace gtsam {
* stores cardinality of a Discrete variable. It should be handled naturally in * stores cardinality of a Discrete variable. It should be handled naturally in
* the new class DiscreteValue, as the variable's type (domain) * the new class DiscreteValue, as the variable's type (domain)
*/ */
using DiscreteValues = Assignment<Key>; class DiscreteValues : public Assignment<Key> {
public:
using Assignment::Assignment; // all constructors
// Construct from assignment.
DiscreteValues(const Assignment<Key>& a) : Assignment<Key>(a) {}
void print(const std::string& s = "",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const {
std::cout << s << ": ";
for (const typename Assignment::value_type& keyValue : *this)
std::cout << "(" << keyFormatter(keyValue.first) << ", "
<< keyValue.second << ")";
std::cout << std::endl;
}
};
// traits // traits
template<> struct traits<DiscreteValues> : public Testable<DiscreteValues> {}; template<> struct traits<DiscreteValues> : public Testable<DiscreteValues> {};