亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? genetic1.cpp.txt

?? 用vc來(lái)實(shí)現(xiàn)遺傳算法
?? TXT
字號(hào):
//頭文件:		Genetic.hpp
//目的:			為遺傳算法提供基類,該基類將評(píng)價(jià)函數(shù)值直接作為適合度,采用
//				新個(gè)體直接替換老個(gè)體的整體再生法
//語(yǔ)言:			VC++ 6.0
//注意:			EvalVal(INDIVIDUAL&)應(yīng)由用戶類覆蓋,以提供正確的評(píng)價(jià)函數(shù).
//////////////////////////////////////////////////////////////////////

#include <stdlib.h>
#include "Genetic.hpp"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Genetic::Genetic()
{
	IndNumber = 0;
	GeneLen = 0;
	Elitism = ELITISM;
	Cross = ONE_POINT;
	Parameter = GEN_FIXED;
	OperatorFit[0]=60;  OperatorFit[1]=OperatorFit[0]+40;
	OperatorStart[0] = 70; OperatorStart[1] = 30;
	OperatorEnd[0] = 50; OperatorEnd[1] = 50;
	CrossProb = 0.8;
	MutProb = 0.01;
	ElitismProb = 0.1;
	CurrentChild = 0;
	ChildrenNum = IndNumber;
	Individual = 0;
	Children = 0;
	IndIndex = 0;
	FitIndex = 0;
	Communication = NULL;
}
Genetic::Genetic(int n, int gl)
{
	IndNumber = n;
	GeneLen = gl;
	Elitism = ELITISM;
	Cross = ONE_POINT;
	Parameter = GEN_FIXED;
	OperatorFit[0]=60;  OperatorFit[1]=OperatorFit[0]+40;
	OperatorStart[0] = 70; OperatorStart[1] = 30;
	OperatorEnd[0] = 50; OperatorEnd[1] = 50;
	CrossProb = 0.8;
	MutProb = 0.01;
	ElitismProb = 0.1;
	CurrentChild = 0;
	ChildrenNum = IndNumber;
	IndInit();
	Communication = NULL;
}
Genetic::Genetic(Genetic& g)
{
	Elitism = g.Elitism;
	Cross = g.Cross;
	Parameter = g.Parameter;
	OperatorFit[0] = g.OperatorFit[0];
	OperatorFit[1] = g.OperatorFit[1];
	OperatorStart[0] = g.OperatorStart[0];
	OperatorStart[1] = g.OperatorStart[1];
	OperatorEnd[0] = g.OperatorEnd[0];
	OperatorEnd[1] = g.OperatorEnd[1];
	CrossProb = g.CrossProb;
	MutProb = g.MutProb;
	IndNumber = g.IndNumber;
	GeneLen = g.GeneLen;
	CurrentChild = g.CurrentChild;
	ChildrenNum = g.ChildrenNum;
	ElitismProb = g.ElitismProb;
	Communication = g.Communication;
	IndInit();
	for(int i=0; i<IndNumber; i++)
	{
		Individual[i].Chrom = g.Individual[i].Chrom;
		Individual[i].Fit = g.Individual[i].Fit;
		Individual[i].Val = g.Individual[i].Val;
		FitIndex[i] = g.FitIndex[i];
		IndIndex[i] = g.IndIndex[i];
	}
}

Genetic::~Genetic()
{
	if(Individual) delete []Individual;
	if(Children) delete []Children;
	if(IndIndex) delete []IndIndex;
	if(FitIndex) delete []FitIndex;
}

//設(shè)置個(gè)體數(shù)和個(gè)體長(zhǎng)度
void Genetic::SetNumLen(int IndN, int GLen)
{
	if(Individual) delete []Individual;
	if(Children) delete []Children;
	if(IndIndex) delete []IndIndex;
	if(FitIndex) delete []FitIndex;
	IndNumber = IndN;
	GeneLen = GLen;
	ChildrenNum = IndNumber;
	IndInit();
}

//個(gè)體初始化
bool Genetic::IndInit()
{
	Individual = new INDIVIDUAL[IndNumber];
	Children = new INDIVIDUAL[IndNumber];
	IndIndex = new int[IndNumber];
	FitIndex = new double[IndNumber];
	if(Individual && Children && IndIndex && FitIndex) 
	{
		for(int i=0; i<IndNumber; i++)
		{
			Individual[i].Chrom.SetLen(GeneLen);
			Children[i].Chrom.SetLen(GeneLen);
			IndIndex[i] = i;
		}
		return true;
	}
	else return false;
}
//計(jì)算總適合度
void Genetic::CalFitIndex()
{
	double allfit = 0;
	for(int i=0; i<IndNumber; i++)
	{
		allfit += Individual[i].Fit-Individual[IndIndex[IndNumber-1]].Fit;
		FitIndex[i] = allfit;
	}
}
//設(shè)置交叉變異適合度
void Genetic::SetOperator(double c, double m)
{
	OperatorFit[0] = c;
	OperatorFit[1] = OperatorFit[0]+m;
}
//設(shè)置標(biāo)志集
void Genetic::SetFlags(CROSS_METHOD c, ELITISM_METHOD e, PARAMETER_METHOD p)
{
	Cross = c;
	Elitism = e;
	Parameter = p;
}
//設(shè)置交叉率和變異率
void Genetic::SetProbability(double c, double m)
{
	CrossProb = c;
	MutProb = m;
}
//獲得第i個(gè)個(gè)體基因字串
const char* Genetic::GetGeneStr(int i)
{
	return Individual[i].Chrom.GetGeneStr();
}
//計(jì)算所有個(gè)體適合度
void Genetic::AllFit()
{
	for(int i=0; i<IndNumber; i++)
		GetFit(i);
}
//個(gè)體適合度計(jì)算
double Genetic::GetFit(int i)
{
	Individual[i].Fit = Individual[i].Val;
	return Individual[i].Fit;
}
//計(jì)算所有個(gè)體評(píng)價(jià)函數(shù)值
void Genetic::AllVal()
{
	for(int i=0; i<IndNumber; i++)
		GetVal(i);
}
//計(jì)算個(gè)體評(píng)價(jià)函數(shù)值
double Genetic::GetVal(int i)
{
	return EvalVal(Individual[i]);
}
//滾輪選擇方法
int Genetic::Wheel(double* index, int len)
{
	double random = (rand()/(double)RAND_MAX)*index[len-1];
	int i = 0;
	while(random>index[i] && i<len-1) i++;
	return i;
}
//雙親選擇方法
int Genetic::ParentSelect()
{
	return Wheel(FitIndex,IndNumber);
}
//按適合度排序索引數(shù)組
void Genetic::IndexSort()
{
	for(int i=0; i<IndNumber; i++)
	{
		int max = i;
		for(int j=i; j<IndNumber; j++)
			if(Individual[IndIndex[max]].Val<Individual[IndIndex[j]].Val)
				max = j;
		int t = IndIndex[max];
		IndIndex[max] = IndIndex[i];
		IndIndex[i] = t;
	}
}
//算子選擇方法:0-交叉算子,1-變異算子
int Genetic::OperatorSelect()
{
	return Wheel(OperatorFit,2);
}
//變異再生方法
void Genetic::GenMutation()
{
	if(CurrentChild>=ChildrenNum) return;
	int parent = ParentSelect();
	Children[CurrentChild].Chrom = Individual[parent].Chrom.Mutation(MutProb);
	CurrentChild++;
}
//交叉再生方法
void Genetic::GenCross()
{
	if(CurrentChild>=ChildrenNum-1) return;
	int parent1 = ParentSelect();
	int parent2 = ParentSelect();
	if((rand()/(double)RAND_MAX)<CrossProb)
	{
		if(Cross == ONE_POINT)
			Individual[parent1].Chrom.OneCross(Individual[parent2].Chrom,
											   Children[CurrentChild].Chrom,
											   Children[CurrentChild+1].Chrom);
		else if(Cross == TWO_POINT)
			Individual[parent1].Chrom.TwoCross(Individual[parent2].Chrom,
											   Children[CurrentChild].Chrom,
											   Children[CurrentChild+1].Chrom);
		else
			Individual[parent1].Chrom.UniCross(Individual[parent2].Chrom,
											   Children[CurrentChild].Chrom,
											   Children[CurrentChild+1].Chrom);
	}
	else
	{
		Children[CurrentChild].Chrom = Individual[parent1].Chrom;
		Children[CurrentChild+1].Chrom = Individual[parent2].Chrom;
	}
	CurrentChild += 2;
}
//精英方法
void Genetic::GenElitism()
{
	int elitismNum = int(ChildrenNum*ElitismProb);
	if(elitismNum <1) elitismNum = 1;
	if(CurrentChild+elitismNum>IndNumber)
		elitismNum = IndNumber-CurrentChild;
	for(int i=CurrentChild; i<CurrentChild+elitismNum; i++)
		Children[i].Chrom = Individual[IndIndex[i]].Chrom;
	CurrentChild += elitismNum;
}
//產(chǎn)生新一代
void Genetic::Generation()
{
	CurrentChild = 0;
	if(Elitism==ELITISM) GenElitism();
	while(CurrentChild < ChildrenNum-1)
	{
		if(OperatorSelect()==1 || CurrentChild>=ChildrenNum-1)
			GenMutation();
		else
			GenCross();
	}
	INDIVIDUAL *tmpInd;
	tmpInd = Individual;
	Individual = Children;
	Children = tmpInd;
//	for(int i=0; i<ChildrenNum; i++)
//		Individual[IndIndex[IndNumber-i-1]].Chrom = Children[i].Chrom;
	Prepare();
}
//運(yùn)行遺傳算法
const char* Genetic::Run(unsigned long gn)
{
	Prepare();
	double OperatorStep=0;
	if(Parameter == GEN_INTERPOLATION)
		OperatorStep = (OperatorEnd[0]-OperatorStart[0])/gn;
	for(unsigned long generator=0; generator<gn; generator++)
	{
		if(Parameter == GEN_INTERPOLATION)
			OperatorFit[0] += OperatorStep;
		Generation();
		if(Communication!=NULL)
			Communication(Individual[IndIndex[0]].Chrom.GetGeneStr(),
				Individual[IndIndex[0]].Fit,
				Individual[IndIndex[0]].Val);
	}
	return Individual[IndIndex[0]].Chrom.GetGeneStr();
}
//準(zhǔn)備遺傳運(yùn)算
void Genetic::Prepare()
{
	AllVal();
	IndexSort();
	AllFit();
	CalFitIndex();
}
//設(shè)置初始算子適合度
void Genetic::SetOptStartEnd(double s1,double e1,double s2,double e2)
{
	OperatorStart[0] = s1;
	OperatorStart[1] = s2;
	OperatorEnd[0] = e1;
	OperatorEnd[1] = e2;
	OperatorFit[0] = OperatorStart[0];
	OperatorFit[1] = OperatorStart[0]+OperatorEnd[0];
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区精品3399| 亚洲一区二区在线免费看| 欧美撒尿777hd撒尿| 99精品视频在线播放观看| 国产成人av自拍| 成人性视频网站| av一二三不卡影片| av影院午夜一区| 在线观看日产精品| 欧美日韩国产在线观看| 欧美另类变人与禽xxxxx| 欧美日韩精品一区二区三区 | 亚洲一区二区三区四区在线免费观看 | 久久久久久久久一| 国产欧美日韩激情| 一区二区三区在线视频观看58| 一区av在线播放| 欧美a级一区二区| 国产精品456| 色素色在线综合| 日韩精品一区二区三区蜜臀| 久久精品这里都是精品| 国产精品第五页| 亚洲3atv精品一区二区三区| 玖玖九九国产精品| 99久久婷婷国产精品综合| 欧美福利视频一区| 国产婷婷色一区二区三区在线| ㊣最新国产の精品bt伙计久久| 亚洲丰满少妇videoshd| 国产在线视频一区二区三区| 成人三级伦理片| 欧美日韩aaaaa| 国产精品久久久久久亚洲毛片| 亚洲综合在线免费观看| 激情图片小说一区| 欧美亚洲禁片免费| 久久亚洲一区二区三区四区| 一区二区久久久久久| 精品亚洲国内自在自线福利| 色婷婷久久久综合中文字幕 | 91麻豆精品91久久久久久清纯 | 一二三四社区欧美黄| 国产综合色产在线精品| 欧美性色黄大片| 久久精品欧美日韩精品| 午夜精品久久久久久不卡8050| 国产综合色在线| 91精品在线麻豆| 亚洲女爱视频在线| 成人性色生活片| 26uuu亚洲综合色欧美| 亚洲国产精品一区二区www| 国产成人午夜99999| 欧美一区二视频| 亚洲欧洲综合另类在线| 成人综合日日夜夜| 精品国产区一区| 日韩不卡一区二区| 欧美综合在线视频| 亚洲色欲色欲www在线观看| 狠狠色伊人亚洲综合成人| 欧美精品精品一区| 亚洲国产精品精华液网站| 一本色道亚洲精品aⅴ| 国产精品久久久久久久久久免费看| 欧美96一区二区免费视频| 欧美色偷偷大香| 亚洲成在人线在线播放| 在线免费av一区| 一区二区三区免费网站| 99久久国产综合精品麻豆| 国产精品麻豆视频| 成人性生交大片免费看在线播放 | 亚洲人成在线播放网站岛国| 国产a久久麻豆| 欧美激情资源网| 波多野结衣91| 亚洲欧洲日韩综合一区二区| 不卡的av电影在线观看| 国产精品激情偷乱一区二区∴| 成人丝袜高跟foot| 亚洲欧洲av另类| 91久久精品一区二区二区| 亚洲精品成人在线| 精品视频123区在线观看| 天天综合网 天天综合色| 日韩欧美一区二区三区在线| 麻豆久久一区二区| 国产婷婷一区二区| 色综合天天综合在线视频| 亚洲一区二区美女| 日韩精品中文字幕在线不卡尤物 | 亚洲欧洲精品天堂一级 | av在线综合网| 午夜精品福利一区二区三区av | 亚洲欧洲国产日本综合| 欧美中文字幕一二三区视频| 免费高清在线一区| 欧美国产精品一区| 欧美日韩亚洲另类| 国产尤物一区二区在线| 亚洲品质自拍视频| 日韩丝袜美女视频| 成人一道本在线| 日韩电影一区二区三区四区| 久久久久久久久免费| 欧美在线不卡一区| 国内成+人亚洲+欧美+综合在线| 中文字幕一区二区在线播放| 欧美日韩激情一区二区三区| 国产一区在线观看视频| 一区二区三区毛片| 久久一留热品黄| 欧美久久高跟鞋激| 不卡的av电影在线观看| 另类的小说在线视频另类成人小视频在线 | 4438成人网| 99久久精品免费观看| 久久er99热精品一区二区| 一区二区成人在线| 国产免费观看久久| 日韩一区二区三区高清免费看看| 99久久亚洲一区二区三区青草| 麻豆久久久久久久| 亚洲国产综合视频在线观看| 国产精品视频一二| 精品精品国产高清一毛片一天堂| 日本高清无吗v一区| 高清成人在线观看| 韩国精品在线观看| 日本不卡的三区四区五区| 亚洲精品成人天堂一二三| 国产精品久久三区| 欧美激情中文不卡| 久久久国产午夜精品| 欧美成人猛片aaaaaaa| 欧美日韩精品专区| 欧美曰成人黄网| 在线观看日韩高清av| 色婷婷久久久久swag精品| 成人一区在线观看| 成人黄色电影在线| av亚洲精华国产精华精华| 成人亚洲一区二区一| 成人高清免费观看| 国产69精品久久久久毛片| 国产馆精品极品| 国产剧情一区二区| 国产传媒日韩欧美成人| 国产精品一区在线| 国产精品一区二区三区四区| 国产专区欧美精品| 国产福利精品一区| 99热在这里有精品免费| 99精品视频一区二区| 色综合久久久久久久| 欧美在线观看一区二区| 欧美日高清视频| 欧美mv和日韩mv的网站| 日韩亚洲欧美一区二区三区| 欧美一卡2卡3卡4卡| 久久综合九色综合97婷婷女人 | 久久精品国产精品亚洲精品| 狠狠狠色丁香婷婷综合激情| 国产一区二区三区四| 成人午夜私人影院| 欧美亚洲动漫另类| 日韩免费一区二区| 欧美国产精品劲爆| 一区二区三区免费网站| 日本美女视频一区二区| 国产精品中文欧美| 97超碰欧美中文字幕| 色久优优欧美色久优优| 91精品国产综合久久精品图片| 日韩女优电影在线观看| 欧美激情综合五月色丁香| 亚洲国产婷婷综合在线精品| 男人的j进女人的j一区| 丁香六月综合激情| 欧美日韩中文字幕一区二区| 日韩女同互慰一区二区| 亚洲色图欧美激情| 美女性感视频久久| 94色蜜桃网一区二区三区| 欧美一区在线视频| 国产精品麻豆久久久| 免费欧美在线视频| 91视频在线观看免费| 精品久久久久av影院| 亚洲电影在线免费观看| 国产精品一区二区免费不卡| 欧美色视频一区| 国产精品久久久久久久裸模 | 中文字幕国产精品一区二区| 亚洲bt欧美bt精品777| 国产夫妻精品视频| 日韩一区二区电影在线| 亚洲综合激情小说|