利用遗传算法求解区间[0,31]上的二次函数y=x*x的最大值
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/09 03:42:28
利用遗传算法求解区间[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,31]上的二次函数y=x*x的最大值
利用遗传算法求解区间【0,31】上的二次函数y=x*x的最大值
基于MATLAB的遗传算法程序 对函数y=(x)1^2-(x)2^2+3 求解全局最大值.
用遗传算法求解函数 f(x)=x*sin(10*pi*x)+1.0 的最大值,其中x在[-1,2]范围.将求解的程序上传
二次函数y=2x2-3x=5在闭区间【-2,2】上的最大值 ,最小值 .
人工智能“遗传算法求解f(x)=xcosx+2的最大值”
求函数y=x的负二次方在区间【1/2,2】的最大值
函数y=x+2cosx在区间[0,π/2]上的最大值是
已知二次函数Y=X^2-3x-4,画出图像并作出单调区间,求在X在【-3,5】上的最大值最小值
求函数y=x^2-2x+2/x在区间(0,1/4]上的最大值和最小值
函数y=x+1/x在区间【1/2,2】上的最大值和最小值
函数y=x+根号下1+x 在区间[-5,1]上的最大值是