我们假设有一个交易系统,客户提出要买的东西,卖家提供要买的东西,如果有符合的,就成交。这是一个很简单的系统,用一般程序语言也可以实现,但是我们看看专家系统开发更简单的方法。
1第一条规则
如果来了新的客户,取得这个客户所有需要的商品,并产生新的事实。
(defrule query-buyer
?fact <- (new-buyer ?buyer) ; if there is a new a buyer...
=>
(retract ?fact)
(foreach ?i (nth$ 2 (send ?buyer "GetProducts"))
(assert (requires ?buyer ?i)) ; get the products the buyer requires
; and for each one create a fact
; associating the buyer and the product
)
)
例如,来了一个客户Danny,我们先assert(new-buyer danny) ,jess发现了这条事实后,触发query-buyer这个规则,注意所有的规则之间没有顺序性。query-buyer这条规则先撤销刚才的事实,避免死循环,然后调用一个函数取得用户所有需要的商品Send ?buyer "GetProducts".例如得到的结果是(Computer Keyboard Mouse),然后规则遍历这个结果集,每一个商品都产生一个新的事实,例如assert requires Danny Computer等等。
2 第二个规则,出现一个新卖家,原理和刚才一样
(defrule query-seller
?fact <- (new-seller ?seller) ; if there is a new seller...
=>
(retract ?fact)
(foreach ?i (nth$ 2 (send ?seller "GetProducts"))
(assert (provides ?seller ?i)) ; get the products the seller provides
; and for each one create a fact
; associating the seller and the product
)
)
3 最后一个是交易的规则
当有买家购买一个商品,卖家卖一个商品,并且两者相同的事实时候,告诉卖家有人要买该物品,同时也告诉买家有卖家投递该物品
(defrule match-buyer-and-seller
(requires ?buyer ?product1) ; the buyer requires product1
(provides ?seller ?product2) ; the seller provides product2
(test (eq ?product1 ?product2)) ; product1 and product2 are the same
=>
(send ?seller "Order" ?product2) ; order from the seller
(send ?buyer "Delivery" ?product1) ; deliver to the buyer
)
从这个规则中,我们看到,实现这样一个交易市场的系统,没有任何遍历所有买家和卖家进行比较的操作。这些匹配是JESS自动模式匹配完成的,大大简化了开发。
使用专家系统,我们可以通过定义规则的方式来积累经验,而不是通过If else这样的代码来积累经验。
分享到:
相关推荐
### JESS简介与实例教程 #### 一、JESS概述 **JESS**(Java Expert System Shell)是一款基于Java平台的规则引擎,它为开发者提供了强大的逻辑编程能力,尤其适用于构建专家系统。作为CLIPS(C Language ...
jess(Java Expert System Shell)是一个在Java平台上实现的专家系统外壳,它为开发和运行专家系统提供了便利。 **jess7.0版本特性** jess7.0是jess的一个重要版本,主要特点包括: 1. **多语言支持**:由于基于...
"专家系统开发与Jess技术" Jess是Java Expert System Shell的缩写,基于Java语言开发的专家系统外壳,由美国Sandia国家实验室分布式系统计算组成员Ernest J. Friedman-Hill在1995年开发出来,以CLIPS专家系统外壳...
总之,《Jess in Action》这本书不仅是一个实用的工具书,它还是一个能够引导读者了解和掌握基于Java的专家系统开发的绝佳教程。通过学习Jess,开发者将能够利用规则引擎的强大功能,为各种问题提供智能化的解决方案...
Jess专家系统常用于以下领域: - 决策支持系统:根据业务规则进行复杂决策。 - 数据分析:通过规则对大量数据进行挖掘和分析。 - 自动化:在软件中实现自动化逻辑,如错误检测和修复。 - 人工智能:在AI项目中作为...
基于java的专家系统开发工具,Jess简介:Jess是一个用Java编写的专家系统开发平台,由美国Sandia国家实验室分布式系统计算组成员ErnestJ.FriedmanHill在1995年开发出来,以...
Jess7.1是一款基于Java语言的传统专家系统开发工具包,专为构建和运行知识型应用程序而设计。专家系统是一种人工智能应用,它模仿人类专家的决策过程来解决复杂问题。这个工具包提供了丰富的功能,使开发者能够高效...
### 基于JESS的BS模式交互式专家系统外壳的设计与实现 #### 一、引言 随着互联网技术的迅速发展,专家系统的应用范围日益扩大。为了更好地满足实际需求,专家系统的部署方式也在不断进化。传统的命令行界面虽然...
JESS 7.1 P2是该系统的更新版本,它移除了原有的限制,提供了更多的功能和优化,以满足更广泛的业务需求。 **1. 规则系统** 规则系统是一种人工智能技术,它通过一组规则来模拟人类决策过程。这些规则由条件(IF...
《基于JESS的BS模式交互式专家系统外壳的设计与实现》 专家系统是人工智能领域的一个重要分支,它利用人类专家的知识和经验,通过计算机程序来解决复杂问题。JESS(Java Expert System Shell)是一种广泛使用的规则...
4. **操作系统要求**:Jess 可在 Windows、Linux 和 Solaris 等多种操作系统上运行。 **使用 Jess 前的基础知识** 1. **Java 基础**:用户应具备基本的 Java 知识,了解如何运行 Java 应用、配置 CLASSPATH 以及...
首先介绍专家系统推理框架Jess 的知识表示、基本组成、工作原理和开发环境,然后以人工智能经典游戏难题———野 人传教士过河问题为例,用Jess 实现了问题描述、知识抽取、结构定义、应用程序实现,进一步探索利用Jess...
Jess是“Java Expert System shell”的缩写,它是基于Java平台的规则引擎,专门用于开发专家系统。Jess本身是CLIPS(C语言版本的专家系统开发工具)的超集,并且以增强型Rete算法作为基础,支持正向推理和反向推理。...
jess.jar jess.jar jess.jarjess.jar jess.jar jess.jar jess.jar jess.jar jess.jar
**Jess** 是一种专门用于开发专家系统的编程语言,它基于 **Java** 平台,利用规则引擎技术来实现复杂问题的解决。本文章将从多个角度对 Jess 的核心特性、应用领域以及其实现机制进行详细阐述。 ##### 一、什么是 ...
Jess(Java Expert System Shell)是一种基于Java的规则引擎,用于构建和执行专家系统,也就是基于知识的系统,它们模仿人类专家的决策过程。这类系统广泛应用于复杂数据的推理、决策支持和自动化问题解决,例如在...
除此之外,现代的编程语言如Python、Java也提供了构建专家系统的能力,通过框架和库如PyCLIPS、JESS等。 专家系统的应用广泛,包括医疗诊断、工程设计、金融分析等领域。例如,在医疗领域,专家系统可以根据病人的...
10. **开发环境与工具**:介绍常用的专家系统开发工具,如CLIPS、Prolog、Java Expert System Shell (JESS)等,以及如何使用它们构建和调试系统。 通过北京科技大学的这门专家系统课程,学生不仅能够掌握理论知识,...