智能调度多仓排单服务是一类Web API接口服务,提供多个仓库取送货场景下调度方案计算的功能。如需试用请至反馈平台申请开通试用权限,将在1-3个工作日内处理。
用户可通过该功能,生成多个仓库订单、车辆和路线的合理调度分配方案。
1.支持多仓排单计算
2.支持多仓排单结果查询
注:使用多仓排单服务前必须先创建路网。
https://api.map.baidu.com/ros/v1/scheduler/multidepot?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:时间优先 | ||
commitId | String | 非必须 | 路网矩阵版本ID | ||
distanceType | String | 必须 | 距离计算方式,枚举。STRAIGHT:直线距离 TRAVEL:导航距离 | ||
depots | List<MultiDepotExternalDepot> | 必须 | 仓库信息列表,一期支持单仓 | ||
|
depotId | String | 必须 | 仓库ID,用户仓库自定义编码 | |
depotTimeWindow | ExternalTimeWindow | 非必须 | 时间窗信息,时间约束条件,车最早出仓时间和最晚回仓时间。 | ||
|
startTime | int | 必须 | 起始时间,单位为分钟,取值范围大于0 | |
endTime | int | 必须 | 结束时间,单位为分钟,取值范围大于1 | ||
vehicleModels | List<ExternalVehicleModel> | 必须 | 车辆型号信息 | ||
|
vehicleModelId | String | 必须 | 车辆型号ID,用户自定义 | |
capacity | ExternalCapacity | 必须 | 车辆额定承载 | ||
|
weight | double | 非必须 | 装载重量,单位:千克 | |
volume | double | 非必须 | 装载体积,单位:立方米 | ||
count | double | 非必须 | 装载数量,重量、体积、数量三个维度至少填写一个,车和货的维度保持一致 | ||
perDistanceUnitPrice | double | 必须 | 车辆每公里行驶成本,单位:元/公里 | ||
fixedCost | double | 非必须 | 车辆固定损耗成本,单位:元/天,默认值为0 | ||
waitingCost | double | 非必须 | 车辆等待成本,单位:元/分钟,默认值为0 | ||
averageVelocity | double | 非必须 | 平均车速,单位:千米/小时,取值范围必须在0到120之间,distanceType为STRAIGHT时,该参数必填且值不小于0 | ||
maxVelocity | double | 非必须 | 最大车速,单位:千米/小时,取值范围必须在0到120之间,最大车速不可小于平均速度 | ||
serviceJobs | List<MultiDepotExternalServiceJob> | 必须 | 网点信息列表 | ||
|
locationId | String | 必须 | 网点ID,用户自定义 | |
parentId | String | 非必须 | 订单所属的父订单ID,用户自定义 | ||
depotId | String | 非必须 | 订单所属的仓库ID,多仓使用,单仓可以为空 | ||
serviceStayDuration | double | 非必须 | 网点停留时间,单位:分钟,默认值为0 | ||
demand | ExternalCapacity | 必须 | 网点待配送货物的量 | ||
|
weight | double | 非必须 | 装载重量,单位:千克 | |
volume | double | 非必须 | 装载体积,单位:立方米 | ||
count | double | 非必须 | 装载数量,重量、体积、数量三个维度至少填写一个,车和货的维度保持一致 | ||
serviceTimeWindows | List<ExternalTimeWindow> | 非必须 | 网点时间窗列表 | ||
|
startTime | int | 必须 | 起始时间,单位为分钟,取值为[0-1439] | |
endTime | int | 必须 | 结束时间,单位为分钟,取值为[1-1440] | ||
skills | List<String> | 非必须 | 仓库可存储的货物类型列表 | ||
price |
double | 非必须 | 价格。取值不可小于0 | ||
priority |
int | 非必须 | 订单优先级,取值范围必须为不小于1,不大于10 | ||
vehicleGroups | List<MultiDepotExternalVehicleGroup> | 必须 | 车辆信息列表 | ||
|
vehicleTypeId | String | 必须 | 车辆类型ID,枚举,目前支持GB01 | |
vehicleModelId | String | 必须 | 车辆型号ID,用户自定义 | ||
depotId | String | 非必须 | 车辆所属仓库ID,用户仓库自定义编码 | ||
vehicleCount | int | 必须 | 该型号车数量,不小于0,0代表没有限制 | ||
minVisited | int | 非必须 | 车辆允许运送的最小订单数量,不小于0,0代表没有限制 | ||
maxVisited | int | 非必须 | 车辆允许运送的最大订单数量,不小于0,0代表没有限制 | ||
maxRunDistance | int | 非必须 | 车辆最大行驶距离,单位:米,不小于0,0代表没有限制 | ||
maxRunTime | int | 非必须 | 车辆最大行驶时间,单位:分钟,不小于0,0代表没有限制 | ||
serviceTimeWindow | ExternalTimeWindow | 必须 | 车辆可运输的时间窗 | ||
|
startTime | int | 必须 | 起始时间,单位为分钟,取值范围大于0 | |
endTime | int | 必须 | 结束时间,单位为分钟,取值范围大于1 | ||
vehicleSkills | List<String> | 非必须 | 车辆可运输的货物类型列表 | ||
returnToDepot | boolean | 非必须 | 是否回仓,默认回仓 |
参数名称 | 参数类型 | 参数说明 |
id | string | 排单排线计算任务ID |
status | string | 任务执行状态RUNNING、ERROR |
errorCode | String | 错误码 |
errorMessage | String | 错误信息,(数据格式不正确等) |
请求示例
POST https://api.map.baidu.com/ros/v1/scheduler/multidepot?ak={您的AK} HTTP/1.1 { "scenesType": "SMALL_SCALE_GENERAL", "matrixId": "550e8400e29b41d4a716446655440000", "lbsType": "LEAST_TIME", "commitId": "550e8400e29b41d4a716446655440000", "distanceType": "TRAVEL", "depots": [{ "depotId": "550e8400e29b41d4a716446655440000", "depotTimeWindow": { "startTime": 0, "endTime": 1440 } }], "vehicleModels": [{ "vehicleModelId": "VEHICLE_MODEL_ID01", "capacity": { "count": 100.0 }, "perDistanceUnitPrice": 3.5, "fixedCost": 50.0 }, { "vehicleModelId": "VEHICLE_MODEL_ID02", "capacity": { "count": 200.0 }, "perDistanceUnitPrice": 5.5, "fixedCost": 80.0 } ], "serviceJobs": [{ "locationId": "550e8400e29b41d4a716446655440000", "parentId": "550e8400e29b41d4a716446655440000", "depotId": "550e8400e29b41d4a716446655440000", "serviceStayDuration": 20.0, "demand": { "count": 30.0 } }, { "locationId": "550e8400e29b41d4a716446655440001", "parentId": "550e8400e29b41d4a716446655440001", "depotId": "550e8400e29b41d4a716446655440000", "serviceStayDuration": 10.0, "demand": { "count": 10.0 } }, { "locationId": "550e8400e29b41d4a716446655440002", "parentId": "550e8400e29b41d4a716446655440002", "depotId": "550e8400e29b41d4a716446655440000", "serviceStayDuration": 25.0, "demand": { "count": 80.0 } } ], "vehicleGroups": [{ "vehicleTypeId": "GB01", "vehicleModelId": "VEHICLE_MODEL_ID01", "depotId":"550e8400e29b41d4a716446655440000", "vehicleCount": 0, "serviceTimeWindow": {"startTime":0.0,"endTime":1440.0} }, { "vehicleTypeId": "GB01", "vehicleModelId": "VEHICLE_MODEL_ID02", "depotId":"550e8400e29b41d4a716446655440000", "vehicleCount": 10, "serviceTimeWindow": {"startTime":0.0,"endTime":1440.0} } ], "parameters": [ "algo.vrpObjective=minTime" ] }
{ "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 | 路线信息描述 |
返回码 | 定义 | 常见原因 |
---|---|---|
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
您可以通过此文件获知百度地图的全国各城市代码(cityCode)。 在使用百度地图API或SDK各种涉及citycode参数的服务时,您可参看此文件传入准确值,如JavaScript API的本地检索服务(根据cityCode获取本地检索结果)、Android SDK离线地图服务(根据cityCode,获取对应城市离线地图)等。
注意:cityCode为百度内部定义,已不再维护,请谨慎使用。
逆地理编码服务使用的国家标准行政区划代码(adcode)映射表。持续更新。
(注意:该映射表对应的是最新版行政区划,V2.0版本需要设置latest_admin=1,V3.0版本默认返回最新行政区划)
您可以通过此链接获知百度地图POI(兴趣点)的tag引导体系,辅助您检索POI。 如检索query为百度地图的tag“生活服务”,返回的检索结果即包含关键字为“生活服务”的POI、也包含tag为“生活服务”的POI,从而聚焦检索结果。