liegeneticreduct1.h
来自「某个实验事编写粗糙集智能信息处理的程序」· C头文件 代码 · 共 74 行
H
74 行
#if !defined(AFX_LIEGENETICREDUCT1_H__304352A1_CBE7_11D5_A100_0080C8E21834__INCLUDED_)
#define AFX_LIEGENETICREDUCT1_H__304352A1_CBE7_11D5_A100_0080C8E21834__INCLUDED_
#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 CLieGeneticReduct1 : public CTable
{
typedef std::list<CLieBitArray> TABLE;
typedef std::pair<CLieBitArray,double> Chromosome_Fitness_Pair;
typedef std::vector< Chromosome_Fitness_Pair > Population;
public:
CLieGeneticReduct1(); // protected constructor used by dynamic creation
virtual ~CLieGeneticReduct1();
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 CLieBitArray &reduct);
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 + -
显示快捷键?