赞
踩
在进行数学建模的时候,经常遇到一些优化问题,但是,在平常论讲座中,往往偏重理论,而缺乏了在工程中的实践。为此,特地整理出来使用matlab求解非线性方程组的方法。
这篇不打算对遗传算法的具体原理进行探讨,而主要是实际中的应用。在求解一些不是很复杂的非线性方程组的时候,我们在matlab使用的时候也往往不需要自己写很复杂的代码,而是借助ga工具箱,一般情况下,打开ga工具箱只要
>> gatool
加回车就行,但是我的matlab不知为何不行,这里给大家另一种打开方式:
optimtool('ga')
结果如下:
OK,说完了前期准备,我们来进行一些实践
这里,假如我有以下要求的方程组:
那么,我就可以定义一个新的函数,将它们三个的值平法求和,那么平方和的最小值,就是这个方程组的根
function G=simple(var)
f1=var(1)+var(2)-3*var(3);
f2=var(1)*sin(var(2));
f3=var(1)+2.0*var(2)+var(3)-24.0;
G=f1.^2+f2.^2+f3.^2;%构造目标函数
end
将这个函数命名为simple,接着使用命令
options=gaoptimset('PopulationSize',500,'Generations',1000,'StallGenLimit',1000,'TolFun',1e-100)
定义我们的遗传算法的相关要求,最后:
[v fval]=ga(@simple,3,options)
(记住在使用ga工具箱的时候,一定要在所求的simple函数文件夹下使用命令),结果:
v =
1.5170 9.4193 3.6454
fval = 7.0466e-05
因为这里的var是一个向量,实际上var(1)var(2)var(3)就是xyz
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。