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

📄 xover3.cpp

📁 c++语言实现的遗传算法的例子,需要的快下啊
💻 CPP
字号:
// Xover3.cpp: implementation of the Xover3 class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Xover3.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

XOver3::XOver3(int n,Rand * r,double p):XOver(n,r,p)
{

}

void XOver3::xover(Popular * parent1,Popular * parent2,Popular * child1,Popular * child2)
{
    int alpha,beita;
    int i,j;
	double * pop[4];
	pop[0]=parent1->GetPop();
	pop[1]=parent2->GetPop();
	if(rand->random(1)<px)
	{
		pop[2]=new double[nvars];
		pop[3]=new double[nvars];
//		FILE * file ;
//		file=fopen("2.zn","w");
		alpha=rand->randint(nvars);
		do{
			beita=rand->randint(nvars);
		}while(alpha==beita);
		if(alpha>beita)
		{
			int temp=alpha;
			alpha=beita;
			beita=temp;
		}
		for(i=0;i<beita-alpha;i++)
		{
			pop[2][i]=pop[0][alpha+i];
			pop[3][i]=pop[1][alpha+i];
		}
		int m=beita-alpha;
		int n=beita-alpha;
		for(i=0;i<nvars;i++)
		{
			int a=0,b=0;
			for(j=0;j<beita-alpha;j++)
			{
				if(pop[0][i]==pop[3][j])
					a=1;
				if(pop[1][i]==pop[2][j])
					b=1;
			}
			if(a==0)
			{
				pop[3][n]=pop[0][i];
				n++;
			}
			if(b==0)
			{
				pop[2][m]=pop[1][i];
				m++;
			}
		}
//		fprintf(file,"%f    %f    %f\n",pop[2][i],pop[3][i],alpha);
//	for(int i=0;i<nvars;i++)
//		fclose(file);
 		child1->SetPop(pop[2]);
		child2->SetPop(pop[3]);
		delete[] pop[2];
		delete[] pop[3];
	}
	else
	{
		child1->SetPop(pop[0]);
		child2->SetPop(pop[1]);
	}
	for(i=0;i<2;i++)
		delete[] pop[i];
}

XOver3::~XOver3()
{

}

⌨️ 快捷键说明

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