为了验证我对PARETO最优的观点是否正确,我又参阅了许多源代码,其中Non-dominated Sorting Genetic Algorithm II developed by Kalyanmoy Deb et al.NSGAII--ProfessorKalyan的源代码最具参考价值,显然我对Pareto优胜的概念认识是正确的,但是群体中的Pareto前端如何产生显然在对Professor XiaoLan的论文分析的时候产生了偏差,显然如果按照Pareto优胜的概念去产生前端,前端当然不可能会很多,这个问题到底如何解决,我还在郁闷之中,下面是今天阅读的源代码,供大家参考
/*Routine Comparing the two individuals*/
/*个体之间支配关系的比较*/
int
indcmp3(
float
*
ptr1,
float
*
ptr2)
{
float fit1[maxfun],fit2[maxfun];
int i,value,m,n;
for(i = 0;i < nfunc ;i++)
{
fit1[i] = *ptr1++;
fit2[i] = *ptr2++;
}
//初始化两个个体在各个目标上的适应度函数
m = 0;
n = 0;
while(m < nfunc && fit1[m] <= fit2[m])
{
if(fit1[m]== fit2[m]) n++;
m++;
}
if(m == nfunc) //循环下来所有目标都满足约束条件 fit1[m] <= fit2[m]
{
if(n == nfunc) value = 3;//如果都是等于那么.两个个体之间没有关系.
else value = 1;//有一个优于那么即个体1支配个体2 理解正确 /*value = 1 for dominationg*/
}
else
{
m = 0;
n = 0;
while(m < nfunc && fit1[m] >= fit2[m]) //反过来做一遍
{
if(fit1[m]== fit2[m]) n++;
m++;
}
if(m == nfunc)
{
if(n != nfunc)
value = 2; //个体1被个体2支配 /*value = 2 for dominated */
else value =3;
}
else value = 3; /*value = 3 for incomparable*/
}
return value;
}
如果你能提点提点,当然我是最高兴的













































如果你能提点提点,当然我是最高兴的