服务介绍
服务文档
使用指南
常见问题
更新日志
智能调度排单排线服务
智能调度排单排线是一类Web API接口服务,提供在物流运输前计算合理调度方案的功能。如需试用请至反馈平台申请开通试用权限,将在1-3个工作日内处理。
功能介绍
排单排线服务
用户可通过该功能,生成订单、车辆和路线的合理调度分配方案。
1.支持创建排单排线任务
2.支持查询排单排线任务结果
3.支持线内优化排单计算和查询
4.支持多点有序排单计算和查询
注:使用排单排线服务前必须先创建路网。
接口功能介绍
排单排线计算
https://api.map.baidu.com/ros/v1/scheduler/problem?ak={您的AK} //POST请求
请求参数
参数名称 |
参数类型 | 是否必须 | 参数说明 | ||
---|---|---|---|---|---|
scenesType | String | 必须 | 算法需要使用的场景类型,场景维度包含网点规模及排单结果路线交叉程度。枚举:LARGE_SCALE_CLUSTER:大规模聚集性场景,SMALL_SCALE_CLUSTER:小规模聚集性场景,LARGE_SCALE_GENERAL:大规模通用场景,SMALL_SCALE_GENERAL:小规模通用场景。大规模场景要求网点数在600点以上,小规模场景网点数600点以下。聚集性为路线不交叉,但是成本不一定最低,通用性为路线可能交叉,但是成本最低 | ||
matrixId | String | 必须 | 路网矩阵ID,路网矩阵唯一标识码 | ||
lbsType | String | 必须 | 路网矩阵类型,枚举。LEAST_TIME:时间优先,LEAST_DISTANCE:距离最短,NO_HIGHWAY:不走高速。 用户可以根据自己场景填写 | ||
commitId | String | 非必须 | 路网矩阵版本ID | ||
distanceType | String | 必须 | 距离计算方式,枚举。STRAIGHT:直线距离, TRAVEL:导航距离。直线距离计算场景必须设置车辆的平均行驶速度 | ||
depots | List<Depot> | 必须 | 仓库信息列表,一期支持单仓 | ||
|
depotId | String | 必须 | 仓库ID,用户仓库自定义参数 | |
depotTimeWindow | TimeWindow | 非必须 | 时间窗信息,时间约束条件,车辆最早出仓时间和最晚回仓时间 | ||
|
startTime | int | 非必须 | 起始时间,单位:分钟,取值范围大于0。例如,上午10点30分的取值为630 | |
endTime | int | 非必须 | 结束时间,单位:分钟,取值范围大于1 | ||
vehicleGroups | List<VehicleGroup> | 必须 | 该仓库的车辆组信息 | ||
|
vehicleTypeId | String | 必须 | 车辆类型ID,枚举,目前支持GB01(默认车辆长6000mm,宽2100mm,高3000mm)以及SMALL(小轿车,车辆长4000mm,宽2000mm,高2000mm),两种车辆类型的轴重轴数均为2。该信息用于道路货车限行规避,一个车辆类型会对应一个或多个型号的货车,由用户自行决定车辆型号与车辆类型的映射关系 | |
vehicleModelId | String | 必须 | 车辆型号ID,用户自定义参数 | ||
vehicleCount | int | 必须 | 该型号车数量,不小于0,0代表没有限制 | ||
minVisited | int | 非必须 | 车辆允许运送的最小订单数量,不小于0,0代表没有限制 | ||
maxVisited | int | 非必须 | 车辆允许运送的最大订单数量,不小于0,0代表没有限制 | ||
maxRunDistance | int | 非必须 | 车辆最大行驶距离,单位:米,不小于0,0代表没有限制 | ||
maxRunTime | int | 非必须 | 车辆最大行驶时间,单位:分钟,不小于0,0代表没有限制 | ||
vehicleSkills | List<String> | 非必须 | 车辆可运输的货物类型列表(车辆具备某种运输能力,如冷冻功能、运输危化品能力等) | ||
returnToDepot | boolean | 非必须 | 是否回仓,默认回仓 | ||
vehicleModels | List<VehicleModel> | 必须 | 车辆型号信息 | ||
|
vehicleModelId | String | 必须 | 车辆型号ID,用户自定义 | |
capacity | Capacity | 必须 | 车辆额定承载 | ||
|
weight | double | 非必须 | 装载重量,单位:千克。精度:保留小数点后四位 | |
volume | double | 非必须 | 装载体积,单位:立方米。精度:保留小数点后四位 | ||
count | double | 非必须 | 装载数量,精度:保留小数点后四位。重量、体积、数量三个维度至少填写一个,车和货的维度保持一致 | ||
perDistanceUnitPrice | double | 必须 | 车辆每公里行驶成本,取值必须大于0,单位:元/公里 | ||
perTimeUnitPrice |
double |
非必须 |
车辆每单位时间行驶成本,取值必须大于0,单位:元/分钟 | ||
fixedCost | double | 非必须 | 车辆固定损耗成本,单位:元/天,默认值为0 | ||
waitingCost | double | 非必须 | 车辆等待成本,单位:元/分钟,默认值为0 | ||
averageVelocity | double | 非必须 | 平均车速,取值必须在0到120之间,单位:千米/小时,distanceType为STRAIGHT时,该参数必填 | ||
maxVelocity | double | 非必须 | 最大行驶速度,取值必须在0到120之间,且必须大于平均车速,单位:千米/小时 | ||
serviceJobs | List<ServiceJob> | 必须 | 网点信息列表 | ||
|
serviceJobId | String | 必须 | 网点ID,用户自定义参数 | |
serviceStayDuration | double | 非必须 | 网点停留时间,取值必须大于0,单位:分钟,默认值为0 | ||
demand | Capacity | 必须 | 网点待配送货物的量 | ||
|
weight | double | 非必须 | 装载重量,单位:千克。精度:保留小数点后四位 | |
volume | double | 非必须 | 装载体积,单位:立方米。精度:保留小数点后四位 | ||
count | double | 非必须 | 装载数量,精度:保留小数点后四位。重量、体积、数量三个维度至少填写一个,车和货的维度保持一致 | ||
serviceTimeWindows | List<TimeWindow> | 非必须 | 网点可配送的时间段列表 | ||
|
startTime | int | 非必须 | 起始时间,单位:分钟,取值范围大于0 。例如,上午10点30分的取值为630 | |
endTime | int | 非必须 | 结束时间,单位:分钟,取值范围大于1 | ||
skills | List<String> | 非必须 | 需要运输的货物类型列表(车辆需要具备某种运输能力,如冷冻功能、运输危化品能力等) | ||
priority |
int | 非必须 | 订单优先级,取值范围必须为不小于1,不大于10,数字越大代表优先级越高 |
返回参数
参数类型 | 参数类型 | 参数说明 |
id | String | 排单排线计算任务ID |
status | String | 任务执行状态:RUNNING、ERROR |
errorCode | String | 错误码 |
errorMessage | String | 错误信息 |
请求示例
POST https://api.map.baidu.com/ros/v1/scheduler/problem?ak={您的AK} HTTP/1.1 { "scenesType": "SMALL_SCALE_GENERAL", "matrixId": "1a72478093ba40519c2fff6e8242a082", "lbsType": "LEAST_TIME", "distanceType": "TRAVEL", "depots": [{ "depotId": "340078493e0a4090b2055e7689626001", "depotTimeWindow": { "startTime": 0, "endTime": 1440 }, "vehicleGroups": [{ "vehicleTypeId": "GB01", "vehicleModelId": "model_test_1", "vehicleCount": 0, "returnToDepot": false }] }], "vehicleModels": [{ "vehicleModelId": "model_test_1", "capacity": { "weight": 1000.0, "volume": 1000.0, "count": 1000.0 }, "perDistanceUnitPrice": 12.22, "perTimeUnitPrice": 20.0 }], "serviceJobs": [{ "serviceJobId": "340078493e0a4090b2055e7689626002", "demand": { "weight": 3.02, "volume": 3.07, "count": 3.0 } }, { "serviceJobId": "340078493e0a4090b2055e7689626003", "demand": { "weight": 1.04, "volume": 4.31, "count": 4.0 } }, { "serviceJobId": "340078493e0a4090b2055e7689626004", "demand": { "weight": 4.03, "volume": 1.98, "count": 4.0 } }] }
返回示例
{ "id" : "8b664a457cdd42ec871e8344368c5d79", "status": "RUNNING", "errorCode": "", "errorMessage": "" }
排单排线查询
https://api.map.baidu.com/ros/v3/scheduler/problem?ak={您的AK}&problemId={problemId} //GET请求
返回参数
参数名称 |
参数类型 |
说明 | ||||
---|---|---|---|---|---|---|
id | String | 排单排线计算任务ID | ||||
status | String | 任务执行状态:RUNNING、ERROR、FINISHED | ||||
errorCode | String | 错误码 | ||||
errorMessage | String | 错误信息 | ||||
solution | Solution | 排单排线结果方案 | ||||
|
totalTravelDistance | double | 该方案车辆总行驶距离,单位:米 | |||
totalTravelTime | double | 该方案车辆总行驶时间,单位:分钟 | ||||
routes | List<Route> | 车辆分配线路方案 | ||||
|
id | String | 路线唯一标识符 | |||
vehicleModelId | String | 该路线使用的车辆型号ID | ||||
travelDistance | double | 该路线车辆行驶里程,单位:米 | ||||
travelTime | double | 该路线车辆行驶时间,单位:分钟 | ||||
startLocation | StartLocation | 车辆起始点信息 | ||||
|
locationId | String | 仓点ID | |||
coordinate | Coordinate | 起始点坐标 | ||||
|
latitude | double | 坐标纬度 | |||
longitude | double | 坐标经度 | ||||
address | String | 地址 | ||||
departureTime | double | 出发时间,单位:分钟 | ||||
roadPlans | List<RoadPlan> | 配送路线规划 | ||||
|
serviceJobId | String | 网点ID | |||
coordinate | Coordinate | 网点坐标 | ||||
|
latitude |
double |
坐标纬度 | |||
longitude |
double |
坐标经度 | ||||
address |
String |
地址 | ||||
arrivalTime |
double |
到达网点时间,单位:分钟 | ||||
departureTime |
double |
离开网点时间,单位:分钟 | ||||
routeCoordinates | List<Coordinate> | 行驶路线坐标 | ||||
|
latitude | double | 坐标纬度 | |||
longitude | double | 坐标经度 | ||||
address |
String |
地址 | ||||
routeMessage | RouteMessage | 路线信息说明 | ||||
|
code | String | 路线信息码 | |||
message | String | 路线信息描述 |
线内优化排单计算
https://api.map.baidu.com/ros/v1/scheduler/problem/optimization?ak={您的AK} //POST请求
请求参数
参数名称 |
参数类型 |
是否必须 |
参数说明 | ||
---|---|---|---|---|---|
matrixId | String | 必须 | 路网矩阵ID,路网矩阵的唯一标识 | ||
lbsType | String | 必须 | 路网矩阵类型,枚举。LEAST_TIME:时间优先,LEAST_DISTANCE:距离最短,NO_HIGHWAY:不走高速。 用户可以根据自己场景填写 | ||
commitId | String | 非必须 | 路网矩阵版本ID | ||
distanceType | String | 必须 | 距离计算方式,枚举。STRAIGHT:直线距离, TRAVEL:导航距离。直线距离计算场景必须设置车辆的平均行驶速度 | ||
depotId | String | 必须 | 仓库ID,用户自定义参数 | ||
depotTimeWindow | TimeWindow | 非必须 | 时间窗信息,时间约束条件,仓库运营时间,车辆最早出仓时间和最晚回仓时间 | ||
|
startTime | int | 非必须 | 起始时间,单位为分钟,取值范围大于0 。例如,上午10点30分的取值为630 | |
endTime | int | 非必须 | 结束时间,单位为分钟,取值范围大于1 | ||
vehicleTimeWindow |
TimeWindow |
非必须 |
时间窗信息,时间约束条件,车辆运营时间 | ||
|
startTime |
int |
非必须 |
起始时间,单位为分钟,取值范围大于0 。例如,上午10点30分的取值为630 | |
|
endTime |
int |
非必须 |
结束时间,单位为分钟,取值范围大于1 | |
vehicleTypeId | String | 必须 | 车辆类型ID,枚举,目前支持GB01(默认车辆长6000mm,宽2100mm,高3000mm)以及SMALL(小轿车,车辆长4000mm,宽2000mm,高2000mm),两种车辆类型的轴重轴数均为2。该信息用于道路货车限行规避,一个车辆类型会对应一个或多个型号的货车,由用户自行决定车辆型号与车辆类型的映射关系 | ||
vehicleModelId | String | 必须 | 车辆型号ID,用户自定义参数 | ||
returnToDepot | boolean | 非必须 | 是否回仓,默认回仓 | ||
averageVelocity | double | 非必须 | 平均车速,单位:千米/小时。distanceType为STRAIGHT时,该参数必填且值不小于0 | ||
maxVelocity | double | 非必须 | 最大行驶速度,单位:千米/小时 | ||
serviceJobs | List<ServiceJob> | 必须 | 网点信息列表 | ||
|
serviceJobId | String | 必须 | 网点ID,用户自定义参数 | |
serviceStayDuration | double | 非必须 | 网点停留时间,单位:分钟,默认值为0 | ||
serviceTimeWindows | List<TimeWindow> | 非必须 | 网点时间窗列表 | ||
|
startTime | int | 非必须 | 起始时间,单位为分钟,取值范围大于0 。例如,上午10点30分的取值为630 | |
endTime | int | 非必须 | 结束时间,单位为分钟,取值范围大于1 |
返回参数
参数名称 | 参数类型 | 参数说明 |
id | String | 排单排线计算任务ID |
status | String | 任务执行状态:RUNNING、ERROR |
errorCode | String | 错误码 |
errorMessage | String | 错误信息 |
线内优化结果查询
https://api.map.baidu.com/ros/v3/scheduler/problem/optimization?ak={您的AK}&optimizationProblemId={optimizationProblemId} //GET请求
返回参数
参数名称 |
参数类型 |
说明 | |||
---|---|---|---|---|---|
id | String | 排单排线计算任务ID | |||
status | String | 任务执行状态:RUNNING、ERROR、FINISHED | |||
errorCode | String | 错误码 | |||
errorMessage | String | 错误信息 | |||
route | ExternalRouteV2 | 车辆线路方案 | |||
|
id | String | 路线唯一标识符 | ||
vehicleModelId | String | 该路线使用的车辆型号ID | |||
travelDistance | double | 该路线车辆行驶里程,单位:米 | |||
travelTime | double | 该路线车辆行驶时间,单位:分钟 | |||
loadRate | double |
负载率 | |||
startLocation | StartLocation | 车辆起始点信息 | |||
|
locationId | String | 仓点ID | ||
coordinate | Coordinate | 起始点坐标 | |||
|
latitude | double | 坐标纬度 | ||
longitude | double | 坐标经度 | |||
address | String | 地址 | |||
departureTime | double | 出发时间,单位:分钟 | |||
roadPlans | List<RoadPlan> | 配送路线规划 | |||
|
serviceJobId | String | 网点ID | ||
coordinate | Coordinate | 网点坐标 | |||
|
latitude |
double |
坐标纬度 | ||
longitude |
double |
坐标经度 | |||
address |
String |
地址 | |||
arrivalTime |
double |
到达网点时间,单位:分钟 | |||
departureTime |
double |
离开网点时间,单位:分钟 | |||
routeCoordinates | List<Coordinate> | 行驶路线坐标 | |||
|
latitude | double | 坐标纬度 | ||
longitude | double | 坐标经度 | |||
address |
String |
地址 | |||
routeMessage | RouteMessage | 路线信息说明 | |||
|
code | String | 路线信息码 | ||
message | String | 路线信息描述 |
多点有序排单计算
https://api.map.baidu.com/ros/v1/scheduler/problem/ordered?ak={您的AK} //POST请求
请求参数
参数名称 |
参数类型 | 是否必须 | 参数说明 | |
---|---|---|---|---|
matrixId | String | 必须 | 路网矩阵ID,路网矩阵唯一标识码 | |
lbsType | String | 必须 | 路网矩阵类型,枚举。LEAST_TIME:时间优先,LEAST_DISTANCE:距离最短,NO_HIGHWAY:不走高速。 用户可以根据自己场景填写 | |
commitId | String | 非必须 | 路网矩阵版本ID | |
depotId | String | 必须 | 仓库ID,用户仓库自定义参数 | |
depotDepartureTime | int | 非必须 | 出仓时间,单位:分钟,取值范围[0,1439],默认为0。例如,上午10点30分的取值为630 | |
vehicleTypeId | String | 必须 | 车辆类型ID,枚举,目前支持GB01(默认车辆长6000mm,宽2100mm,高3000mm)以及SMALL(小轿车,车辆长4000mm,宽2000mm,高2000mm),两种车辆类型的轴重轴数均为2。该信息用于道路货车限行规避,一个车辆类型会对应一个或多个型号的货车,由用户自行决定车辆型号与车辆类型的映射关系 | |
vehicleModelId | String | 必须 | 车辆型号ID,用户自定义参数 | |
returnToDepot | boolean | 非必须 | 是否回仓,默认回仓 | |
averageVelocity | double | 非必须 | 车辆行驶的平均速度,单位:千米/小时 | |
maxVelocity | double | 非必须 | 最大行驶速度,单位:千米/小时 | |
serviceJobs | List<ServiceJob> | 必须 | 网点信息列表 | |
|
serviceJobId | String | 必须 | 网点ID,用户自定义参数 |
serviceStayDuration | double | 非必须 | 网点停留时间,单位:分钟,默认 |
返回参数
参数名称 | 参数类型 | 参数说明 |
id | String | 排单排线计算任务ID |
status | String | 任务执行状态:RUNNING、ERROR |
errorCode | String | 错误码 |
errorMessage | String | 错误信息 |
多点有序排单查询
https://api.map.baidu.com/ros/v3/scheduler/problem/ordered?ak={您的AK}&orderedProblemId={orderedProblemId} //GET请求
返回参数
参数名称 |
参数类型 |
说明 | |||
---|---|---|---|---|---|
id | String | 排单排线计算任务ID | |||
status | String | 任务执行状态:RUNNING、ERROR、FINISHED | |||
errorCode | String | 错误码 | |||
errorMessage | String | 错误信息 | |||
route | ExternalRouteV2 | 车辆线路方案 | |||
|
id | String | 路线唯一标识符 | ||
vehicleModelId | String | 该路线使用的车辆型号ID | |||
travelDistance | double | 该路线车辆行驶里程,单位:米 | |||
travelTime | double | 该路线车辆行驶时间,单位:分钟 | |||
loadRate | double |
负载率 | |||
startLocation | StartLocation | 车辆起始点信息 | |||
|
locationId | String | 仓点ID | ||
coordinate | Coordinate | 起始点坐标 | |||
|
latitude | double | 坐标纬度 | ||
longitude | double | 坐标经度 | |||
address | String | 地址 | |||
departureTime | double | 出发时间,单位:分钟 | |||
roadPlans | List<RoadPlan> | 配送路线规划 | |||
|
serviceJobId | String | 网点ID | ||
coordinate | Coordinate | 网点坐标 | |||
|
latitude |
double |
坐标纬度 | ||
longitude |
double |
坐标经度 | |||
address |
String |
地址 | |||
arrivalTime |
double |
到达网点时间,单位:分钟 | |||
departureTime |
double |
离开网点时间,单位:分钟 | |||
routeCoordinates | List<Coordinate> | 行驶路线坐标 | |||
|
latitude | double | 坐标纬度 | ||
longitude | double | 坐标经度 | |||
address |
String |
地址 | |||
routeMessage | RouteMessage | 路线信息说明 | |||
|
code | String | 路线信息码 | ||
message | String | 路线信息描述 |
服务状态码
返回码 | 定义 | 常见原因 |
---|---|---|
200 | 返回成功 | 服务请求正常召回 |
400 | 请求失败 | 请求参数不合法,请按照返回提示修改参数 |
401 | 未鉴权 | ak不合法或者账号未开通相应权限 |
403 | 禁止 | 未开通白名单,请前往反馈工单联系我们 |
503 | 服务不可用 | 服务异常,请前往反馈工单联系我们 |
500 | 内部服务错误 | 服务异常,请前往反馈工单联系我们 |
使用方法
编码说明
API请求中需要用到中文或一些特殊字符的参数,如query、region等,为了避免提交到后台乱码,需要对这几个参数值进行编码处理,转换成UTF-8字符的二字符十六进制值,凡是不在下表中的字符都需要进行编码。
字符集合 | 字符 |
URL非保留字 |
a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - _ . ~ |
URL保留字 |
! * ' ( ) ; : @ & = + $ , / ? % # [ ] |
如果中文参数中使用URL保留字字符的字面意思,例如:region关键字取值为"?北京",检索关键字包含一个问号,此问号也必须进行编码。
附注:
javascript中一般采用encodeURIComponent函数对特殊字符进行编码。
Java中可以使用函数URLEncoder.encode对特殊字符进行编码。
C#中可以使用函数HttpUtility.UrlEncode对特殊字符进行编码。
php中可以使用函数urlencode对特殊字符进行编码。
服务常见问题
2020年2月25日
V1.0
产品上线
智能调度排单排线服务上线