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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? maxsin.cpp

?? 一個遺傳算法應用的小程序 使用遺傳算法求解sin^2(x)的極大值
?? CPP
字號:
#include<iostream.h>
#include<math.h>
#include<time.h>
//#include<graphics.h>
#include<stdlib.h>
#include<string.h>

#define maxpop 100
#define maxstring 32

typedef struct{
	char chrom[maxstring];
	float x,fitness;
	int parent1,parent2,xsite;
}pp;

pp *oldpop,*newpop,*p1;
int popsize,lchrom,gen,maxgen,nmutation,ncross,jcross,maxpp,minpp,jrand;
float pcross,pmutation,sumfitness,avg,max,min,seed,rj[maxpop],oldrand[maxpop];
double coef;

float objfunc(float);
int select();
int flip(float);
int crossover(char *,char *,int);
char mutation();
void generation();
void initialize();
void report();
void initpop();
void initdata();
void initreport();
double decode(char *);
float random1();
void randomize1();
void pause();

void test(char x)
{cout<<x<<'\n';}

float objfunc(float x1)
//compute object fitness;
{
	float y;
	y=3.14*x1;
	y=sin(2.0*y);
	return y*y;
}

void statistic(pp *pop)
//statistic the fitness of population
{
	int j;
	sumfitness=pop[0].fitness;
	max=pop[0].fitness;
	min=pop[0].fitness;
	maxpp=0;
	minpp=0;
	for(j=1;j<popsize;j++){
		sumfitness=sumfitness+pop[j].fitness;
		if(pop[j].fitness>max){
			max=pop[j].fitness;
			maxpp=j;
		}
		if(pop[j].fitness<min){
			min=pop[j].fitness;
			minpp=j;
		}
	}//end for
	avg=sumfitness/(float)popsize;
}

void generation()
//update a generation;
{
	int j,mate1,mate2;
	j=0;
	do{
		mate1=select();
		mate2=select();
		crossover(oldpop[mate1].chrom,oldpop[mate2].chrom,j);
		newpop[j].x=(float)decode(newpop[j].chrom);
		newpop[j].fitness=objfunc(newpop[j].x);
		newpop[j].parent1=mate1;
		newpop[j].parent2=mate2;
		newpop[j].xsite=jcross;//recode the cross point;
		newpop[j+1].x=(float)decode(newpop[j+1].chrom);
		newpop[j+1].fitness=objfunc(newpop[j+1].x);
		newpop[j+1].parent1=mate1;
		newpop[j+1].parent2=mate2;
		newpop[j+1].xsite=jcross;
		j=j+2;
	}while(j<popsize);
}

void initdata()
//input control parameters
{
	int ch,j;
	cout<<"*********SGA DATA ENTRY AND INITIALIZATION*******\n";
	cout<<"Enter population size:";
	cin>>popsize;
//	cout<<"Enter chromosome length:";
//	cin>>lchrom;
	lchrom = 32;
	cout<<"Enter max generations";
	cin>>maxgen;
	cout<<"Enter crossover probability:";
	cin>>pcross;
	cout<<"Enter mutation probability:";
	cin>>pmutation;
	
	//randomize1();
	nmutation=0;
	ncross=0;
}

void initreport()
{
	cout<<"Population size:"<<popsize<<'\n';
//	cout<<"Chromosome length:"<<lchrom<<'\n';
	cout<<"Maximum # of generation:"<<maxgen<<'\n';
	cout<<"Crossover probability:"<<pcross<<'\n';
	cout<<"Mutation probability:"<<pmutation<<'\n';
	cout<<"-----------------------------------------------------\n";
	cout<<"Initial Population Maximum Fitness:"<<max<<'\n';
	cout<<"Initial Population Average Fitness:"<<avg<<'\n';
	cout<<"Initial Population Minimun Fitness:"<<min<<'\n';
	cout<<"Initial Population Sum of Fitness:"<<sumfitness<<'\n';
	pause();
}

void initpop()
{
	srand((unsigned)time(NULL));
	int bit;
	oldpop = new pp[popsize];
	newpop = new pp[popsize];
	int j,j1;
	for(j=0;j<popsize;j++){
		for(j1=0;j1<lchrom;j1++){
			if (rand()%2 == 1) 
				oldpop[j].chrom[j1] = '1';
			else oldpop[j].chrom[j1]='0';
		}
		oldpop[j].x=(float)decode(oldpop[j].chrom);
		oldpop[j].fitness=objfunc(oldpop[j].x);
		oldpop[j].parent1=0;
		oldpop[j].parent2=0;
		oldpop[j].xsite=0;
	}//end for
}

void initialize()
{
	initdata();
	//test('a');
	coef=pow(2.00,lchrom)-0.1;
	initpop();
	statistic(oldpop);
	initreport();
}

void report(int gen)
{
	int k,j;
	cout<<"******************************************************\n";
	cout<<"     Generation:"<<gen<<'\n';
	cout<<"#        parents                      xsite   string    x   fitness\n";
	for(j=0;j<popsize;j++)
	{
		cout<<j<<"\t"<<newpop[j].parent1<<'\t'<<newpop[j].parent2<<'\t'<<newpop[j].xsite<<'\t';
		for(k=0;k<lchrom;k++) cout<<newpop[j].chrom[k];
		cout<<'\t'<<newpop[j].x<<'\t'<<newpop[j].fitness<<'\n';
	}
	cout<<"********************************************************\n";
	cout<<"Result Gen:"<<gen<<'\n';
	cout<<"AVG="<<avg<<'\t'<<"MIN="<<min<<'\t'<<"MAX="<<max<<'\n';
	cout<<"ncross="<<ncross<<'\t'<<"nmutation="<<nmutation<<'\n';
}

int select()
{
	double rand1,partsum;
	int j;
	partsum=0.0;
	j=0;
	rand1=random1()*sumfitness;
	do{
		partsum=partsum+oldpop[j].fitness;
		j=j+1;
	}while((partsum<rand1)&&(j<popsize));
	return j-1;
}

double decode(char *pp)
//decode chrom to the real number
{
	int j;
	double tt,tt1;
	tt1=1.0;
	tt=0.0;
	for(j=lchrom-1;j>-1;j--){
//	for (j = 31; j > -1; j--) {
		if(pp[j] == '1') tt=tt+tt1;
		tt1=2.0*tt1;
	}
	tt=tt/coef;
//	tt = tt / (pow(2.0,32) - 0.1);
	return tt;
}

void pause()
{
	int j,j1;
	int x1;
	x1=0;
	for(j=1;j<=25;j++)
		for(j1=1;j1<2;j1++) x1=x1+1;
}

char mutation(char ch)
//mutation operate
{
	int mutate,j;
	mutate=flip(pmutation);
	if(mutate)
	{
		nmutation=nmutation+1;//???nmutation??
		if(ch) ch=0;
		else ch=1;
	}
	if(ch) return '1';
	else return '0';
}

int crossover(char *parent1,char *parent2,int k5)
//crossover operate
{
	int i,j,j1;
	if(flip(pcross))
	{
		jcross=rand()%(lchrom-1);
		ncross=ncross+1;//???ncross?
	}
	else jcross=lchrom;
	if(jcross!=lchrom)
	{
		for(j=0;j<jcross;j++){
			newpop[k5].chrom[j]=mutation(parent1[j]);
			newpop[k5+1].chrom[j]=mutation(parent2[j]);
		}
		for(j=jcross;j<lchrom;j++){
			newpop[k5].chrom[j]=mutation(parent2[j]);
			newpop[k5+1].chrom[j]=mutation(parent1[j]);
		}
	}//end if
	else 
	{
		for(j=0;j<lchrom;j++)
		{
			newpop[k5].chrom[j]=mutation(parent1[j]);
			newpop[k5+1].chrom[j]=mutation(parent2[j]);
		}
	}//end else
	return 1;
}

void randomize1()
//reset the random number generator
{
	int i;
	srand((unsigned)time(NULL));
//	randomize();//???????generate errors "randomize undeclared"
	for(i=0;i<lchrom;i++);
		oldrand[i]=(rand()%1000)/1000.0;
	jrand=0;
}

float random1()
//generate a random number
{
	jrand=jrand+1;
	if(jrand>=lchrom)
	{
		jrand=0;
		randomize1();
	}
	return oldrand[jrand];
}

int flip(float probability)
//貝努利實驗
{
	float ppp;
	ppp=(rand()%1000)/1000.0;
	if(ppp<=probability) return 1;
	return 0;
}

void main()
{
	double detest;
	char testch[32];
	for (int testi = 0; testi < 32; testi++) {
		if (rand()%2 == 1) 
			testch[testi] = '1';
		else testch[testi] = '0';
	}
	detest = decode(testch);
	cout<<detest<<'\n';


	char c;
	long int gen,k,j;
	float oldmax;
	int oldmaxpp;
//	pp *oldpop,*newpop,*p1;
//	oldpop=new pp[maxpop];
//	newpop=new pp[maxpop];

/*	oldpop = new pp[maxpop];
	newpop = new pp[maxpop];

	p1=new pp;
	for(k=0;k<maxpop;k++)
		for (j = 0; j < maxstring; j++) {
			oldpop[k].chrom[j]='0';
			newpop[k].chrom[j]='0';
		}
		*/
	gen=0;
	initialize();
	p1=newpop;
	newpop=oldpop;
	statistic(newpop);
	report(gen);
	newpop=p1;
	cin>>c;
	do {
		gen=gen+1;
		oldmax=max;
		oldmaxpp=maxpp;
		generation();
		statistic(newpop);
		if(max<oldmax){
			for(j=0;j<lchrom;j++)
				newpop[minpp].chrom[j]=oldpop[oldmaxpp].chrom[j];
			newpop[minpp].x=oldpop[oldmaxpp].x;
			newpop[minpp].fitness=oldpop[oldmaxpp].fitness;
			statistic(newpop);
		}
//		report(gen);
		p1=oldpop;
		oldpop=newpop;
		newpop=p1;
//		cin>>c;
	}while(gen<maxgen);
	report(gen);
	free(p1);
	free(oldpop);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕第一页久久| 国产免费久久精品| 欧美日韩的一区二区| 色av综合在线| 制服丝袜亚洲精品中文字幕| 欧美男人的天堂一二区| 7777精品伊人久久久大香线蕉最新版 | 欧美日韩1234| 91麻豆精品国产91久久久久久| 精品视频在线视频| 日韩午夜中文字幕| 久久精品一区八戒影视| 中文字幕日韩一区| 亚洲午夜精品一区二区三区他趣| 午夜欧美大尺度福利影院在线看| 久久99在线观看| 国产一区二三区| www.亚洲色图.com| 欧美日韩一区二区三区在线看| 337p亚洲精品色噜噜| 久久综合九色综合欧美就去吻 | 欧美丝袜丝nylons| 日韩一区二区免费视频| 久久久三级国产网站| 中文字幕制服丝袜一区二区三区| 亚洲自拍偷拍av| 狠狠色丁香久久婷婷综合丁香| 国产成人av电影在线观看| av不卡一区二区三区| 欧美精品丝袜中出| 亚洲欧洲日韩在线| 奇米在线7777在线精品| 99亚偷拍自图区亚洲| 欧美精品第1页| 亚洲国产精品传媒在线观看| 亚洲成人激情综合网| 国产电影一区在线| 欧美一区二区精美| 亚洲欧洲日韩女同| 国产乱子伦视频一区二区三区| 欧美亚洲禁片免费| 国产精品视频免费看| 欧美aaaaaa午夜精品| 在线国产电影不卡| 国产精品欧美精品| 国内精品国产成人国产三级粉色| 91蜜桃网址入口| 久久先锋资源网| 日韩av电影免费观看高清完整版在线观看| 国产精品一区久久久久| 欧美电影影音先锋| 樱花影视一区二区| 色综合久久综合网97色综合| 久久久精品国产免费观看同学| 亚洲成人动漫av| 在线视频一区二区三区| 亚洲欧洲日韩av| 懂色av一区二区夜夜嗨| 久久尤物电影视频在线观看| 亚洲成人自拍一区| 欧美艳星brazzers| 一区二区三区色| 欧亚一区二区三区| 一区二区三区在线看| 一本一本大道香蕉久在线精品| 久久午夜电影网| 国产传媒日韩欧美成人| 国产肉丝袜一区二区| 国产**成人网毛片九色 | 亚洲一区二区成人在线观看| 色综合久久久久综合体桃花网| 国产精品久久久久7777按摩 | 日韩高清不卡一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 亚洲国产毛片aaaaa无费看| 91丨九色porny丨蝌蚪| 亚洲同性gay激情无套| 91在线视频18| 亚洲激情中文1区| 欧美日韩一区二区在线视频| 日本女人一区二区三区| 日韩精品一区国产麻豆| 国产夫妻精品视频| 中文字幕制服丝袜一区二区三区 | 日韩视频一区二区在线观看| 免费xxxx性欧美18vr| 精品少妇一区二区三区在线播放 | 欧美一区二区啪啪| 蜜桃免费网站一区二区三区| 欧美videofree性高清杂交| 国产乱子轮精品视频| 国产女人18毛片水真多成人如厕| 成人动漫视频在线| 一二三区精品视频| 91精品国产综合久久精品app| 老司机免费视频一区二区| 2024国产精品视频| 色婷婷综合在线| 奇米综合一区二区三区精品视频| 久久影院视频免费| 色av成人天堂桃色av| 久久99久久精品欧美| 国产精品人成在线观看免费 | 9久草视频在线视频精品| 亚洲一区二区三区四区中文字幕| 欧美精品1区2区3区| 国产成人午夜高潮毛片| 亚洲国产视频网站| 久久九九久精品国产免费直播| 不卡的电影网站| 美女一区二区三区在线观看| 中文字幕五月欧美| 欧美videos大乳护士334| 99久久国产综合精品麻豆| 九九九久久久精品| 亚洲国产日韩一级| 国产精品久久久久久久浪潮网站 | 在线欧美日韩精品| 国产麻豆精品视频| 日韩精品一卡二卡三卡四卡无卡| 欧美激情一区在线| 日韩精品一区二区三区视频在线观看| 91网页版在线| 成人免费电影视频| 国产一区二区影院| 五月婷婷欧美视频| 亚洲天堂成人在线观看| 精品88久久久久88久久久| 在线观看免费亚洲| 99久久99久久精品免费看蜜桃| 日韩高清不卡一区二区三区| 亚洲人成小说网站色在线| 欧美精品一区二区三区在线播放 | 精品一区二区三区在线观看国产| 一区二区三区日韩欧美精品| 国产精品对白交换视频 | 欧美午夜精品久久久| 成人av小说网| 国产电影精品久久禁18| 九色|91porny| 男人的j进女人的j一区| 日韩不卡免费视频| 亚洲午夜在线电影| 亚洲一区二区三区中文字幕在线 | 久久99久久久久| 日韩成人伦理电影在线观看| 亚洲精品欧美激情| 一区二区三区中文在线| 一区二区三区 在线观看视频| 国产精品久久久久久久久搜平片 | 在线视频亚洲一区| 在线视频欧美区| 欧美日韩视频在线一区二区| 91福利在线免费观看| 日本道精品一区二区三区| 色94色欧美sute亚洲线路一久 | 欧美一卡二卡三卡四卡| 91精品欧美久久久久久动漫 | 亚洲一区二区欧美激情| 亚洲v日本v欧美v久久精品| 污片在线观看一区二区| 美女视频黄a大片欧美| 久久成人免费网| 国产精品99久久久久久似苏梦涵| 国内精品久久久久影院薰衣草| 国产精品亚洲а∨天堂免在线| 国产sm精品调教视频网站| 不卡一区在线观看| 欧美亚洲国产一区二区三区va| 欧美视频三区在线播放| 日韩免费在线观看| 国产性做久久久久久| 亚洲精品日韩一| 蜜桃免费网站一区二区三区| 国产精品18久久久久久久久| 99久久免费视频.com| 欧美日韩第一区日日骚| 久久综合狠狠综合久久综合88| 亚洲欧洲一区二区在线播放| 亚洲综合成人在线| 国产在线不卡一区| 色综合咪咪久久| 5858s免费视频成人| 国产精品欧美一区二区三区| 亚洲成人精品一区二区| 国产精品伊人色| 欧美疯狂做受xxxx富婆| 欧美国产在线观看| 日本成人在线电影网| 97精品电影院| 久久亚洲精品国产精品紫薇| 国产精品久久久久久久久果冻传媒| 亚洲五码中文字幕| 国产呦萝稀缺另类资源| 久久天堂av综合合色蜜桃网| 国产精品免费视频网站| 看电视剧不卡顿的网站| 欧美性极品少妇| 国产精品国产自产拍高清av王其 | 日韩一区日韩二区|