动物识别系统.docx

上传人:hw****26 文档编号:3086464 上传时间:2019-05-20 格式:DOCX 页数:20 大小:173.91KB
下载 相关 举报
动物识别系统.docx_第1页
第1页 / 共20页
动物识别系统.docx_第2页
第2页 / 共20页
动物识别系统.docx_第3页
第3页 / 共20页
动物识别系统.docx_第4页
第4页 / 共20页
动物识别系统.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、学 生 实 验 报 告实 验 课 名 称: 人工智能实验项目名称: 产生式系统实验专 业 名 称: 计算机科学与技术班 级: 2012240201学 号: 12学 生 姓 名: 雷彬教 师 姓 名: 陈亮亮2014 年 12 月 10 日实验日期: 2012 年 12 月 10 日 实验室名称 : 明远 2202 一实验名称:产生式系统实验二实验目的与要求:1、确定推理方法(正向还是反向) ,并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)2、规则库要求至少包含 15 条规则3、初始事实可以任意给定,输入初始事实后能够得到推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不

2、考虑知识库管理模块6、提交实验报告7、报告中要有推理树三实验内容:动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识,共 15 条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。四算法描述:动物识别的 15 条规则:规则 1:如果:动物有毛发 则:该动物是哺乳动物 规则 2:如果:动物能产奶 则:该单位是哺乳动物 规则 3: 如果:该动物有羽毛 则:该动物是鸟规则 4:如果:动物会飞,且会下蛋 则:该动物是鸟 规则 5:如果:动物吃肉 则:该动物是肉食动物 规则 6:如果:动物有犬齿,且有爪,且眼盯前方

3、 则:该动物是食肉动物 规则 7:如果:动物是哺乳动物,且有蹄 则:该动物是有蹄动物 规则 8:如果:动物是哺乳动物,且是反刍动物 则:该动物是有蹄动物 规则 9:如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点 则:该动物是豹 规则 10:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹 则:该动物是虎 规则 11: 如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类 则:该动物是长颈鹿 规则 12: 如果:动物有黑条纹,且是有蹄类动物 则:该动物是斑马 规则 13: 如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞 则:该动物是鸵鸟 规则 14: 如果:动物

4、是鸟,且不会飞,且会游泳,且是黑色的 则:该动物是企鹅 规则 15: 如果:动物是鸟,且善飞 则 :该动物是信天翁 首先给定初始事实,将初始事实放入动态数组中,并用初始事实与 15 条规则进行匹配,如果规则匹配成功,将规则的后件存入数组中,再用数组中所有的元素与规则进行匹配,满足即加入数组,直到匹配出动物。如果给定初始事实能推出多种动物,按照数组中条件的先后顺序,顺序循环匹配规则,先匹配出哪种动物就显示该动物。五源程序:/ MFC_AnimalDlg.cpp : 实现文件#include “stdafx.h“#include “MFC_Animal.h“#include “MFC_Animal

5、Dlg.h“#include “afxdialogex.h“#ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 对话框数据enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 实现protected:DECLARE_MESSAGE_MAP();CAboutDl

6、g:CAboutDlg() : CDialogEx(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()/ CMFC_AnimalDlg 对话框CMFC_AnimalDlg:CMFC_AnimalDlg(CWnd* pParent /*=NULL*/): CDialogEx(CMFC_AnimalDlg:IDD, pParent)m_hIcon = A

7、fxGetApp()-LoadIcon(IDR_MAINFRAME);void CMFC_AnimalDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);DDX_Control(pDX, IDC_COMBO1, m_point1);DDX_Control(pDX, IDC_COMBO4, m_point2);DDX_Control(pDX, IDC_COMBO5, m_point3);DDX_Control(pDX, IDC_COMBO6, m_point4);DDX_Control(pDX, IDC_COMB

8、O7, m_point5);DDX_Control(pDX, IDC_COMBO8, m_point6);DDX_Control(pDX, IDC_COMBO9, m_point7);BEGIN_MESSAGE_MAP(CMFC_AnimalDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON2, / 将“关于.”菜单项添加到系统菜单中。/ IDM_ABOUTBOX 必须在系统命令范围内。ASSERT(IDM_ABOUTBOX ASSERT(IDM_ABOUTBOX

9、 AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE); / 设置大图标SetIcon(m_hIcon, FALSE); / 设置小图标/ TODO: 在此添加额外的初始化代码m_point1.SetCurSel(0);/设置组合框的默认值为第一项 m_point2.SetCurSel(0);m_point3.SetCurSel(0);m_point4.Set

10、CurSel(0);m_point5.SetCurSel(0);m_point6.SetCurSel(0);m_point7.SetCurSel(0);return TRUE; / 除非将焦点设置到控件,否则返回 TRUEvoid CMFC_AnimalDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID dlgAbout.DoModal();elseCDialogEx:OnSysCommand(nID, lParam);/ 如果向对话框添加最小化按钮,则需要下面的代码/ 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,/ 这将由框架自动完

11、成。void CMFC_AnimalDlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(int x = (rect.Width() - cxIcon + 1)

12、 / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/当用户拖动最小化窗口时系统调用此函数取得光标/显示。HCURSOR CMFC_AnimalDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CMFC_AnimalDlg:OnClickedButton2()/ TODO: 在此添加控件通知处理程序代码(CListBox*)GetDlgItem(IDC_LIST1)-ResetCont

13、ent();int i,j,n;int flag = 1;bool check=true;CString msg;CString point7;CString Fact10;int k=-1;m_point1.GetWindowText(point0); m_point2.GetWindowText(point1); m_point3.GetWindowText(point2); m_point4.GetWindowText(point3); m_point5.GetWindowText(point4); m_point6.GetWindowText(point5); m_point7.Get

14、WindowText(point6); for(i=0;iInsertString(k,pointi);for(i=0;iInsertString(k+1,msg);k+;Factk = msg;if(Factk!=“哺乳动物“) /R2for(i=0;iInsertString(k+1,msg);k+;Factk = msg;/ Sleep(1000);for(i=0;iInsertString(k+1,msg);k+;Factk = msg;n=0;if(Factk!=“鸟“) /R4for(i=0;iInsertString(k+1,msg);k+;Factk = msg;for(i=0;iInsertString(k+1,msg);k+;Factk = msg;n=0;if(Factk!=“食肉动物“) /R6for(i=0;i=k;i+)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。