Fast map matching  0.1.0
transition_graph.hpp
1 
13 #ifndef FMM_TRANSITION_GRAPH_HPP
14 #define FMM_TRANSITION_GRAPH_HPP
15 
16 #include "network/type.hpp"
17 #include "mm/mm_type.hpp"
18 
19 #include <float.h>
20 
21 namespace FMM
22 {
23 
24 namespace MM{
25 
29 struct TGNode {
30  const Candidate *c;
32  double ep;
33  double tp;
34  double cumu_prob;
35  double sp_dist;
37 };
38 
42 typedef std::vector<TGNode> TGLayer;
46 typedef std::vector<const TGNode*> TGOpath;
47 
55 {
56 public:
67  TransitionGraph(const Traj_Candidates &tc, double gps_error);
68 
75  static double calc_tp(double sp_dist,double eu_dist);
76 
83  static double calc_ep(double dist,double error);
84 
89  void reset_layer(TGLayer *layer);
90 
97  const TGNode *find_optimal_candidate(const TGLayer &layer);
103  TGOpath backtrack();
107  std::vector<TGLayer> &get_layers();
108 private:
109  // candidates of a trajectory
110  std::vector<TGLayer> layers;
111 };
112 
113 }
114 }
115 #endif /* FMM_TRANSITION_GRAPH_HPP */
FMM::MM::TransitionGraph
Transition graph class in HMM.
Definition: transition_graph.hpp:54
FMM::MM::Traj_Candidates
std::vector< Point_Candidates > Traj_Candidates
trajectory candidates
Definition: mm_type.hpp:38
FMM::MM::TGOpath
std::vector< const TGNode * > TGOpath
The optimal path of nodes in the transition graph.
Definition: transition_graph.hpp:46
FMM::MM::TGNode::tp
double tp
transition probability from previous optimal candidate
Definition: transition_graph.hpp:33
FMM::MM::TransitionGraph::find_optimal_candidate
const TGNode * find_optimal_candidate(const TGLayer &layer)
Find the optimal candidate in a layer with the highest accumulative probability.
Definition: transition_graph.cpp:50
FMM::MM::TransitionGraph::backtrack
TGOpath backtrack()
Backtrack the transition graph to find an optimal path.
Definition: transition_graph.cpp:62
FMM::MM::TransitionGraph::reset_layer
void reset_layer(TGLayer *layer)
Reset all the proability data stored in a layer of the transition graph.
Definition: transition_graph.cpp:43
FMM
Fast map matching.
Definition: geom_algorithm.hpp:17
FMM::MM::TransitionGraph::TransitionGraph
TransitionGraph(const Traj_Candidates &tc, double gps_error)
Transition graph constructor.
Definition: transition_graph.cpp:19
FMM::MM::TransitionGraph::calc_tp
static double calc_tp(double sp_dist, double eu_dist)
Calculate transition probability.
Definition: transition_graph.cpp:33
FMM::MM::TGNode::cumu_prob
double cumu_prob
current node's accumulative probability
Definition: transition_graph.hpp:34
FMM::MM::TGNode::ep
double ep
emission probability
Definition: transition_graph.hpp:32
FMM::MM::Candidate
Candidate edge matched to a GPS point
Definition: mm_type.hpp:26
FMM::MM::TransitionGraph::calc_ep
static double calc_ep(double dist, double error)
Calculate emission probability.
Definition: transition_graph.cpp:37
FMM::MM::TGNode::sp_dist
double sp_dist
shorest path distance from previous optimal candidate to current node
Definition: transition_graph.hpp:35
FMM::MM::TransitionGraph::get_layers
std::vector< TGLayer > & get_layers()
Get a reference to the inner layers of the transition graph.
Definition: transition_graph.cpp:86
FMM::MM::TGNode
A node in the transition graph.
Definition: transition_graph.hpp:29
FMM::MM::TGLayer
std::vector< TGNode > TGLayer
A layer of nodes in the transition graph.
Definition: transition_graph.hpp:42
FMM::MM::TGNode::c
const Candidate * c
Candidate.
Definition: transition_graph.hpp:30
FMM::MM::TGNode::prev
TGNode * prev
previous optimal candidate
Definition: transition_graph.hpp:31