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

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

?? main.cpp

?? 一個遺傳算法的程序
?? CPP
字號:
/**********************************ga.cpp********************************/
/*****************用遺傳算法求解函數(f(x)=x*sin(10pi*x)+1.0)的最大值*****/
/*********************作者:高衛平,周兆永(計算機科學學院05級研究生)***/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define popsize 10       //群體數量
#define maxgenes 1000    //遺傳代數
#define nvars 22         //編碼長度
#define pxover 0.9     //交叉概率
#define pmutation 0.01  //變異概率
#define true 1
#define false 0
int generation;
int cur_best;
FILE *fp;
struct genotype{
	int gene[nvars];   //編碼
	double value;
	double fitness;    //適應度值
	double rfitness;          //population[mem].rfitness=population[mem].fitness/sum;
	double cfitness;          //population[mem].cfitness=population[mem-1].cfitness+population[mem].rfitness;
};              //一個個體的結構,包括編碼,適應度值,
struct genotype population[popsize+1];    //一個群體數組
struct genotype newpopulation[popsize+1];

///////////////////////////////////////////////////////////////////////////
////////////////////////////函數定義///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
void initialize(void);
double two_ten(int i);
double real_number(long real,long num);
void evaluate(void);
void keep_the_best();
void elitist(void);
void select(void);      //選擇
void crossover(void);   //
void xover(int,int);
void swap(int*,int*);
void mutate(void);      //變異
int change(int i,int j);
int rand_int(void);
void report(void);
//===================================================//
//===============初始化群體==========================//
//===================================================//
void initialize(void)   
{
	FILE*infile;
	if((infile=fopen("gadate.txt","r"))==NULL)
	{	
		printf("\nCannot open input file\n");
		exit(0);
	}    
	//讀取文件數據
		for(int j=0;j<10;j++){
			for(int i=0;i<22;i++){
				population[j].gene[i]=fgetc(infile)-48;
			}
			fgetc(infile);
			population[j].fitness=0;
			population[j].rfitness=0;
			population[j].cfitness=0;
			population[j].value=two_ten(j);
		}
	fclose(infile);
	
}
//================================================//
//=========把從文件中讀取的二進制數轉換成十進制數=//
//================================================//
double two_ten(int n){
	long a=0;
	long sum=0;
	double value=0;
	long num=2;
	for(int i=0;i<20;i++){
		num=2*num;
	}
	long m=num;
	for(int j=0;j<22;j++){
		if(j<20){			
			a=population[n].gene[j]*num;
			num=num/2;
		}
		else{
			if(j==20){
				num=2;
				a=population[n].gene[j]*num;
			}
			else{
				num=1;
				a=population[n].gene[j]*num;	
			}
		}
		sum=sum+a;
	}
	value=real_number(sum,m);
	return value;
}
//===============================================//
//================把十進制數轉換成實數===========//
//===============================================//
double real_number(long real,long num){
	num=num*2;
	double value=0;
	num=num-1;
	double a,b,c;
	a=(double)num;
	b=(double)(3/a);
	c=real*b;
	value=-1.0+c;
	return value;
}
//===========================================================//
//===============計算群體上每一個個體的適應度值==============//
//===========================================================//
void evaluate(void){     
	int i;
	double x[popsize];
	for(i=0;i<popsize;i++){
		x[i]=population[i].value;
		population[i].fitness=x[i]*sin(10*3.1415926*x[i])+1.0;
		fprintf(fp," (%d)        %f\n",i,population[i].fitness);
	}
}
//===========================================================//
//==========在群體中找一個具有最佳適應度值的個體=============//
//===========================================================//
void keep_the_best(){   
	int mem;
	int i;
	int cur_best=0;
	for(mem=0;mem<popsize;mem++){
		if(population[mem].fitness>population[popsize].fitness){
			cur_best=mem;
			population[popsize].fitness=population[mem].fitness;
		}
	}
	for(i=0;i<nvars;i++){
	population[popsize].gene[i]=population[cur_best].gene[i];
	}
}
//============================================================//
//=======把每一代中的最佳適應度值存入population[popsize]中====//
//============================================================//
void elitist(){
	int i;
	double best,best_r,best_c,worst,worst_r,worst_c;
	int best_mem,worst_mem;
	best=population[0].fitness;
	worst=population[0].fitness;
	for(i=0;i<popsize-1;++i){
		if (population[i].fitness>population[i+1].fitness){
			if(population[i].fitness>=best){
				best=population[i].fitness;
				best_r=population[i].rfitness;
				best_c=population[i].cfitness;
				best_mem=i;
			}
			if(population[i+1].fitness<=worst){
				worst=population[i+1].fitness;
				worst_r=population[i+1].rfitness;
				worst_c=population[i+1].cfitness;
				worst_mem=i+1;
			}
		}
		else{
			if(population[i].fitness<=worst){
				worst=population[i].fitness;
				worst_r=population[i].rfitness;
				worst_c=population[i].cfitness;
				worst_mem=i;
			}
		}
		if(population[i+1].fitness>=best){
			best=population[i+1].fitness;
			best_r=population[i+1].rfitness;
			best_c=population[i+1].cfitness;
			best_mem=i+1;
		}
	}
	if(best>=population[popsize].fitness){
		for(i=0;i<nvars;i++){
			population[popsize].gene[i]=population[best_mem].gene[i];
		}
		population[popsize].fitness=population[best_mem].fitness;
		population[popsize].rfitness=population[best_mem].rfitness;
		population[popsize].cfitness=population[best_mem].cfitness;
	}
	else{
		for(i=0;i<nvars;i++){
			population[worst_mem].gene[i]=population[popsize].gene[i];
		}
		population[worst_mem].fitness=population[popsize].fitness;
		population[worst_mem].rfitness=population[popsize].rfitness;
		population[worst_mem].cfitness=population[popsize].cfitness;
	}
}
//=================================================//
//=======按由個體適應度值 所決定的某個規則=========//
//========選擇將 進入下一代的個體==================//
//=================================================//
void select(void){     
	int mem,i,j;
	double sum=0.0;
	double p=0.0;
	for(mem=0;mem<popsize;mem++){
		sum=sum+population[mem].fitness;
	}
	for(mem=0;mem<popsize;mem++){
		population[mem].rfitness=population[mem].fitness/sum;
	}
	population[0].cfitness=population[0].rfitness;
	for(mem=1;mem<popsize;mem++){
		population[mem].cfitness=population[mem-1].cfitness+population[mem].rfitness;
	}
	for(i=0;i<popsize;i++){
		p=rand()%1000/1000.0;
		if(p<population[i].cfitness)
			newpopulation[i]=population[i];
		else{
			for(j=0;j<popsize;j++)
				if(p>=population[j].cfitness&&p<population[j+1].cfitness)
					newpopulation[i]=population[j+1];
		}
	}
	for(i=0;i<popsize;i++)
		population[i]=newpopulation[i];
}
//=================================================//
//====================交叉=========================//
//=================================================//
void crossover(void){
	int one,two;
	double x;
	one=rand_int();
	two=rand_int();
	x=rand()%1000/1000.0;
	while(one==two){
		two=rand_int();
	}
	if(x<0.25){
		xover(one,two);
	}
}
void xover(int one,int two){
	int i;
	int point ;
	point=(rand()%(nvars-1))+1;
	for(i=point;i<nvars;i++)
		swap(&population[one].gene[i],&population[two].gene[i]);
	population[one].value=two_ten(one);
	population[two].value=two_ten(two);
}
void swap(int*x,int*y){
	int temp;
	temp=*x;
	*x=*y;
	*y=temp;
}
//=================================================//
//====================變異=========================//
//=================================================//
void mutate(void){
	int i,j;
	double y;
	for(i=0;i<popsize;i++){
		j=rand_int();
		y=rand()%1000/1000.0;
		if(y<pmutation){
			population[i].gene[j]=change(i,j);
		}
		population[i].value=two_ten(i);
	}
}
int change(int i,int j){
	int value;
	if(population[i].gene[j]==1)
		value=0;
	else
		value=1;
	return value;
}
int rand_int(void){
	int x;
	x=rand()%100;
	x=x%9;
	return x;
}
void report(void)
{
	int i;
	double best_val;
	double avg;
	double stddev;
	double sum_square;
	double square_sum;
	double sum;
	sum=0.0;
	sum_square=0.0;
	for(i=0;i<popsize;i++)
	{
		sum+=population[i].fitness;
		sum_square+=population[i].fitness*population[i].fitness;
	}
	avg=sum/(double)popsize;
	square_sum=avg*avg*(double)popsize;
	stddev=sqrt((sum_square)/(popsize-1));
	best_val=population[popsize].fitness; 
	fprintf(fp,"\n遺傳代數:[%d]   每一代的最佳適應度值:%f  \n",generation,population[popsize].fitness);
}
void main(void){
	int i;
	if((fp=fopen("result.txt","w+"))==NULL)
	{
		exit(1);
	}
	generation=0;
	fprintf(fp,"*****************************************************************\n");
	fprintf(fp,"**********用遺傳算法求解函數(f(x)=x*sin(10pi*x)+1.0)的最大值*****\n");
	fprintf(fp,"**********作者:高衛平,周兆永(計算機科學學院05級研究生)*******\n");
	fprintf(fp,"*****************************************************************\n");
	fprintf(fp," 每一代的適應度值: \n");
	initialize();
	evaluate();
	for(int j=0;j<nvars;j++)
		population[popsize].gene[j]=0;
	population[popsize].fitness=0.0;
	population[popsize].cfitness=0.0;
	population[popsize].rfitness=0.0;
	keep_the_best();
	while(generation<maxgenes){
		generation++;
		select();
		crossover();
		mutate();
		report();
		evaluate();
		elitist();
	}
	fprintf(fp,"\n 最佳個體=");
	for(i=0;i<nvars;i++){
		fprintf(fp,"%d",population[popsize].gene[i]);
	}
	fprintf(fp,"\n\n 最佳適應度值=%f",population[popsize].fitness);
	fclose(fp);
	printf("Success!\n");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区四区五区美女 | 中文字幕第一页久久| 88在线观看91蜜桃国自产| 欧美专区日韩专区| 欧洲av一区二区嗯嗯嗯啊| 色婷婷综合久久久中文一区二区| 色综合中文字幕国产 | 国产亚洲综合在线| 久久美女艺术照精彩视频福利播放| 亚洲精品一区二区三区福利| 2017欧美狠狠色| 国产日韩av一区| 亚洲欧美在线视频| 一区二区三区不卡在线观看| 亚洲国产乱码最新视频| 亚洲国产精品欧美一二99| 午夜精品福利在线| 亚洲伊人色欲综合网| 日本aⅴ亚洲精品中文乱码| 蜜臀91精品一区二区三区 | 欧美亚洲综合在线| 欧美男男青年gay1069videost| 欧美日韩久久久一区| 日韩精品一区二区三区视频在线观看| 精品国产三级电影在线观看| 久久新电视剧免费观看| 国产欧美一区在线| 亚洲免费av高清| 偷拍一区二区三区四区| 另类小说视频一区二区| 风间由美中文字幕在线看视频国产欧美 | 日韩电影在线一区二区三区| 麻豆91在线观看| 成+人+亚洲+综合天堂| 欧美伊人精品成人久久综合97| 日本在线不卡一区| 亚洲午夜精品久久久久久久久| 亚洲日本中文字幕区| 天天综合天天综合色| 国产aⅴ精品一区二区三区色成熟| av午夜一区麻豆| 欧美精品在线一区二区| 国产视频一区二区三区在线观看| 亚洲精品ww久久久久久p站| 日韩国产欧美视频| 成人免费观看av| 欧美美女网站色| 国产精品美女久久久久久久久久久| 一区二区三区中文在线| 韩国v欧美v亚洲v日本v| 欧美中文字幕久久| 欧美韩日一区二区三区| 日韩精品五月天| 91欧美一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲免费在线电影| 激情成人综合网| 精品视频全国免费看| 中文一区在线播放| 日本视频免费一区| 欧洲中文字幕精品| 国产女人18毛片水真多成人如厕 | 18成人在线观看| 免费精品视频在线| 99久久99久久精品免费看蜜桃| 日韩一区二区高清| 亚洲一区二区三区小说| 麻豆精品国产91久久久久久| 国产精品一区二区在线看| 成人久久18免费网站麻豆| 欧美一区二区三区在线观看| 综合婷婷亚洲小说| 国产大陆精品国产| 欧美不卡一区二区三区四区| 一区二区在线看| 成人国产精品视频| 久久久青草青青国产亚洲免观| 日韩精品视频网站| 欧美日韩亚洲综合在线| 亚洲乱码国产乱码精品精的特点| 国产高清精品网站| 久久久久久久国产精品影院| 日韩 欧美一区二区三区| 欧美性做爰猛烈叫床潮| 亚洲视频一区二区在线观看| 国模一区二区三区白浆| 日韩丝袜美女视频| 天天综合色天天| 欧美日韩精品一二三区| 一区二区三区四区激情| 色综合久久天天| 国产精品国产三级国产普通话99| 国产成人午夜电影网| 精品国产一二三| 日韩电影在线免费看| 精品视频一区 二区 三区| 亚洲精品亚洲人成人网在线播放| 高清久久久久久| 日本一区二区在线不卡| 国产 日韩 欧美大片| 欧美激情一区三区| 成人蜜臀av电影| 中文字幕一区二区三区在线不卡 | 国产一区二区三区久久悠悠色av| 51精品国自产在线| 日韩精品高清不卡| 欧美一三区三区四区免费在线看 | 成人h动漫精品| 国产精品电影院| 99国内精品久久| 一个色在线综合| 欧美三级电影在线观看| 日本一不卡视频| 日韩色视频在线观看| 紧缚捆绑精品一区二区| 国产目拍亚洲精品99久久精品 | 久久久不卡网国产精品二区| 国产成人精品影视| 国产精品九色蝌蚪自拍| 色噜噜狠狠色综合中国| 亚洲va韩国va欧美va| 日韩三级在线观看| 国产成a人亚洲精品| 亚洲视频在线一区观看| 欧美日韩免费在线视频| 蜜臀久久久99精品久久久久久| 久久女同精品一区二区| 成人av集中营| 性做久久久久久免费观看欧美| 精品少妇一区二区三区日产乱码 | 亚洲最新视频在线播放| 欧美一区二区三区成人| 国产在线精品视频| 中文字幕亚洲一区二区av在线| 91极品美女在线| 久久99热狠狠色一区二区| 国产精品无码永久免费888| 91网站黄www| 蜜臀av亚洲一区中文字幕| 国产精品免费人成网站| 欧美日本韩国一区二区三区视频| 久88久久88久久久| 亚洲三级在线看| 日韩免费看的电影| 99视频有精品| 日韩中文字幕区一区有砖一区 | 亚洲成人先锋电影| 国产亚洲精品aa午夜观看| 欧美亚洲图片小说| 国产精品亚洲专一区二区三区 | 自拍偷拍亚洲激情| 日韩一区二区中文字幕| av在线不卡观看免费观看| 亚洲777理论| 日本一区免费视频| 欧美一区二区三区思思人| 成人丝袜高跟foot| 美女视频黄久久| 18成人在线观看| 久久免费精品国产久精品久久久久| 在线视频一区二区免费| 国产一区日韩二区欧美三区| 亚洲成av人片| 亚洲色图一区二区三区| 久久久久免费观看| 69堂成人精品免费视频| 91蜜桃视频在线| 国产成人精品免费看| 天堂一区二区在线| 亚洲婷婷综合久久一本伊一区 | 久久国产欧美日韩精品| 亚洲精品视频在线观看网站| 亚洲精品在线观看视频| 欧美日韩小视频| 91性感美女视频| 成人综合在线视频| 国产一区二区在线免费观看| 婷婷久久综合九色综合绿巨人 | 国产成人在线看| 毛片一区二区三区| 午夜精品久久久久久久久久久| 自拍偷拍国产亚洲| 欧美国产综合一区二区| 久久香蕉国产线看观看99| 欧美一区二区三区思思人| 欧美日韩色综合| 91久久国产最好的精华液| 97久久人人超碰| 丁香激情综合五月| 风间由美性色一区二区三区| 国内不卡的二区三区中文字幕| 蜜臀a∨国产成人精品| 婷婷综合五月天| 亚洲第一福利一区| 亚洲成人动漫精品| 亚洲小说欧美激情另类| 亚洲一区二区美女| 亚洲成人免费影院| 午夜免费久久看| 亚洲成人av电影|