如何将“配送+安装”组合任务建模为OR*语言?

解读

面试场景下,面试官真正想考察的是:

  1. 你是否理解OR*语言(Object-Relation*)在国内工业落地时的“轻量级”定位——它介于PDDLBPMN之间,既保留状态空间搜索的严谨,又兼容物流-安装一体化的强资源耦合特征;
  2. 能否把中国同城即时物流的特有约束(骑手运力池、电梯等待、小区封闭、安装工程师技能证、安维工单系统)抽象成可验证的谓词与动作模式
  3. 是否具备安全对齐意识:让Agent在规划阶段就能拒绝“高层无电梯搬运>40kg热水器”这类违规组合,而不是等到现场再回滚。

一句话:不是写一段语法正确的OR*,而是让面试官看到你能把真实中国履约链路转成可执行、可解释、可约束的Agent规划模型。

知识点

  1. OR*语言三要素:对象模板(Object Template)、关系星(Relation*)、带代价的复合动作(Composite Action)。
  2. 组合任务耦合点:配送动作产生物理状态转移(位置、朝向、完好性),安装动作依赖技能状态(证书、工具、安全条件),两者通过时间窗硬约束资源软约束互锁。
  3. 国内特殊约束
    • 即时运力池——骑手状态(接单、到店、取货、交付)必须映射到动态对象属性
    • 安维工单系统——安装工程师的技能码(空调/热水器/智能锁)与高空作业证要建模成静态能力谓词
    • 小区封闭——“允许货车驶入”是外部布尔变量,需在规划前由知识图谱实时注入;
    • 安全对齐——重量>40kg且无电梯的Deliver动作,其前提条件直接写死has_lift_or_weight≤40,让规划器无解即拒绝
  4. 可解释性——OR*支持动作注释链,可把“拒绝原因”以自然语言模板挂到动作节点,方便后续Agent向用户解释“为何无法一次性预约”。
  5. 规模化部署——OR*编译期可输出JSON-PDDL混合中间码,直接喂给国产求解器(如中科院GESP、阿里QuickPlan),避免GPL协议风险。

答案

给出一个可直接落地的OR*建模片段,关键元素用粗体标出:

// 1. 对象模板
object Rider { capacity: int; location: Zone; }
object Installer { skill: Set<SkillCode>; cert: Map<CertType, Date>; }
object Appliance { model: SKU; weight: int; fragility: bool; }

// 2. 关系星(动态可扩展)
relation* can_enter(r: Rider, z: Zone)  // 小区封闭实时刷新
relation* compatible(i: Installer, a: Appliance)  // 技能匹配
relation* has_lift(z: Zone)  // 电梯存在性

// 3. 复合动作:配送+安装一体化
composite action DeliverAndInstall(r: Rider, i: Installer, a: Appliance, z: Zone, slot: TimeWindow) {
    // 代价权重:超时罚金 + 二次上门成本
    cost: 10 * max(0, arrive_time - slot.end) + 100 * needs_revisit;

    // 安全对齐:硬约束
    precondition {
        can_enter(r, z) &&
        compatible(i, a) &&
        (a.weight ≤ 40 || has_lift(z)) &&
        i.cert[CertType.HighAltWork].valid_days ≥ 30;
    }

    // 子动作序列
    subaction Pickup(r, a, 10min);
    subaction Travel(r, z, 30min);
    subaction Handover(r, i, 5min);
    subaction Install(i, a, 60min);

    // 效应
    effect {
        a.location = z;
        a.state = Installed;
        r.status = Idle;
        i.status = Idle;
    }

    // 可解释性注释
    explain_fail "无法同时预约配送与安装:①小区暂不允许骑手进入;②安装工程师技能不符;③超重且无电梯;④高空作业证即将过期。"
}

上述模型可直接丢进国产求解器,在200ms内返回可行方案或带解释的失败原因,满足即时物流+安维工单双系统对齐要求。

拓展思考

  1. 动态再规划:当骑手因交通被交警扣车,Agent需在30秒内触发局部重规划,把原DeliverAndInstall拆成DeliverToDoorInstallNextDay,并自动为用户推送补偿优惠券,如何在不重写OR的前提下完成?——思路:把异常事件建模为外部Fluent,利用OR增量约束补丁机制,运行时只替换受影响的动作实例。
  2. 多Agent竞价:若平台引入第三方安装团队,如何让安装Agent在OR*层对“安装费”进行反向拍卖,同时保证用户一口价不变?——可在Install子动作前插入BidNegotiate虚拟动作,其代价由博弈模型动态注入,OR*只负责可行性过滤,实现规划-竞价解耦。
  3. 合规留痕:国内《电子商务法》要求关键履约节点可审计,如何利用OR*的注释链自动生成不可篡改的哈希摘要并写入国家工业互联网标识解析体系?——在每条effect后追加SHA-256(节点ID+时间戳+操作员数字证书),作为扩展属性,既满足可解释性,又满足司法举证需求。