如何在VROOM中强制指定车辆起始点及取货顺序
如何控制VROOM配送路由的取货起始点与顺序?
问题背景
我正在用VROOM搭建配送路由系统,需要控制司机从指定餐厅取货的起始点。1号车辆已在Al Abdallah门店待命取货,同时还有其他餐厅的取货任务要处理。
初始场景
预期1号车辆从Al Abdallah出发,接下来优先前往Pizzanini取货——因为Pizzanini的配送客户地点和Al Abdallah的客户地点距离很近。
请求体配置
{ "vehicles": [ { "id": 1, "description": "Shopper in store (Al Abdullah)", "capacity": [2], "max_tasks": 4, "start": [35.573740, 33.903584], "steps": [ { "type": "pickup", "id": 1 }, { "type": "delivery", "id": 2 } ] } ], "shipments": [ { "pickup": { "id": 1, "description": "Al Abdullah order", "location": [35.573740, 33.903584] }, "delivery": { "id": 2, "description": "Al Abdullah client", "location": [35.591753, 33.896119] }, "amount": [1] }, { "pickup": { "id": 5, "description": "Wooden Bakery order", "location": [35.573233, 33.903196] }, "delivery": { "id": 6, "description": "Wooden Bakery client", "location": [35.581014, 33.905217] }, "amount": [1] }, { "pickup": { "id": 7, "description": "Malak Al Tawouk order (near wooden bakery)", "location": [35.576267, 33.903813] }, "delivery": { "id": 8, "description": "Malak Al Tawouk client (near wooden bakery)", "location": [35.580511, 33.906136] }, "amount": [1] }, { "pickup": { "id": 9, "description": "Pizzanini order", "location": [35.578701, 33.899912] }, "delivery": { "id": 10, "description": "Pizzanini client", "location": [35.598503, 33.897005] }, "amount": [1] } ] }
预期行为
司机从Al Abdallah出发,随后前往Pizzanini。
实际行为
司机却从Wooden Bakery开始路线,接着前往Malak Al Tawouk取货。
解决方法
要让VROOM严格遵循起始点并按预期顺序执行,可以通过以下几种配置实现:
1. 强制固定任务顺序
在车辆配置中添加sequence参数,指定必须按顺序执行的任务ID,确保Al Abdallah的取货(ID1)之后紧接着执行Pizzanini的取货(ID9)。修改后的车辆配置如下:
{ "id": 1, "description": "Shopper in store (Al Abdullah)", "capacity": [2], "max_tasks": 4, "start": [35.573740, 33.903584], "steps": [ {"type": "pickup", "id": 1}, {"type": "pickup", "id": 9}, {"type": "delivery", "id": 2}, {"type": "delivery", "id": 10} ], "sequence": [[1, 9]] // 强制ID1任务完成后必须执行ID9任务 }
2. 设置任务优先级
给Pizzanini的取货任务设置更高的优先级(数值越大优先级越高,默认值为0),引导VROOM优先调度该任务。同时确保Al Abdallah的取货任务优先级不低于其他任务,示例修改如下:
// 修改Al Abdallah的取货任务 "pickup": { "id": 1, "description": "Al Abdullah order", "location": [35.573740, 33.903584], "priority": 1 } // 修改Pizzanini的取货任务 "pickup": { "id": 9, "description": "Pizzanini order", "location": [35.578701, 33.899912], "priority": 2 }
3. 使用技能约束匹配门店
给车辆添加对应Al Abdallah的技能标签,同时给Al Abdallah的任务设置相同技能,确保车辆优先处理匹配技能的任务:
// 车辆配置添加skills字段 "vehicles": [ { "id": 1, "description": "Shopper in store (Al Abdullah)", "capacity": [2], "max_tasks": 4, "start": [35.573740, 33.903584], "skills": [1], // 标记车辆属于Al Abdallah门店 "steps": [ {"type": "pickup", "id": 1}, {"type": "delivery", "id": 2} ] } ] // Al Abdallah的取货任务添加skills字段 "pickup": { "id": 1, "description": "Al Abdullah order", "location": [35.573740, 33.903584], "skills": [1] // 匹配车辆技能 }
内容的提问来源于stack exchange,提问作者moh96
相关产品推荐
相关产品推荐

