ZDT1、ZDT2、DTLZ1测试函数也写好了,附有实验效果图,希望对大家学习有帮助!!
void generateLamda(int M)//产生N 个权重向量 weight vector //lamdaM 为 N*M矩阵(N个lamda,每个lamda有m维)
{
//动态生成二维数组
lamdaMat=new double *[N+3];//注意,int*[10]表示一个有10个元素的指针数组
for(int i=1; i<=N+1; i++)
{
lamdaMat[i]=new double[M+1];
}
belta=new double *[N+3];//注意,int*[10]表示一个有10个元素的指针数组
for(int x=1; x<=N+1; x++)
{
belta[x]=new double[M+1];
}
// 2目标
if(M==2)
{
double *array1=new double[N+3];
for(int i=0; i<=N+1; i++)
array1[i]=i*1.0/N;
for(int i=1; i<=N+1; i++)////////////////////////////////
{
lamdaMat[i][1]=array1[i-1];
lamdaMat[i][2]=1-array1[i-1];//保证M个分量之和为1
}
////////////////////////////////////////////////////////////
2019-12-21 20:37:52
756KB
MOEAD
1