55 std::vector<std::tuple<TTimestamp, Multiplier>>
58 std::vector<std::tuple<TTimestamp, Multiplier>> tdm;
62 std::sort(p_multipliers, p_multipliers + size_multipliers,
66 for (
size_t i = 0; i < size_multipliers; ++i) {
67 tdm.emplace_back(p_multipliers[i].start_time, p_multipliers[i].multiplier);
81 for (
const auto &e : tdm) {
82 if (time < std::get<0>(e))
break;
83 coeff = std::get<1>(e);
96 for (
const auto &e : tdm) {
97 coeff = std::get<1>(e);
98 if (std::get<0>(e) >= time)
break;
156 for (
const auto &e : tdm) {
157 t_change = std::get<0>(e);
158 if (time <= t_change)
break;
161 || (t_change == std::get<0>(tdm[tdm.size() - 1 ])));
172 Base_Matrix(matrix, size_matrix, node_ids, multiplier),
173 m_multipliers(
set_tdm(multipliers, size_multipliers)) { }
179 const std::map<std::pair<Coordinate, Coordinate>,
Id> &euclidean_data,
182 Base_Matrix(euclidean_data, multiplier),
183 m_multipliers(
set_tdm(multipliers, size_multipliers)) { }
192 Base_Matrix(matrix, size_matrix, node_ids, multiplier),
193 m_multipliers{{0, 1}} { }
199 const std::map<std::pair<Coordinate, Coordinate>,
Id> &euclidean_data,
201 Base_Matrix(euclidean_data, multiplier),
202 m_multipliers{{0, 1}} { }
241 if (!
has_id(i) || !
has_id(j))
return (std::numeric_limits<TInterval>::max)();
248 auto adjusted_value =
static_cast<TInterval>(tt_i_j * c1);
250 if (t_change >= (date_time_of_departure_from_i + adjusted_value) || c1 == c2)
return adjusted_value;
252 return static_cast<TInterval>(tt_i_j * std::min(c1, c2));
257 std::ostringstream log;
258 log << std::fixed << std::setprecision(2);
260 log <<
"\n" << std::get<0>(e) <<
"\t" << std::get<1>(e);