HDDL 领域(Domain in HDDL)

翻译:HDDL 领域(Domain in HDDL)

HDDL(Hierarchical Domain Definition Language)是一种用于 HTN(Hierarchical Task Network) 规划的建模语言,它支持定义动作(actions)方法(methods),用于描述分层任务的规划问题。

1. 动作(Actions)

HDDL 允许定义一系列 原始任务(Primitive Tasks),即可以直接执行的操作。每个动作由以下部分组成:

  • :parameters(参数):定义该动作涉及的变量及其类型。
  • :precondition(前提条件):描述执行该动作所需满足的状态。
  • :effect(效果):描述执行该动作后,状态如何变化。
(1) 购票 (getTicket)
(:action getTicket
  :parameters (?x ?y ?xc ?yc - object)
  :precondition (and (airport ?x ?xc) (airport ?y ?yc))
  :effect (and (ticket ?x ?y))
)

解释

  • 参数
    • ?x?y:出发地和目的地。
    • ?xc?yc:出发地和目的地的机场代码。
  • 前提条件
    • ?x?y 必须是机场,并且它们分别位于 ?xc?yc
  • 效果
    • 生成 (ticket ?x ?y),即购得从 ?x?y 的机票。

(2) 飞行 (fly)
(:action fly
  :parameters (?x ?y ?x1 ?y1 - object)
  :precondition (and (airport ?x ?x1)
                     (airport ?y ?y1)
                     (ticket ?x ?y) 
                     (at ?x))
  :effect (and (not (at ?x)) (not (ticket ?x ?y)) (at ?y))
)

解释

  • 参数
    • ?x?y:出发机场和到达机场。
    • ?x1?y1:出发地和目的地的国家或地区。
  • 前提条件
    • ?x?y 必须是机场。
    • 需要有 (ticket ?x ?y)(购票)。
    • 当前位于 ?xat ?x)。
  • 效果
    • not (at ?x):离开出发机场。
    • not (ticket ?x ?y):使用机票,票作废。
    • at ?y:到达目的地。

(3) 叫出租车 (getTaxi)
(:action getTaxi
  :parameters (?x - object)
  :precondition (and (at ?x))
  :effect (and (hasTaxi ?x))
)

解释

  • 参数
    • ?x:当前位置。
  • 前提条件
    • at ?x(必须在 ?x 位置)。
  • 效果
    • hasTaxi ?x(拥有出租车)。

(4) 乘坐出租车 (rideTaxi)
(:action rideTaxi
  :parameters (?x ?y - object)
  :precondition (and (at ?x) (not (longDistance ?x ?y)) (hasTaxi ?x))
  :effect (and (not (at ?x)) (not (hasTaxi ?x)) (at ?y))
)

解释

  • 参数
    • ?x?y:起点和终点。
  • 前提条件
    • 当前位置 ?x
    • ?x?y 之间不能是长途距离(not (longDistance ?x ?y))。
    • 已经叫到出租车(hasTaxi ?x)。
  • 效果
    • not (at ?x):离开 ?x
    • not (hasTaxi ?x):不再拥有出租车。
    • at ?y:到达 ?y

2. 方法(Methods)

HDDL 允许定义 非原始任务(Nonprimitive Tasks),这些任务不能直接执行,必须通过 方法(Methods) 进行分解。

(1) 通过出租车旅行 (travel-by-taxi)
(:method travel-by-taxi
  :parameters (?x ?y - object)
  :task (travel ?x ?y)
  :precondition (and (at ?x) (not (longDistance ?x ?y)))
  :ordered-subtasks ((getTaxi ?x) (rideTaxi ?x ?y))
)

解释

  • 参数
    • ?x?y:出发地和目的地。
  • 任务
    • travel(?x, ?y)(表示从 ?x 旅行到 ?y)。
  • 前提条件
    • 需要在 ?x
    • 不能是长途旅行(not (longDistance ?x ?y))。
  • 子任务(有序执行):
    • getTaxi(?x)(叫出租车)。
    • rideTaxi(?x, ?y)(乘坐出租车到 ?y)。

(2) 通过飞机旅行 (travel-by-plane)
(:method travel-by-plane
  :parameters (?x ?y ?ax ?ay - object)
  :task (travel ?x ?y)
  :precondition (and (at ?x) (longDistance ?x ?y)
                     (airport ?ax ?x) (airport ?ay ?y))
  :subtasks ((task0 (getTicket ?ax ?ay))
             (task1 (travel ?x ?ax))
             (task2 (fly ?ax ?ay))
             (task3 (travel ?ay ?y)))
  :ordering (and (task0 < task2) (task0 < task3) (task2 < task3))
)

解释

  • 参数
    • ?x?y:出发地和目的地。
    • ?ax?ay:出发地和目的地的机场。
  • 任务
    • travel(?x, ?y)(从 ?x?y)。
  • 前提条件
    • 需要在 ?x
    • 需要 longDistance(?x, ?y)(长途旅行)。
    • ?ax?ay 分别是 ?x?y 对应的机场。
  • 子任务
    • getTicket(?ax, ?ay)(购票)。
    • travel(?x, ?ax)(前往出发机场)。
    • fly(?ax, ?ay)(乘机)。
    • travel(?ay, ?y)(从到达机场前往最终目的地)。
  • 任务顺序约束
    • 必须先购票 task0 < task2
    • 必须在飞行之前完成购票 task0 < task3
    • 必须在飞行后才能前往最终目的地 task2 < task3

3. 总结

  • HDDL 是 HTN 规划的标准语言,用于描述分层任务的规划问题。
  • 原始任务(Actions)
    • 购票(getTicket)、飞行(fly)、叫出租车(getTaxi)、乘坐出租车(rideTaxi)。
  • 非原始任务(Methods)
    • travel-by-taxi:先叫出租车,再乘车。
    • travel-by-plane:先购票,再去机场,乘机,然后到达最终目的地。
  • 任务分解(Task Decomposition)
    • 高层任务(travel(x, y))被分解为多个低层任务,直至所有任务都变为可执行的原始任务。
  • 适用于
    • 智能调度(Smart Scheduling)
    • 机器人规划(Robotics Planning)
    • 自动化交通系统(Automated Transportation Systems)
    • 物流优化(Logistics Optimization)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值