人工智能—产生式系统(专家系统)

产生式系统

概念

产生式系统(production system)是指认知心理学程序表征系统的一种。为解决某一问题或完成某一作业而按一定层次联结组成的认知规则系统。

原理

产生式系统由规则库、推理机、综合数据库,控制程序四部分组成。其中,规则库里面存储大量的知识,综合数据库则是储存事实,综合数据库通过推理机根据规则库里面的知识,由控制程序的控制下完成推理,若是推出中间结果,则把中间结果放到综合数据库中,继续重新推理,直到推理出最终结果或推理失败,程序结束。

例子

下面我们就以交通工具识别系统为例,用java编写。
规则库:
R1:it_is(车),postive(体型小),postive(有轮子);
R2:it_is(飞机),postive(体型大),postive(流线型);
R3:it_is(飞机),postive(天上飞的);
R4:it_is(船),postive(水上游的);
R5:it_is(车),postive(地上跑的);
R6:trto_is(轮船),it_is(船),postive(体型大),postive(冒黑烟);
R7:trto_is(航天飞机),it_is(飞机),postive(有机翼);
R8:trto_is(直升机),it_is(飞机),postive(有螺旋桨);
R9:trto_is(汽车),it_is(车),postive(四个轮);
R10:trto_is(两轮车),it_is(车),postive(两个轮);
代码:
MainGui.java
该类为主界面类,调用GuiFrame类(自定义的类,代码在后面)显示主窗口。

package chanshengsi01;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class MainGUI {
   

	public static void main(String[] args) {
   
		GuiFrame g=new GuiFrame("交通工具识别");//主窗口
	}

}

GuiFrame.java
该类主要实现主界面的布局,以及两个按钮的监听器。点击匹配按钮会调用Brain(自定义的类,代码在后面)类的identify函数,来根据输入到综合数据库的事实去匹配结果。点击查看规则按钮会调用GuiRules(自定义的类,代码在后面)显示出规则库里面的知识。

package chanshengsi01;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class GuiFrame extends JFrame {
   
	JButton button;//匹配按钮
	JButton button1;//查看规则按钮
	JLabel label;//标题标签
	JLabel label_result;//结果标签
	JTextField textField1;//输入框1
	JTextField textField2;//输入框2
	JTextField textField3;//输入框3
	JTextField textField4;//输入框4
	Container contentPane;

	public GuiFrame(String title) {
   
		super(title);
		this.setSize(330, 350);
		this.setLocation(350, 150);
		this.setDefaultLookAndFeelDecorated(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		button = new JButton("匹配");
		button.setBounds(60, 168, 75, 30);
		button1 = new JButton("查看规则");
		button1.setBounds(150, 168, 100, 30);
		label = new JLabel("设置事实:");
		label.setBounds(120, 2, 90, 50);
		label_result = new JLabel("最终结果是:");
		label_result.setBounds(60, 210, 200, 20);
		textField1 = new JTextField(16);
		textField1.setBounds(55, 40, 200, 23);
		textField2 = new JTextField(16);
		textField2.setBounds(55, 72, 200, 23);
		textField3 = new JTextField(16);
		textField3.setBounds(55, 104, 200, 23);
		textField4 = new JTextField(16);
		textField4.setBounds(55, 136, 200, 23);
		contentPane = this.getContentPane();
		contentPane.setLayout(null);

		// 添加控件
		contentPane.add(label);
		contentPane.add(textField1);
		contentPane.add(textField2);
		contentPane.add(textField3);
		contentPane.add(textField4)
  • 19
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值