📄 aiexpert.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 + -