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

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

?? operators.c

?? genetic algorithm c code
?? C
字號:
/*=================================================            file : operators.c     purpose : messy GA operators    developed : 1991     author : Kalyanmoy Deb     bugfix : Alex Kosorukoff====================================================*/#include "mga.ext"INDV_ID select_pop()/*  determine which selection operator  */{	if (gen < init_select_gen)		return (init_select());	else 	{		if (thresholdingflag)			return(thresholding_select());		else			return(normal_select());	}}INDV_ID select(first, second)INDV_ID first, second;/*  selects the better of first and second  */{	if (oldpop[first].fitness == oldpop[second].fitness) {		if (tiebreakingflag)			return((oldpop[first].chromlen < \				oldpop[second].chromlen) ? first : second);		else 			return(flip(0.5) ? first : second);	}	else if (oldpop[first].fitness > oldpop[second].fitness)	{		return((maximizationflag) ? first : second);	}	else 	{		return((maximizationflag) ? second : first);	}}INDV_ID init_select()/*  tournament selection operator without shuffling  */{	INDV_ID first,second;	if (pick >= popsize-1)		pick = 0;	first = pick;	second = pick + 1;	pick += 2;	return (select(first, second));}INDV_ID normal_select()/*  tournament selection operator with shuffling  */{	INDV_ID first,second;	if (pick >= popsize-1)	{		pick = 0;		shuffle_pop();	}	first = shuffle[pick];	second = shuffle[pick+1];	pick += 2;	return (select(first, second));}INDV_ID thresholding_select()/*  tournament selection operator with thresholding  */{	register int i,j,k;	INDV_ID first, second, fittest, secondid;	int num1, num2, count, temp, threshold;	BOOLEAN flag;	unsigned *rawgn1, *rawgn2;	if (pick >= popsize-1)	{		pick = 0;		shuffle_pop();	}	/*  choose the first individual, default is first  */	fittest = first = shuffle[pick];	rawgn1 = oldpop[first].fullgene;	num1 = oldpop[first].genelen;	for (k=1,flag=0; (k<=shuffle_num && !flag); k++)	{		/*  choose the second individual  */		secondid = pick + k;		/*  if required, scroll to the begining of the array */		if (k >= (popsize - pick))			secondid = k - (popsize - pick);		second = shuffle[secondid];		rawgn2 = oldpop[second].fullgene;		num2 =  oldpop[second].genelen;		/*  count the number of matched genes  */		count = matched_genes(rawgn1, rawgn2);		/*  calculate the threshold value  */		threshold = (num1 * num2);		threshold /= problem_length;		if (count > threshold)		/*  if count > threshold, found a match, perform selection */		{			flag = 1;			temp = shuffle[secondid];			shuffle[secondid] = shuffle[pick + 1];			shuffle[pick + 1] = temp;			fittest = select(first, second);			pick++;		}	}	pick++;	return (fittest);}int matched_genes(rawgn1,rawgn2)unsigned *rawgn1;unsigned *rawgn2;/*  count the number of matched genes  */{	register int i, j;	int num = 0;	unsigned rawgn, mask = 1;	for (i = 0; i < bytesize; i++)	{		/*  get the template of common genes */		rawgn = (rawgn1[i] & rawgn2[i]);		/*  count the number of 1's in the template  */		for (j = 0; j < bytelimit[i]; j++)		{			if (((rawgn >> j) & mask) == 1)				num++;		}	}	return(num);}void cut_and_splice(chr1,chr2)struct INDIVIDUAL chr1,chr2;/*  cut and splice operators  */{	int chr3flag, chr4flag;       /* chr4flag appended -- AK */	struct INDIVIDUAL chr3;	struct INDIVIDUAL chr4;	/*  if first chromosome needs to be cut  */	chr4flag = flip(cut_prob * (chr1.chromlen - 1));   /* AK */	if (chr4flag)	{		cut(&chr1,&chr4);		/* if chr4 is not empty first element in chrom_stack is chr4 */		if (chr4.firstgene != NIL)			push_stack(&chrom_stack,chr4);	}	chr3.firstgene = NIL;	/*  if second chromosome needs to be cut  */        chr3flag = flip(cut_prob * (chr2.chromlen - 1));   /* AK */	if (chr3flag)		cut(&chr2,&chr3);	/*  next element in the chrom_stack is chr2  */	push_stack(&chrom_stack,chr2);	/*  if chr3 is not empty, next element in the stack is chr3  */	if (chr3flag)		/* modified by AK */				/* the zero-length chromosome check  */				/* is no longer needed here */		push_stack(&chrom_stack,chr3);	/*  top most element is chr1  */	push_stack(&chrom_stack,chr1);	/*  check elements in the stack and splice  */	do  {	}   while (test_splice());}BOOLEAN test_splice()/*  splice two members of the stack, send 1 if there is a member left,    0 otherwise  */{	struct INDIVIDUAL chr1,chr2;	/*  get the first member  */	if (pop_stack(&chrom_stack,&chr1))	{		if (flip(splice_prob))		{			/*  check for another member in the stack  */			/*  splice if yes  */			if (pop_stack(&chrom_stack,&chr2))				splice(&chr1,&chr2);		}		push_stack(&newchrom_stack,chr1);		return(1);	}	else		return(0);}void cut(chr1,chr2)struct INDIVIDUAL *chr1,*chr2;/*   cut chr1 into two pieces: chr1, chr2   */{	register int i;	struct GENE *temp;	int cut_site;	char msg[PAGEWIDTH];	temp = (*chr1).firstgene;	/* find out cut site  */	cut_site = rnd(1,(*chr1).chromlen-1);   /* modified -- AK */	/*  cut chr1 at cut_site  */	for (i = 1; i < cut_site; i++)		temp = temp->nextgene;	/*   assign other members of chr1 and chr2  */	(*chr2).firstgene = temp->nextgene;	(*chr2).lastgene = (*chr1).lastgene;	(*chr1).lastgene = temp;	temp->nextgene = NIL;	(*chr2).chromlen = (*chr1).chromlen - cut_site;	(*chr1).chromlen = cut_site;	/*  allocate memory for chr2 fullchrom and fullgene  */	if(!((*chr2).fullchrom = (unsigned *)malloc(bytesize*sizeof(unsigned)))) {		sprintf(msg, "Insufficient memory for fullchrom\n");		print_error(msg);	}	if(!((*chr2).fullgene = (unsigned *)malloc(bytesize*sizeof(unsigned)))) {		sprintf(msg, "Insufficient memory for fullgene\n");		print_error(msg);	}}void splice(chr1,chr2)struct INDIVIDUAL *chr1,*chr2;/*   splice chr1 and chr2 to chr1  */{	/*  chr2 is appended behind chr1  */	(*chr1).lastgene->nextgene = (*chr2).firstgene;	(*chr1).lastgene = (*chr2).lastgene;	(*chr1).chromlen = (*chr1).chromlen + (*chr2).chromlen;	/*  destroy chr2 fullchrom and fullgene */	free((*chr2).fullchrom);	free((*chr2).fullgene);}void mutation(chr)struct INDIVIDUAL *chr;/*  if mutation probabalities are greater than zero, perform mutation  */{	register int i; 	struct GENE *temp;	if ((allelic_mut_prob > 0.0) || (genic_mut_prob > 0.0)) {		temp = (*chr).firstgene;		while (temp != NIL)		{			if (flip(allelic_mut_prob))			/*   perform allelic mutation  */			{				if (temp->allele == 1)					temp->allele = 0;				else 					temp->allele = 1;				allelicmutation++;			}			if (flip(genic_mut_prob))			/*  perform genic mutation  */			{				temp->genenumber = \					genic_mutation(temp->genenumber);				genicmutation++;			}			temp = temp->nextgene;		}	}}GENE_ID genic_mutation(num)GENE_ID num;/*  change the genenumber to other  */{	GENE_ID n;	do {		n = rnd(0, problem_length-1);	}  while (n == num);	return(n);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久1区2区| 亚洲精品视频在线观看免费| 国产精品国产自产拍在线| 亚洲最大成人综合| 国产一区二区三区免费播放| 在线精品视频一区二区三四| 久久精品免费在线观看| 日日噜噜夜夜狠狠视频欧美人 | 日韩欧美自拍偷拍| 中文字幕一区二区三区蜜月| 琪琪久久久久日韩精品| 色久综合一二码| 国产精品美女久久久久久久网站| 色综合色综合色综合| 日韩视频一区二区三区在线播放 | 日韩欧美国产综合一区| 亚洲欧美区自拍先锋| 国产精品一品二品| 日韩一级片在线观看| 亚洲韩国一区二区三区| 91在线无精精品入口| 国产精品日日摸夜夜摸av| 激情综合亚洲精品| 欧美一区二区日韩| 亚洲午夜私人影院| 欧美亚洲尤物久久| 亚洲一区免费观看| 欧洲av一区二区嗯嗯嗯啊| ●精品国产综合乱码久久久久| 国产最新精品免费| 久久先锋资源网| 国产一区二区三区在线观看精品 | 午夜精品久久久久久久蜜桃app| 99精品国产视频| 国产精品国产三级国产普通话三级 | 日韩三级精品电影久久久| 三级在线观看一区二区| 欧美日韩国产一二三| 亚洲不卡在线观看| 91精品国产综合久久久久久| 丝袜国产日韩另类美女| 日韩欧美中文一区| 国产真实乱对白精彩久久| 精品国产精品一区二区夜夜嗨| 麻豆91在线观看| 久久这里都是精品| 成人一区二区三区视频在线观看| 国产精品色在线观看| 99这里只有久久精品视频| 亚洲啪啪综合av一区二区三区| 91国偷自产一区二区三区观看| 亚洲最大成人综合| 欧美一卡2卡3卡4卡| 国产一区不卡精品| 国产精品福利一区二区| 91黄视频在线| 人人爽香蕉精品| 国产日韩av一区| 91久久一区二区| 久久疯狂做爰流白浆xx| 中文字幕久久午夜不卡| 色天天综合久久久久综合片| 丝袜美腿亚洲一区二区图片| 久久综合久久99| 在线观看视频一区二区欧美日韩| 亚洲第一在线综合网站| 久久亚洲一级片| 色94色欧美sute亚洲线路一ni| 午夜不卡av免费| 国产欧美日韩在线| 欧美午夜不卡在线观看免费| 精品一区免费av| 亚洲蜜臀av乱码久久精品| 欧美一区二区三区电影| 成人做爰69片免费看网站| 亚洲一级在线观看| 国产午夜一区二区三区| 欧美日韩美女一区二区| 国产一区二区在线影院| 亚洲成av人在线观看| 欧美国产精品久久| 在线播放国产精品二区一二区四区 | 国产成人午夜视频| 亚洲国产aⅴ成人精品无吗| 欧美精品一区二区三区蜜桃视频 | 国产精品久久影院| 日韩欧美国产一区二区三区| 99re在线视频这里只有精品| 九九**精品视频免费播放| 亚洲最大成人网4388xx| 国产精品免费久久| 欧美videofree性高清杂交| 欧美自拍丝袜亚洲| 成人av一区二区三区| 久久99精品久久久久久久久久久久| 亚洲人成网站在线| 中文乱码免费一区二区| 精品国产髙清在线看国产毛片| 在线亚洲高清视频| 91麻豆成人久久精品二区三区| 国产精品一卡二卡| 久久aⅴ国产欧美74aaa| 日本aⅴ精品一区二区三区| 亚洲在线观看免费视频| 日韩毛片高清在线播放| 国产精品久久精品日日| 欧美韩国日本一区| 337p粉嫩大胆噜噜噜噜噜91av| 制服丝袜成人动漫| 欧美剧情电影在线观看完整版免费励志电影| 99久久精品情趣| 本田岬高潮一区二区三区| 粉嫩嫩av羞羞动漫久久久| 国产经典欧美精品| 大尺度一区二区| 成人app下载| 94色蜜桃网一区二区三区| 99国产一区二区三精品乱码| 成人国产精品免费网站| 成人av免费在线播放| av欧美精品.com| 色婷婷久久一区二区三区麻豆| 色综合久久天天| 欧美性色黄大片| 3atv在线一区二区三区| 日韩色视频在线观看| 精品国产一区二区三区忘忧草| 精品1区2区在线观看| 久久久久久久久久看片| 久久久久久久久一| 国产精品不卡一区| 亚洲一区在线播放| 亚洲444eee在线观看| 五月天国产精品| 青娱乐精品视频| 韩国成人精品a∨在线观看| 国产精品66部| 91一区二区在线| 欧美喷潮久久久xxxxx| 日韩欧美国产一区二区三区| 久久久久国产精品麻豆| 国产精品高潮呻吟| 午夜激情久久久| 国产在线观看免费一区| 99国产精品国产精品毛片| 欧美日韩免费一区二区三区| 欧美不卡视频一区| 五月婷婷久久丁香| 国产乱子轮精品视频| 国产二区国产一区在线观看| 日本丶国产丶欧美色综合| 日韩欧美电影一二三| 国产精品另类一区| 五月激情综合婷婷| 成人午夜av在线| 欧美精品第1页| 日本一区二区三区高清不卡| 亚洲一区二区三区中文字幕 | 久久精品一区八戒影视| 亚洲三级在线观看| 免费不卡在线视频| 99在线视频精品| 欧美videossexotv100| 一区二区三区日韩欧美精品| 精品一区二区在线播放| 99久久国产免费看| 日韩精品综合一本久道在线视频| 国产精品精品国产色婷婷| 日韩主播视频在线| 91同城在线观看| 精品国产一区二区国模嫣然| 亚洲午夜私人影院| 成人丝袜18视频在线观看| 欧美精品自拍偷拍| 国产精品国产成人国产三级| 久久国产精品99精品国产| 欧美午夜影院一区| 国产精品天干天干在观线| 日本不卡不码高清免费观看| 色综合一区二区三区| 国产喷白浆一区二区三区| 免费精品99久久国产综合精品| 色综合久久中文综合久久牛| 欧美国产成人精品| 韩国精品主播一区二区在线观看| 欧美日韩一卡二卡| 伊人夜夜躁av伊人久久| 丁香另类激情小说| 精品国产a毛片| 日产精品久久久久久久性色| 色哟哟国产精品| 亚洲手机成人高清视频| www.av精品| 国产精品高潮呻吟久久| 不卡视频一二三| 国产精品久99| 91玉足脚交白嫩脚丫在线播放| 欧美激情一区二区三区不卡| 国产激情视频一区二区在线观看 | 欧美精品视频www在线观看|