You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建JSON文件向Google Cloud发送OptimizeTourRequest优化单取多送物流

适配Google OR-Tools(CFR)的单工厂配送JSON构建方案

核心结构设计思路

聚焦你的需求:统一取货点、多配送任务、车辆规格,将「全局配送时长要求」转化为车辆可用时间窗+配送任务时间约束的组合,完全适配Google OR-Tools的VRPTW(带时间窗和载重的路径规划)模型。

关键字段解析

1. 配送任务(Shipments)

每个任务需包含:

  • 固定的工厂取货节点(坐标、取货时长、开放时间窗)
  • 独立的配送节点(坐标、配送时长、时间窗)
  • 重量需求(取货为正,配送为负,用于载重计算)

2. 车辆规格(Vehicles)

  • 载重上限
  • 起止地点(建议设为工厂,形成闭环运营)
  • 每小时行驶成本
  • 车辆总可用时间窗(对应你要的全局配送时长要求)

完整JSON示例

{
  "shipments": [
    {
      "id": "delivery_001",
      "pickup": {
        "location": {
          "lat": 31.2304,
          "lng": 121.4737
        },
        "duration": 180,  // 取货耗时3分钟(单位:秒)
        "time_windows": [
          {
            "start": 0,
            "end": 3600  // 工厂取货开放时段:运营开始后1小时内
          }
        ],
        "demand": {
          "weight": 500  // 该任务取货重量500kg
        }
      },
      "delivery": {
        "location": {
          "lat": 31.2165,
          "lng": 121.4365
        },
        "duration": 120,  // 配送耗时2分钟
        "time_windows": [
          {
            "start": 300,
            "end": 7200  // 配送需在运营后5分钟至2小时内完成
          }
        ],
        "demand": {
          "weight": -500  // 配送完成后载重减少500kg
        }
      }
    },
    {
      "id": "delivery_002",
      "pickup": {
        "location": {
          "lat": 31.2304,
          "lng": 121.4737
        },
        "duration": 180,
        "time_windows": [
          {
            "start": 0,
            "end": 3600
          }
        ],
        "demand": {
          "weight": 300
        }
      },
      "delivery": {
        "location": {
          "lat": 31.1958,
          "lng": 121.4292
        },
        "duration": 90,
        "time_windows": [
          {
            "start": 300,
            "end": 7200
          }
        ],
        "demand": {
          "weight": -300
        }
      }
    }
  ],
  "vehicles": [
    {
      "id": "truck_001",
      "start_location": {
        "lat": 31.2304,
        "lng": 121.4737
      },
      "end_location": {
        "lat": 31.2304,
        "lng": 121.4737
      },
      "capacity": {
        "weight": 2000  // 车辆最大载重2000kg
      },
      "cost_per_hour": 150,  // 每小时运营成本150元
      "time_windows": [
        {
          "start": 0,
          "end": 7200  // 车辆总可用时长2小时,对应全局配送完成要求
        }
      ]
    },
    {
      "id": "truck_002",
      "start_location": {
        "lat": 31.2304,
        "lng": 121.4737
      },
      "end_location": {
        "lat": 31.2304,
        "lng": 121.4737
      },
      "capacity": {
        "weight": 2000
      },
      "cost_per_hour": 150,
      "time_windows": [
        {
          "start": 0,
          "end": 7200
        }
      ]
    }
  ],
  "distance_matrix": "auto"  // 自动基于坐标计算行驶时间/距离矩阵
}

时间窗设置优化方案

针对你提到的「全局n小时内完成配送」,推荐两种组合方式:

  1. 车辆时间窗为主约束:设置车辆的time_windows.end为n*3600(秒),确保所有任务必须在车辆运营时段内完成
  2. 配送任务时间窗为辅:给所有配送节点设置统一的time_windows.end为n*3600,同时设置合理的起始时间(比如运营后5分钟),避免逻辑冲突

注意:取货节点的时间窗要匹配工厂实际开放时段,确保车辆能在合理时间完成取货。

适配OR-Tools的关键细节

  • 重量需求:取货用正数,配送用负数,系统会自动实时计算车辆载重变化
  • 时间单位统一用秒,与OR-Tools默认单位保持一致
  • 若无需自动计算距离矩阵,可替换为预计算的矩阵数据,覆盖"distance_matrix": "auto"

内容的提问来源于stack exchange,提问作者Tahmid Sadman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:16:21