⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aiexpert.h

📁 一个面向对象的产生式推理模型
💻 H
字号:
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "AiWffs.h"
#include "AiRule.h"
#include "AiFact.h"
const int ResultSingleCertitude = 10;
const int ResultSingleIncertitude = 11;
const int ResultMultiAllOk = 20;
const int ResultMultiNotAllOk = 21;
const int ResultMultiAllNotOk = 22;
#include "AiTree.h"
 
class AiExpert:public CWnd
{
	DECLARE_SERIAL(AiExpert)
public:
	AiExpert();
private:
	// 数据成员
	AiMention m_mention[MaxNum];  // AiMention*
	AiFact   m_fact[MaxNum];	// AiFact
	AiFact   m_factBS[MaxNum];	// AiFact ,before search;在搜索前已存在的事实
	CObList m_ruleList;			// AiRule
	CObList m_goalList;			// AiMt
	CObList temp;
	int m_numFact;
	int m_numMention;
	int m_numRule;
	int m_numGoal;
	int m_numAssert;
	CObList* pRunGoal;
	//
	/*
	AiFact (*pRunFact)[];
	CObList* pRunRule;
	*/
public:
	bool CheckResultStateIsAnyoneTrue();
	void SetIsMultiGoal(int isMulti);
	int GetIsMultiGoal();
	int m_IsMultiGoal;
	int SingleSearchForSelfCheck();
	int SuspectSearchForSelfCheck(AiMt mt,int* ruleExist,int numRule);
	int MoveRuleDownOneStep(int oldIndex);
	int MoveRuleUpOneStep(int oldIndex);
	int SelfCheckLikeAsk();
	int AddFactInSelfCheck(AiMt mt);
	int QueryWffsForSelfCheck(AiWffs wffs);
	int InsideSelfCheck(int* Leave,int Total,int Present);
	int SelfCheck();
	void SetAssertValueWithoutCheck(int id,int value);
	int GetGoalMtId(int index);
	int GetRuleMtId(int index);
	BOOL CheckAssertTorF(int id);
	void SetAssertQuestionMention(int id,CString Qstr);
	CString GetMtQuestionMention(AiMt mt);
	CString GetAssertQuestionMention(int id);
	void SetMention(int id,CString Astr,CString Qstr,CString Tstr,CString Fstr);
	void SetMention(int id,CString Qstr,CString Tstr,CString Fstr);
	void SetMtCannotUnknow(int id);
	void SetMtCanUnknow(int id);
	void SetAskFactFalse(int id);
	void SetAskFactTrue(int id);
	int m_mtCanUnknow[MaxNum];
	BOOL GetMtCanUnknow(AiMt mt);
	BOOL GetMtCanUnknow(int id);
	int GetFact(int id);
	void SetTreeCtrlNewStyle(long lStyleMask, BOOL bSetBits);
	void InsideAddBinaryTreeToTreeCtrl(AiTree * t, HTREEITEM hTreeItem);
	void AddBinaryTreeToTreeCtrl(AiTree* root,CTreeCtrl* treeCtrl);
	int GetMtNeedNotAsk(AiMt mt);
	int GetMtNeedNotAsk(int id);
	void SetMtNeedAsk(int index);
	void SetMtNeedAsk(AiMt mt);
	void SetMtNeedNotAsk(int index);
	void SetMtNeedNotAsk(AiMt mt);
	int m_NeedNotAsk[MaxNum];
	void DeleteGoal(int index);
	int GetNumGoal();
	AiMt* GetGoalAsMt(int index);
	CObList* GetExpertGoalObList();
	void DeleteRule(int index);
	void SetFactUnknow(int id);
	CString GetRuleString(int index);
	CString GetStringOfWffs(AiMt* mt);
	CString GetStringOfRuleAll(AiRule* rule);
	int GetNumRule();
	void SetAbbreviationMention(int id,CString abb);
	CString GetAbbreviationMention(int id);
	int SearchInsideBackwardWithAsk(AiMt aimMt,AiMt& unknowMt,int numRule,int* ruleExist); //返回值Fact T F U
	int SearchBackwardWithAsk(AiMt& unknowMt); //返回1:要询问
	
	int SearchInsideForTree(AiMt aimMt,AiTree** father);
	void SearchForTree();
	AiFact m_factBA[MaxNum];//by ask:询问所得的事实
	CString GetGoalString(int goal);
	CString GetGoalString();
	CStringArray m_abbreviation;
	CString GetESName();
	void SetESName(CString str);
	CString m_expertSystemName;
	CString GetAnswerString(int goal);
	CString GetAnswerString();
	BOOL StoreToFile(CString filename);
	BOOL LoadFromFile(CString filename);
	CString GetAssertMention(int id,int sign);
	AiTree* m_SearchTree;//根节点为“结果”二字
	BOOL AskOnlyOnce;
	void ResetData();
	BOOL IsAnswerTreeOK;
	void ShowTreeCtrlAnswer();
	void SetAnswerTreeCtrl(CTreeCtrl* treeCtrl);
	BOOL m_Actived[MaxNum];
	int CheckAndAskAssign(int id,int value);
	CTreeCtrl* m_TreeCtrl;
	int Search(int once = 1);
	int AskFact(AiMt mt);
	int SearchInsideBackward(AiMt aimMt,int numRule,int* ruleExist);
	int SearchBackward();
	int GetResultState();
	int CheckResultState();
	BOOL CheckMtTorF(AiMt mt);
	CString GetFactMention(AiMt mt);
	CString GetAssertMention(AiMt mt);
	int GetIdFact(int id);
	int QueryWffs(AiWffs wffs);
	int m_resultState;
	void InitForSearch();
	void SearchSingle();
	void AddGoal(AiMt mt);
	void AddRule(AiWffs wff,AiMt mt);
	int GetFact(AiMt mt);
	void SetFactFalse(int id);
	void SetFactTrue(int id);
	void AddFact(AiMt mt);
	void SetMention(int id,CString Tstr,CString Fstr);
	//
	int GetNumAssert();
	int GetNumMention();
	int GetNumFact();
	void SetNumAssert(int numA);
	void SetNumMention(int numM);
	void SetNumFact(int numF);
	void InitData();
	virtual void Serialize(CArchive& ar);
}; 

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -