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

解决的问题

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

相关资料

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

猜你喜欢

转载自blog.csdn.net/QinZheng7575/article/details/106019299
今日推荐