注册 登录
编程论坛 VC++/MFC

小弟的作业遇到了一点瓶颈问题,求高手进来帮帮忙,感激不尽!!!

啊力酷220 发布于 2011-04-28 23:03, 399 次点击
这是一个评价函数,是我作业里的其中一个子函数,但有一个约束条件不知道怎么加,求高手指导!!
void evaluate(void)
{
    int mem;
    int i,j;
    double x[NVARS];   //+1 ?
    for (mem = 0; mem < POPSIZE; mem++)         //种群规模:POPSIZE=50;
    {
        for (i = 0; i < NVARS; i++)             //变量数:NVAR=8;
        {
            x[i] = population[mem].gene[i];
        }
        population[mem].fitness=0;
        P_Q(x, u);                             //将r[8]代入潮流;
        for(j=0;j<9;j++)
        {   //就是在这里加上约束条件,{if *(u+j)>1.1 population[mem].fitness+=1  if *(u+j)<0.9 population[mem].fintness  ???怎么加?小弟老是弄不了,求高手???

            population[mem].fitness += (1.1-(*(u+j)))*(1.1-(*(u+j)));
        }
    //                cout<<"Data: "<<population[mem].fitness;
         /*population[mem].fitness= (1.1-u[0] )*(1.1-u[0]) + (1.1-u[1])*(1.1-u[1]) + (1.1-u[2])*(1.1-u[2]) + (1.1-u[3])*(1.1-u[3])
                                  + (1.1-u[4])*(1.1-u[4]) + (1.1-u[5])*(1.1-u[5]) + (1.1-u[6])*(1.1-u[6]) + (1.1-u[7])*(1.1-u[7])
                                  + (1.1-u[8])*(1.1-u[8]);*/
    }
}
2 回复
#2
yuccn2011-05-05 08:35
你的约束条件是什么? 能否用文字描述下?
是否是:
if (u+j > 1.1) {
    population[mem].fitness+=1;
}
else if (u+j <0.9) {
    population[mem].fintness;?????????????
}

你如果描述都没有,不可能写一个莫名其妙的函数叫人家帮你写约束条件吧
#3
donggegege2011-05-07 13:21
同意二楼,你没表示清楚,
if (u+j>1.1)
{
   population.[mem].fitness+=1;
}
elseif(u+j<0.9)
{
   population[mem].fintness;
}
条件不够,而且其他的条件出现时都没有做处理
1