编写程序的专家系统?

时间:2009-11-23 03:46:28

标签: parallel-processing expert-system

我正在集思广益,开发一种高级软件来操纵矩阵代数方程,准确地说是张量操作,使用几个标准来生成优化的C ++代码,例如尺寸大小,系统上的可用内存等等。

在精神上与张量收缩引擎TCE相似的东西,但是专门用于生成优化而不是通用代码。 期望的最终结果是在我的域中生成并行程序的专家软件。

  • 这种发展是否属于专家系统的范畴?
  • 在给定约束条件的情况下,其他哪些项目在生成代码的同一区域工作?

3 个答案:

答案 0 :(得分:1)

它不会被称为专家系统,至少不是传统意义上的这个概念。

专家系统是基于规则的推理引擎,有问题的专业知识明确地包含在规则中。您建议的系统虽然可能在各种线性代数模型中封装了关于问题域性质的洞察力,但它更像是一个黑盒而不是专家系统。专家系统的一个特点是它们可以产生对其推理的“解释”,这种特征可能部分是因为知识表示在形式化时仍然接近自然语言中的简单陈述;对它们的矩阵和运算虽然可能是在对现实进行类似观察的基础上得出的,但却不那么透明......

从问题中的描述中不清楚您建议的系统是否会优化现有代码(可能在有限的域中),或者是否会生成优化代码,在这种情况下驱动托架的某些外部目标/功能......

答案 1 :(得分:1)

您所描述的内容更像是特定于域的语言。

http://en.wikipedia.org/wiki/Domain-specific_language

答案 2 :(得分:0)

井生产系统(规则系统)是计算的四种通用方法之一(图灵机,教会递归函数,后期制作系统和马尔可夫算法[还有一些已被添加到该列表中])或多或少有这些各自的实现:命令式编程,函数式编程,基于规则的编程 - 据我所知,Markov算法没有独立的实现。这些都是图灵的等价物。

因此,基于规则的编程可以用来编写任何东西。早期的数学/符号操作程序通常使用基于规则的编程,直到问题得到充分理解(因此,方法被改为命令式或约束式编程 - 参见MACSYMA - 嗯,MACSYMA是用Lisp编写的,所以也许我有一个不同的程序或者他们最初在Lisp中为此实现了一个规则系统。)

您可以轻松编写规则系统来执行矩阵操作。您可以根据逻辑支持来保持跟踪,以记录对解决方案有所贡献的实际规则(某些规则可能不会直接对解决方案做出贡献)。然后,对于每个规则,您都有一组映射到一组C ++指令(这些指令不必是“完整的” - 它们更像是一个半可执行的要求),它们作为中间语言输出。然后由解析器读取它以将其链接到所需的输入数据以及所需的任何类型的修复。您可能会发现生成功能代码更容易 - 在修复之后,您可以更轻松地优化功能源中的输出代码。

话虽如此,其他贡献者已经概述了领域特定的语言方法,这也是TED人员所做的事情(我的建议也就是使用规则)。