54 enum class Category { None, Discrete, Continuous, Hybrid };
58 Category category_ = Category::None;
69 typedef std::shared_ptr<HybridFactor>
111 const std::string &s =
"HybridFactor\n",
119 bool isDiscrete()
const {
return category_ == Category::Discrete; }
122 bool isContinuous()
const {
return category_ == Category::Continuous; }
125 bool isHybrid()
const {
return category_ == Category::Hybrid; }
147#if GTSAM_ENABLE_BOOST_SERIALIZATION
149 friend class boost::serialization::access;
150 template <
class ARCHIVE>
151 void serialize(ARCHIVE &ar,
const unsigned int ) {
152 ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(
Base);
153 ar &BOOST_SERIALIZATION_NVP(category_);
154 ar &BOOST_SERIALIZATION_NVP(discreteKeys_);
Concept check for values that can be used in unit tests.
specialized key for discrete variables
Decision Tree for use in DiscreteFactors.
The base class for all factors.
Linear Factor Graph where all factors are Gaussians.
A non-templated config holding any types of Manifold-group elements.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:91
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
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
An algebraic decision tree fixes the range of a DecisionTree to double.
Definition AlgebraicDecisionTree.h:41
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition DiscreteKey.h:41
A map from keys to values.
Definition DiscreteValues.h:34
Base class for truly hybrid probabilistic factors.
Definition HybridFactor.h:51
size_t nrContinuous() const
Return the number of continuous variables in this factor.
Definition HybridFactor.h:128
Category
Enum to help with categorizing hybrid factors.
Definition HybridFactor.h:54
HybridFactor This
This class.
Definition HybridFactor.h:68
bool isDiscrete() const
True if this is a factor of discrete variables only.
Definition HybridFactor.h:119
bool isHybrid() const
True is this is a Discrete-Continuous factor.
Definition HybridFactor.h:125
std::shared_ptr< HybridFactor > shared_ptr
shared_ptr to this class
Definition HybridFactor.h:70
HybridFactor()=default
Default constructor creates empty factor.
Factor Base
Our base class.
Definition HybridFactor.h:71
void print(const std::string &s="HybridFactor\n", const KeyFormatter &formatter=DefaultKeyFormatter) const override
print
Definition HybridFactor.cpp:96
const KeyVector & continuousKeys() const
Return only the continuous keys for this factor.
Definition HybridFactor.h:134
virtual bool equals(const HybridFactor &lf, double tol=1e-9) const
equals
Definition HybridFactor.cpp:88
bool isContinuous() const
True if this is a factor of continuous variables only.
Definition HybridFactor.h:122
KeyVector continuousKeys_
Record continuous keys for book-keeping.
Definition HybridFactor.h:64
virtual std::shared_ptr< Factor > restrict(const DiscreteValues &discreteValues) const =0
Restrict the factor to the given discrete values.
const DiscreteKeys & discreteKeys() const
Return the discrete keys for this factor.
Definition HybridFactor.h:131
virtual AlgebraicDecisionTree< Key > errorTree(const VectorValues &continuousValues) const =0
Compute tree of linear errors.
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:37
const KeyVector & keys() const
Access the factor's involved variable keys.
Definition Factor.h:143
Factor()
Default constructor for I/O.
Definition Factor.h:94
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73