use std::size_t for timestamps to avoid implicit casts, use range-based for loops
This commit is contained in:
parent
402ca780bf
commit
6460fdc62b
@ -28,6 +28,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#ifndef HIDDEN_MARKOV_MODEL
|
#ifndef HIDDEN_MARKOV_MODEL
|
||||||
#define HIDDEN_MARKOV_MODEL
|
#define HIDDEN_MARKOV_MODEL
|
||||||
|
|
||||||
|
#include "../util/integer_range.hpp"
|
||||||
|
|
||||||
#include <boost/assert.hpp>
|
#include <boost/assert.hpp>
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
@ -44,7 +46,7 @@ constexpr static const double log_2_pi = 1.837877066409346; // std::log(2. * M_P
|
|||||||
|
|
||||||
constexpr static const double IMPOSSIBLE_LOG_PROB = -std::numeric_limits<double>::infinity();
|
constexpr static const double IMPOSSIBLE_LOG_PROB = -std::numeric_limits<double>::infinity();
|
||||||
constexpr static const double MINIMAL_LOG_PROB = std::numeric_limits<double>::lowest();
|
constexpr static const double MINIMAL_LOG_PROB = std::numeric_limits<double>::lowest();
|
||||||
constexpr static const unsigned INVALID_STATE = std::numeric_limits<unsigned>::max();
|
constexpr static const std::size_t INVALID_STATE = std::numeric_limits<std::size_t>::max();
|
||||||
} // namespace matching
|
} // namespace matching
|
||||||
} // namespace osrm
|
} // namespace osrm
|
||||||
|
|
||||||
@ -101,12 +103,12 @@ template <class CandidateLists> struct HiddenMarkovModel
|
|||||||
clear(0);
|
clear(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void clear(unsigned initial_timestamp)
|
void clear(std::size_t initial_timestamp)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(viterbi.size() == parents.size() && parents.size() == path_lengths.size() &&
|
BOOST_ASSERT(viterbi.size() == parents.size() && parents.size() == path_lengths.size() &&
|
||||||
path_lengths.size() == pruned.size() && pruned.size() == breakage.size());
|
path_lengths.size() == pruned.size() && pruned.size() == breakage.size());
|
||||||
|
|
||||||
for (unsigned t = initial_timestamp; t < viterbi.size(); t++)
|
for (const auto t : osrm::irange(initial_timestamp, viterbi.size()))
|
||||||
{
|
{
|
||||||
std::fill(viterbi[t].begin(), viterbi[t].end(), osrm::matching::IMPOSSIBLE_LOG_PROB);
|
std::fill(viterbi[t].begin(), viterbi[t].end(), osrm::matching::IMPOSSIBLE_LOG_PROB);
|
||||||
std::fill(parents[t].begin(), parents[t].end(), std::make_pair(0u, 0u));
|
std::fill(parents[t].begin(), parents[t].end(), std::make_pair(0u, 0u));
|
||||||
@ -116,13 +118,13 @@ template <class CandidateLists> struct HiddenMarkovModel
|
|||||||
std::fill(breakage.begin() + initial_timestamp, breakage.end(), true);
|
std::fill(breakage.begin() + initial_timestamp, breakage.end(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned initialize(unsigned initial_timestamp)
|
std::size_t initialize(std::size_t initial_timestamp)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(initial_timestamp < candidates_list.size());
|
BOOST_ASSERT(initial_timestamp < candidates_list.size());
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
for (auto s = 0u; s < viterbi[initial_timestamp].size(); ++s)
|
for (const auto s : osrm::irange(0u, viterbi[initial_timestamp].size()))
|
||||||
{
|
{
|
||||||
viterbi[initial_timestamp][s] =
|
viterbi[initial_timestamp][s] =
|
||||||
emission_log_probability(candidates_list[initial_timestamp][s].second);
|
emission_log_probability(candidates_list[initial_timestamp][s].second);
|
||||||
|
Loading…
Reference in New Issue
Block a user