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

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

?? 遺傳算法f1.cpp

?? j基本遺傳算法
?? CPP
字號(hào):




#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <ctype.h>
//#include <values.h>
#include <string.h>


//定義控制參數(shù)

#define POPSIZE  200    //定義種群的大小
#define NVARS   2      //定義參數(shù)的個(gè)數(shù)
#define PXOVER   0.9    //定義交叉率
#define PMUTATION  0.15 //定義突變率


typedef  struct     //定義基因,種群中的一個(gè)個(gè)體
{
	double  chrom[NVARS];      //變量串(本例中是a,b,c三參數(shù))
	double lsquare;        //個(gè)體的適應(yīng)度,存放的是評(píng)價(jià)函數(shù)的返回值,即誤差平方和的大小
	double r;             //個(gè)體的相關(guān)系數(shù)
	int  fitness;     //相關(guān)適應(yīng)度
}individual;


static individual newpop[POPSIZE+1];  //新種群
static individual oldpop[POPSIZE+1];  //老種群
static int location[POPSIZE+1];     //排序后的個(gè)體的位置


static int gen;      //當(dāng)前代數(shù)
static int maxgen=1000;  //最大代數(shù)
static int change=0; //適應(yīng)性沒(méi)有改進(jìn)的代數(shù)
  
static double a[NVARS],b[NVARS];     //變量的上下限  a[]下限,b[]上限


//隨機(jī)數(shù)發(fā)生器的宏定義

#define rdint(i)   (rand()%(int)(i))
#define rdft()  ((double)rdint(16384)/(16383.0))
#define rnd(a,b)  (rdint((int)(b)-(int)(a)+1)+(int)(a))



//評(píng)估函數(shù):使用到用戶定義的衰減模型,每次如果被改變則要重新編譯,當(dāng)前所用的模型是f(x)=a-b*c^x
//返回值是誤差的平方和,顯然返回值越大則表示評(píng)價(jià)的結(jié)果越差

double  evaluate(double *prms)  //參數(shù)為個(gè)體基因中的參數(shù)串charm[]
{
	
	double x, serr=0.0;

        x=sqrt(prms[0]*prms[0]+prms[1]*prms[1]);
	serr=0.5-(pow(sin(x),2)-0.5)/pow((1+0.001*(prms[0]*prms[0]+prms[1]*prms[1])),2);
	

	return (serr);
}





//用于確定數(shù)組選擇區(qū)域函數(shù),通過(guò)快速排序法實(shí)現(xiàn),(二分法排序,降序)
     
void quick_sort(double *item,int left,int right,int *locat)  //<號(hào)升序>號(hào)降序 
      //item:需排序的數(shù)組,left:數(shù)組的下標(biāo)下界, 
	  //right:數(shù)組的下標(biāo)上界,locat:數(shù)組中各元素在原數(shù)組中的位置
      //求最大值則用升序,求最小值用降序
{	int i,j,k;
	double fa,fb;

	i=left;  j=right;
	fa=item[(left+right)/2];

	do{
		while((item[i]<fa)&&(i<right)) i++;
		while((fa<item[j])&&(j>left))  j--;
		
		if(i<=j)
		{
			fb=item[i];
			item[i]=item[j];
			item[j]=fb;

			k=locat[i];
			locat[i]=locat[j];
			locat[j]=k;

			i++;j--;
		}
	}while(i<=j);

	if(left<j)  quick_sort(item,left,j,locat);
	if(i<right) quick_sort(item,i,right,locat);
}


//用于確定在種群中的個(gè)體選擇位置和規(guī)格化適應(yīng)度的函數(shù)

void normalfitness(individual *pop)  //參數(shù)是種群數(shù)組newpop[]等
{
	double fit[POPSIZE];
	int i;

	for(i=0;i<POPSIZE;i++)
	{
		fit[i]=pop[i].lsquare;  //個(gè)體的適應(yīng)性 
		location[i]=i;
	}

	quick_sort(fit,0,POPSIZE-1,location);   //按適應(yīng)度由大到小排序

	for(i=0;i<POPSIZE;i++)
		pop[location[i]].fitness=2*(i+1);   //重新計(jì)算適應(yīng)度,計(jì)算后原先適應(yīng)度大的將變小
	                                       //因初始適應(yīng)度是用評(píng)價(jià)函數(shù)的返回值表示的,而評(píng)價(jià)函數(shù)返回的是誤差,
	                                       //故原先的適應(yīng)度大的表示實(shí)際誤差大,實(shí)際的適應(yīng)性較差
	                                        //規(guī)格化運(yùn)算后,適應(yīng)度的值正比地 反映了該個(gè)體的適應(yīng)程度
}


//初始化種群的函數(shù),用隨機(jī)生成的數(shù)初始化參數(shù)a,b,c;
//用評(píng)估函數(shù)的返回值作為個(gè)體的適應(yīng)度,同時(shí)規(guī)格化適應(yīng)度確定個(gè)體的選擇位置


void initpop(void)
{
	int i,j;

	for(i=0;i<POPSIZE;i++)
	{
		for(j=0;j<NVARS;j++)
			oldpop[i].chrom[j]=a[j]+rdft()*(b[j]-a[j]);//個(gè)體中的參數(shù)a,b,c隨即生成
		oldpop[i].lsquare=evaluate(oldpop[i].chrom);//用評(píng)估函數(shù)的返回值作為個(gè)體的適應(yīng)度
		                                            //可見(jiàn)評(píng)估函數(shù)值越小則適應(yīng)性越強(qiáng)
		oldpop[i].fitness=0;
	}
	normalfitness(oldpop);//確定個(gè)體的選擇位置和規(guī)格化適應(yīng)度
	oldpop[POPSIZE]=oldpop[location[POPSIZE-1]];
}



//選擇函數(shù):采用賭盤選擇方法

int select(individual *pop)
{ 
	double rand1;
	int partsum=0;
	int i=0;
	rand1=rdft()*POPSIZE*(POPSIZE+1);

	for(i=0;(rand1>=partsum);i++)
		partsum+=pop[i].fitness;//部分和是基因適應(yīng)度的和

	return (i-1);
}


//突變:

double mutate(int i)
{
	return a[i]+rdft()*(b[i]-a[i]);//產(chǎn)生參數(shù)上下限內(nèi)的隨機(jī)數(shù)
}


//交叉和突變函數(shù):數(shù)學(xué)交叉

void xover(double *parent1,double *parent2,double *child1,double *child2)
    //參數(shù)為個(gè)體基因中的參數(shù)串charm[]
{
	double alpha;
	int i;

	for(i=0;i<NVARS;i++)
	{
		alpha=rdft();
		
		child1[i]=alpha*parent1[i]+(1-alpha)*parent2[i];
		child2[i]=alpha*parent2[i]+(1-alpha)*parent1[i];

		if(rdft()<PMUTATION)
			child1[i]=mutate(i);
		if(rdft()<PMUTATION)
			child2[i]=mutate(i);
	}
}


//初始化函數(shù):

void initialize(void)     //void initialize(int argc,char *argv[])
{


	srand(time(NULL));   //初始化隨機(jī)函數(shù)發(fā)生器
	
	
	printf("非線性參數(shù)進(jìn)化評(píng)估器\n");
	

	printf("G-代數(shù)  U-沒(méi)有改變的代數(shù)");
	printf("ERR-最小平方誤差 r-相關(guān)系數(shù)\n\n");
	printf("輸入?yún)?shù)的下限和上限\n");

a[0]=-100;
a[1]=-100;
b[0]=100;
b[1]=100;


	location[POPSIZE]=POPSIZE;

	initpop();        //初始化種群


}


//重組函數(shù):通過(guò)選擇、交叉和變異由老的一代產(chǎn)生新的一代

void  recombine(void)
{
	int i=0;
	int mate1,mate2;

	while(i<POPSIZE){

		//從老一代中選擇兩個(gè)雙親
		
		
		mate1=select(oldpop);
		do
		{
			mate2=select(oldpop);
		}while(mate1==mate2);
		
         //對(duì)選擇的個(gè)體進(jìn)行交叉和突變操作

		if(rdft()<PXOVER)
		{
			xover(oldpop[mate1].chrom,oldpop[mate2].chrom,
				newpop[i].chrom,newpop[i+1].chrom);

			newpop[i].lsquare=evaluate(newpop[i].chrom);  //確定交叉后產(chǎn)生的新個(gè)體的適應(yīng)度
			newpop[i+1].lsquare=evaluate(newpop[i+1].chrom);
		}
		else
		{
			newpop[i]=oldpop[mate1];
			newpop[i+1]=oldpop[mate2];
		}

		i+=2;
	
	}

//在新的種群中隨機(jī)選擇一個(gè)個(gè)體,若它比原種群中最好的個(gè)體好,則替代它,否則不做改變

	i=rnd(0,POPSIZE-1);
	if(newpop[i].lsquare<oldpop[POPSIZE].lsquare)
		newpop[i]=oldpop[POPSIZE];
	
//	printf("\n######################################################################\n");



	normalfitness(newpop);     //確定個(gè)體在種群中的選擇位置和規(guī)格化適應(yīng)度

	//printf("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");


	//如果新的種群中的最好的個(gè)體比過(guò)去的種群中的最好的個(gè)體好,
//就從新的種群中拷貝這個(gè)最好的否則用過(guò)去的種群中的最好的個(gè)體替代當(dāng)前的最好個(gè)體
//注意:這個(gè)最好的個(gè)體不包括直接進(jìn)化產(chǎn)生的


	if(newpop[location[POPSIZE-1]].lsquare>oldpop[POPSIZE].lsquare)
	{
		newpop[POPSIZE]=newpop[location[POPSIZE-1]];
		change=0;
	}
	else
	{
		newpop[POPSIZE]=oldpop[POPSIZE];
		change++;
	}


}




void report(int gen)   //結(jié)果報(bào)告
{
	int i;
	printf("\r G=%3d   U=%2d  change=%d  ",gen,change,gen-change);

	for(i=0;i<NVARS;i++)
		printf("par%d=%lf  ",i,newpop[POPSIZE].chrom[i]);

	printf("err=%lf\n",newpop[POPSIZE].lsquare);

	//printf("\n************************************************************************\n");

}



//主函數(shù):


void main(void)      //void main(int argc,char *argv[])
{
	int i;

	gen=0;
	
	initialize();     //initialize(argc,argv);

	for(gen=1;gen<=maxgen;gen++)
	{
		recombine();
		report(gen);

		//拷貝新種群到老種群
		for(i=0;i<=POPSIZE;i++)
			oldpop[i]=newpop[i];
	}


}













?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天综合网天天狠天天| 日韩一区中文字幕| 国产一区二区精品在线观看| 日韩免费成人网| 日本欧美在线看| 精品日产卡一卡二卡麻豆| 蜜桃一区二区三区在线观看| 欧美一级xxx| 国产精品一区一区| 亚洲国产成人午夜在线一区 | 精品美女一区二区| 国内久久精品视频| 国产精品伦一区| 色婷婷综合久久久中文字幕| 午夜私人影院久久久久| 91.xcao| 国产专区综合网| 国产精品视频线看| 欧美日韩一区二区三区视频| 日韩av网站免费在线| 精品久久久久久久久久久久久久久 | 亚洲国产成人精品视频| 欧美一级专区免费大片| 国产精品中文字幕日韩精品| 国产精品三级在线观看| 欧美午夜精品免费| 久久99在线观看| 最好看的中文字幕久久| 欧美日韩色综合| 国产剧情一区在线| 一区二区三区四区不卡在线 | 日韩欧美一二区| a4yy欧美一区二区三区| 视频在线观看一区| 中文字幕第一区综合| 欧美日韩国产精品自在自线| 国产一区二区在线观看视频| 伊人夜夜躁av伊人久久| 亚洲精品在线三区| 在线免费不卡视频| 国产福利不卡视频| 天天色综合成人网| 国产精品久久网站| 欧美电视剧免费观看| 色综合色狠狠综合色| 精品一区二区国语对白| 一区二区三区不卡视频在线观看| 久久新电视剧免费观看| 欧美日韩在线播放三区| 96av麻豆蜜桃一区二区| 国产制服丝袜一区| 午夜精品久久久久久不卡8050| 欧美国产一区视频在线观看| 制服丝袜亚洲色图| 91精品1区2区| 成人午夜伦理影院| 国产精品一区二区免费不卡 | 亚洲成va人在线观看| 欧美极品aⅴ影院| 日韩精品一区国产麻豆| 日本高清免费不卡视频| 丁香一区二区三区| 国产一区在线观看视频| 日韩av不卡在线观看| 一区二区三区四区av| 亚洲三级在线免费| 国产精品午夜电影| 久久色在线视频| 精品奇米国产一区二区三区| 5858s免费视频成人| 欧美网站一区二区| 91国偷自产一区二区三区观看| 不卡在线视频中文字幕| 国产白丝网站精品污在线入口| 国产综合一区二区| 韩国三级在线一区| 国产揄拍国内精品对白| 激情综合网激情| 狠狠色狠狠色综合| 国内精品久久久久影院一蜜桃| 另类小说视频一区二区| 日韩影院在线观看| 青椒成人免费视频| 精品亚洲免费视频| 在线免费观看成人短视频| 在线一区二区视频| 欧美主播一区二区三区美女| 91激情五月电影| 精品视频免费看| 欧美一区二区成人| 日韩美女在线视频| 久久久午夜电影| 欧美激情一区不卡| 亚洲乱码中文字幕| 亚洲第一精品在线| 老司机午夜精品99久久| 国内精品久久久久影院色| 国产精品自在欧美一区| 成人免费观看视频| 91黄色免费观看| 51精品国自产在线| 久久久久久夜精品精品免费| 国产精品嫩草99a| 亚洲美腿欧美偷拍| 视频在线观看91| 国产麻豆精品theporn| 不卡视频一二三四| 欧美系列亚洲系列| 欧美tickle裸体挠脚心vk| 国产精品五月天| 亚洲成a人在线观看| 免费高清在线一区| jvid福利写真一区二区三区| 欧美日韩一区 二区 三区 久久精品| 777午夜精品免费视频| 久久天天做天天爱综合色| 综合在线观看色| 蜜臀av一区二区在线免费观看| 国产东北露脸精品视频| 91精品福利视频| 久久久久97国产精华液好用吗| 亚洲三级电影网站| 久久99国产精品免费| thepron国产精品| 日韩欧美一级二级三级| 最新不卡av在线| 另类的小说在线视频另类成人小视频在线 | 99久久久久久| 91精品国产福利| 亚洲欧美日韩国产手机在线| 蜜桃视频一区二区| 91免费小视频| 久久久精品国产免大香伊| 亚洲一级电影视频| 成人免费观看av| 欧美成人精品3d动漫h| 亚洲免费伊人电影| 国产激情一区二区三区| 91精品国产一区二区三区蜜臀 | 中文字幕av一区二区三区| 视频在线观看一区二区三区| 99riav一区二区三区| 日韩精品中文字幕在线一区| 亚洲综合区在线| 成人性生交大片免费看视频在线 | 久久免费偷拍视频| 五月天一区二区| 91免费看视频| 国产精品你懂的在线| 国产一区视频在线看| 欧美狂野另类xxxxoooo| 一区二区三区在线视频观看| 激情深爱一区二区| 337p亚洲精品色噜噜噜| 亚洲国产精品一区二区尤物区| 岛国av在线一区| 久久亚洲精精品中文字幕早川悠里 | 99久免费精品视频在线观看| 日韩区在线观看| 青青草97国产精品免费观看无弹窗版| 91麻豆免费视频| 亚洲人成网站色在线观看| 成人午夜av电影| 国产精品女人毛片| www.av亚洲| 亚洲日本免费电影| 色婷婷精品大在线视频| 亚洲视频你懂的| 91在线精品秘密一区二区| 一区精品在线播放| 91亚洲资源网| 亚洲精品国产一区二区三区四区在线| 成人avav影音| 亚洲日本一区二区| 91成人看片片| 丝袜美腿亚洲色图| 制服丝袜国产精品| 极品尤物av久久免费看| www激情久久| 国产suv一区二区三区88区| 日本一区二区高清| av电影在线不卡| 亚洲一区二区三区激情| 欧美日本视频在线| 久久成人麻豆午夜电影| 久久美女艺术照精彩视频福利播放| 国产精品18久久久久久久网站| 久久久精品免费观看| av男人天堂一区| 天天免费综合色| 26uuu另类欧美| caoporen国产精品视频| 洋洋成人永久网站入口| 欧美剧情片在线观看| 麻豆精品久久精品色综合| 国产午夜精品久久久久久免费视 | 日韩写真欧美这视频| 国产精品资源在线| 日韩美女视频一区二区| 欧美主播一区二区三区|