首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用运维工具最大限度地降低提货和交付成本

使用运维工具最大限度地降低提货和交付成本
EN

Stack Overflow用户
提问于 2019-05-11 02:17:54
回答 1查看 117关注 0票数 -1

我有以下问题:

我有:

代码语言:javascript
复制
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,因为我需要跟踪累积时间,以确保我可以在给定的时间窗口内交付。

然而,我不明白如何最大限度地降低成本?

当我设置时:

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2019-05-14 03:29:49

我需要做的是:

设置

代码语言:javascript
复制
routing.SetArcCostEvaluatorOfAllVehicles(..)

基于成本矩阵,然后处理收件和发货,并创建一个时间维度。

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

代码语言:javascript
复制
  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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56082923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档