用随机数给函数赋值求函数最大值并将结果赋值于数组
新人!!编写了一个程序作用是用随机数给函数赋值,然后求函数的最大值并将最大值返回存于数组中,但得到的结果跟我需要的不一样,如图,这个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); } }