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

📄 es.h

📁 该进化算法的实现基于VC++6.0的开发平台
💻 H
字号:
#pragma once
#include ".\individual.h"
#include <vector>
#include <algorithm>
#include <functional>

using namespace std;

const double PI = 3.1415926;
const int pop = 40;  // 种群大小
const int NGEN = 40; // 执行1/5成功法则的代数


class ES
{
public:
	ES(void);
	~ES(void);	
    void Init(); // 初始种群
	void ReInit();
    double myRand(); // 产生-5.12到5.12之间的随机小数,保留5位小数

	double F(double x, double y, double z); // 适应度函数  
	void  sort_fval(vector<Individual>::iterator begin, vector<Individual>::iterator end);  // 种群中个体按适应度大小升序排列
	double _random(void);//产生0~1随机小数
	double N(double mu, double sigma); // 产生满足正态分布的随机数   
	void Mutation_twoPop(); // 变异算子,基于双种群
	void Mutation_Gauss();  // 变异算子,基于高斯分布
	void Mutation_Gauss_Cauchy(); // 变异算子,基于高斯分布和柯西分布
	void Mutation_Cauchy(); // 变异算子,基于柯西分布
	bool fit_x(double x);// 判断x是否满足要求

	void Selection();  // 选择算子
	void showPop();    // 输出种群的信息
	void evolution();  // 进化过程
	void fifthSuccessRule(); // 1/5成功法则
	double cauchy(double a, double b); // 产生满足柯西分布的随机数
	double RangeRand(); // 产生-10.24到10.24之间的随机小数


private:
	vector<Individual> vecInd; // 个体向量集合
	int g;    // 当前代数
	int Gen;  // 最大的迭代代数
	int popSize; // 种群大小
	double epsilon;// 精度
	int  nSucMut; //成功变异的次数
	double sigma; // 变异方差
	double chSigma; // 变异方差的变化

	
	
};

⌨️ 快捷键说明

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