📄 sflalgorithm.h
字号:
#pragma once
class CSFLAlgorithm
{
struct individual /* 个体*/
{
unsigned *pChrom; /* 染色体 */
double dFitness; /* 个体适应度*/
double dVarible; /* 个体对应的变量值*/
int *utility; /* 特定数据指针变量 */
int iMemNum; /*属于哪个memeplexes group*/
int iSortNum; /*排序后的序列号*/
};
public:
CSFLAlgorithm(void);
~CSFLAlgorithm(void);
protected:
//种群数据的指针
individual* pPop;
//种群大小
int iPopSize;
//每个memeplexes大小
int iMemiEachSize;
//memeplexes的数量
int iMemNum;
//number of shuffling iterations
int iShuIterations;
//number of generations for each memeplex before shuffling
int iGenEachMem;
int iLchrom; /* 染色体长度*/
int iChromSize; /* 存储一染色体所需字节数 */
/* 随机数发生器使用的静态变量 */
double oldrand[55];
int jrand;
double rndx2;
int rndcalcflag;
void advance_random();
int flip(float);
int rnd(int, int);
void randomize();
double randomnormaldeviate();
float randomperc();
float rndreal(float,float);
void warmup_random(float);
// 初始化种群中个体染色体重1出现的概率
float fInitPop;
public:
int iGlobalBestIndex;
//随机化个体的染色体
void RndIndividual(struct individual *);
//改变的frog的位置
void ChangeFrogPos(int,int);
//一个SFL过程
void SFL();
//对种群进行排序
void Sort();
//对个体进行评估,计算适应值
void objfunc(struct individual *);
// 设置种群大小
void SetPopSize(int iVar);
// 设置memeplexes的大小
void SetMemEachSize(int iVar);
// 设置ShuIterations的大小
void SetShuIterations(int iVar);
// 设置GenEachMem的大小
void SetGenEachMem(int iVar);
//设置染色体的长度
void SetLchrom(int iVar);
void initialize(); /* 遗传算法初始化 */
void initmalloc(); /*为全局数据变量分配空间 */
//初始化种群
void initpop();
//进行优化
void Run();
// 设置出示种群个体中染色体中1出现的概率
void SetInitPop(float fVar);
//获得优化的结果
double GetResult();
// 产生计算结果报告
void Report(void);
// 设置的数量
void SetMemNum(int iVar);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -