当前位置:   article > 正文

遗传算法求解非线性方程组优化(MATLAB实现)

遗传算法求解非线性方程组

解决的问题

在进行数学建模的时候,经常遇到一些优化问题,但是,在平常论讲座中,往往偏重理论,而缺乏了在工程中的实践。为此,特地整理出来使用matlab求解非线性方程组的方法。

写在开头

这篇不打算对遗传算法的具体原理进行探讨,而主要是实际中的应用。在求解一些不是很复杂的非线性方程组的时候,我们在matlab使用的时候也往往不需要自己写很复杂的代码,而是借助ga工具箱,一般情况下,打开ga工具箱只要

>> gatool
  • 1

加回车就行,但是我的matlab不知为何不行,这里给大家另一种打开方式:

optimtool('ga')
  • 1

结果如下:
在这里插入图片描述

实现

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

将这个函数命名为simple,接着使用命令

options=gaoptimset('PopulationSize',500,'Generations',1000,'StallGenLimit',1000,'TolFun',1e-100)
  • 1

定义我们的遗传算法的相关要求,最后:

[v fval]=ga(@simple,3,options)
  • 1

(记住在使用ga工具箱的时候,一定要在所求的simple函数文件夹下使用命令),结果:
v =

1.5170    9.4193    3.6454
  • 1

fval = 7.0466e-05
因为这里的var是一个向量,实际上var(1)var(2)var(3)就是xyz

相关资料

受到这个启发
有更深入的使用教程
很不错的原理讲解
非线性约束情况下的使用
原理讲解

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/1001588
推荐阅读
相关标签
  

闽ICP备14008679号