标题:用随机数给函数赋值求函数最大值并将结果赋值于数组
只看楼主
不贰涵
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-7-22
 问题点数:0 回复次数:2 
用随机数给函数赋值求函数最大值并将结果赋值于数组
新人!!编写了一个程序作用是用随机数给函数赋值,然后求函数的最大值并将最大值返回存于数组中,但得到的结果跟我需要的不一样,如图,这个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);
    }
}
搜索更多相关主题的帖子: 函数 赋值 float max pow 
2017-07-22 14:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
你赋值的是局部变量pop和V
而传给func函数的是全局pop和V
2017-07-22 18:09
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
得分:0 
楼上正解,变量作用域问题
2017-07-24 14:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479549-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.563812 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved