资源简介
用C语言编写的基于神经网络的专家系统代码
代码片段和文件信息
// ExpertSystem.cpp : Defines the entry point for the console application.
//模拟一个专家系统,由外提供规则库,自行生成事实库(文件)和解释系统(输出);
//人机交互方式
#include “stdafx.h“
#include “Stack.h“
#include
#include
#include
#include
#include
#include
#include
using namespace std;
double reason(char conclusion[]vector &rules
Stack &rulenumberStack &jielundouble gailv[]ofstream &factvector &xuliehaoint &size);
double combination(double orarray[]int c);//求并集
double min(double andarr[]int size);//求交集
void charToDouble(vector &rulesdouble gailv[]);//将读到的字符串转化为DOUBLE型
void interpretation(char outfile[]);//解释系统
void main()
{
int i;
int j;
int kp;
int findnumber;//用于保存查找的位置
bool mark;
int goalnumber=0;
/////////////////读取规则库(前提是规则文件是正确的)////////////////////////
vector rules;//引入容器类模板
vector xuliehao;
Stack rulenumber;//存放压入规则栈的规则号
Stack jielun;//存放压入规则栈的结论
rulenumber.MakeEmpty();
jielun.MakeEmpty();
//////////////////////////////////////////////////////////////////
//打开文件读取
char outfile[20]=“shishiku.txt“;
char filename[20];
cout<<“请输入规则库文件名:“;
cin>>filename;
ifstream ku(filenameios::in);
if(!ku){
cerr<<“file can not open“< exit(1);
}
string rule;//用于读取文件中的字符串
while(ku>>rule){
rules.push_back(rule);//将文件中的字符串压入容器类中
xuliehao.push_back(rule);
}
int size=rules.size();//规则类的长度
double *gailv=new double[size/2];//用于存放规则的概率
///////////////////////////////////////////////////////////////
//建立事实数据库
ofstream fact(outfileios::out);
if(!fact){
cerr<<“file can not open“< exit(1);
}
fact<
/////////////////////////////////////////////////////////////////
//test
//for(i=0;i //cout<
char* conclusion=new char[size/2];//存放结论的动态数组
char* ptr;//指针
bool in;//用于判断
int * number=new int [size/2];//用于判断最终目标即结论
int *finalGoalNumber=new int [size/2];//总目标对应的规则号
double *result=new double[size/2];
int jishu;
double finalResult;
int *pass=new int [size/2];
if(rules.empty()||(size%2!=0))
cout<<“规则库不完备“< else{
for(i=0;i number[i]=0;//初始化数组
for(i=0j=0;i ptr=rules[i].begin();//字符串的起始指针
findnumber=rules[i].find(“→“);//用于查找结论在字符串里的位置
conclusion[j]=*(ptr+findnumber+2);//将结论存入数组里
rules[i].erase(findnumber);//将“→”和结论从数组中删去
findnumber=rules[i].find(“∧“);
while(findnumber!=string::npos){
rules[i].replace(findnumber2““);//将“∧”从数组中删去
findnumber=rules[i].find(“∧“);
}
findnumber=rules[i].find(“:“);
while(findnumber!=string::npos){
rules[i].replace(0findnumber+1““);//将规则序列号从数组中删去
findnumber=rules[i].find(“:“);
}
findnumber=rules[i+1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 912 2005-01-11 10:09 基于神经网络方法的专家系统源代码\shishiku.txt
文件 1351 2004-12-28 09:06 基于神经网络方法的专家系统源代码\Stack.h
文件 4662 2004-12-27 11:37 基于神经网络方法的专家系统源代码\ExpertSystem.dsp
文件 667 2004-12-27 09:55 基于神经网络方法的专家系统源代码\StdAfx.h
文件 299 2004-12-27 09:55 基于神经网络方法的专家系统源代码\StdAfx.cpp
文件 1244 2004-12-27 09:55 基于神经网络方法的专家系统源代码\ReadMe.txt
文件 549 2004-12-27 09:55 基于神经网络方法的专家系统源代码\ExpertSystem.dsw
文件 50176 2005-01-13 14:58 基于神经网络方法的专家系统源代码\ExpertSystem.ncb
文件 258 2005-01-11 08:41 基于神经网络方法的专家系统源代码\ExpertSystem.plg
文件 149 2004-12-30 09:09 基于神经网络方法的专家系统源代码\rules.txt
文件 11743 2005-01-11 08:38 基于神经网络方法的专家系统源代码\ExpertSystem.cpp
文件 81920 2005-01-13 14:58 基于神经网络方法的专家系统源代码\ExpertSystem.opt
目录 0 2005-03-31 13:21 基于神经网络方法的专家系统源代码\Debug
目录 0 2005-03-31 13:21 基于神经网络方法的专家系统源代码
----------- --------- ---------- ----- ----
154148 15
- 上一篇:C语言 华容道源代码
- 下一篇:图书信息管理系统设计源代码C++
相关资源
- C语言动物识别专家系统
- BP神经网络VC++实现
- prolog动物识别专家系统
- C++实现的BP神经网络算法实现奇偶检验
- vc6.0编写的SOM神经网络聚类
- C语言编写的神经网络程序(可直接运
- 2个简单的专家系统源代码
- 非常简单的专家系统源码
- 遗传算法和BP人工神经网络算法C++实现
- vc++编写的som自组织神经网络的源程序
- 神经网络BP算法程序-C语言
- 林业专家系统
- c语言实现人工神经网络Bp算法源代码
- 人工智能专家系统C语言
- 基于神经网络的文字识别系统VC++源代
- 卷积神经网络lenet-5的c++实现
- CPN人工神经网络源码
- 卷积神经网络简单实现C++
- Back-propagation Neural NetBP神经网络算法实
评论
共有 条评论