非线性方程组的一般形式为
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 ), 定义粒子的适应值函数为
设 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