人工智能动物识别系统JAVA.docx
《人工智能动物识别系统JAVA.docx》由会员分享,可在线阅读,更多相关《人工智能动物识别系统JAVA.docx(13页珍藏版)》请在冰豆网上搜索。
![人工智能动物识别系统JAVA.docx](https://file1.bdocx.com/fileroot1/2023-2/6/baf91098-da96-4de8-9895-a167f13dc2a1/baf91098-da96-4de8-9895-a167f13dc2a11.gif)
人工智能动物识别系统JAVA
实验报告
课程名称人工智能与专家系统实验名称动物分类专家系统设计
系别电子信息科学学院专业班级指导教师
学号____________姓名____________实验日期实验成绩___________
一、实验目的
1、加深明白得专家系统的结构原理与实际应用。
2、初步把握知识获取的大体方式。
3、把握产生式规那么知识表示方式及其编程实现方式。
4、初步把握知识库的组建方式。
5、加深明白得推理机的算法原理并初步把握其编程实现方式。
二、实验环境
1、硬件环境:
微机
2、编程语言不限
三、实验原理
一个基于规那么专家系统的完整结构示于图1。
其中,知识库、推理机和工作存储器是组成专家系统的核心。
系统的要紧部份是知识库和推理引擎。
知识库由谓词演算事实和有关讨论主题的规那么组成。
推理引擎由所有操纵知识库来演绎用户要求的信息的进程组成-如消解、前向链或反向链。
用户接口可能包括某种自然语言处置系统,它许诺用户用一个有限的自然语言形式与系统交互;也可能用带有菜单的图形接口界面。
说明子系统分析被系统执行的推理结构,并把它说明给用户。
推理机
解释器
工作存储器
知识库
外部程序
用户界面
开发界面
用户
知识工程师
图1一个基于规那么专家系统的完整结构
三、实验内容
运用以下规那么,设计并实现一个小型动物分类专家系统。
规那么1:
若是:
动物有毛发
则:
该动物是哺乳动物
规那么2:
若是:
动物有奶
则:
该单位是哺乳动物
规那么3:
若是:
该动物有羽毛
则:
该动物是鸟
规那么4:
若是:
动物会飞,且会下蛋
则:
该动物是鸟
规那么5:
若是:
动物吃肉
则:
该动物是肉食动物
规那么6:
若是:
动物有犬齿,且有爪,且眼盯前方
则:
该动物是食肉动物
规那么7:
若是:
动物是哺乳动物,且有蹄
则:
该动物是有蹄动物
规那么8:
若是:
动物是哺乳动物,且是反刍动物
则:
该动物是有蹄动物
规那么9:
若是:
动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点
则:
该动物是豹
规那么10:
若是:
若是:
动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹
则:
该动物是虎
规那么11:
若是:
动物有暗斑点,且有长腿,且有长脖子,且是有蹄类
则:
该动物是长颈鹿
规那么12:
若是:
动物有黑条纹,且是有蹄类动物
则:
该动物是斑马
规那么13:
若是:
动物有长腿,且有长脖子,且是黑色的,且是鸟,且可不能飞
则:
该动物是鸵鸟
规那么14:
若是:
动物是鸟,且可不能飞,且会游泳,且是黑色的
则:
该动物是企鹅
规那么15:
若是:
动物是鸟,且善飞
则:
该动物是信天翁
利用上述15条规那么,可区分7种动物。
(2)推理机设计:
采纳正向推理。
(3)实验代码
packagetx;
import.*;
import.*;
publicclassRZSextendsJFrameimplementsActionListener{
privatestaticJPaneljp=newJPanel();
privateJLabeljl1=newJLabel("请选择条件:
");
staticCheckbox[]Checkbox=
etBounds(30,30+i*50,200,26);
}
for(inti=5;i<=10;i++)
{
(Checkbox[i]);
Checkbox[i].setBounds(230,30+(i-5)*50,200,26);
}
for(inti=10;i<=14;i++)
{
(Checkbox[i]);
Checkbox[i].setBounds(430,30+(i-10)*50,200,26);
}
(but1);
(30,280,100,30);
(but2);
(150,280,100,30);
(jl2);
(30,330,200,30);
(jl3);
(30,380,200,30);
(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
etState()==true||Checkbox[1].getState()==true)
&&(Checkbox[4].getState()==true||Checkbox[5].getState()==true)
&&(Checkbox[8].getState()==true))
("豹");
elseif((Checkbox[0].getState()==true||Checkbox[1].getState()==true)
&&(Checkbox[4].getState()==true||Checkbox[5].getState()==true)
&&(Checkbox[9].getState()==true))
("虎");
elseif((Checkbox[0].getState()==true||Checkbox[1].getState()==true)
&&(Checkbox[6].getState()==true||Checkbox[7].getState()==true)
&&(Checkbox[10].getState()==true))
("长颈鹿");
elseif((Checkbox[0].getState()==true||Checkbox[1].getState()==true)
&&(Checkbox[6].getState()==true||Checkbox[7].getState()==true)
&&(Checkbox[11].getState()==true))
("斑马");
elseif((Checkbox[2].getState()==true)&&(Checkbox[12].getState()==true))
("鸵鸟");
elseif((Checkbox[2].getState()==true||Checkbox[3].getState()==true)
&&(Checkbox[13].getState()==true))
("企鹅");
elseif((Checkbox[2].getState()==true||Checkbox[3].getState()==true)
&&(Checkbox[14].getState()==true))
("信天翁");
else("条件不足或出错,请重新勾选条件");
}
});
(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
etState(false);
}
}
});
(lblImage);
(630,30,300,400);
(jp);
("动物识别系统");
(100,100,1000,500);
(true);
}
publicvoidactionPerformed(ActionEvente){
;
import.*;
publicclassRZSextendsJFrameimplementsActionListener{
privatestaticJPaneljp=newJPanel();
privateJLabeljl1=newJLabel("请选择条件:
");
staticCheckbox[]Checkbox=
{newCheckbox("有毛发"),
newCheckbox("有奶"),
newCheckbox("有羽毛"),
newCheckbox("会飞,且生蛋"),
newCheckbox("吃肉"),
newCheckbox("有犬齿,且有爪,且眼盯前方"),
newCheckbox("有蹄"),
newCheckbox("反刍动物"),
newCheckbox("黄褐色有暗斑点"),
newCheckbox("黄褐色有黑条纹"),
newCheckbox("暗斑点,长腿,长脖子"),
newCheckbox("黑条纹"),
newCheckbox("长腿,长脖子,黑色,可不能飞"),
newCheckbox("可不能飞,会游泳,黑色的"),
newCheckbox("善飞")
};
staticJButtonbut1=newJButton("确信");
staticJButtonbut2=newJButton("重置");
staticJLabellblImage=newJLabel(newImageIcon("E:
\\照片\\"));
privateJLabeljl2=newJLabel("推出结果:
");
privateJLabeljl3=newJLabel("");
publicRZS()
{
(null);
(jl1);
(30,0,200,30);
for(inti=0;i<=5;i++)
{
(Checkbox[i]);
Checkbox[i].setBounds(30,30+i*50,200,26);
}
for(inti=5;i<=10;i++)
{
(Checkbox[i]);
Checkbox[i].setBounds(230,30+(i-5)*50,200,26);
}
for(inti=10;i<=14;i++)
{
(Checkbox[i]);
Checkbox[i].setBounds(430,30+(i-10)*50,200,26);
}
(but1);
(30,280,100,30);
(but2);
(150,280,100,30);
(jl2);
(30,330,200,30);
(jl3);
(30,380,200,30);
(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
etState()==true||Checkbox[1].getState()==true)
&&(Checkbox[4].getState()==true||Checkbox[5].getState()==true)
&&(Checkbox[8].getState()==true))
etState()==false,不然选择两种动物以上会犯错,可是我懒,没改。
("豹");
elseif((Checkbox[0].getState()==true||Checkbox[1].getState()==true)
&&(Checkbox[4].getState()==true||Checkbox[5].getState()==true)
&&(Checkbox[9].getState()==true))
("虎");
elseif((Checkbox[0].getState()==true||Checkbox[1].getState()==true)
&&(Checkbox[6].getState()==true||Checkbox[7].getState()==true)
&&(Checkbox[10].getState()==true))
("长颈鹿");
elseif((Checkbox[0].getState()==true||Checkbox[1].getState()==true)
&&(Checkbox[6].getState()==true||Checkbox[7].getState()==true)
&&(Checkbox[11].getState()==true))
("斑马");
elseif((Checkbox[2].getState()==true)&&(Checkbox[12].getState()==true))
("鸵鸟");
elseif((Checkbox[2].getState()==true||Checkbox[3].getState()==true)
&&(Checkbox[13].getState()==true))
("企鹅");
elseif((Checkbox[2].getState()==true||Checkbox[3].getState()==true)
&&(Checkbox[14].getState()==true))
("信天翁");
else("条件不足或出错,请重新勾选条件");
}
});
(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
etState(false);
}
}
});
(lblImage);
(630,30,300,400);
(jp);
("动物识别系统");
(100,100,1000,500);
(true);
}
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
}
publicstaticvoidmain(String[]args){
newRZS();
}
}
(3)实验结果
例图1:
老虎
例图2:
鸵鸟
例图3:
条件不足
例图4:
重置
四、实验小结:
(内容如下:
1.简述系统各模块设计思想。
2.总结(能够含错误分析、体会总结、编程心得等)
)
上交报告时,请删去上述红字。