粒子群算法求解方程组

我们之前介绍了三种求解方程组的函数分别为solve,vpaslove,fsolve;这三种函数对初值的要求非常高,当遇到非常复杂的方程组,我们又没能给定一个好的初值时,这三种函数的求解算法可能找不到解。这时我们可以考虑用粒子群算法求解方程组

一、方程组的一般形式

二、定义目标函数

显然,我们要找到一组x1,x2,……xn使得目标函数尽可能小。理想状态下,目标函数等于0时,就找到了这个方程组的解

三、一个具体的实例

1.代码实现

(1)定义函数

function f = Obj_fun(x)
    f1= abs(x(1)+x(2))-abs(x(3)) ;
    f2 = x(1) * x(2) * x(3) + 18;
    f3= x(1)^2 * x(2) + 3*x(3);
    f = abs(f1) + abs(f2) + abs(f3);
end

(2)调用粒子群算法求解

narvs = 3;
% 使用粒子群算法,不需要指定初始值,只需要给定一个搜索的范围
lb = -10*ones(1,3);  ub = 10*ones(1,3);  
options = optimoptions('particleswarm','FunctionTolerance',1e-12,'MaxStallIterations',100,'MaxIterations',20000,'SwarmSize',100);
[x, fval] = particleswarm(@Obj_fun,narvs,lb,ub,options) 
posted @ 2024-08-21 16:26  卢宇博  阅读(14)  评论(0编辑  收藏  举报