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

📄 genetic.h

📁 前几天给大家共享了一个基本的遗传算法VC++原代码
💻 H
字号:
#pragma once

#define MAX_LENGTH          8     //染色体的最大长度,变量的个数;
#define POPULATION_SIZE     50     //最大的种群数;
#define LARGE_SCALE         true
#define SMALL_SCALE         false
 
//***********************************************************
//         一个简单的遗传算法求解函数极值的例子:可以优化任意多个变量,通过设定MAX_LENGTH长度即可。
//
//                             --李志强  2005.3 于国防大学模拟中心
//
//                              LL741106@sohu.com
//***********************************************************

struct Individual            //个体采用十进制编码;
{	
	double DNA[MAX_LENGTH];  // DNA:染色体

	double Fitness;          //  适应度
};



class Genetic
{
//**************************变量:
private:
	double Pmutation;                      //变异概率
	double Pcross;                         //交叉概率

	double  VarMinMax[MAX_LENGTH][2];      //变量的取值范围

public:

	Individual  Population[ POPULATION_SIZE ];  //当前种群
    Individual  BestIndividual;                 //最佳个体;
    double SumFitness ;                         //种群的适应度总和
	double AverageFitness;                      //种群的平均适应度;



//******************************函数:
private:
    
    bool test(double possibility);                 //测试概率;
    double CalFitness(Individual *pIndividual);    //计算某个体的适应度;
    int select(void);                              //轮盘选择;
    double randxy(double x, double y);             //产生X,Y之间的随机数;
    void mutation(Individual *pIndividual,bool Scale);  //对某个个体进行变异操作;
    void cross(Individual *pParent1,Individual *pParent2,Individual *pChild1,Individual *pChild2);
	                                                //对两个个体进行交叉操作;

public:
	 Genetic(void);
	~Genetic(void);

   
	void SetMutation(double mutation);            //设置变异概率;
	void SetCross(double cross);                  //设置交叉概率	
	double setvarscope(double scope[][2]);        //设置要编码变量的取值范围;
	void init(void);                              //初始化种群;  
	void statistic(Individual *pIndividual);      //进行个体的统计;                                           
    void RunGeneration();                         //主函数:进行一次进化计算;
};

⌨️ 快捷键说明

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