21

多年来我一直对Blackboard 模式感兴趣(尤其是在我学习 AI 的时候),但是我仍然无法在学术界之外找到一个很好的实现,尽管它似乎对当前的模式非常有用在软件开发的趋势中,我想不出任何围绕该模式构建的大框架。

这里有人知道与此模式相关的成功或失败故事吗?

注:其他链接

  • 外部链接 1
  • 外部链接 2

编辑:现在我想知道该模式是否可以用作可混搭生态系统的模式或类似的东西

编辑:在调查了更多之后,我发现了一篇有趣的论文,它提出像维基百科这样的东西是黑板,但它取决于人类作为代理。这只是让我意识到 StackOverflow 几乎是一个 Blackboard 系统,我们作为代理,分享我们关于板上未确定问题的专业知识......无论如何它是一些值得思考的食物。

4

5 回答 5

9

黑板模式适用于协作应用程序。除此之外,我倾向于认为这真的不是一个好主意。

黑板最终倾向于成为一大袋共享状态,创建各种有趣的访问模式。现代语言和技术都试图尽可能地封装和控制状态管理,而黑板则恰恰相反。

我发现它在算法中使用的时间通常是一个迹象,表明对要解决的问题没有正确的前期理解。所以“为了安全起见”,你为太多的演员提供了太多的状态。

我已经从两个应用程序中删除了这种模式,并用代表实际功能和数据需求的良好、可靠的界面取而代之,两次都取得了成功;)

于 2009-01-26T07:51:35.147 回答
8

我的观点是,当你有一组受约束的数据时,黑板模式会很好地工作,几个参与者可以并行处理,并且数据集应该在哪里进行细化和重新细化。它允许演员完全独立地编写,具有非常简单的界面,并且全部异步运行。

我们的系统就是一个很好的候选者。

我们的视觉系统有一些基本数据(图像),我们有许多算法可以从这些数据中产生新的数据。我们经常看到一种算法可以很好地利用其他算法产生的信息,但是我们共享这些信息的方式非常糟糕,因为通过 oo 系统中的消息进行的正常参数会很快使列表变得很大以进行处理。还有一个问题是,我们在过程后期发现的一些信息可以改进早期的猜测,但这样做需要更多的参数流水线。

不幸的是,这样的重构需要比我们目前拥有的更多的资源:(

于 2010-01-14T07:54:52.470 回答
6

看看元组空间及其实现。它从未产生过重大影响,但仍然是构建分布式应用程序的一种有趣方法。

于 2009-01-26T09:30:25.180 回答
3

这在 C4I 系统中很常见,其中许多更新状态的参与者是人,但有些是软件代理。

我还看到了 SCADA 系统中使用的元组空间,但通常不这样称呼,也没有过多强调软件代理方面。(虽然通常有一个简单的规则系统连接到监控空间)

于 2009-01-26T09:41:20.820 回答
0

Blackboard-Pattern 的一个稍微修改版本的示例由 Mojang 在 Minecraft 中实现。

像僵尸一样的实体,绵羊代表黑板。每个 PathfinderGoal 都是一个正在修改实体状态的知识源。

对于羊:如果高草在实体面前。// executeCheck -> 实体消耗草并增加羊毛的生长计数器 // executeAction

它稍作修改,因为实体可以访问所谓的 PathfinderGoalSelector,它是控制器。这个控制器有一个刻度方法(Minecraft 是基于刻度的 20 Ticks/s - 相当于循环方法)。主线程循环遍历每个实体,调用实体的tick方法。实体本身将其委托给 PathfinderGoalSelector。

于 2018-02-23T13:26:46.737 回答