- 根据运单中输入的
label
和group
字段,以及运单中的keyRoute
或者block
中的location
或者拼合单中fromLoc
或者 拼合单中的toLoc
来从调度中选择出所有合适的机器人列表。 - 如果是拼合单,则在所有的合适的车子中遍历,选择有空背篓的车子,如果车子身上有某个运单的终点和当前拼合单起点的距离小于
JoinableDist
,则将拼合单接入,最后要将车子身上的所有运单的总距离最短。 - 如果是普通运单,是取货运单,则在所有合适的车子中遍历,优先选择附近放货的运单,如果放货运单目标点和预备取货运单起点的距离小于
JoinableDist
, 则形成预接单模式,或者叫做顺风车任务。 - 如果是指定顺序的分拨单,则在所有合适的车子中遍历,根据到取货点的订单匹配得分来分配整个分拨单,分拨单不支持拼单。
- ≤0.1.8.220823如果还有待分派的运单,则遍历所有的车子,按时间先后顺序从待分配运单中选择不超过100个运单,计算车和运单匹配的价值,该匹配价值考虑了运单优先级,运单等待时间,和车与运单的距离。距离越小,优先级越高,运单等待时间越长,车与运单的匹配价值越低。计算所有车与运单的匹配价值后,按匹配价值从小到大,去给每个空闲车安排运单执行,分配考虑到每个小车只能执行一个运单的限制。比如,如果有 n 辆车,一共有 200 个运单,那么会按照任务收到的时间顺序,先挑选前面的100个运单给n辆车匹配。然后将100n个匹配价值进行排序。将匹配价值从小到大进行分配运单。由于一个小车只能执行一个运单,当所有空闲小车都有运单后。此轮分配结束。
> 0.1.8.220823如果还有待分派的运单,则遍历所有的车子,按优先级和时间计算运单价值,将运单价值从小到大排序,选择不超过100个运单,计算车和运单的匹配价值,该匹配价值考虑了运单优先级,运单等待时间,和车与运单的距离。距离越小,优先级越高,运单等待时间越长,车与运单的匹配价值越低。计算所有车与运单的匹配价值后,按匹配价值从小到大,去给每个空闲车安排运单执行,分配考虑到每个小车只能执行一个运单的限制。比如,如果有 n 辆车,一共有 200 个运单,那么会按照任务收到的时间顺序,先挑选前面的100个运单给n辆车匹配。然后将100*n个匹配价值进行排序。将匹配价值从小到大进行分配运单。由于一个小车只能执行一个运单,当所有空闲小车都有运单后。此轮分配结束。
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
JoinableDist | 参数配置-导航 | m | 1. | 0. | 100. | ~latest |
拼合单和预接单距离 |
运单价值:
车与运单的匹配价值:
其中 是机器人到运单位置的路径距离,单位是 m。
是距离的权重系数。
是运单的优先级。
是优先级的权重系数。
是运单的等待分配时间,单位是 s。
是等待分配时间的权重系数。
是机器人等待时间,单位是 s。
是机器人等待时间的权重系数。
OrderScore 会记录在运单中,字段为 OrderScore 。
对于一个运单,有多个 MatchScore,最小值会记录在运单中, 字段为 OrderMinScore 。
分页查询运单信息
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
distRatio | 模型文件-ChooseAGV | 1.0 | 0.001 | 10000000. | ~latest | |
距离的权重系数 | ||||||
priorityRatio | 模型文件-ChooseAGV | 100000 | 0.001 | 100000000. | ~latest | |
优先级的权重系数 | ||||||
waitTimeRatio | 模型文件-ChooseAGV | 1 | 0.001 | 100000000. | ~latest | |
等待分配时间的权重系数 | ||||||
vehicleIdleTimeRatio | 模型文件-ChooseAGV | 0 | 0 | 100000000. | ~latest | |
机器人空闲时间的权重系数 |
机器人到运单的距离默认采用 A* 算法规划出来的路径长度,对于有很多车,并且点位复杂,互相联通的场景。可以采用欧氏距离代替路径长度。这个开关由参数配置的 UseEuclideanDistEstimation
来控制。
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
UseEuclideanDistEstimation | 参数配置-导航 | false | ~latest | |||
运单选车价值中的距离是否采用欧氏距离 |
重新分配订单
>0.1.8.220919
- 如果订单处于
CREATED
状态的时长超过配置的自动重分配时长,或者通过API手动标记订单需要重分配,则将订单重新放入待分配的订单池中; - 订单处于
CREATED
状态且执行订单的机器人报错,则将订单重新放入待分配的订单池中。
无法重分配的三种情况:
- 如果订单属于拼合单,且拼合单已开始执行,不能重分配;
- 如果订单属于分拨单,不能重分配;
- 如果订单有externalId字段,且相同externalId的其他订单已开始执行,不能重分配;
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
UnassignTime | 参数配置-导航 | s | -1 | -1 | 10000 | >0.1.8.220919 |
自动重分配时长。如果为-1,表示该功能关闭。默认是关闭的。 |