update examples
This commit is contained in:
@@ -90,9 +90,9 @@ int main(int argc, char** argv) {
|
||||
FirstSolutionStrategy::PARALLEL_CHEAPEST_INSERTION);
|
||||
|
||||
// Setting up locations.
|
||||
const int64 kXMax = 100000;
|
||||
const int64 kYMax = 100000;
|
||||
const int64 kSpeed = 10;
|
||||
const int64_t kXMax = 100000;
|
||||
const int64_t kYMax = 100000;
|
||||
const int64_t kSpeed = 10;
|
||||
LocationContainer locations(
|
||||
kSpeed, absl::GetFlag(FLAGS_vrp_use_deterministic_random_seed));
|
||||
for (int location = 0; location <= absl::GetFlag(FLAGS_vrp_orders);
|
||||
@@ -102,28 +102,28 @@ int main(int argc, char** argv) {
|
||||
|
||||
// Setting the cost function.
|
||||
const int vehicle_cost =
|
||||
routing.RegisterTransitCallback([&locations, &manager](int64 i, int64 j) {
|
||||
routing.RegisterTransitCallback([&locations, &manager](int64_t i, int64_t j) {
|
||||
return locations.ManhattanDistance(manager.IndexToNode(i),
|
||||
manager.IndexToNode(j));
|
||||
});
|
||||
routing.SetArcCostEvaluatorOfAllVehicles(vehicle_cost);
|
||||
|
||||
// Adding capacity dimension constraints.
|
||||
const int64 kVehicleCapacity = 40;
|
||||
const int64 kNullCapacitySlack = 0;
|
||||
const int64_t kVehicleCapacity = 40;
|
||||
const int64_t kNullCapacitySlack = 0;
|
||||
RandomDemand demand(manager.num_nodes(), kDepot,
|
||||
absl::GetFlag(FLAGS_vrp_use_deterministic_random_seed));
|
||||
demand.Initialize();
|
||||
routing.AddDimension(
|
||||
routing.RegisterTransitCallback([&demand, &manager](int64 i, int64 j) {
|
||||
routing.RegisterTransitCallback([&demand, &manager](int64_t i, int64_t j) {
|
||||
return demand.Demand(manager.IndexToNode(i), manager.IndexToNode(j));
|
||||
}),
|
||||
kNullCapacitySlack, kVehicleCapacity,
|
||||
/*fix_start_cumul_to_zero=*/true, kCapacity);
|
||||
|
||||
// Adding time dimension constraints.
|
||||
const int64 kTimePerDemandUnit = 300;
|
||||
const int64 kHorizon = 24 * 3600;
|
||||
const int64_t kTimePerDemandUnit = 300;
|
||||
const int64_t kHorizon = 24 * 3600;
|
||||
ServiceTimePlusTransition time(
|
||||
kTimePerDemandUnit,
|
||||
[&demand](RoutingNodeIndex i, RoutingNodeIndex j) {
|
||||
@@ -133,7 +133,7 @@ int main(int argc, char** argv) {
|
||||
return locations.ManhattanTime(i, j);
|
||||
});
|
||||
routing.AddDimension(
|
||||
routing.RegisterTransitCallback([&time, &manager](int64 i, int64 j) {
|
||||
routing.RegisterTransitCallback([&time, &manager](int64_t i, int64_t j) {
|
||||
return time.Compute(manager.IndexToNode(i), manager.IndexToNode(j));
|
||||
}),
|
||||
kHorizon, kHorizon, /*fix_start_cumul_to_zero=*/false, kTime);
|
||||
@@ -142,9 +142,9 @@ int main(int argc, char** argv) {
|
||||
// Adding time windows.
|
||||
std::mt19937 randomizer(
|
||||
GetSeed(absl::GetFlag(FLAGS_vrp_use_deterministic_random_seed)));
|
||||
const int64 kTWDuration = 5 * 3600;
|
||||
const int64_t kTWDuration = 5 * 3600;
|
||||
for (int order = 1; order < manager.num_nodes(); ++order) {
|
||||
const int64 start =
|
||||
const int64_t start =
|
||||
absl::Uniform<int32_t>(randomizer, 0, kHorizon - kTWDuration);
|
||||
time_dimension->CumulVar(order)->SetRange(start, start + kTWDuration);
|
||||
routing.AddToAssignment(time_dimension->SlackVar(order));
|
||||
@@ -166,7 +166,7 @@ int main(int argc, char** argv) {
|
||||
// or
|
||||
// - 2 x 30min breaks between 10:00am and 3:00pm, at least 1h apart
|
||||
// First, fill service time vector.
|
||||
std::vector<int64> service_times(routing.Size());
|
||||
std::vector<int64_t> service_times(routing.Size());
|
||||
for (int node = 0; node < routing.Size(); node++) {
|
||||
if (node >= routing.nodes()) {
|
||||
service_times[node] = 0;
|
||||
@@ -204,11 +204,11 @@ int main(int argc, char** argv) {
|
||||
}
|
||||
|
||||
// Adding penalty costs to allow skipping orders.
|
||||
const int64 kPenalty = 10000000;
|
||||
const int64_t kPenalty = 10000000;
|
||||
const RoutingIndexManager::NodeIndex kFirstNodeAfterDepot(1);
|
||||
for (RoutingIndexManager::NodeIndex order = kFirstNodeAfterDepot;
|
||||
order < routing.nodes(); ++order) {
|
||||
std::vector<int64> orders(1, manager.NodeToIndex(order));
|
||||
std::vector<int64_t> orders(1, manager.NodeToIndex(order));
|
||||
routing.AddDisjunction(orders, kPenalty);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user