尽可能降低成本,提供提货和交付工具或工具

2024-03-29 09:36:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下问题:

我有:

data["time_matrix"] # 2D list
data["pickups_deliveries"] # list of tuples, containing (start_node_index, end_node_indes)
data["vehicle_costs"] # list of 2D list of cost of route per vehicle 

我的目标是以最小的成本按时完成所有的交货(假设这是可能的)。你知道吗

我知道我需要创建一个time_dimension,因为我需要跟踪累计时间,以确保我可以在给定的时间窗口内交付。你知道吗

然而,我不明白如何使成本最小化?你知道吗

当我设置:

routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index)

我传递的transit_callback_index将基于data["time_matrix"]计算

如何指定data["vehicle_costs"]?告诉解算器最小化它?你知道吗

我研究了这个问题:https://github.com/google/or-tools/issues/1045,但在我看来,在这种情况下,cost_matrix被用来代替distance_matrix(或time_matrix)而不是与之结合使用。你知道吗

我主要研究这个例子:Time Window Constraints

我正在寻找一些指针和建议。请让我知道,如果我需要添加更多的细节或提供一个具体的例子。你知道吗


Tags: ofnodedataindextimecallback时间matrix
1条回答
网友
1楼 · 发布于 2024-03-29 09:36:31

我需要做的是:

routing.SetArcCostEvaluatorOfAllVehicles(..)

基于成本矩阵,然后处理提货和交货,并创建时间维度。你知道吗

阅读这段源代码将我推向了正确的方向。你知道吗

  for (int vehicle = 0; vehicle < vehicles(); ++vehicle) {
    CostClass cost_class(vehicle_to_transit_cost_[vehicle]);

    // Insert the dimension data in a canonical way.
    for (const RoutingDimension* const dimension : dimensions_) {
      const int64 coeff = dimension->vehicle_span_cost_coefficients()[vehicle];
      if (coeff == 0) continue;
      cost_class.dimension_transit_evaluator_class_and_cost_coefficient
          .push_back({dimension->vehicle_to_class(vehicle), coeff, dimension});
    }

source code for routing.cc

相关问题 更多 >