⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crossover.h

📁 多目标遗传算法的源代码
💻 H
字号:
/*This is the file for formulating the crossover process*/

void crossover(population *new_pop_ptr,population *mate_pop_ptr) ;

void crossover(population *new_pop_ptr,population *mate_pop_ptr)
{
	int i,j,k,l,m,n,y,mating_site,*par1,*par2,*chld1,*chld2,c;
	float rnd;
	int r;
	rnd=randomperc();
	
	new_pop_ptr->ind_ptr=&(new_pop_ptr->ind[0]);
	
	mate_pop_ptr->ind_ptr=&(mate_pop_ptr->ind[0]);
	
	for (i = 0,y = 0,n = 0;i < popsize/2;i++)
	{
		new_pop_ptr->ind_ptr = &(new_pop_ptr->ind[n]);
		chld1=&(new_pop_ptr->ind_ptr->genes[0]);
		n = n+1;
		
		new_pop_ptr->ind_ptr = &(new_pop_ptr->ind[n]);
		chld2=&(new_pop_ptr->ind_ptr->genes[0]);
		n = n+1;
		
		mate_pop_ptr->ind_ptr = &(mate_pop_ptr->ind[y]);
		par1 = &(mate_pop_ptr->ind_ptr->genes[0]);
		y = y+1;
		
		mate_pop_ptr->ind_ptr = &(mate_pop_ptr->ind[y]);
		par2 = &(mate_pop_ptr->ind_ptr->genes[0]);
		y = y+1;
		
		rnd = randomperc();
		if (rnd < pcross)
		{
			ncross++;
			rnd = randomperc();
			c = floor(rnd*(chrom+10));
			mating_site = c;
			if(mating_site >= chrom)
			{
				mating_site = mating_site/2;
			}
			
			for(k = 0;k < chrom;k++)
			{
				if(k > mating_site-1)
				{
					*chld1++ = *par2++;
					*chld2++ = *par1++;
				}
				else
				{
					*chld1++ = *par1++;
					*chld2++ = *par2++;
				}
			}
		}
		else
		{
			for (k = 0;k < chrom;k++)
			{
				*chld1++ = *par1++;
				*chld2++ = *par2++;
			}
		}
	}
	return;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -