早教吧作业答案频道 -->其他-->
利用遗传算法求解区间[0,31]上的二次函数y=x*x的最大值
题目详情
利用遗传算法求解区间[0,31]上的二次函数y=x*x的最大值
▼优质解答
答案和解析
//
void main(void)
{
\x05int\x05i;
\x05if ((galog = fopen("galog.txt","w"))==NULL)
\x05{
\x05\x05exit(1);
\x05}
\x05generation = 0;
\x05fprintf(galog,"\n generation best average standard \n");
\x05fprintf(galog," number value fitness deviation \n");
\x05initialize();
\x05evaluate();
\x05keep_the_best();
\x05while (generation < MAXGENS)
\x05{
\x05\x05generation++;
\x05\x05select();
\x05\x05crossover();
\x05\x05mutate();
\x05\x05evaluate();
\x05\x05report();
\x05\x05//evaluate();
\x05\x05elitist();
\x05}
\x05fprintf(galog,"\n\n Simulation completed\n");
\x05fprintf(galog,"\n Best member:\n");
\x05for (i = 0; i < NVARS; i++)
\x05{
\x05\x05fprintf (galog,"\n var(%d) = %3.6f",i,population[POPSIZE].gene[i]);
\x05}
\x05fprintf(galog,"\n\n Best fitness = %3.6f",population[POPSIZE].fitness);
\x05fclose(galog);
\x05printf("Success\n");
}
——————————————————————
以上为程序,另外还有一个文件:gadata.txt
其内容为:
0 31
——————————————————————
然后打开文件galog.txt文件就可以看到结果了,我算出来的是:
var(0) = 30.969000
Best fitness = 959.078961
——————————————————————
当然,这个问题的结果显然是31的时候961,但是由于算法本身进化的原因和参数的设置,只能进化到上面的结果.
void main(void)
{
\x05int\x05i;
\x05if ((galog = fopen("galog.txt","w"))==NULL)
\x05{
\x05\x05exit(1);
\x05}
\x05generation = 0;
\x05fprintf(galog,"\n generation best average standard \n");
\x05fprintf(galog," number value fitness deviation \n");
\x05initialize();
\x05evaluate();
\x05keep_the_best();
\x05while (generation < MAXGENS)
\x05{
\x05\x05generation++;
\x05\x05select();
\x05\x05crossover();
\x05\x05mutate();
\x05\x05evaluate();
\x05\x05report();
\x05\x05//evaluate();
\x05\x05elitist();
\x05}
\x05fprintf(galog,"\n\n Simulation completed\n");
\x05fprintf(galog,"\n Best member:\n");
\x05for (i = 0; i < NVARS; i++)
\x05{
\x05\x05fprintf (galog,"\n var(%d) = %3.6f",i,population[POPSIZE].gene[i]);
\x05}
\x05fprintf(galog,"\n\n Best fitness = %3.6f",population[POPSIZE].fitness);
\x05fclose(galog);
\x05printf("Success\n");
}
——————————————————————
以上为程序,另外还有一个文件:gadata.txt
其内容为:
0 31
——————————————————————
然后打开文件galog.txt文件就可以看到结果了,我算出来的是:
var(0) = 30.969000
Best fitness = 959.078961
——————————————————————
当然,这个问题的结果显然是31的时候961,但是由于算法本身进化的原因和参数的设置,只能进化到上面的结果.
看了 利用遗传算法求解区间[0,3...的网友还看了以下:
量值传递与量值溯源的区别是什么? 2020-03-30 …
工业总产值与地区生产总值的区别2012年预计实现地区生产总值534亿元,可比增长12.3%;财政总 2020-04-07 …
请大神从各种有价值的方面(比如在传统英语或者特殊意义)说出bye和goodbye的区别(这两个词是 2020-05-13 …
函数f(x)=x²-2x+3在区间[0,m]上有最大值3,最小值2,则m的取值范围是已知函数f(x 2020-05-16 …
遗传中交换值和互换率的区别 2020-06-03 …
单调函数f(x)f在闭区间I上的值域也是I单调函数f(x)f在闭区间I上的值域也是I,则称f(x) 2020-06-08 …
在两高值区或低值区之间,必须有两条相邻的等值线,其数值相等,并且这两条等值线的数值在两个高值区之间 2020-06-15 …
函数的定义域为,若存在闭区间,使得函数满足:①在内是单调函数;②在上的值域为,则称区间为的“倍值区 2020-06-15 …
材料一:央视《新春走基层,家风是什么》节目引发公众对传统家庭教育的关注与热议。这一话题将中华文化传 2020-06-16 …
地理中凸向高值处是一个低值区中的高值处是什么意思比如说非洲的25℃等温线在沿海地区向低纬度凸出,是 2020-06-17 …