资源简介

用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


评论

共有 条评论