早教吧作业答案频道 -->其他-->
利用遗传算法求解区间[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...的网友还看了以下:
若函数在时,函数值y的取值区间恰为[],就称区间为的一个“倒域区间”.定义在上的奇函数,当时,.( 2020-04-06 …
已知函数f(x)=cox(2x-π/3)+2sin(x-π/4)sin(x+π/4)(1)求函数f 2020-04-27 …
求函数f(x)=2cosXsin(X+π/3)-√3sin^2X+sinXcosX的最值及单调区间 2020-05-16 …
已知函数f(x)=2alnx-x2+1(1)若a=1,求函数f(x)的单调递减区间;(2)若a>0 2020-07-22 …
已知函数f(X)=x立方减4x²(1)求函数f(x)的单调区间(2)求函数f(x)在闭区间0已知函 2020-08-01 …
反比列函数y=k/x与一次函数y=ax+1的图像的一个交点为A(-根号3,b)(b大于0),过点A作 2020-10-30 …
已知fx是定义在实数集R上的奇函数,且当x大于0时fx=x^2-4x+31,求f[f(-已知fx是定 2020-11-07 …
已知函数f(x)=2分之1ax2-lnxa∈R1.求函数f(x)的单调区间2.若函已知函数f(x)= 2020-12-08 …
已知函数f(x)=(-x^2+ax)e^x(1)当a=2时,求函数f(x)的单调区间(2)若函已知函 2020-12-08 …
已知函数f(x)=sin平方+2倍根3(x+圆周律/4)cos(x-圆周/4)-cos平方x-根31 2020-12-31 …