用随机数给函数赋值求函数最大值并将结果赋值于数组
新人!!编写了一个程序作用是用随机数给函数赋值,然后求函数的最大值并将最大值返回存于数组中,但得到的结果跟我需要的不一样,如图,这个pop赋值一直是0,v的赋值也么变化,fitness就更不用说了,怎样解决?
程序代码:#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define sizepop 20
#define dim 2
#define mu 0.1
#define eta1 0.05
float pop[sizepop][dim];
float V[sizepop][dim];
float fitness[sizepop];
float func(float * arr)
{
float eta = * arr;
float f = *(arr+1);
float max;
for(float g=0.5;g<1.5;g=g+0.01)
{
float p,q,B;
max=0;
p=pow((2*eta*g*f),2)+pow((g*g-f*f),2);
q=pow((1-pow(g,2))*(pow(f,2)-pow(g,2))-mu*pow(g,2)*pow(f,2)-4*eta1*eta*f*g,2)+4*pow(g,2)*pow(eta*f-eta*f*pow(g,2)-eta*mu*f*pow(g,2)+eta1*pow(f,2)-eta1*pow(g,2),2);
B= sqrt(p/q);
if(max<B)
max=B;
else
max=max;
}
printf("max%lf\nV=%lf\n",max);
return max;
}
int main()
{
for(int i=0;i<sizepop;i++)
{
for(int j=0;j<dim;j++)
{
float pop[i][j];
float V[i][j];
pop[i][j] = (((float)rand())/RAND_MAX-0.5)*4; //-2到2之间的随机数
V[i][j] = ((float)rand())/RAND_MAX-0.5; //-0.5到0.5之间
printf("pop=%7.8lf\nV=%lf\n",pop,V);
}
fitness[i] = func(pop[i]); //计算适应度函数值
printf("fitness=%7.8lf\n",fitness);
}
}








