通过MATLAB遗传算法的思想来解决f(x)=x*sin(10pi*x)+2.0,-1<=x<=2的最大值问题。结果精确到3位小数。

如题所述

首先在matlab命令窗口输入f=@(x)-(x*sin(10*pi*x)+2) 输出结果为

>> f=@(x)-(x*sin(10*pi*x)+2)

f = 

    @(x)-(x*sin(10*pi*x)+2)

接着输入gatool会打开遗传算法工具箱

按上图所示设置,设置好了之后点击Start

运行结果如下

显示51代之后算法终止,最小结果为-3.85027334719567,对应的x为1.851,由于自定义函数加了负号,所以原式的最大值为3.85027334719567,对应的x为1.851。

不过这是遗传算法得到的结果,每次运行的结果可能会有所不同,而且不一定是确切的最大值。

遗传算法适合应用在一些求最优解比较复杂的问题(常规的算法运算时间过长,甚至无法解决)。

温馨提示:答案为网友推荐,仅供参考
相似回答