資源簡介
用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++
評論
共有 條評論