2009年4月22日星期三

黑板模式及其实现

对于Blackboard模式,看完前面的介绍还是有点迷糊,书中一开始就提到了几个现实问题,例如图像,语音识别,这类问题当前虽有多种解决方案,但是 这些方案并不是非常成熟,也没有非常好的算法来实现。书中解释了为什么用人工智能和专家系统来解决这类问题的局限性,不过这段没怎么看懂。

黑板模式的思想是,有一系列独立的模块,或者说是方案,这些方案能解决部分问题的一部分,这些方案进行协作,使得问题问题能够最终解决。这就像一群人在一块 黑板前,共同解决一个问题,根据当前问题解决的程度和状态,不同的人上前到黑板上解决他所能解决的部分,这样经过多人的协作,最终能够将问题解决。这就是 黑板模式这个名字的来历。这里有个问题,就是根据当前的解决状态,下一个由谁上前去解决,是由个人决定的,因为个人知道该谁上前去,那么在软件中,前面提 到了,有多个方案,这些方案能解决问题的一部分,就相当于单个的人,那么当前由哪个方案去解决,由谁来调度,书中提出,黑板模式中有一个仲裁组件 (moderator component),它根据当前的状态来调度有哪个模块去解决。

关于黑板模式的实现,书中提到,将黑板模式的实 现分为三个主要的组件:Blackboard,Knowledge Source和Control。Blackboard可以看作一个容器,它存储数据,包括控制数据,状态数据等等。Blackboard为这些数据提供了 读写接口使得Knowledge Source可以访问它们;Knowledge Source的职责是评估自身的能力以及适合自身执行的环境和前提条件,因此Knowledge Source也可以分为两个小部分,一个是condition part,用于评估当前的状态,通俗的说就是对于某个问题,当前解决了多少,得到了什么中间结果,当前需要解决什么问题,这些条件是不是满足自身的触发条 件以使得自身可以运行,另一个是action part,用于执行相应的操作,得到相应的结果,同时也要保证Blackboard更新最新的结果;Control的职责是监视Blackboard的变 化,决定下一步的动作,它调度Knowledge Source评估当前的状态以决定下一步动作,这里有个策略的问题,可能遇到两种困难的情况:一种是根据当前的状态,找不到一个匹配的Knowledge Source来处理;另一种情况是当前的状态可以有多个Knowledge Source匹配。这里需要有一个策略以处理上两种情况。

最后要注意的一个问题是何时停止的问题,也就是出口,因为书中提到Control是一个loop,不停地查询Blackboard的数据和状态以调度,如果 这样下去就是一个死循环了,需要一个出口,得到什么结果时停止。这也是有Control控制的。下图说明三个组件的关系:

没有评论:

发表评论