Skip to content

取送订单实时业务规则配置参数

字符串集合: 是用分号(;)隔开的字符串

Team配置参数

在实时取送场景中涉及到如下的配置参数,首先是团队层面的(team):

参数名类型说明
enabled_rule_codes字符串集合启用那些“初选”规则 ,可用的规则basic;area_code;tolerance_check;geo_merge;max_pick2drop_merge;worker_radius
meter_search_radius整数订单可以分配给最远多少米的员工
meter_search_radius_whitelist整数如果做白名单强制指定,订单可以分配给最远多少米的员工
peak_period_spec
enable_accum_items
enable_level_items
enable_skills
allow_mixed_area
meter_same_area
meter_other_area
enable_accum_items
enable_accum_items
limit_same_location_stack0
peak_period_spec字符串集合
period_unit_second3600
meter_same_location_match10
meter_priority_merge_pick300
meter_priority_merge_drop1000
meter_allowed_merge_pick2000
meter_allowed_merge_drop4000
meter_merge_drop_scaling20000
meter_max_pick2drop_merge1000
tolerance_seconds0
nbr_jobs_per_slot0
.........

规则列表

基于上面的参数组合,取送订单支持如下的业务规则:

排单优先级

所有订单和员工都从属于一个区域编码area_code。如果你的业务只有一个区域,那么请填写一个常量,比如“A”。当出现一个新订单的时候:

  • 本区域内的骑手如果距离小于meter_same_area,而且是空闲骑手,按照距离最近的优先。
  • 其他区域内的骑手如果距离小于meter_other_area,而且是空闲骑手,按照距离最近的优先。

可以配置在某个时间段(peak_period_spec)优先合单还是优先选择空闲骑手。

  • 如果优先合单,取距离在meter_priority_merge_pick米,送距离在meter_priority_merge_drop米内,按照距离优先合单。 不考虑其他骑手。
  • 如果优先选择空闲骑手, meter_same_area公里内空闲骑手优先,meter_other_area公里内其他区域的骑手优先直接分配。不考虑任何身上已有订单的骑手。

如果订单的取送都是相同地址,如果limit_same_location_stack == 0, 可以累加无限订单, 即使超过

如果前面的优先搜索都没有匹配成功,根据配置最大单数,和最远距离,算法允许寻找其他的订单进行合单。 算法从所有符合条件的骑手中选择一个"分配后新增距离最小"的分配。 任何情况下,如果合单,两个送的距离必须是meter_allowed_merge_drop以内。下面三个参数一起控制合单的最远距离,比如:

  • "max_meters_radius_merge_drop": "500",
  • "max_meters_radius_merge_drop_scaling_distance_km": "15",
  • "max_meters_radius_merge_pick": "2000"

比如当前订单从餐厅到客户是5公里,那么骑手身上现有dropoff和新订单到dropoff 差距666米内会被合单。 500 * (1 + 5 / 15) == 666 如果当前订单从餐厅到客户是20公里,那么骑手身上现有dropoff和新订单到dropoff 差距1100米内会被合单: 500 * (1 + 20 / 15) == 1100

可以强制指定骑手,忽略前面的规则限制,只要处于meter_search_radius_whitelist距离内,确定分给这个骑手,然后执行TSP优化。

正常情况下,任何员工身上的任务数不能超过nbr_jobs_per_slot。

Last updated: