a推b等价于非a或b_粒子群算法求解非线性方程组 matlab简单实现

a7e754849ae5031260d53742511477c6.png

非线性方程组的一般形式为

f 1 (x 1 , x 2 , …, x n )=0

f 2 (x 1 , x 2 , …, x n )=0

  

f m (x 1 , x 2 , …, x n )=0

式中, x 1 ...x n为所要求解的 n 个未知变量, f 1...f n 为定义在 m 维空间中的实值函数。用 PSO 求解非线性方程组时,设方程组中的未知数 x 为n 维搜索空间中的粒子Xi =(xi1 , xi2 , …, xin ), 定义粒子的适应值函数为

------(1)

设 Fibest (x)表示第 i 个粒子经历过的最好适应值 , Fgbest (x)表示全局经历过的最好适应值, 求解非线性方程组的过程等价于求解minF(x)的最优化问题 。PSO 求解非线性方程组的流程如下 :

Step1:输入方程组, 变量的数值范围和要求的精度 。

Step2:确定粒子的维数,根据 step1中的变量的范围 ,随机初始化粒子的位置和速度, 每个粒子的初始位置作为每个个体的个体极值 pbesti 。

Step3:对于第 i 个粒子,利用式计算粒子的适应值Fi (x),若其当前适应值小于它的历史最好适应值,则用当前粒子位置替换该粒子的个体极值 ,该粒子的适应值替换该粒子的最好适应值;若其当前适应值小于全局经历过的最好适应值, 则用当前粒子的位置替换全局极值 ,该粒子的适应值替换全局最好适应值。

Step4:根据(2)、(3)式更新粒子的速度和位置。

Step5:如果粒子的适应值达到预先设定的精度,则停止迭代 ,否则返回步骤 step3

V(n+1) = V(n) + c1*rand2*(pi – x(n)) + c2* rand1*(qi – x(n)) ------(2)

X(n+1) = x(n) + V(n+1) ------(3)

fitness.m文件

function

PSO.m文件

function[xm,fv] 

main.m 文件

clear

78b87c245495a80cdb3ba1911f8abb5f.png

6301d69f17e7ec1a4eea830355c87c66.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值