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

📄 skowron.h

📁 某个实验事编写粗糙集智能信息处理的程序
💻 H
字号:
 // Skowron.h: interface for the CSkowron class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SKOWRON_H__B2B08801_0034_11D4_9208_0080C8E21834__INCLUDED_)
#define AFX_SKOWRON_H__B2B08801_0034_11D4_9208_0080C8E21834__INCLUDED_


#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000



class CSkowron// skowron算法的原代码
{
public:
	struct CutRecord
	{
		int iColumn;
		int iCuts;
		char** cpCut;
		CutRecord* p;
	};
    struct Attnum
	{
		int attribute;
		int num;
	};
	struct Point		//表示属性组合
	{
		int attribute;
		Point* p;
	};

	struct Defaultrules			//最终的规则
	{
		int serial;				//规则的序号
		int* rule;			//规则的属性值和决策值
		float reliability;		//可信度
		int totalnum;			//规则条件属性覆盖的总样本数
		int coveragenum;		//规则覆盖的样本数
		Defaultrules* p;
	};

	struct Blockrules	//封锁事实
	{
		int* rule;				//规则的属性值
		int serial;             //封锁规则的序号
		Blockrules* p;			//block的规则号
	};

	struct Rules		//对矩阵中每一行所产生的规则的表示
	{
		int* rule;
		Rules* p;
	};

	struct Cutline//可辨识矩阵相异属性集的集合
	{
		int x;//x,y坐标
		int y;
		Cutline* p;
	};

	struct Cuttree//?
	{
		int* cut;
		Cuttree* p;
	};

	struct Defaultline
	{
		Attnum* line;
		Defaultline* p;
	};

	struct Conflictline//冲突样例
	{
		int* m_Conflict;
		Conflictline* p;
	};

	struct Cell				//矩阵中的每一格,即一个单元
	{
		int nattribute;		//不同的属性值个数
		int serial;
		int* m_p;
	};

	struct Object
	{	
		int m_iSerial;			//序号
		int* m_pRec;			//记录表(包括决策值)
		int count;				//重复个数
		Object* p;				//指向结构Object的指针
	};

public:
	bool Judge_core(int i, int j, Cell** m_Matrix, int *del_core);
	//判断矩阵i行j列元素是否为核属性,用叶东毅的方法,del_core为已经删除的属性
	void compute_coreAtt(int *del,int* &core);
	void compute_totalnum_coveragenum(Rules *m_pr, int n, Defaultrules *&m_pd);
	double CountCut();
	int abtcount;//约简的属性和
	int *abt;//约简属性的列号
	char** pAttName;
	char** pDataType;
	BOOL bCuts;
	struct CutRecord* struCutRecord;
	void SaveFile(LPCTSTR lpszPathName);
	int cutline;
	int block;
	int serial;
	int rulenum;//规则的个数
	int callnum;//递归的层数
	Blockrules* m_pBlockrules;
	Defaultrules* m_pDefaultrules;
	
	Cuttree* m_Cuttree;
	Cuttree* m_Cuttree1;

	Defaultrules* m_pd1;
	Defaultrules* m_pd2;
	Defaultrules* m_pd3;
	
	Blockrules* m_pb1;
	Blockrules* m_pb2;
	Blockrules* m_pb3;

	Defaultrules* m_pTempDefault;
	Blockrules* m_pTempBlock;
	
//	Point* m_pPoint;
	Rules* m_pRules;

	Cell** pMatrix;
	int iMatrixLine;			//除去冲突后的分类数
	int* piConflict;			//记录决策表中的冲突情况
	int iAttNum;				//条件属性个数
	int iRecordNum;				//记录条数
	int** pIntTable;
	Object* pSheet;
	int iClassNum;				//根据条件属性和决策属性得到的分类数
	float fAlpha;
//	int cut;			//阈值
	bool T;//为1表示为标准skownon算法;为0表示自主式学习算法
	
	CSkowron();
	virtual ~CSkowron();

	BOOL SkowronArithmetic();
	void RulesJudge(int n,int cut,int* m_pCut,int* m_Conlfict);
	void Projection(Cell** m_Matrix,int* m_pConflict,int cut,int* tempcut);
	void DefaultRule(Cell* m_pRecord,Point* m_pPoint,bool T);
	BOOL CreateMatrix();
	BOOL FindConflict();
	BOOL InitTable();//*
	void ChangeString();//输出规则前用断点代表的连续值替换离散值
	BOOL SetDataType(FILE *fp, int count);
	BOOL SetAttName(FILE* fp, int count);//设置属性名称
	BOOL SetStringTable(FILE* fp, int column, int row);//以字符串的形式读入决策表数据
	BOOL OpenFile(LPCTSTR lpszPathName);
	char cStyle[10];
    int iStage;
    BOOL SetIntegerTable(int column,int row);
    BOOL SetCutResult(FILE* fp);
	int iStringRow;
	int iStringCol;
    char*** pStringTable;
    void DeleteContents(); 
};

#endif // !defined(AFX_SKOWRON_H__B2B08801_0034_11D4_9208_0080C8E21834__INCLUDED_)

⌨️ 快捷键说明

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