我需要编写一个专家系统来帮助用户选择最好的手机运营商。它应该非常简单,而不是基于诸如 CLISP 或 JESS 之类的语言/库。所以我需要从头开始写。
您是否知道一些解释如何做到这一点的书籍或在线教程?我真正需要了解的是如何表示知识和事实。
任何帮助将非常感激。
我需要编写一个专家系统来帮助用户选择最好的手机运营商。它应该非常简单,而不是基于诸如 CLISP 或 JESS 之类的语言/库。所以我需要从头开始写。
您是否知道一些解释如何做到这一点的书籍或在线教程?我真正需要了解的是如何表示知识和事实。
任何帮助将非常感激。
如果你有任何关于人工智能的好文章,会有一个关于专家系统的部分;如果被迫,您可以从那里解决并实施您自己的。
基本思想非常简单:您有一组“if-then”形式的规则,代表推理或4 含义。比如,例如:
IF blood temperature > 41°C
THEN patient.has-fever := TRUE
IF patient has wet-sounding breathing
THEN patient.has-pneumonia
IF patient.has-fever AND patient.has-pneumonia
THEN CONCLUDE bacterial pneumonia. ACTION prescribe Augmentin
换句话说,你有一堆规则,你评估规则直到你得出结论。您可以在相当不错的Wikipedia文章中阅读更多内容(前向或后向链接等)。
我很困惑为什么你不能使用现有的规则引擎——对于大多数语言来说,有很多规则引擎通常在相当自由的许可下。除非这是家庭作业问题或其他问题,否则这确实是一条更简单的路线。
Prolog 非常适合编写基于规则的系统(专家系统开发的一种非常标准的方法)。P# 编译为 C#,可以满足您的需求 - 而且它是免费的。
有关P# 的更多信息。
PROLOG语言的基本原理和数学证明应该可以帮助您理解您需要解决的大多数概念,如果不能提供您需要用来实现它的最终语言。
我找不到原始实现的链接,但无论如何它对您没有多大帮助。Alain Colmerauer 在逻辑编程方面的早期工作应该会有所帮助。
[编辑]对不起,重复...
我会投票支持 Prolog 或 CLIPS 的一些实现,这取决于后向或前向链接逻辑是否最适合该问题。与其重新实现其中任何一个,不如花时间研究如何将它们与您的环境集成。
Jess 是一个不错的选择,但您应该首先阅读“Jess in action”一书。