烟花算法求解非线性方程组_杜振鑫[1]

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
好值),ζ 的含义同上。
第 i(i=1,2,…,n)个烟花产生火花的过程:假设待
优化的目标函数是 D 维函数, 随机选取 D 维中的 z 维
坐 标 进 行 更 新 , 则 第 i (i=1,2, … ,n) 个 烟 花 的 第 j (j=
1,2,… ,si)个 火 花 的 第 k(k=1,2,… ,z)维 坐 标 更 新 公 式:
关键词: 烟花算法; 非线性方程; 非线性方程组; 变量耦合
0 引言
在工程技术、 科学研究等领域经常会有大量的实 际问题需要最终转化为非线性方程组来求解。 传统的 求解非线性方程组的方法多使用目标函数的导数信 息,速度较快,但具有初值敏感性,局部收敛。 很多文献 提出采用智能算法求解非线性方程组,例如遗传算法、 粒子群算法、蜂群算法等[1~2],取得了一定的成果。 但是 对于变量个数较多且变量耦合度比较高的方程组,往 往效果并不理想。 烟花算法[3]是 2010 年刚刚提出的一 种算法,优化效率较高,搜索方式不同于其他进化算法 [4]。 本文尝试将烟花算法引入非线性方程组的求解,实 验证明该算法对求解变量个数较多、 变量耦合度较高 的复杂非线性方程组存在一定优势。
的粒子群算法[J]. 计算机工程与应用,2006,42(21) [2]欧 阳 艾 嘉,刘 利 斌,乐 光 学,李 肯 立[J]. 求 解 非 线 性 方 程 组 的
混合粒子群算法. 计算机工程与应用,2011,47(9) [3]Tan Y., Zhu Y. C.. Fireworks Algorithms for Optimization[C].
1 烟花算法原理
烟花算法来自于对烟花爆炸过程的模拟。 当烟花 爆炸后产生大量的火花, 火花又作为新的烟花继续爆 炸,从而逐步充满整个天空。 把烟花爆炸过程看做搜索 最优解的过程,用算法实现,如图 1 所示(求最小值)。 具体算法中, 需要解决的问题是每个烟花爆炸产生多 少个火花,爆炸的半径是多少,如何从爆炸产生的烟花 和火花中选取一定数量的个体参与下次爆炸。
i=1
(10)
考虑两种情况。 第一种情况:假设某时刻函数坐标
为 (3,2),函 数 值 为 4904,在 某 单 维 优 化 算 法 的 作 用 下
在另一时刻坐标变成(3,3),函数值变成 3604,函 数 值
减小了,所以该算法认为这是一个正确的方向,因而向
坐标(3,3)移 动 ,然 而 这 个 移 动 方 向 恰 恰 是 错 误 的 ,因
∈ x3
x1
x∈∈

1
+x3
-x2
-2=0
其中:0≤x1 ,x2 ,x3 ≤10,理论解为:x*=(4,3,1)T
表 1 两种算法对例 1 和例 2 的求解结果
表 2 两种算法对例 3 求解结果
表 3 两种算法对例 4 求解结果
目前出现的用于优化连续函数的群体智能算法,
按照更新方式大体可以分为两类: 单维更新和整体更

1 4
2
x2 x4 x6 +0.75=0


∈∈∈f2(x
)=x2+0.405e
(1+x1
x2

-1.405=0


3:

∈∈∈f3(x)=x3-
∈ ∈
1 4
x4 x6 +1.25=0
∈ ∈
∈∈∈f4(x
)=x4-0.605e
2
(1-x3

-0.395=0


∈∈f5(x)=x5-
∈ ∈
1 2
x2 x6 +1.5=0
现代计算机 2013.02 上 趤趽
研究与开发
条件是:处理器:Intel Corei 3 CPU M350@ 2.27GHz,内
从表 1 可以看出,对于变量个数较少,变量耦合度
存 4GB,32 位 Win7 操作系统。 表 1、表 2 和表 3 是实验
较低的方程组,两种算法差别不大。 从表 2 和表 3 可以
最小正常数,用于防止上式出现除零错误。
第 i(i=1,2…,n)个烟花爆炸的半径是:

Ai=A
f(xi)-ymin+ζ
n
(2)
Σ(f(xi)-ymin)+ζ
i=1

式(2)中A 表示预先设定的最大爆炸半径,ymin=max
(f(xi))表 示 n 个 烟 花 代 表 的 目 标 函 数 的 最 小 值 (即 最
计算该烟花应产生的火花数 si,对于每个火花,随机选 取 D 维中的 z 维坐标按照公式(3)进行更新;

(3)随机选取m 个 烟 花 ,每 个 烟 花 产 生 一 个 火 花 ,
该火花按照公式进行坐标更新;
(4)在 当 前 所 有 的 烟 花 和 火 花 当 中 , 首 先 选 取 当 前
最优的一个烟花直接进入下一次爆炸, 并从剩下的烟
结果,其中较好的值用黑体标出。
看出,对变量个数较多、变量耦合度较高的例 3 和例 4,
例 1: f(x)=x3-2x-5=0,x∈[-4,4]
烟花算法得到的结果要明显比文献[5]的算法精度更高。
例 2: f(x)=x3-3x2-6x+8,x∈[0,2]
4 实验结果分析
ÁÂÃÁÂÃÄÅÆ∈
∈∈∈f1(x)=x1+
研究与开发
文 章 编 号 :1007-1423(2013)04-0018-04
DOI:10.3969/j.issn.1007-1423.2013.04.005
烟花算法求解非线性方程组
杜振鑫
(韩山师范学院陶瓷学院信息工程部, 潮州 521041)
摘 要: 烟花算法是最近提出的一种效率较高的优化算法,已被用于求解众多的优化问题。 给出利 用烟花算法求解非线性方程组的方法。 实验表明,所提出的算法对于求解变量耦合的非线 性方程组比其他算法占有优势,进一步分析存在优势的原因。
Proc.of Int. Conf. on Swarm Intelligence (ICSI2010), Part II, LNCS 6145,pp.355-364, Beijing, China(12~15, Jun. 2010) [4]Y. Pei, S.Q. Zheng, Y. Tan, Hideyuki Takagi. An Empirical Study on Influence of Approximation Approaches on Enhancing Fireworks Algorithm[C].IEEE International Conferencce on System, Man and Cybernetics (SMC 2012), Seoul, Korea. October 14~17, 2012 [5]张 姣 玲. 求 解 非 线 性 方 程 及 方 程 组 的 人 工 蜂 群 算 法 [J]. 计 算 机 工 程 与 应 用 ,2012,48(22)
式中 rand(-1,1)表示[-1,1]之间的随机数。上面的
过程中,由 n 个烟花总共产生了 m 个火花。 另外,为了

增加种群多样性,按照高斯分布额外产生m 个火花,其

中 第 j(j=1,2,… ,m )个 火 花 的 第k(k=1,2,… ,si)维 坐
标更新如下:
∧j ∧j
x k =x k·Gaussian(1,1)
研究与开发
5 结语
本文给出了利用烟花算法求解非线性方程组的方 法 ,并 与 文 献[5]进 行 了 对 比 ,证 明 在 求 解 变 量 数 目 较 多、变量耦合度高的方程组方面,烟花算法存在优势, 并分析了其中的的原因。 当然, 本文算法只是初步尝 试,期待进一步的改进。
参考文献 [1]张建 科,王晓 智,刘 三阳,张 晓 清. 求 解 非 线 性 方 程 及 方 程 组
xk=xk+A·i rand(-1,1)
(3)
收稿日期:2012-11-20 修稿日期:2013-01-10 作 者 简 介 :杜 振 鑫 (1976-),男 ,山 东 临 沂 人 ,硕 士 ,助 教 ,研 究 方 向 为 计 算 机 应 用 、人 工 智 能
趤趻 现代计算机 2013.02 上
研究与开发
和 bi 为 xi 的上下限。 同样,非线性方程组的解等价于:
n
Σ F(x)= fi2(x1,x2,…,xn)ai≤xi≤bi 的最小值。 i=1
2.2 算法步骤
选取 F(x)作为烟花算法待优化的目标函数。
(1)随机选择 n 个烟花并初始化其坐标;
(2)爆炸 n 个 烟 花 :对 每 个 烟 花 首 先 按 照 公 式 (1)
优位置更远了。 这说明,整体更新算法也存在局限性,
虽然整体函数值下降了,却使某一维变差了。 比较好的
办法是采用折中的方法,烟花算法就是这种算法,每次
随机从 D 维中选取 z 维更新, 处于单维更新和整体更
新算法之间, 所以烟花算法适合求解变量耦合的非线
性方程组,实现了进化速度与精度的较好平衡。
趥趭 现代计算机 2013.02 上


∈∈∈f6(x)=x6-x1 x5 +1.5=0
其 中 :-2≤x1 ,x 2 ,x 3 ,x 4 ,x 5 ,x 6 ≤2, 理 论 解 为 :
(-1,1,-1,1,-1,1)T
x∈

Fra Baidu bibliotek
x2
∈ ∈
1
x1
+x2
-5x1
x2
x3
-85=0


4:
∈∈ 3
x≤
∈1
x3
x2
-x2 +x3 -60=0


(4)
式 中 ,Gaussian(1,1)是 一 个 均 值 和 方 差 都 为 1的 服从高斯分布的随机数。





"
按高斯
分布



m
个新火


在所有
烟花(火花)中,按浓度原则重新选择
n 个新烟花
!
图 1 烟花算法流程图
上述 n 个烟花全部爆炸完成以后,当前烟花(火
一个固定的实根。 在[a,b]内只包含方程(7)的一个实根
x*,[a,b]∈(c,d)。 则方程(7)在[a,b]中的根 x* 等价于函
数:
V(x)=(f(x))2
(8)
在[a,b]中的最小值。 当 V(x)最小值为 0 的时候,
所对应的 x 即为方程(7)的根。
设非线性方程组由 n 个方程组成, 涉及 n 个未知
新。 单维更新如蜂群算法,每更新个体的一维就评价该
个体的适应度。 整体更新算法如粒子群算法,只有该个
体的所有维同时更新以后,才去评价该个体的适应度。
两种更新方式各有优缺点。 以 Rosenbrock 函数为例,该
函数是一个很难优化的函数,其表达式见公式:
D-1
Σ2
2
2
f4(x)= (100(xi -xi+1 ) +(xi -1) )
第 i(i=1,2,… ,n)个 烟 花 爆 炸 产 生 的 火 花 数 目 可
以用式表示:
si=m· n ymax-f(xi)+ζ
(1)
Σ(ymax-f(xi))+ζ
i=1
式(1)中 m 表示由 n 个烟花所产生的火花的总数
目 ,ymax=max(f(xi))(i=1,2,… ,n)表 示 n 个 烟 花 对 应 目 标函数的最大值(即最坏值),ζ 表示计算机所能表示的
时刻个体坐标是(5,8),函数值是 28916,在某整体更新
算 法 的 作 用 下 ,另 一 时 刻 个 体 坐 标 整 体 更 新 为 (4,9), 函
数值是 4909,函数值减小,所以算法以为这是一个正确
的方向,但是分析可发现第一维坐标从 5 变成 4,距离
最优位置 1 更近了,而第二维坐标从 8 变成 9,却离最
为 函 数 最 小 值 在 点 (1,1), 粒 子 却 向 着 远 离 最 优 点 的 方
向移动。 这说明,单维更新算法不能考虑整体利益,往
往被误导,进入死胡同,特别是对于变量耦合度高的函
数,需要综合考虑各个维同时更新,单维更新算法的缺
陷更加明显,而且,由于更新了一维就要评价函数值,
大大增加了算法的计算代价。 再看第二种情况:假设某
适应度的差值等。 由上式看出, 距离相近的烟花 (火
花 ),被 选 中 的 概 率 较 低 ,这 就 避 免 了 优 势 烟 花 增 长 过
快,增加了种群多样性。
2 烟花算法求解非线性方程组
2.1 模型的建立
设非线性方程组:
f(x)=0
(7)
f(x)的全部实根包含在(c,d)中,x* 为方 程 的 任 意

花)总数是 K'=n+m+m 。 在 k 个烟花(火花)中按照浓度 原则选择新的 n 个火花,参与下一轮爆炸。 第 i(i=1,2, …,k)个烟花(火花)被选中的概率由公式给出:
Σ R(xi)= d(xi-xj)
(5)
j∈K
p(xi)= R(xi)
(6)
Σd(xj)
j∈K
公 式 (5)中 d(xi-xj)表 示 第 i 个 烟 花 或 火 花 与 第 j 个烟花或火花之间的距离,可以是欧氏距离,也可以是
量 ,形 式 如 式 (9)所 示 :
ΣΣf1=(x1,x2, … ,xn)=0
Σ
f = Σ
Σ Σ
2
(x1,x2,

,xn)=0
Σ
ΣΣ…
Σ
Σ
ΣΣfn=(x1,x2, … ,xn)=0
其 中 ,fn=(x1,x2,… ,xn)=0 (i=1,2, … ,n) 为 非 线 性 方
程 ,X=[x1,x2,… ,xn]为 方 程 组 的 未 知 向 量 ,ai≤xi≤bi,ai
花和火花中按照公式选取 n-1 个烟花或火花, 上述总
共 n 个烟花或火花作为新的烟花,参与下一轮爆炸;
(5)若满足停机条件则结束,否则转(2)继续执行。
3 实验
本文与文献[5]进行了比较,所有例子都运行 50 次 取平均结果。 由于不同的算法计算的原理不同,为了公 平起见,本文采用同样机器条件下,同样运行时间内, 看哪种算法所求结果更精确的原则。 本文采用的机器
相关文档
最新文档