
# 运输计划
#### 创建任务
创建运输计划任务， 该接口为异步操作，返回任务ID，任务的状态及结果请通过查询任务详情接口获取。
#### URI
POST /v2/{project_id}/optverse/route-planning/tasks
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                          |
|:---|:---|:---|:---|
| project_id | 是    | String | 用户项目ID，获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-optverse/optverse_04_0026.html)。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                       |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 该字段填为"application/json"。 |
   
 表3请求Body参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                    |
|:---|:---|:---|:---|
| input_json | 是    | object | 任务输入信息，json格式，具体数据结构参见[RoutePlanningInputJson]。 |
   
 表4RoutePlanningInputJson 
| 参数                   | 是否必选 | 参数类型                                                          | 描述                               |
|:---|:---|:---|:---|
| name                 | 是    | String                                                        | 数据名                              |
| type                 | 是    | String                                                        | 问题类型                             |
| vehicle_infos        | 是    | [Array of 表1-2 objects]  | 所有车辆信息                           |
| node_infos           | 是    | [Array of 表1-3 objects] | 节点信息                             |
| depot_node           | 是    | Array of integers                                             | 仓库/车场节点编号集                       |
| explicit_edge_weight | 是    | [表1-4 object]           | 各节点间的距离成本矩阵，行号（列号）对应nodeList中的序号 |
| time_weight          | 是    | [表1-5 object]          | 各节点间的时间矩阵，行号（列号）对应nodeList中的序号   |
| objective_cost       | 是    | [表1-6 object]          | 目标函数                             |
| option               | 是    | [表1-7 object]            | 路径规划类型可选项                        |
| parameters           | 是    | [表1-8 object]            | 算法参数                             |
   
 表5vehicle_info 
| 参数                  | 是否必选 | 参数类型    | 描述                                       |
|:---|:---|:---|:---|
| vehicle_type        | 是    | String  | 车辆型号名称                                   |
| available_num       | 是    | Integer | 车辆可用数                                    |
| capacity            | 是    | Integer | 容量，默认为100000                             |
| shift_start_time    | 否    | Double  | 车辆作业班次开始时间，默认为0                          |
| shift_end_time      | 否    | Double  | 车辆作业班次结束时间，默认为100000                     |
| start_node          | 是    | String  | 出发节点id                                   |
| end_node            | 否    | String  | 返回节点id                                   |
| max_distance        | 否    | Double  | 车辆允许的最大行驶距离，默认为1000000                   |
| max_duration        | 否    | Double  | 车辆允许的最大工作时长，默认为1000000                   |
| max_node_number     | 否    | Integer | 车辆允许服务的最大节点数，默认为10000                    |
| unit_distance_cost  | 否    | Double  | 单位距离运输成本。默认为1                            |
| unit_duration_cost  | 否    | Double  | 单位时间工作成本。默认为1                            |
| vehicle_load_time   | 否    | Double  | 车辆的装货时间，单位分钟，默认为0                        |
| vehicle_unload_time | 否    | Double  | 车辆的卸货时间，单位分钟，默认为0                        |
| fixed_cost          | 否    | Double  | 车辆的固定使用成本，单位元，默认为0                       |
| multiple_trips      | 否    | Boolean | 是否允许在一个工作周期内，多次往返出发点进行配送任务(多车程)，默认为false |
   
 表6node_info 
| 参数                   | 是否必选 | 参数类型                     | 描述                                                                                  |
|:---|:---|:---|:---|
| node_id              | 否    | Integer                  | 节点编号                                                                                |
| demand               | 是    | Integer                  | 配送量，默认0                                                                             |
| split_order          | 否    | Boolean                  | 配送量是否可以拆分配送，默认为false                                                                |
| pickup               | 否    | Integer                  | 取货量，默认0                                                                             |
| time_windows         | 否    | Array\<Array\<Number\>\> | 节点作业/服务时间窗，最早/晚到达时间（单位：分钟），以基准时刻为0开始计时                                              |
| service_load_time    | 否    | Double                   | 装车服务时间，单位分钟，默认为0                                                                    |
| service_unload_time  | 否    | Double                   | 卸车服务时间，单位分钟，默认为0                                                                    |
| depot_load_time      | 否    | Integer                  | 配送客户所需配送量在仓库的装车时间，默认为0                                                              |
| release_time         | 否    | Double                   | 配送该节点的车辆最早从仓库发出的时间，配送货物齐套时间                                                         |
| slack_max            | 否    | Double                   | 允许等待时间上限，单位分钟，默认为10000                                                              |
| penalty              | 否    | Integer                  | 跳过站点的惩罚成本，默认为10000000                                                               |
| depot_capacity       | 否    | Integer                  | 可以同时装或卸的最大车辆数, 默认值为1000                                                             |
| pickup_order_index   | 否    | Integer                  | 从哪里取货，必选，默认为-1，表示不需要指定来源                                                            |
| delivery_order_index | 否    | Integer                  | 往哪里送货，必选，默认为-1，表示不存在送货                                                              |
| backhauls            | 否    | Boolean                  | 该站点任务是否为回程任务，true为回程，false为去程（默认）                                                   |
| periodic             | 否    | Integer                  | 周期场景下的一个周期内需要到达的次数/频率                                                               |
| demand_volume        | 否    | Integer                  | 需求体积量（可加体积），默认为0                                                                    |
| pickup_volume        | 否    | Integer                  | 取货体积量（可加体积），默认为0                                                                    |
| merge_rule           | 是    | String                   | 同一顾客存在多个订单是如何合并订单，计算顾客的卸车时间；"sum"为使用所有订单的卸车时间之和为顾客的卸车时间，"max"为使用所有订单的最大卸车时间为顾客的卸车时间 |
   
 表7explicit_edge_weight 
| 参数       | 是否必选 | 参数类型                     | 描述        |
|:---|:---|:---|:---|
| \[数组元素\] | 否    | Array\<Array\<Number\>\> | 各节点间的距离矩阵 |
   
 表8time_weight 
| 参数       | 是否必选 | 参数类型                     | 描述        |
|:---|:---|:---|:---|
| \[数组元素\] | 否    | Array\<Array\<Number\>\> | 各节点间的时间矩阵 |
   
 表9objective_cost 
| 参数                  | 是否必选 | 参数类型   | 描述                                              |
|:---|:---|:---|:---|
| edge_weight_cost    | 是    | Double | 基础成本，车辆经过的路线各点间成本(运输距离成本+运输耗时成本)之和权重，取0表示不考虑该目标 |
| fixed_cost          | 是    | Double | 固定成本权重，取0表示不考虑该目标                               |
| load_dependent_cost | 是    | Double | 负载成本（配送量\*距离）权重，取0表示不考虑该目标                      |
| cumulative_cost     | 是    | Double | 最小化到达客户时间总和权重，取0表示不考虑该目标                        |
   
 表10option 
| 参数       | 是否必选 | 参数类型    | 描述         |
|:---|:---|:---|:---|
| periodic | 是    | Integer | 配送周期数，默认取1 |
   
 表11parameters 
| 参数         | 是否必选 | 参数类型    | 描述                  |
|:---|:---|:---|:---|
| time_limit | 是    | Integer | 求解时长限制(秒)，必选，默认为60秒 |
   
#### 响应参数
**状态码： 201**
表12响应Body参数 
| 参数                   | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| task_id              | String | 任务编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| create_time          | String | 任务创建时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| estimated_start_time | String | 预估开始时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| status               | String | 任务状态，包括： - Pending：任务等待处理中（排队中）  - Running：任务正在运行  - Expired：任务超时  - Failed：任务失败  - Succeeded：任务成功   |
   
 #### 请求示例
```
{
    "input_json": {
        "depot_node": [
            1
        ],
        "explicit_edge_weight": [
            0.0,
            33.0,
            ...
        ],
        "name": "A-n36-k5",
        "node_infos": [
            {
                "backhauls": false,
                "delivery_order_index": -1,
                "demand": 0.0,
                "depot_capacity": 0,
                "node_id": 1,
                "penalty": 0.0,
                "periodic": 1,
                "pickup": 0.0,
                "pickup_order_index": -1,
                "release_time": 0.0,
                "service_load_time": 0.0,
                "service_unload_time": 0.0,
                "slack_max": 0.0,
                "split_order": false,
                "time_windows": []
            },
            ...
        ],
        "objective_cost": {
            "cumulative_cost": 0.0,
            "edge_weight_cost": 1.0,
            "fixed_cost": 0.0,
            "load_dependent_cost": 0.0
        },
        "option": {
            "periodic": 1
        },
        "parameter": {
            "time_limit": 60
        },
        "time_weight": [],
        "type": "CVRP",
        "vehicle_infos": [
            {
                "available_num": 35,
                "capacity": 100.0,
                "end_node": 1,
                "fixed_cost": 0.0,
                "max_distance": 1000000.0,
                "max_duration": 2147483647,
                "max_node_number": 10000,
                "multiple_trips": false,
                "shift_end_time": 1000000,
                "shift_start_time": 0,
                "start_node": 1,
                "unit_distance_cost": 1,
                "unit_duration_cost": 1,
                "vehicle_load_time": 0.0,
                "vehicle_type": "V1",
                "vehicle_unload_time": 0.0
            }
        ]
    }
}
```
 #### 响应示例
**状态码： 201**
OK
```
{
    "task_id": "40axxxx-701a-47cf-8b56-648xxxxxxd25,
    "create_time": "2025-08-13T08:58:51.479Z",
    "estimated_start_time": null,
    "status": "Pending"
}
```
#### 查询任务
该API用于查询并显示异形件-服装切割任务详情。
#### URI
GET /v2/{project_id}/optverse/route-planning/tasks/{task_id}
 #### 响应参数
**状态码：200**
表13响应Body参数 
| 参数          | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|
| task_id     | String           | 任务编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| input_json  | String           | 输入数据，当前为null                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| status      | String           | 任务状态，包括： - Pending：任务等待处理中（排队中）  - Running：任务正在运行  - Expired：任务超时  - Failed：任务失败  - Succeeded：任务成功   |
| progress    | String           | 返回任务进度                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| output_json | Array of objects | 任务处理结果，json格式，任务状态为finished时携带。具体数据结构参见[routePlanningResultDetail]                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| start_time  | String           | 任务开始时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| end_time    | String           | 任务结束时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| create_time | String           | 任务创建时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
 表14routePlanningResultDetail 
| 参数            | 参数类型                                                         | 描述         |
|:---|:---|:---|
| schedule_plan | [Array of 表15 objects] | 计算结果中的路径信息 |
| objective     | Double                                                       | 计算结果的目标值   |
   
 表15Route 
| 参数            | 参数类型                                                            | 描述               |
|:---|:---|:---|
| route_id      | String                                                          | 路线编号             |
| vehicle_type  | String                                                          | 车辆型号             |
| node_list     | [Array of 表16 objects] | 路线经过的节点列表        |
| total_cost    | Double                                                          | 路线总开销            |
| total_weight  | Double                                                          | 路线运输的总重量         |
| total_time    | Double                                                          | 路线运输的总时间         |
| periodic_list | Array of integers                                               | 在多周期场景下出现在第几个周期内 |
   
 表16node 
| 参数             | 参数类型    | 描述                           |
|:---|:---|:---|
| node_id        | Integer | 节点编号                         |
| arrive_time    | Double  | 到达时间（单位：分钟），从基准时刻开始到到达当前节点时间 |
| departure_time | Double  | 离开时间（单位：分钟），从基准时刻开始到离开当前节点时间 |
| wait_time      | Double  | 等待时间（单位：分钟），当前节点的等待时间        |
   
 #### 响应示例
**状态码： 200**
OK
```
{
    "task_id": "02419df7-8a55-41e3-955b-a3693c8f2bac",
    "input_json": null,
    "status": "Succeeded",
    "progress": "",
    "output_json": {
        "objective": 6294.877,
        "schedule_plan": [
            {
                "route_id": "",
                "node_list": [
                    {
                        "node_id": 25,
                        "wait_time": 0,
                        "arrive_time": 28800,
                        "departure_time": 30780
                    },
                    ...
                ],
                "total_cost": 57.69199999999999,
                "total_time": 12391,
                "total_weight": 57.69199999999999,
                "vehicle_type": "1",
                "periodic_list": []
            },
            ...
        ]
    },
    "estimated_start_time": null,
    "start_time": "2025-07-22T08:29:21.805Z",
    "end_time": "2025-07-22T08:29:36.457Z",
    "create_time": "2025-07-22T08:29:20.988Z"
}
```
