?? genetic.h
字號:
// Genetic.h: interface for the CGenetic class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GENETIC_H__72C36058_C073_487F_BD99_D8BD4A59EFF0__INCLUDED_)
#define AFX_GENETIC_H__72C36058_C073_487F_BD99_D8BD4A59EFF0__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include"definition.h"
typedef struct mychrom{
double chrom[MAXVARNO];
double fitness;//適應度
}CHROM;
#include "BpNet.h"
////////張純禹 2001年 chunyu79@hotmail.com
class CGenetic
{
public:
bool IsStoped;
double dblAngle;
CHROM best;
Mm mData,mResult;
double dblDifference;//差異〉改值的染色體視為不同
double dblCre;//適應度>改值的染色體符合條件
int iBestNum;//符合條件的染色體數目
CBpNet * bpnet;
//double (* obj_fun)();
double CalFitness(CHROM chrome);//計算適應度函數
long gen;//當前進化代數
void setscope(double scope[MAXVARNO][2],int iNo);//設置染色體取值范圍
double randxy(double x,double y);//產生x,y之間的隨機數
void statistic(CHROM pop[]);
CHROM bestchrom[MAXBESTNUM];//最優染色體
bool begin();//主函數
void generation();//一次進化
int rselect();//輪盤賭選擇
CHROM newpop[POPSIZE];//種群
CHROM oldpop[POPSIZE];//種群
double pmutation;//變異概率
double pcross;//交叉概率
long maxgen;//最大進化代數
int iVarNo;//染色體數目
double sumfitness;
CGenetic();
virtual ~CGenetic();
private:
double angle(CHROM ch1,CHROM ch2);
bool IsNew(CHROM ch);//判斷是否為符合條件的新染色體
double difference(CHROM ch1,CHROM ch2);//量個染色體之間的差異,用以區別
bool identify(CHROM chrome);//驗證是否為合法的染色體
double varminmax[MAXVARNO][2];
void init();//初始化,設置初始染色體
void mutation(CHROM *chrome);//對新染色體進行變異
bool flip(double possibility);//測試
//交叉操作,iPlace指明新染色體位置
void cross(CHROM chrom1,CHROM chrom2,int iPlace);
bool IsSetScope;
};
#endif // !defined(AFX_GENETIC_H__72C36058_C073_487F_BD99_D8BD4A59EFF0__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -