早教吧作业答案频道 -->其他-->
利用遗传算法求解区间[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...的网友还看了以下:
1.计算两个有理数的加法时,要先确定和的——,在计算和的——.2.用算式表示:温度-10℃上升了3 2020-04-07 …
用一副三角尺分别画出15度,135度,和120度的角.(用算式表示画的方法)小学四年级,要用算式表 2020-06-19 …
一只羊,脖子上拴的绳子长10米,把羊拴在屋外墙角A点处,它可吃到多大范围的草?用算式解决 2020-06-20 …
请问我们平时所说的星球表面,为什么可以直接用天体表面的计算公式即万有引力等于重力难道星体大气层厚度 2020-06-22 …
甲、乙两数的和是165,乙数的小数点向右移动一位就和甲数相等,甲、乙两数各是多少?(请列出算式计算 2020-07-18 …
魔方的算法是什么?例如:3*3的数阵就是3*3魔方,要求每行每列及对角线之和都相等.请给出N*N魔方 2020-11-07 …
数学想一想,算一算一个两位数,在个位和十位中间添上一个0,所得的三位数比原数多90,且这个三位数正好 2020-11-15 …
空军航空大学现在的大三算多少期啊?51还是52? 2020-12-04 …
圆锥曲线弦长问题见过别人用三角函数解的,不用算那么长但解法我又忘了,好像构造一个三角函数在异名化同名 2020-12-06 …
rt3.6万平方米有多大,举个实例来听听,这样的大学算小还是大?呢 2020-12-14 …