1规划问题定义(PDDL)为一个搜索问题
状态表示为流fluent的合取,流是基元的(无变量的)、无函数的原子。且不是否定式
动作用动作模式描述,隐式描述ACTIONS(s)和RESULT(s, a)
PDDL根据什么发生了变化来描述一个动作的结果;
不提及保持不变的东西。
动作的前提和效果都是文字(原子语句或原子语句的否定)的合取。
前提定义了动作能被执行的状态,效果定义了执行这个动作的结果.
为所有的变量代入值得到基元动作。
ACTIONS(s):一个动作a能在状态s被执行,如果s蕴涵了a的前提.用形式符号表达即为◼(a∈ACTIONS(s)) s╞ PRECOND(a),
用集合语义表达即s╞ q当且仅当q中的正文字都在s中,且q中的负文字都不在s中。
如果状态s满足前提,称在状态s动作a是适用的.
RESULT(s,a):在状态s执行动作a的结果定义为状态s’,它由一组流fluent表示,这组流由s开始,去掉在动作效果中以负文字出现的流(称为删除列表delete list或DEL(a)),并增加在动作效果中以正文字出现的流(称为增加列表add list或ADD(a):
s’=RESULT(s,a) = (s–DEL(a))∪ADD(a)
初始状态是基元原子的合取(对于所有状态,使用封闭世界假设,即任何没有提到的原子都是假的)
目标就像前件是可含有变量的文字(正文字或负文字)的合取。变量是存在量化的
目标测试:测试当前状态是否蕴含目标
2.前向(前进)状态空间搜索:从初始状态开始搜索状态空间,寻找一个目标.容易探索到无关动作;其次规划问题经常有大的状态空间,从而需要精确的启发式。选择适用的动作
3.后向(后退)相关状态搜索:从目标开始,向后应用动作,直到找到达到初始状态的步骤序列.只考虑与目标(或当前状态)相关的动作(导致当前目标状态的规划中可以作为最后一个步骤的那些动作)。给定一个基元目标描述g和一个基元动作a,从g经a回退得到状态描述g′,定义为
g′ = (g − ADD(a)) ∪ Precond(a)
动作的效果(或者为正,或者为负)之一必须与目标的一个元素一致。
动作必须不能具有任何否定目标的某个元素的效果(正或负)。
o 如果目标是A∧B∧C,一个动作的效果是 A∧B∧非C,那么它不是相关的.
3.规划的启发式:启发式函数h(s)估计从状态到目标距离.获得可采纳的启发式(可定义松弛问题),增加边或者合并结点:
1忽略前提启发式(增加边/松弛前提)
(1)丢弃动作中的所有前提,在每个状态每个动作都适用,而且任何单个目标流能够一步获得(如果存在一个适用动作——否则,问题是不可能解的)
(2)选择性地忽略动作的前提
2忽略删除列表(增加边/松弛效果)
假设所有目标和前提只含有正文字.从所有动作中去掉删除列表(效果中的负文字)得到松弛版本。这使得没有动作会抵消另一个动作的效果;
3忽略一些流(合并结点/抽象状态)。
定义启发式的关键思想是分解decomposition:
将一个问题分成多个部分,独立地解决每个部分,再组合各部分.
目标是一组流G,将其划分为不相交的子集G1,…,Gn,然后找到各子目标的解规划P1,…,Pn,
则maxi COST(Pi)是可采纳的;
当确定Gi和Gj相互独立的时候,如果Pi的效果不改变Pj的所有前提和目标,那么估计值COST(Pi)+COST(Pj)是 可采纳的
4从规划图获得启发式及提取规划
一个规划图组织成有层次的有向图:首先是初始状态层 S0,由在S0成立的每个流结点组成;然后是层A0, 由在S0适用的每个基元动作结点组成;然后是交叠的层次Si, Ai…直到达到终止条件(直到连续两层S是一模一样的为止,这时规划图达到了稳定level off).规划图只能用于命题规划问题(没有变量的规划问题)
5.规划图中的互斥:如果下列三个条件之一成立,则在给定层次的两个动作间的互斥关系成立:
不一致效果:一个动作的效果否定另一个动作的效果。
冲突:一个动作的效果否定另一个动作的前提。
竞争需要:一个动作的前提之一与另一个动作的一个前提互斥。
如果一个文字是另一个文字的负,或者如果得到这两个文字的每对可能的动作是互斥的,(条件称为非一致性支持)则这同一层的两个文字之间的互斥关系成立。
从规划图获得单个目标文字的估计代价:从状态s获得任何目标文字gi的代价为gi在从初始状态s开始构建出的规划图中首次出现的层(称为gi的层次代价)。
从规划图获得合取目标的估计代价:
法1最大层max-level启发式简单取任何目标的最大层次代价.可采纳的
法2层次和level sum启发式遵守子目标独立性假设,返回目标的层次代价之和.可能不是可采纳的
法3集合层次set-level启发式找到合取目标中的所有文字出现在规划图中的层次,这一层没有任何一对目标文字是互斥的。
6如何从规划图提取一个规划 :
GRAPHPLAN算法反复地用EXPAND-GRAPH 向规划图增加一层。一旦所有目标在图中出现,没有互斥,GRAPHPLAN就调用EXTRACTSOLUTION搜索解决问题的规划。
扩展出规划图后用EXTRACTSOLUTION找到解,构想为一个布尔约束满足问题(CSP),其中变量是在每一层的动作,每个变量的值是“在规划之内”或“在 规划之外”,约束是互斥以及需要满足每个目标和前提