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 + -
显示快捷键?