101 if (std::get<1>(lhs) < std::get<1>(rhs))
103 if (std::get<1>(lhs) > std::get<1>(rhs))
109 if (std::get<0>(lhs) < std::get<0>(rhs))
111 if (std::get<0>(lhs) > std::get<0>(rhs))
117 if (std::get<3>(lhs) < std::get<3>(rhs))
119 if (std::get<3>(lhs) > std::get<3>(rhs))
125 if (std::get<4>(lhs) < std::get<4>(rhs))
127 if (std::get<4>(lhs) > std::get<4>(rhs))
133 if (std::get<2>(lhs) < std::get<2>(rhs))
135 if (std::get<2>(lhs) > std::get<2>(rhs))
143 std::vector<General_vehicle_orders_t>
146 std::vector<General_vehicle_orders_t> result;
149 msg().
log <<
"getting solution: " <<
tau() <<
"\n";
150 for (
const auto &p_stop :
m_path) {
158 (p_stop.type() == 0 || p_stop.type() == 5)? -1 : p_stop.order(),
162 p_stop.travel_time(),
163 p_stop.arrival_time(),
165 p_stop.service_time(),
166 p_stop.departure_time()};
167 result.push_back(data);
176 return std::make_tuple(
202 for ( ; pos <
m_path.size() ; ++pos) {
261 return m_path.size() <= 2;
279 while (node !=
m_path.end()) {
280 if (node ==
m_path.begin()) {
291 std::deque< Vehicle_node >
298 std::pair<size_t, size_t>
302 return std::make_pair(low, high);
305 std::pair<size_t, size_t>
309 return std::make_pair(low, high);
332 POS low_limit = high;
335 while (low_limit > low
336 &&
m_path[low_limit - 1].is_compatible_IJ(nodeI,
speed())
337 && !
m_path[low_limit - 1].is_pickup()) {
365 POS low_limit = high;
368 while (low_limit > low
369 &&
m_path[low_limit - 1].is_compatible_IJ(nodeI,
speed())) {
397 POS high_limit = low;
400 while (high_limit < high
428 m_capacity(p_m_capacity),
439 msg().
log <<
"p_idx: " << p_idx <<
"\t idx(): " <<
idx() <<
"\n";
440 msg().
log <<
"p_id: " << p_id <<
"\tid(): " <<
id() <<
"\n";
443 m_path.push_back(starting_site);
444 m_path.push_back(ending_site);
459 std::ostringstream log;
460 log <<
"Truck " <<
id() <<
"(" <<
idx() <<
")"
462 for (
const auto &p_stop :
m_path) {
463 if (!(p_stop ==
m_path.front()))
467 log <<
")" <<
" \t(cv, twv, wait_time, duration) = ("
487 log <<
"\n\n****************** " << v.
idx() <<
"th VEHICLE*************\n";
488 log <<
"id = " << v.
id()
490 <<
"\tfactor = " << v.
m_factor <<
"\n"
491 <<
"\tspeed = " << v.
m_speed <<
"\n"
492 <<
"\tnew speed = " << v.
speed() <<
"\n";
494 for (
const auto &path_stop : v.
path()) {
495 log <<
"Path_stop" << ++i <<
"\n";
496 log << path_stop <<
"\n";
510 if (lhs.
m_path.back().total_travel_time()
511 < rhs.
m_path.back().total_travel_time())
return true;