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

📄 gapop1.h

📁 用vc编的实数编码的遗传算法
💻 H
字号:
// gapop1.h: interface for the gapop1 class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GAPOP1_H__4E8E6F67_9068_41FA_A431_57A0B97832E7__INCLUDED_)
#define AFX_GAPOP1_H__4E8E6F67_9068_41FA_A431_57A0B97832E7__INCLUDED_

#include "gareal.h"

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

struct gaopt
{
	int opt1;
	int	opt2;
};

class gapop1  
{
public:
	void settestf(int fn){testf=fn;}
	void (*pobj1)(gareal &ga1);
	void setpobj1(void (*pf)){pobj1=(void (*)(gareal &ga1))pf;}
	void (*pobj)(gareal *ga1,int n);
	void setpobj(void (*pf)){pobj=(void (*)(gareal *ga1,int n))pf;}
	int nrun(int w);
	void repoprun();
	void rlast();
	void wlast();
	void avigen();
	gareal& newinv();
	void newinv(gareal & g1);
	void objfunc(gareal *ga1,int n);
	int compare(gareal&g1,gareal * pg,int n);
	int compare(gareal & g1,gareal & g2);
	int compare(gareal *g1, gareal *g2);
	void realtobin(double vh,double vl,double v,int n,char *cbin);
	double bintoreal(double vh,double vl,int n,char* cbin);
	void sgapop();
//	void popcopy(gareal &p1,gareal &p2);
	void output();
	void poprun();
//	void mutation(double p1,double& r1);
	double gauss(int n);
	double mutation(double p1, double hb,double lb);
	void mutation(gareal& p1, gareal& r1);
	void mutation(gareal& p1,int mi, gareal& r1);
	void mutation(gareal& p1);
	void cross(double p1,double p2, double& r1,double& r2);
	void cross(gareal& p1, gareal& p2, gareal& r1, gareal& r2);
	void cross(gareal& p1, gareal& p2);
//	double fitnessfunc();
	void objfunc(gareal & ga1);
	void init();
	void init1();
	void initpop(int pops,int maxg,double pc,double pm,int grn,double *hb,double *lb);
    void initpop(int pops,int maxg,double pc,double pm,int grn,double hb,double lb);
	void initgareal(int grn,double *hb,double *lb);
	void initgareal(int grn,double hb,double lb);
	void Pophlb(double *hb1,double *lb1);
	void Pophlb(double hb1,double lb1);
	double Poplb(int n);
	void Poplb(int n,double lb1);
	double Pophb(int n);
	void Pophb(int n,double hb1);
	int Garealn();
	void Garealn(int grn);
	double poprand();
	void poprandn(int n,int ns,int *popn);
	void popsort(double *s1,int n,int *r1);
	void popsort(int n,int *s1);
	int Bestgen();
	int Popsize();
	void Popsize(int pops);
    int Maxgen();
	void Maxgen(int mgn);
	int Curgen();
	void Curgen(int cgn);
    double Pcross();
	void Pcross(double pc);
    double Pmutation();
	void Pmutation(double pm);
	gaopt getcrossopt() {return crossopt;}
	gaopt getmutopt(){return mutopt;}
	void setcrossopt(gaopt copt);
    void setmutopt(gaopt mopt);
	void setcrossopt(int t1,int t2);
	void setmutopt(int t1,int t2);
	gapop1();
    gapop1(int pops,int maxg,double pc,double pm,int grn,double *hb,double *lb);
    gapop1(int pops,int maxg,double pc,double pm,int grn,double hb,double lb);
    gapop1(int pops,int maxg,double pc,double pm);
	virtual ~gapop1();
    gareal bestgareal,curbestgareal,avigareal;
	long   na;
	int objopt1;
private:
	double pcross,pmutation; //交叉率,变异率
	gaopt crossopt,mutopt;
	double	maxfit,minfit; //最佳适应值,平均适应值,最小适应值
	int ncross,nmutation; //交叉对数,变异个数
	double *pophb,*poplb; //变量上下限
	int garealn;//个体的变量个数
	int popsize,curgen,maxgen,bestgen; //种群数,当前代数,最大代数,最佳代
	gareal *garealpop;//
	int testf;
//	int *nc,*nm;//
};

#endif // !defined(AFX_GAPOP1_H__4E8E6F67_9068_41FA_A431_57A0B97832E7__INCLUDED_)

⌨️ 快捷键说明

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