经典规划能做:
1)做什么动作
2)按什么顺序做
不能做:
1)动作何时发生
2)持续多久
3)考虑资源约束
经典规划不能讨论时间,故而不能解决调度问题,也不能讨论资源约束。
那么如何解决呢?
先规划,后调度。
把整个问题分解为一个规划阶段和一个接下来的调度阶段。在规划阶段选动作,考虑次序约束,满足问题目标。在调度阶段把时间信息加入到规划中以满足资源和期限约束。
问题描述:
穿过偏序规划图的一条路径从start开始,以finish结束。
关键路径是时间跨度最长的路径,延误关键路径上任一动作开始时间就会延长规划时间。
不在关键路径上的每个动作有个时间窗口,给出该动作最早可能开始时间ES和最晚可能开始时间LS,定义为[ES,LS]。
所有动作的ES和LS一起构成问题的调度。
LS-ES被称作动作的松弛。关键路径上的每个动作没有松弛。
下面的公式可以作为ES和LS的定义以及计算它们的动态规划算法的轮廓(给定一个动作的偏序,寻找最小调度持续时间,最小化完工时间)。A和B是动作,A≺B表示动作A在B之前:
\begin{aligned}
& ES(Start) = 0 \\
&ES(B) = max_{A \prec B } {ES(A)+ Duration(A)} \\
&LS(Finish) = ES(Finish) \\
& LS(A) = min_{B \succ A}{LS(B) - Duration(A)} \\
\end{aligned}
其中,ES(B)为那些直接前驱动作最早完成时间的最大值。
这个过程重复进行,直到每个动作被赋予一个ES值。
当引入资源约束的时候,同一个资源就不能重叠使用了。
层次化分解——为什么需要在更高抽象层次上规划?
答案:将一个任务分解为大量的单个行动;对于大规模问题,这完全是不切实际的
原语动作(PA,primitive action):不能再细化,具有标准的前提-效果模式
高层动作(HLA,high level action):每个HLA有一个或多个可能的细化动作序列,其中每个动作可以是一个HLA或一个PA。
一个只包含原语动作的HLA的细化被称为该HLA的实现 。
HLA可能恰好只有一个实现;也可能有多个可能的实现:
高层规划是HLA序列,高层规划的实现是该HLA序列中每个HLA的实现的拼接。
答案:反复在当前规划中选一个HLA,用它的细化替换它,直到规划达到目标。
对于一个非层次化的、每个状态有b个可用动作的前向状态空间规划器,代价为O(b^d)。
对于一个HTN (层次任务网络)规划器,假设一个一般的细化结构:每个非原语动作有r个可能的细化,每个细化有k个动作。如果在原语层有d个动作,那么在根下方的层数是$log_kd$
,因此内部细化结点数是$1+k+k^2+...+k^{log_k{d-1}}=(d-1)/(k-1)$
。每个内部结点有r个可能的细化,因此可构建出$r^{(d-1)/(k-1)} $
可能的分解树。小r和大k可以导致大量的节省。
如果得到的高层规划可证明能达到目标,那么这个高层规划就是抽象解。那么我们可以致力于这个规划,对这个规划的每一步进行细化。这样,搜索得到指数量级的缩减。
每个声明能达到目标的高层规划是在“它至少有一个实现能达到目标”的意义上能达到目标。这个特性被称为是HLA描述的向下细化特性。
可到达集:给定一个状态s,一个HLA的到达集h记为REACH(s,h),是这个HLA的任一实现可到达的状态集合。
在高层规划中搜索,找出一个高层规划其可到达集与目标相交。
HLA的效果
当HLA只有恰好一个实现时,我们能够从该实现的前提和效果中计算出这个HLA的(前提和)效果(习题11.3)
很多情况下一个HLA可能有无限多的实现,我们只能对效果进行近似,从而可能产生任意摇摆不定的可到达集
一个HLA动作h使用两种近似:
乐观描述(optimistic description)$REACH^+ (s,h)$
可能夸大可到达集
悲观描述(pessimistic description) $REACH^-(s,h)$
可能低估可到达集。
REACH^-( s , h ) \subseteq REACH( s , h ) \subseteq REACH^+( s , h )
精确描述下如何进行目标测试?(判断一个规划能否能够达到目标)
在精确描述下,一个规划或者工作(其可到达集与目标相交)或者不工作(其可到达集与目标不相交) 。
近似描述下如何进行目标测试?
如果悲观可到达集与目标集相交,那么这个规划是能够工作的,即必定有解。
如果乐观可到达集与目标集不相交,那么这个规划是不能够工作的。
在近似描述下有中间状态:如果乐观集与目标相交,但悲观集与目标不相交,那么我们不能确定规划是否工作。当出现这种情况,怎么办?
当出现这种情况,通过进一步细化规划可以消除这种不确定性。
用于无观察的环境中的无传感器规划(sensorless planning);
用于部分可观察的、 非确定性环境中的应急规划(contingency planning);
用于未知环境中的在线规划(online planning)和重新规划(replanning)。
涂色问题
考虑这个问题:给定一把椅子和一张桌子,目标是对其进行匹配——有相同颜色。初始状态我们有两罐颜料,但颜料和家具的颜色未知。只有桌子开始时在Agent的视眼内:
Init(Object(Table)∧Object(Chair)∧Can(C 1 ) ∧Can(C 2 ) ∧InView(Table))
Goal(Color(Chair,c) ∧Color(Table,c))
有两个动作模式:从颜料罐去掉盖子,使用打开的罐子中的颜料涂抹对象。允许前提和效果包含不属于动作变量列表中的变量(因为这是在部分可观察的情况下;在完全可观察的情形下,这是不允许的)
Agent需要一个使对象(每次一个)进入到视线里的动作模式:
Action(LookAt(x),
PRECOND: InView(y) ∧ (x≠y)
EFFECT: InView(x) ∧¬InView(y))
为了求解部分可观察问题,Agent实际行动时,它的传感器将提供感知信息,但当它进行规划时,它将需要它的传感器模型。第4章中,这个模型是由一个函数给定的,PERCEPT(s)。对于规划,我们用感知模式(percept schema)来扩展PDDL:
对于一个完全可观察的环境,对于每个流(fluent)我们将有一个没有前提的感知模式。
另一方面,一个无传感器的Agent根本没有感知模式。
实验代码下载:
https://github.com/yyl424525/AI_Homework
人工智能-一种现代方法中文第三版pdf、课件、作业及解答、课后习题答案、实验代码和报告、历年考博题下载:https://download.csdn.net/download/yyl424525/11310392