服务介绍
服务文档
使用指南
常见问题
更新日志
智能调度快速排单服务
智能调度快速排单是一类Web API接口服务,提供小规模物流场景的调度方案计算功能。如需试用请至反馈平台申请开通试用权限,将在1-3个工作日内处理。
功能介绍
快速排单服务
1.支持快速排单计算和查询
2.支持极速排单(不高于1000个待配送网点的排单计算,采用直线距离的方式进行预估,计算速度快)
3.支持精准排单(不高于200个待配送网点的排单计算,采用真实的导航距离的方式进行计算,计算结果精准,速度相对于极速排单略慢)
接口功能介绍
快速排单计算
https://api.map.baidu.com/ros/v1/scheduler/fastorder?ak={您的AK} //POST请求
请求参数
参数名称 |
参数类型 |
是否必须 |
参数说明 | |||
---|---|---|---|---|---|---|
orderType | String | 必须 | 排单类型,枚举。FAST_ORDER:极速排单,(支持不高于1000个待配送网点的排单计算,采用直线距离的方式进行预估,计算速度快)ACCURATE_ORDER:精准排单(支持不高于200个待配送网点的排单计算,采用真实的导航距离的方式进行计算,计算结果精准,速度相对于极速排单略慢) | |||
depots | List<FastOrderDepot> | 必须 | 仓库信息,目前只支持单仓模式 | |||
|
depotId | String | 必须 | 仓库ID,用户自定义参数 | ||
location | LocationPoint | 必须 | 仓库坐标 | |||
|
latitude | double | 必须 | 纬度 | ||
longitude | double | 必须 | 经度 | |||
depotTimeWindow | TimeWindow | 非必须 | 时间窗信息,精准排单场景按照仓库出发时间startTime的预测路况进行排单计算,建议设置实际的出仓时间来提升预估行驶里程及时间的准确度 | |||
|
startTime | int | 必须 | 起始时间,单位为分钟,取值范围大于0 。(例如:6点15分,取值为375) | ||
endTime | int | 必须 | 结束时间,单位为分钟,取值范围大于1 | |||
vehicleGroups | List<FastOrderVehicleGroup> | 必须 | 该仓库的车辆组信息 | |||
|
vehicleTypeId | String | 必须 | 车辆类型ID,枚举,目前支持GB01(默认车辆长6000mm,宽2100mm,高3000mm)以及SMALL(小轿车,车辆长4000mm,宽2000mm,高2000mm),两种车辆类型的轴重轴数均为2。该信息用于道路货车限行规避,一个车辆类型会对应一个或多个型号的货车,由用户自行决定车辆型号与车辆类型的映射关系 | ||
vehicleModelId | String | 必须 | 车辆型号ID,用户自定义参数 | |||
vehicleCount | int | 必须 | 该型号车数量,不小于0,0代表没有限制 | |||
maxVisited | int | 非必须 | 车辆允许运送的最大订单数量,不小于0,0代表没有限制 | |||
maxRunDistance | int | 非必须 | 一次配送任务中,车辆的最大行驶距离,单位:米,不小于0,0代表没有限制 | |||
maxRunTime | int | 非必须 | 一次配送任务中,车辆的最大行驶时间,单位:分钟,不小于0,0代表没有限制 | |||
returnToDepot | int | 非必须 | 是否回仓,1为回仓,2为不回仓(不回仓的时候,默认车辆停留在配送的最后一个点),默认回仓 | |||
departureLocationKey | String | 必须 | 车辆起始坐标对应key | |||
departureLocation | LocationPoint | 非必须 | 车辆起始坐标,不填默认为仓库坐标 | |||
|
latitude | double | 必须 | 纬度 | ||
longitude | double | 必须 | 经度 | |||
startTime | int | 非必须 | 车辆起始时间,单位为分钟,取值范围大于0 。出发点为仓库时建议与出仓时间保持一致 | |||
endTime | int | 非必须 |
车辆结束时间,单位为分钟,取值范围大于1 | |||
vehicleModels | List<VehicleModel> | 必须 | 车辆型号信息 | |||
|
vehicleModelId | String | 必须 | 车辆型号ID | ||
capacity | Capacity | 必须 | 车辆承载 | |||
|
weight | double | 非必须 | 装载重量,单位:千克。精度:保留小数点后4位 | ||
volume | double | 非必须 | 装载体积,单位:立方米。精度:保留小数点后4位 | |||
count | double | 非必须 | 装载数量,精度:保留小数点后4位 | |||
perDistanceUnitPrice | double | 非必须 | 每种型号的车辆每公里行驶成本,单位:元/公里 | |||
perTimeUnitPrice | double | 非必须 | 每种型号的车辆每分钟行驶成本,单位:元/分钟 | |||
fixedCost | double | 非必须 | 每种型号的车辆固定损耗成本,单位:元/天,默认值为0 | |||
waitingCost | double | 非必须 | 车辆等待成本,单位:元/分钟,默认值为0 | |||
averageVelocity | double | 非必须 | 平均车速,单位:千米/小时,取值0到120之间,该参数不填时极速场景默认使用40km/小时计算行驶时间,精准场景使用导航时间 | |||
serviceJobs | List<FastOrderServiceJob> | 必须 | 网点信息列表 | |||
|
serviceJobId | String | 必须 | 网点ID,用户自定义参数 | ||
location | LocationPoint | 必须 | 网点坐标 | |||
|
latitude | double | 必须 | 纬度 | ||
longitude | double | 必须 | 经度 | |||
serviceStayDuration | int | 非必须 | 网点停留时间,单位:分钟,默认值为0 | |||
demand | Capacity | 必须 | 网点待配送货物的量 | |||
|
weight | double | 非必须 | 装载重量,单位:千克。精度:保留小数点后4位 | ||
volume | double | 非必须 | 装载体积,单位:立方米。精度:保留小数点后4位 | |||
count | double | 非必须 | 装载数量,精度:保留小数点后4位 | |||
serviceTimeWindows | List<TimeWindow> | 非必须 | 网点可配送的时间段列表 | |||
|
startTime | int | 必须 | 起始时间,单位为分钟,取值范围大于0 。(例如:6点15分,取值为375) | ||
endTime | int | 必须 | 结束时间,单位为分钟,取值范围大于1 | |||
priority |
int | 非必须 | 订单优先级,取值范围必须为不小于1,不大于10 |
请求示例
{ "orderType" : "FAST_ORDER", "depots" : [ { "depotId" : "K00061", "location" : { "latitude" : 31.223188, "longitude" : 121.52481 }, "depotTimeWindow" : { "startTime" : 1, "endTime" : 1440 }, "vehicleGroups" : [ { "vehicleTypeId" : "GB01", "vehicleModelId" : "model_test_1", "vehicleCount" : 0, "returnToDepot" : 1, "departureLocationKey" : "vid" } ] } ], "vehicleModels" : [ { "vehicleModelId" : "model_test_1", "capacity" : { "weight" : 1000.0, "volume" : 1000.0, "count" : 1000.0 }, "perDistanceUnitPrice" : 12.22 } ], "serviceJobs" : [ { "serviceJobId" : "K00069", "location" : { "latitude" : 31.342084, "longitude" : 121.573599 }, "demand" : { "weight" : 2.207111693390443, "volume" : 3.8840549512697033, "count" : 4.8551923581517435 } }, { "serviceJobId" : "K00182", "location" : { "latitude" : 31.220752, "longitude" : 121.52566 }, "demand" : { "weight" : 3.0989421987729773, "volume" : 1.6144996971516927, "count" : 1.8090134817520878 } }, { "serviceJobId" : "K00062", "location" : { "latitude" : 31.365328, "longitude" : 121.539487 }, "demand" : { "weight" : 4.727135459494827, "volume" : 4.602548940778766, "count" : 1.110623183652399 } }, { "serviceJobId" : "K00183", "location" : { "latitude" : 31.22024, "longitude" : 121.52778 }, "demand" : { "weight" : 3.365714294602743, "volume" : 2.6229139289786114, "count" : 1.9201073132038213 } }, { "serviceJobId" : "K00180", "location" : { "latitude" : 31.225175, "longitude" : 121.558869 }, "demand" : { "weight" : 2.9600987270688313, "volume" : 1.2012063026626216, "count" : 3.432207012035625 } }, { "serviceJobId" : "K00060", "location" : { "latitude" : 31.347316, "longitude" : 121.56958 }, "demand" : { "weight" : 2.9088654518330626, "volume" : 4.120295290877481, "count" : 2.671981558589062 } }, { "serviceJobId" : "K00181", "location" : { "latitude" : 31.23258, "longitude" : 121.54574 }, "demand" : { "weight" : 1.6721972680453945, "volume" : 1.620907864387771, "count" : 1.1237156498270244 } }, { "serviceJobId" : "K00065", "location" : { "latitude" : 31.340173, "longitude" : 121.58671 }, "demand" : { "weight" : 4.138287269930849, "volume" : 4.5780982348991985, "count" : 1.3093525836197402 } }, { "serviceJobId" : "K00186", "location" : { "latitude" : 31.22246, "longitude" : 121.52088 }, "demand" : { "weight" : 2.3432535457625385, "volume" : 4.626574667998128, "count" : 3.2797455946996115 } }, { "serviceJobId" : "K00066", "location" : { "latitude" : 31.342107, "longitude" : 121.57348 }, "demand" : { "weight" : 2.7934693773000627, "volume" : 1.7820529837476937, "count" : 2.5535666940570065 } }, { "serviceJobId" : "K00187", "location" : { "latitude" : 31.223072, "longitude" : 121.51817 }, "demand" : { "weight" : 3.1923031311835337, "volume" : 2.440653515414892, "count" : 1.783598073268502 } }, { "serviceJobId" : "K00063", "location" : { "latitude" : 31.370528, "longitude" : 121.50831 }, "demand" : { "weight" : 4.865582462418697, "volume" : 1.0655422784309128, "count" : 3.2458459830072908 } }, { "serviceJobId" : "K00184", "location" : { "latitude" : 31.220493, "longitude" : 121.52542 }, "demand" : { "weight" : 4.436569727813067, "volume" : 3.7319119438055504, "count" : 1.5775585686735125 } }, { "serviceJobId" : "K00064", "location" : { "latitude" : 31.36352, "longitude" : 121.53651 }, "demand" : { "weight" : 3.8366471116198957, "volume" : 2.9529118446204783, "count" : 1.8411913701240992 } }, { "serviceJobId" : "K00185", "location" : { "latitude" : 31.21723, "longitude" : 121.51927 }, "demand" : { "weight" : 4.925196589478421, "volume" : 1.7050272176626118, "count" : 2.9264554273667587 } } ] }
返回示例
{ "id" : "8b664a457cdd42ec871e8344368c5d79", "status": "RUNNING", "errorCode": "", "errorMessage": "" }
快速排单查询
https://api.map.baidu.com/ros/v3/scheduler/fastorder?ak={您的AK}&problemId={problemId} //GET请求
返回参数
参数名称 |
参数类型 |
参数说明 | ||||
---|---|---|---|---|---|---|
id | String | 快速排单计算任务ID | ||||
status | String | 任务执行状态:RUNNING、ERROR、FINISHED | ||||
errorCode | String | 错误码 | ||||
errorMessage | String | 错误信息 | ||||
solution | Solution | 快速排单结果方案 | ||||
|
totalTravelDistance | double | 该方案车辆总行驶距离,单位:米 | |||
totalTravelTime | double | 该方案车辆总行驶时间,单位:分钟 | ||||
maxCapacityRate | List<Double> |
最大装载率,最多分为三个维度(重量、体积、数量),与创建任务输入的车辆和网点维度一致 | ||||
avgCapacityRate | List<Double> | 平均装载率,最多分为三个维度(重量、体积、数量),与创建任务输入的车辆和网点维度一致 | ||||
routes | List<FastOrderRoute> | 车辆分配线路方案 | ||||
|
id | String | 路线唯一标识符 | |||
vehicleModelId | String | 该路线使用的车辆型号ID | ||||
travelDistance | double | 该路线车辆行驶里程,单位:米 | ||||
travelTime | double | 该路线车辆行驶时间,单位:分钟 | ||||
capacityRate | List<double> | 该路线车辆装载率 | ||||
routePlans | List<RoutePlan> | 送货点顺序 | ||||
|
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
产品上线
智能调度快速排单服务上线