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

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

?? operators_nsga2.cpp

?? 多目標(biāo)優(yōu)化進(jìn)化算法目前公認(rèn)效果收斂性最好的算法NSGA2c++源碼,具有一般性
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
///////////////////////////////////////////////////////////////////
/*****************************************************************
Copyright: Artificial Life and Adaptive Robotics Laboratory - ALAR
School of ITEE, UNSW@ADFA, Australia, 2005
*******************************************************************/
///////////////////////////////////////////////////////////////////


#include "operators_NSGA2.h"
#include <assert.h>


operators_NSGA2::~operators_NSGA2()
{
	if (max_values) {delete [] max_values; max_values=NULL;}
	if (min_values) {delete [] min_values; min_values=NULL;}
}

// create population q from population p by crowded tournament selection
void operators_NSGA2::selection(population &q,population &p)   // same size
{
	
	int size=p.pop_size;  // population size , the same for both a and p
	
	
	individual mate1,mate2;
	
	int index1,index2,rank1,rank2;
	int c=0;
	
	
	crowding_sort(p, FALSE);
	
	while(c<size)
	{
		
		index1=(int)(rnd.nextDouble()*(size)); 
		if (index1>=size) index1=size-1;
		
		index2=(int)(rnd.nextDouble()*(size));
		if (index2>=size) index2=size-1;
		
		mate1=p.individuals[index1];
		mate2=p.individuals[index2];
		
		rank1=mate1.rank;// p.rank[index1];
		rank2=mate2.rank;// p.rank[index2];
		
		//crowded tournament selection
		if (rank1<rank2) 
			q.individuals[c]=mate1; 
		if (rank1>rank2)
			q.individuals[c]=mate2;
		if (rank1==rank2)
		{
			if (mate1.DglobalFitness>mate2.DglobalFitness)
				q.individuals[c]=mate1;
			else
				q.individuals[c]=mate2;
		}
		c += 1;
	}
}

void operators_NSGA2::crossover(population &pop)
{
	individual mate1,mate2;
	int size=pop.pop_size/2;
	int CH_LEN=pop.individuals[0].chromosome_len;
	
	
	
	int csite=0,i,index, counter=0;
	
	int nc=0;	
	
	
	
	unsigned int *cc1=new unsigned int[CH_LEN]; 
	unsigned int *cc2=new unsigned int[CH_LEN];
	//unsigned int *cm1=new unsigned int[CH_LEN];
	//unsigned int *cm2=new unsigned int[CH_LEN];
	individual temp;//=NULL;
	index=0;
	temp=pop.individuals[0];
	while (counter<size)
	{
		// selcect parents
		
		mate1=pop.individuals[index] ;
		index++;
		
		mate2=pop.individuals[index];
		index++;
		//copyarray(cm1,mate1.Bgenes,CH_LEN);
		//copyarray(cm2,mate2.Bgenes,CH_LEN);
		
		
		//crossover
		double r=rnd.nextDouble();
		if (r<=pc) // do crossover
		{
			nc++;
			csite=(int)(rnd.nextDouble()*(CH_LEN));
			if (csite>=CH_LEN) csite=CH_LEN-1;
			for (i=0;i<csite;i++)
			{
				//cc1[i]=cm1[i];
				//cc2[i]=cm2[i];
				cc1[i]=mate1.Bgenes[i];
				cc2[i]=mate2.Bgenes[i];
			}
			for (i=csite;i<CH_LEN;i++)
			{
				//cc1[i]=cm2[i];
				//cc2[i]=cm1[i];
				cc1[i]=mate2.Bgenes[i];
				cc2[i]=mate1.Bgenes[i];
			}
		}
		else  //  copying
		{
			for (i=0;i<CH_LEN;i++)
			{
				//cc1[i]=cm1[i];
				//cc2[i]=cm2[i];
				cc1[i]=mate1.Bgenes[i];
				cc2[i]=mate2.Bgenes[i];
			}
		}
		
		
		temp.set_chromosome(cc1);
		set_objectivevalue(temp,temp.Dgenes); 
		pop.individuals[counter]=temp; 
		
		
		temp.set_chromosome(cc2); 
		set_objectivevalue(temp,temp.Dgenes);
		pop.individuals[counter+1]=temp;
		counter += 2;
    }
	
	if (cc1) {delete [] cc1;cc1=NULL;}
	if (cc2) {delete [] cc2;cc2=NULL;}
	//if (cm1) {delete [] cm1;cm1=NULL;}
	//if (cm2) {delete [] cm2;cm2=NULL;}
}

void operators_NSGA2::mutation(population &pop)
{
	if ((pm<=0)||(pm>1)) return;
	
	int size=pop.pop_size/2;
	int CH_LEN=pop.individuals[0].chromosome_len;
	
	//population newpop;
	int i,counter=0;
	double r;
	int nc=0;	
	unsigned int *cm1=new unsigned int[CH_LEN];
	
	//newpop.set_pop_size(size); 
	
	//rnd.setSeed(n_SEED); 
	
	individual mate1;
	individual temp;//=NULL;
	temp=pop.individuals[0];
	while (counter<size)
	{
		mate1=pop.individuals[counter];
		copyarray(cm1,mate1.Bgenes,CH_LEN);
		
		for (i=0;i<CH_LEN;i++)
		{
			r=rnd.nextDouble();
			if (r<=pm)
			{
				cm1[i]=(cm1[i]==0)?1:0;
			}
		}
		
		temp.set_chromosome(cm1);
		set_objectivevalue(temp,temp.Dgenes); 
		
		pop.individuals[counter]=temp; 
		
		counter += 1;
	}
	if (cm1) {delete [] cm1;cm1=NULL;}
}

void operators_NSGA2::crowding_sort(population &F, int sort)
{
	
	int i,j,k,size = F.pop_size;
	
	double t1,t2;
	individual Itemp;
	for (i=0;i<size;i++)    // to store array index
	{
		
		F.individuals[i].DglobalFitness=0;
	}
	
	int NObjs=F.individuals[0].InumberofObjs;
	
	if (size<=2) return;   // 2 individuals: select which one?
	
	for (k=0;k<NObjs;k++)   // sort the set in the order of ith objective
	{
		
		for(i=0;i<size-1;i++)
		{
			for (j=i+1;j<size;j++)	
			{
				t1 = F.individuals[i].DfitnessN[k];
				t2 = F.individuals[j].DfitnessN[k];
				if (t1>t2)
				{
					Itemp            = F.individuals[i];
					F.individuals[i] = F.individuals[j];
					F.individuals[j] = Itemp; 
				}
			}
		}
		
		F.individuals[0].DglobalFitness=D_MAX;
		F.individuals[size-1].DglobalFitness=D_MAX;
		
		for(i=1;i<size-1;i++)
		{
			double temp=F.individuals[i].DglobalFitness;
			if (temp<D_MAX)
			{
				temp+=fabs(F.individuals[i+1].DfitnessN[k]-F.individuals[i-1].DfitnessN[k])/(max_values[k]-min_values[k]);	
				F.individuals[i].DglobalFitness=temp; 
			}
		}
		if ((k==0)&&((objID==7)||(objID==8))&& (!sort)) 
		{
			F.individuals[0].DglobalFitness=2*F.individuals[1].DglobalFitness;
		}
	}
	
	////////sorting crowding values: descending order ///////////////////////////////////
	if (sort){		
		for(i=0;i<size-1;i++)
		{
			for (j=i+1;j<size;j++)	
			{
				t1=F.individuals[i].DglobalFitness;
				t2=F.individuals[j].DglobalFitness;
				if (t1<t2)
				{
					Itemp=F.individuals[i];
					F.individuals[i]=F.individuals[j];
					F.individuals[j]=Itemp; 
				}
			}
		}
	}
}

void operators_NSGA2::set_objectivevalue_maxmin(population &p, int size)
{
	int i,j;
	int p_size=p.pop_size; 
	for (i=0;i<size;i++)
	{
		
		min_values[i]=p.individuals[0].DfitnessN[i];
		max_values[i]=p.individuals[0].DfitnessN[i];
		for (j=1;j<p_size;j++)
		{	
			if (p.individuals[j].DfitnessN[i]<min_values[i])
				min_values[i]=p.individuals[j].DfitnessN[i];
			
			if (p.individuals[j].DfitnessN[i]>max_values[i])
				max_values[i]=p.individuals[j].DfitnessN[i];
		}	
	}
	
}

void operators_NSGA2::copyarray(unsigned int *&d, unsigned int *s,int size)
{
	for (int i=0;i<size;i++)
		d[i]=s[i];
}

void operators_NSGA2::initialize_population(const int n_Genes,int n_Objs,int *GSize,double *Ub,double *Lb,population &pop)
{
	int i,j;
	double *real_params;
	
	real_params=new double[n_Genes];
	
	individual *id_temp=NULL;
	
	for(i=0;i<pop.pop_size;i++)
	{
		
		for(j=0;j<n_Genes;j++)     // initialize real values for x1,x2,..xn
			real_params[j]=Lb[j] + rnd.nextDouble()*(Ub[j]-Lb[j]);
		
		if (id_temp) {delete id_temp;id_temp=NULL;}
		id_temp=new individual(n_Genes,n_Objs,GSize,Ub,Lb,real_params,TRUE); 
		
		
		
		set_objectivevalue(*id_temp,real_params);
		
		
		pop.individuals[i]=*id_temp; 
	}
	
	add_secondobjective(pop,pop.pop_size);
	
	if (real_params) {delete [] real_params; real_params=NULL;}
	if (id_temp) {delete id_temp;id_temp=NULL;}
	
}

void operators_NSGA2::set_objectivevalue(individual &id, double *real_params)
{
	
	int j,n_Objs=id.InumberofObjs;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区三区| 精品美女一区二区三区| 国产1区2区3区精品美女| 奇米精品一区二区三区在线观看| 日本高清无吗v一区| 日韩一区二区电影| 欧美精品视频www在线观看| 欧美综合久久久| 欧美四级电影网| 欧美日韩在线播| 欧美午夜在线观看| 欧美日韩国产色站一区二区三区| 91美女视频网站| 91香蕉国产在线观看软件| 91啦中文在线观看| 欧美三级日韩在线| 欧美精三区欧美精三区| 欧美成人vps| 久久久久99精品一区| 国产欧美一区二区三区在线老狼| 久久久午夜精品| 中文字幕一区视频| 亚洲国产精品久久艾草纯爱| 肉丝袜脚交视频一区二区| 日韩av一二三| 国产**成人网毛片九色 | 亚洲一区二区美女| 亚洲电影视频在线| 天堂成人免费av电影一区| 美女网站色91| 福利91精品一区二区三区| 99久久精品国产网站| 欧美色图在线观看| 精品国一区二区三区| 国产人伦精品一区二区| 亚洲欧美另类小说| 免费久久精品视频| 国产福利一区二区| 欧洲一区二区三区在线| 日韩免费在线观看| 国产精品美女久久久久久久久久久 | 亚洲欧美欧美一区二区三区| 亚洲第四色夜色| 国产一区二区三区四区五区入口| www.在线欧美| 91精品国产91热久久久做人人| 久久九九久精品国产免费直播| 中文字幕亚洲综合久久菠萝蜜| 香蕉久久夜色精品国产使用方法| 国产在线精品视频| 色老汉av一区二区三区| 欧美成人bangbros| 亚洲乱码国产乱码精品精98午夜| 麻豆精品新av中文字幕| 不卡的av中国片| 91精品国产乱码久久蜜臀| 国产精品网站在线| 免费观看30秒视频久久| 91网站最新网址| 精品国一区二区三区| 亚洲综合免费观看高清在线观看| 国产精品99久久久久久有的能看 | 中文无字幕一区二区三区 | 极品少妇xxxx精品少妇| 欧美亚洲综合在线| 国产免费久久精品| 久久精品99国产精品日本| 欧美综合一区二区三区| 欧美国产精品一区二区三区| 日韩国产欧美在线播放| 91蜜桃婷婷狠狠久久综合9色| 欧美成人国产一区二区| 午夜视频一区二区三区| 99久久精品一区二区| 久久婷婷久久一区二区三区| 午夜精品一区在线观看| 91福利视频久久久久| 国产性做久久久久久| 久久99国产精品久久99| 欧美精品在线观看播放| 一区二区在线观看av| 高清成人在线观看| 久久久国产综合精品女国产盗摄| 日韩av电影一区| 欧美日韩www| 亚洲影院理伦片| 91在线国产福利| 国产精品无人区| 国产电影一区在线| 久久久www成人免费毛片麻豆 | 成人黄色软件下载| 久久午夜羞羞影院免费观看| 久久精品久久精品| 欧美一级生活片| 日韩国产欧美三级| 制服丝袜激情欧洲亚洲| 亚洲成a人在线观看| 在线看不卡av| 亚洲一级二级在线| 色狠狠桃花综合| 亚洲精品欧美专区| 欧美性色黄大片| 亚洲一区二区av电影| 91福利小视频| 亚洲成人av在线电影| 欧美日韩精品欧美日韩精品一综合| 亚洲精品免费视频| 欧美中文字幕亚洲一区二区va在线 | 中文字幕在线一区免费| www.成人网.com| 综合久久给合久久狠狠狠97色| 不卡一区在线观看| 亚洲欧美在线视频观看| 色欧美片视频在线观看在线视频| 亚洲手机成人高清视频| 91福利在线播放| 视频精品一区二区| 日韩一区二区三区视频| 激情欧美一区二区| 中文字幕乱码久久午夜不卡 | 91精选在线观看| 九九精品一区二区| 日本一区二区三区四区| 97久久精品人人做人人爽| 一区二区三区自拍| 欧美人动与zoxxxx乱| 老司机免费视频一区二区| 久久青草国产手机看片福利盒子| 成人激情av网| 亚洲午夜久久久| 日韩精品专区在线影院观看| 国产精品中文字幕欧美| 亚洲欧美中日韩| 欧美精品色一区二区三区| 激情深爱一区二区| 亚洲三级久久久| 91精品国产综合久久精品| 国产成人免费视频一区| 亚洲自拍偷拍网站| 精品剧情在线观看| av动漫一区二区| 日韩成人精品在线| 中文一区在线播放| 欧美日韩国产在线播放网站| 精久久久久久久久久久| 国产精品第一页第二页第三页| 欧美三级午夜理伦三级中视频| 久久成人免费网| 亚洲日本在线看| 日韩一区国产二区欧美三区| 成人综合日日夜夜| 午夜精品成人在线| 中文字幕av一区二区三区免费看| 欧美午夜电影一区| 成人在线一区二区三区| 亚洲大片免费看| 中文字幕欧美激情一区| 欧美一区二区三区免费观看视频 | 欧美不卡视频一区| 色综合天天综合色综合av| 激情综合色综合久久| 亚洲免费在线视频| 久久精子c满五个校花| 在线不卡的av| aaa亚洲精品| 狠狠色丁香久久婷婷综合_中| 亚洲欧美aⅴ...| 国产欧美日韩在线视频| 欧美一区二区美女| 在线亚洲精品福利网址导航| 精品一二三四区| 午夜影院在线观看欧美| 18欧美乱大交hd1984| 久久久精品日韩欧美| 91精品国产入口在线| 91久久精品一区二区| 懂色av一区二区夜夜嗨| 狠狠色丁香婷婷综合| 日韩精品色哟哟| 一卡二卡欧美日韩| √…a在线天堂一区| 国产拍揄自揄精品视频麻豆| 日韩欧美一级二级| 欧美高清dvd| 欧美在线观看视频一区二区| av一区二区不卡| 丰满白嫩尤物一区二区| 国产综合久久久久久久久久久久 | 成人av片在线观看| 国产综合久久久久久鬼色| 免费人成网站在线观看欧美高清| 亚洲综合在线五月| 亚洲欧美一区二区在线观看| 中文字幕+乱码+中文字幕一区| 欧美电影免费观看高清完整版在| 欧美精品欧美精品系列| 欧美午夜视频网站| 欧美三级中文字幕在线观看| 欧美性受xxxx| 欧美中文字幕亚洲一区二区va在线|