📄 xover3.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 + -