人工智能 一种现代方法 第11章 现实世界的规划与行动


本文旨在讲明:
1)时间,调度,资源
2)分层规划
3)非确定性问题规划

时间、调度和资源

经典规划能做:
1)做什么动作
2)按什么顺序做
不能做:
1)动作何时发生
2)持续多久
3)考虑资源约束
经典规划不能讨论时间,故而不能解决调度问题,也不能讨论资源约束

那么如何解决呢?
先规划,后调度。

  • 做什么动作 规划阶段
  • 按什么顺序做 规划阶段
  • 动作何时发生 调度阶段
  • 持续多久 调度阶段
  • 考虑资源约束 调度阶段

把整个问题分解为一个规划阶段和一个接下来的调度阶段。在规划阶段选动作,考虑次序约束,满足问题目标。在调度阶段把时间信息加入到规划中以满足资源和期限约束

车间调度问题

问题描述:

  • 每个动作有一个持续时间(duration)和一组动作所要求的资源约束
  • 解必须规定每个动作的开始时间,而且必须满足时间次序约束和资源约束
  • 假设代价函数是完工时间(从开始到结束时间长)
  • 用数量表示资源——例如Inspectors(2)表示两个检查器
忽略资源约束的时间调度问题:关键路径方法

穿过偏序规划图的一条路径从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有多个可能的实现时,有两种选项:
    1)搜索原语解:搜索一个可以工作的实现;
    2)搜索抽象解:直接推理,无须搜索实现

高层规划是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))

有两个动作模式:从颜料罐去掉盖子,使用打开的罐子中的颜料涂抹对象。允许前提和效果包含不属于动作变量列表中的变量(因为这是在部分可观察的情况下;在完全可观察的情形下,这是不允许的)

  • Action(RemoveLid(can),
    PRECOND: Can(can)
    EFFECT: Open(can))
  • Action(Paint(x,can),
    PRECOND: Object(x)∧ Can(can)
    ∧Color(can,c) ∧ Open(can)
    EFFECT: Color(x,c))

Agent需要一个使对象(每次一个)进入到视线里的动作模式:
Action(LookAt(x),
PRECOND: InView(y) ∧ (x≠y)
EFFECT: InView(x) ∧¬InView(y))

为了求解部分可观察问题,Agent实际行动时,它的传感器将提供感知信息,但当它进行规划时,它将需要它的传感器模型。第4章中,这个模型是由一个函数给定的,PERCEPT(s)。对于规划,我们用感知模式(percept schema)来扩展PDDL:

  • Percept(Color(x,c),
    PRECOND: Object(x) ∧ InView(x))
  • Percept(Color(can,c),
    PRECOND: Can(can) ∧ InView(can) ∧ Open(can))

对于一个完全可观察的环境,对于每个流(fluent)我们将有一个没有前提的感知模式。
另一方面,一个无传感器的Agent根本没有感知模式。

无传感器规划

应急规划

资源分享

实验代码下载:
https://github.com/yyl424525/AI_Homework
人工智能-一种现代方法中文第三版pdf、课件、作业及解答、课后习题答案、实验代码和报告、历年考博题下载:https://download.csdn.net/download/yyl424525/11310392

猜你喜欢

转载自blog.csdn.net/yyl424525/article/details/95309722