![]() |
Google OR-Tools v9.12
a fast and portable software suite for combinatorial optimization
|
#include <routing_filters.h>
Classes | |
struct | InterbreakLimit |
struct | PathData |
struct | VehicleBreak |
Public Member Functions | |
LightVehicleBreaksChecker (PathState *path_state, std::vector< PathData > path_data) | |
void | Relax () const |
bool | Check () const |
Definition at line 580 of file routing_filters.h.
operations_research::LightVehicleBreaksChecker::LightVehicleBreaksChecker | ( | PathState * | path_state, |
std::vector< PathData > | path_data ) |
Definition at line 4149 of file routing_filters.cc.
bool operations_research::LightVehicleBreaksChecker::Check | ( | ) | const |
Improve bounds on span/start max/end min using time windows: breaks that must occur inside the path have their duration accumulated into lb_span_tw, they also widen [start_max, end_min).
Compute num_feasible_breaks = number of breaks that may fit into route, and [breaks_start_min, breaks_end_max) = max coverage of breaks.
Improve span/start min/end max using interbreak limits: there must be enough breaks inside the path, so that for each limit, the union of [br.start - max_interbreak, br.end + max_interbreak) covers [start, end), or [start, end) is shorter than max_interbreak.
Minimal number of breaks depends on total transit: 0 breaks for 0 <= total transit <= limit, 1 break for limit + 1 <= total transit <= 2 * limit, i breaks for i * limit + 1 <= total transit <= (i+1) * limit, ...
Merge span lb information directly in start/end variables.
Definition at line 4161 of file routing_filters.cc.
void operations_research::LightVehicleBreaksChecker::Relax | ( | ) | const |
Definition at line 4153 of file routing_filters.cc.