PDDL的requirements整理

PDDL中Requirements是非常重要的,一般我們可以從不同版本的PDDL的all Requirements中獲取到當前版本PDDL所支持的語法,同時在requirements中添加參數可以判斷所使用規劃器是否支持某項語法(也可以直接看規劃器所對應的論文中提到的requirements入手),可以說requirements是學習每個版本PDDL不可缺少的一步。

(上圖爲PDDL2.2的requirements)

下面是我整理的從PDDL到PDDL3.0所有的requirements以及其簡單介紹

Requirements

 

Examples

 

:STRIPS

(:requirements :strips)

允許使用STRIPS中指定的基本添加和刪除效果。

Add:

:effect (walls-built ?s)

Delete:

:effect (not (walls-built ?s))

 

:TYPING

(:requirements :typing)

允許使用對象鍵入。鍵入類似於面向對象編程中的類和子類

(:types

    site material - object

    bricks cables windows - material

)

:Preferences

(:requirements :preferences)

允許在問題定義(軟目標)中使用偏好。

 

 

 

:Constraints

(:requirements :constraints)

允許在域定義中使用約束(必須在每個 state中滿足的目標)

(:constraints

    (and

    (forall (?l - lorry ?loc - location) (at-most-once (at ?l ?      loc)))

)

)

:Numeric Fluents

(:requirements :numeric-fluents)

允許包含:function表示域中數字變量的塊。

(:functions

    (battery-amount ?r - rover)

)

 

:Durative Actions

(:requirements :durative-actions)

允許durative-action在域定義中使用。持續行動是指具有完成持續時間的行動。

(:durative-action move

    :parameters (<arguments>)

    :duration (= ?duration 5)

    :condition (logical_expression)

    :effect (logical_expression)

)

:Durative Inequalities

(:requirements :durative-inequalities)

允許使用不等式來表示持續時間。我們可以表達一個動作具有使用不等式的持續時間範圍,而不是表達動作具有固定的時間長度。

 

:continuous Effects

(:requirements :continuous-effects)

允許在持續行動中對數字使用連續效果。由於持續性操作需要一段時間,因此我們可以將數值中的更改建模爲時間函數。實際上支持這種不穩定。線性函數對於規劃者來說相對容易,但非線性效應仍然是研究領域。

 

 

 

:Negative Preconditions

(:requirements :negative-preconditions)

允許not在前提條件下使用。一些規劃者模仿行動的方式意味着他們無法處理負前提條件。對於每個謂詞來說,這是一個嚴重的設計缺陷,這更加帶來不便,因爲它們是一個對立的謂詞,當它是假的時候是真的。即rover-charged並且rover-not-charged是相互排斥的。在負前提條件不支持的情況下,我們可以引入第二個謂詞,它表示我們想要表達負前提條件的謂詞的否定。

 

 

 

:derived Predicates

(:requirements :derived-predicates)

允許在域中使用派生謂詞

(:derived (train-usable ?t

    (and

    (train-has-guard ?t

    (train-has-driver ?t

    )

)

:Timed Initial Literals

(:requirements :timed-initial-literals)

允許在定義問題時使用Timed Initial Literals

(at 10 (train-not-in-use t1))

:Disjunctive Preconditions

(:requirements :disjunctive-preconditions)

允許使用or目標和前提條件

(or

    (walls-built ?s)

    (windows-fitted ?s)

)

:Equality

(:requirements :equality)

(not (= ?s1 ?s2))

:Existential Preconditions

(:requirements :existential-preconditions)

(exists (?c - crane)

    (crane-is-free ?c)

)

:Universal Preconditions

(:requirements :universal-preconditions)

(forall (?c - crane)

    (crane-is-free ?c)

)

:Quantified Preconditions

(:requirements :quantified-preconditions)

相當於

(:requirements :existential-preconditions :universal-preconditions)

 

 

 

 

:Conditional Effects

(:requirements :conditional-effects)

允許使用when表達動作效果。基本上說如果某些事情是真的,那麼也應用這個效果。

(when

    ;Antecedent

    (and (has-hot-chocolate ?p ?c) (has-marshmallows ?c))

    ;Consequence

    (and (person-is-happy ?p))

)

 

:Action Expansions

(:requirements :action-expansions)

允許使用動作擴展。這允許定義變體條件和動作的效果。從本質上講,我們可以定義一個MOVE動作來描述一個人的運動,但包括不同的擴展來描述飛機,火車,汽車或步行的運動。 這已經變得多餘,因爲我們只是表達多個動作,如MOVE-BY-PLANE和MOVE-BY-TRAIN。

 

 

:Foreach Expansions

(:requirements :foreach-expansions)

允許使用foreach動作擴展,基本上允許在一種對象或所有對象中應用效果。該要求意味着要求的存在,:action-expansions因此等同於(:requirements :action-expansions :foreach-expansions)

 

 

 

:DAG Expansions

(:requirements :dag-expansions)

允許標記Action Expansions中描述的擴展,以便您可以區分計劃程序選擇的子操作。例如,如果我們定義了一個move使用不同傳輸模式的動作,我們可能想要確切地知道標記使用了什麼模式。該要求意味着要求的存在,:action-expansions因此等同於(:requirements :action-expansions :dag-expansions)

 

:Domain Axioms

(:requirements :domain-axioms)

允許使用公理。公理本質上是其他謂詞隱含的謂詞。

參閱PDDL 1.2域參考中的公理部分

 

:subgoals through Axioms

(:requirements :subgoals-through-axioms)

 

 

:Safety Constraints

(:requirements :safety-constraints)

 

:expression Evaluation

(:requirements :expression-evaluation)

 

:Fluents

(:requirements :fluents)

 

 

 

:Open World

(:requirements :open-world)

在計劃中,假定所有未知值都是假的。也就是說,如果我們不知道謂詞的值,那麼我們認爲它是假的。這被稱爲“封閉世界”假設。這個要求改變了計劃者做出“開放世界”的假設。也就是說,未知的值不一定是錯誤的。這在現代規劃者中很少得到支持,並且通常是計劃執行中的標誌,而不是域中的要求。

 

:True Negation

(:requirements :true-negation)

 

:ADL

(:requirements :adl)

 

:UCPOP

(:requirements :ucpop)

 

請注意並不是每個requirements規劃器都需要支持的,不同規劃器“特長”不同及其支持的語法也各有不同。

更爲詳細或具體的requirements可以去planning.wiki中查看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章