liegeneticreduct2.h

来自「某个实验事编写粗糙集智能信息处理的程序」· C头文件 代码 · 共 74 行

H
74
字号
#if !defined _LIE_GENETIC_REDUCT2
#define _LIE_GENETIC_REDUCT2
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// LieGeneticReduct1.h : header file
//
#include "..\table.h"
#include "liebitarray.h"
#include <list>
#include <vector>
/////////////////////////////////////////////////////////////////////////////

class CLieGeneticReduct2 : public CTable
{

typedef std::list<CLieBitArray> TABLE;	//差异矩阵
typedef std::vector<int> Permutation;	//染色体
typedef std::pair<Permutation,double> Chromosome_Fitness_Pair;
typedef std::vector< Chromosome_Fitness_Pair > Population;

public:
	CLieGeneticReduct2();           // protected constructor used by dynamic creation
	virtual ~CLieGeneticReduct2();

protected:
	bool InitTable(CString txtname);
	bool reduct();
	bool WriteFile(CString name);	//保存结果
protected:
	bool CreateMatrix();//创建可辨识矩阵
	void InitPopulation(int initnum);
	void PerformSelect();
	void PerformCrossOver();
	void PerformMutate();
protected:
	
	//变异,bitarray为染色体,probability为变异概率
	//交叉

	double ComputeFitness(const Permutation& pm );
	int RowsCoveredByReductInDescMatrix(const CLieBitArray &reduct);

	static bool pair_fitness_greater(const Chromosome_Fitness_Pair& a,const Chromosome_Fitness_Pair& b)
	{
		return a.second > b.second;
	}
	static bool pair_chromosome_greater(const Chromosome_Fitness_Pair& a,const Chromosome_Fitness_Pair& b)
	{
		return a.first > b.first;
	}
private: 
	TABLE m_matrix;
	double mutate_probability;
	double crossover_probability;
	//群体
	Population m_population;	
	int m_nPopNum;		//初始群体中个体个数
	int m_nMaxGen;		//进化代数

	Chromosome_Fitness_Pair OptimumChromosome;
public:
#ifdef _DEBUG
	void Output();
#endif //_DEBUG
};

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

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_LIEGENETICREDUCT1_H__304352A1_CBE7_11D5_A100_0080C8E21834__INCLUDED_)

⌨️ 快捷键说明

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