首先看一个gui对遗传算法的应用,
求下列函数的极小值。
f(x)=x.^4-3*x.^3+x.^2-2;
利用遗传算法求解,选择ga solver(求解器),输入适应函数,输入变量个数,start就可以了,充分反应了遗传算法的优越性。
接着是对无约束一维极值问题的求解。
首先是进退法搜索单谷函数的极值问题。原理就是在固定区间内按照一定步长无穷逼近最优解,不过无论怎样逼近,最后得到的还是符合精度的区间,并不是理论最优解。Matlab中用minJT函数来实现。
相关的函数代码可以在matlab相关文件夹中找到,这里就不多说,不过还是按这种方法求一下上面的极小值问题。
代码如下:
syms x;
f=x^4-3*x^3+x^2-2;
[x1,x2]=minJT(f,0,0.001);
在2009b中结果是。2009b已经没有这个函数了。
无语了一下,继续看下一种方法,黄金分割法。
也是一种无穷逼近法,利用黄金分割长生前一个区间中的内点,舍去一个端点。逐渐逼近最小值,是一种单向收缩法。
不过2009b也没有这个函数了。
然后是斐波那契法。
我们首先就会联想到斐波那契数列,不过这里确实用到了斐波那契数列。
斐波那契法显然是一种双向收缩法具体的搜索原理就不多追究了。
然后便是牛顿迭代法,原来就学过的一种速度相当快的迭代方法,其中优化后的全局牛顿法,一般的牛顿法需要初始点接近最值点而全局牛顿法则不需要这个要求。关最后还有割线法,二次插值和三次插值法。以后会慢慢补充相关的函数m文件的。
你把优化工具箱的文件 添加到 工作路径即可