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

  • Post author:
  • Post category:其他




解决的问题

在进行数学建模的时候,经常遇到一些优化问题,但是,在平常论讲座中,往往偏重理论,而缺乏了在工程中的实践。为此,特地整理出来使用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



相关资料


受到这个启发



有更深入的使用教程



很不错的原理讲解



非线性约束情况下的使用



原理讲解



版权声明:本文为QinZheng7575原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。