摘要
本文旨在讲明:
1)时间,调度,资源
2)分层规划
3)非确定性问题规划
一、时间、调度、资源
经典规划能做:
1)做什么动作
2)按什么顺序做
不能做:
1)动作何时发生
2)持续多久
3)考虑资源约束
不同讨论时间,故而不能解决调度问题
不能讨论资源约束。
那么如何解决呢?
先规划,后调度。
把整个问题分解为一个规划阶段和一个接下来的调度阶段。
在规划阶段选动作,考虑次序约束,满足问题目标。
在调度阶段把时间信息加入到规划中以满足资源和期限约束。
1.2 车间调度问题
每个动作有一个持续时间,一组动作所要求的资源约束
解必须规定每个动作开始时间,必须满足时间次序约束+资源约束
假设代价函数是完工时间
1.2.1 忽略资源约束的时间调度问题:关键路径方法
穿过偏序规划图的一条路径从start开始,以finish结束。
关键路径是时间跨度最长的路径,延误关键路径上任一动作开始时间就会延长规划时间。
不在关键路径上的每个动作有个时间窗口,给出该动作最早可能开始时间ES和最晚可能开始时间LS。
——所有动作的ES和LS一起构成问题的调度。
1.2.2 有资源约束的时间调度问题
当引入资源约束的时候,同一个资源就不能重叠使用了。
二、分层规划(在更高抽象层次上规划)
层次化分解——为什么需要在更高抽象层次上规划?
答案:将一个任务分解为大量的单个行动;对于大规模问题,这完全是不切实际的
原语动作(PA,primitive action):不能再细化,具有标准的前提-效果模式。
高层动作(HLA,high level action):每个HLA有一个或多个可能的细化动作序列,其中每个动作可以是一个HLA或一个PA。
当一个HLA恰好有一个实现时,我们能够从该实现的前提和效果中计算出这个HLA的是前提和效果,然后这个HLA本身就可看做是一个原语动作。
当一个HLA有多个可能的实现时,有两种选项:1)搜索原语解:搜索一个可以工作的实现;2)搜索抽象解:直接推理,无须搜索实现
如何搜索原语解?
答案:反复在当前规划中选一个HLA,用它的细化替换它,直到规划达到目标。
对于一个非层次化的、每个状态有b个可用动作的前向状态空间规划器,代价为
O(bd)
O
(
b
d
)
。
对于一个HTN(层次任务网络)规划器,则复杂度要小些。
如何搜索抽象解?
如果得到的高层规划可证明能达到目标,那么这个高层规划就是抽象解。
三、非确定性问题的规划
用于无观察的环境中的无传感器规划(sensorless planning);
用于部分可观察的、 非确定性环境中的应急规划(contingency planning);
[ 用于未知环境中的在线规划(online planning)和重新规划(replanning)。]
四、总结
我觉得:好难。人工智能越到后面的章节,就越发困难,尤其是你前面基础没打好,你会发现一些概念非常难理解。
看来…还要下一番苦功。
五、文末诗词
凭仗清淮,分明到海,中有相思泪。
——苏轼《永遇乐·长忆别时》