基于改进遗传算法的非线性方程组求解_燕乐纬
第50卷 第1期
2011年 1月中山大学学报(自然科学版)
A C T A SC I E N T I A R U M NA T U R A L I U M UN I V E R S I T A T I S SU N Y A T S E N I V o l . 50 No . 1
J a n . 2011
基于改进遗传算法的非线性方程组求解
燕乐纬, 陈树辉
1
2
*
(1. 广州大学工程力学系, 广东广州510006; 2. 中山大学应用力学与工程系, 广东广州510275)
采用种群隔离机制、最优保持策略、算术杂交、自适应随机变异和异种机制等方法对遗传算法进行了摘 要:改进。在保持遗传算法仅需目标函数值信息即可求解这一优点的基础上, 这一改进方法增强了遗传算法的局部搜索能力。将该方法应用于非线性方程组的求解。数值算例表明, 该方法能够求解以非线性方程为等式约束的最优化问题。此外, 异种机制的引入加快了遗传算法的收敛效率, 有效提高了遗传算法收敛于全局最优解的概率。
关键词:非线性方程组; 遗传算法; 异种机制; 自适应随机变异
T U 375;O 241. 7 文献标志码:A 文章编号:0529-6579(2011) 01-0009-05中图分类号:
S o l v i n g N o n l i n e a r E q u a t i o n s B a s e d o nI m p r o v e d G e n e t i c A l g o r i t h m
Y A NL e w e i , C H E NS h u h u i
(1. D e p a r t m e n t o f E n g i n e e r i n g M e c h a n i c s , G u a n g z h o u U n i v e r s i t y , G u a n g z h o u 510006, C h i n a ;
2. D e p a r t m e n t o f A p p l i e d M e c h a n i c s a n d E n g i n e e r i n g , S c h o o l o f E n g i n e e r i n g ,
S u n Y a t -s e n U n i v e r s i t y , G u a n g z h o u 510275, C h i n a )
A b s t r a c t :So m e m e t h o d s s u c h a s p o p u l a t i o n i s o l a t i o n m e c h a n i s m , o p t i m u mr e s e r v e d s t r a t e g y , a r i t h m e t i c c r o s s o v e r , a d a p t i v e r a n d o m m u t a t i o n a n dh e t e r o g e n e o u s s t r a t e g y a r e u s e dt o i m p r o v e g e n e t i c a l g o r i t h m . B e s i d e s t h e a d v a n t a g e t h a t t h e o p t i m a l s o l u t i o n c a n b e f o u n d o n l y b y t h e v a l u e o f o b j e c t i v e f u n c t i o n , t h e
l o c a l s e a r c h i n g c a p a b i l i t y i s e n h a n c e d i n t h i s i m p r o v e g e n e t i c a l g o r i t h m . T h i s a l g o r i t h mi s a p p l i e d t o s o l v e n o n l i n e a r e q u a t i o n s .N u m e r i c a l e x a m p l e sd e m o n s t r a t e dt h a t t h i s a l g o r i t h m c a ns o l v et h eo p t i m i z a t i o n p r o b l e mw h i c h h a s n o n l i n e a r e q u a l i t y c o n s t r a i n t . F u r t h e r m o r e , t h e h e t e r o g e n e o u s s t r a t e g y s p e e d s u pt h e p r o c e s s o f c o n v e r g e n c e a n d r a i s e s t h e c o n v e r g e n c e p r o b a b i l i t y o f g l o b a l o p t i m a l s o l u t i o n . K e y w o r d s :No n l i n e a r e q u a t i o n s ; g e n e t i c a l g o r i t h m ; h e t e r o g e n e o u s s t r a t e g y ; a d a p t i v e r a n d o mm u t a t i o n 从理论研究和工程实践中提取出来的数学模型, 经常会涉及到非线性方程组。在特解问题中, 需要求解非线性方程组以得到满足全部方程的解。在优化问题中, 非线性方程则作为等式约束出现。一般而言, 非线性方程组的解析解很难得到。数值方法中, 常用的迭代求根方法有牛顿法、拟牛顿法、二分法、割线法等
[1]
1
2
为解决以上问题, 一些研究者提出了将非线性方程组转化为优化问题求解的构想。基于这一构想, 一些行之有效的优化方法被用来求解非线性方程组, 其中遗传算法的使用最为广泛。
遗传算法(G e n e t i c A l g o r i t h m , 简称G A ) 是模拟自然界生物进化过程的计算模型, 它的求解过程只用到优化问题的目标函数值而不涉及到连续、可导等条件
[2]
。这些方法共同的缺
点是:①对方程本身有较强的限制性要求, 如连续、可导、高阶可导等;②对初值比较敏感, 一般都要求有相当精度的根的近似值作为初值, 初值选得不好时有可能会导致求解失败;③缺乏通用性, 有的算法只能求实根, 有的算法对重根收敛很慢。
*收稿日期:2010-03-02
。作为一种随机搜索方法, 遗传算法
可以从任意初值开始搜索, 并能够依概率收敛到全
[3]
局最优解。此外, 遗传算法固有的隐含并行性使它能够同时对参数空间的多个区域进行并行搜索, 便于找到非线性方程组所有的解
[4]
。这些优
基金项目:国家自然科学基金资助项目(10972240) (1978) , , ; :;E -h @ma i l . s u . e d u .
点使遗传算法在非线性方程组求解中得到了广泛的应用。
但是, 标准遗传算法(S t a n d a r dG e n e t i c A l g o -r i t h m , 简称S G A ) 本身存在收敛速度慢, 局部搜索能力不强的问题。数值试验表明, S G A 能够很快定位到最优解所在区域, 但其后的收敛速度明显放慢。针对这一问题, 遗传算法与局部搜索算子相结合的方法应运而生
[5-6]
用实数数组对设计变量进行编码。此外, 优化过程中采用了被大量实践证明能够有效提高收敛速度、抑制早熟收敛的种群隔离机制, 并利用自适应随机
变异算子和算术杂交算子随繁殖代数收缩取值范围的特性实现了遗传算法从渐进阶段向骤变阶段的逐渐转换。2. 1. 2 遗传算子 采用了锦标赛选择和算术杂交, 并在整个遗传优化过程中允许父代和子代相竞争, 以实现精英保持策略。为提高遗传算法的局部搜索能力, 设计了一个自适应随机变异算子。设变异个体X i 的编码为
X x 3) i =(i 1 xi 2 … xi k … xi n ) (
其中元素x i k 为选中的变异。变异结果是
x =xb (4) i k i k +τ式中, τ是在[-1, 1]上取值的随机数, b 是变异算子的取值半径。这一变异算子能够保证x i k 在x (x ) 内取到。取值半径b 是一个随i k 的邻域U i k , b 繁殖代数变化的量
b wh e n u >bl u b
q q m m
b l s e l e
式中T 是当前繁殖代数, b 和b l u 分别是取值半径b 的下界和上界。qm 是这一非均匀变异算子引入的一
个用于调整变异半径b 的收缩速度的参数, 其取值范围在1. 1~2. 0之间。
(5) 式使这一变异算子具备了自适应变焦的能力。随着循环次数的增长, 变异半径逐渐收缩。在优化的渐进阶段, 变异范围较大, 变异算子参与全局搜索, 目的是快速锁定最优解所在区域; 在优化的骤变阶段, 变异范围缩小, 变异算子用于执行
T
T
T +1
T +1
T
T T
T
T
T
T
T
。其基本思想是:先用遗
传算法进行全局搜索, 得到非线性方程组的一组近似解, 再用这组近似解作为局部搜索算子的初值进行精细搜索, 最终得到优化问题的全局最优解, 也即非线性方程组的根。这一方法的优点是充分利用了遗传算法的全局搜索能力强的优势, 并用局部搜
索算子弥补了遗传算法局部搜索能力的不足; 缺点则是所使用的局部搜索方法(如牛顿法和拟牛顿法) 常常需要用到非线性方程组的导数信息, 这与遗传算法只需要知道目标函数值就能求解的特性相悖, 从而限制了其通用性。
本文在作者以往工作的基础上
[7-8]
, 设计了一
种专门用于求解非线性方程组的改进遗传算法。这一改进遗传算法运用了多种宏观策略和微观策略, 使之在保持标准遗传算法仅利用函数值信息即可求解这一优点的基础上, 提高了局部搜索能力, 加快了收敛速度, 并有效防止了早熟收敛。
(5)
1 问题描述
含有n 个未知数, 由N 个方程组成的实函数非线性方程组的一般形式为
f x 1(1, x 2, …,x n ) =0f x 2(1, x 2, …,x n ) =0……………………
f x ) =
0N (1, x 2, …,x n
求解此方程组等价于求解以下极值问题
(1)
局部精细搜索, 目的是准确地确定最优解。设定最
小变异范围b l 的目的是防止骤变阶段变异算子因变异范围缩得太小而失去意义。
2. 2 异种机制
算术杂交算子和自适应随机变异算子的实质都是根据从优化过程中反馈回来的适应度信息, 不断缩小搜索范围, 进而求得最优解。这有利于算法的迅速收敛, 但也增大了近亲繁殖发生的概率。为解决这一问题, 本文引入了异种机制来修改广义遗传算法程序, 以防止早熟收敛, 提高收敛效率。
异种机制的作用机理是:①对优化过程进行监测, 如果发现当前种群发生了近亲繁殖, 则启动异种机制;②在缩小了的搜索范围之外选择数个异种, 用以代替现有种群中适应度较低的个体; m i n f (x )=
x
) ∑f (
2
i
i =1
(2)
x=(x 1 x2 … xn )
当f (x ) 的最小值为0时, 所对应的x 即为方程组(1) 的解。当f (x ) 的最小值不为0时, 方程组(1) 无解。这样就将非线性方程组的求解转化成了一个优化问题。
2 改进的遗传算法
2. 1 算法要点
2
循环。
异种机制的实质是在遗传优化过程中, 以较小的概率继续选择种子进入种群, 以保证种群的多样性。启动异种机制的概率与当前繁殖代数和种群中近亲繁殖的程度有关。需要指出的是, 当种群中有大量的个体发生近亲繁殖时, 往往只按很小的比例选择几个异种进入种群。在遗传优化过程中, 如果人工干预的强度过大, 就会破坏种群结构的稳定性, 使遗传算法丧失自身固有的优点, 这将是得不偿失的。2. 3 近亲繁殖判别式
现有种群是否发生了近亲繁殖, 可以用计算种群中个体之间距离的方法判定。给定一个临界值
T T
d 代种群中任意两个不同个体X r , 考察第T i 和X j 之间的距离小于临界值d r 的概率
P {d (X }>p(6) i , X j )
如果p (T ) 大于算法给定的近亲繁殖判据p b , 则认为第T 代种群发生了近亲繁殖。(6) 式即本文引入的近亲繁殖判别式。
从近亲繁殖判别式的判别方法可以看出, 在本文的研究中, 种群内少数个体相互靠近是允许的, 也是不可避免的。但如果发生了较多个体集中于一个或几个取值点附近的情况, 则有必要启动异种机制进行干预。这是符合人工控制物种杂交优化的规律的。在进化过程的渐进阶段和骤变阶段, 判定近亲繁殖的标准应该有所不同。本文所用的临界距离d 是繁殖代数T 的变量, 这样就实现了异种机制的r 自适应变焦。2. 4 异种的选取
异种的选取方法有两种:一种是不考虑近亲繁殖本身的特点, 在编码空间内完全随机地选择异种的方法; 另一种则是考虑近亲繁殖发生的特点, 根据近亲繁殖的趋势在近亲繁殖个体所在的邻域内选择异种的方法。前一种方法近似于选择初始种群, 有利于提高种群的多样性; 后一种方法则是在判断适应度函数爬山方向的基础上进行有向选种, 往往能够提高收敛效率。总之二者的目的都是选择与当前种群基因差异较大而适应度较高的个体进入种群, 以引发良性链式反应。
T
T
στx x y x σi j =τσy x y y ττz x z y x 、y 、z 方向的配筋率ρ、ρx 、ρy z 可以由下面的12个方程确定。
平衡方程
σx -ρx f s =σ1l x +σ2m x +σ3n x σy -ρy f s =σ1l y +σ2m y +σ3n y σρf z -z s =σ1l +σ2m +σ3n
2
z
2z
2z
2
2
2
2
2
2
(7)
(8) (9) (10) (11) (12) (13)
τl σ3n x y =σ1l x y +σ2m x m y +x n y τσx z =σ1l x l z +σ2m x m z +3n x n z τσy z =σ1l y l z +σ2m y m z +3n y n z
式中, σ1、σ2和σ3为配筋后应力张量的三个主应力。对应于这三个主应力的方向余弦(l , m , x x n , (l ) 和(l , m , n ) 需要满足的几何方x ) y , m y , n y z z z
程是
l x +mx +nx =1l y +my +ny =1l z +mz +nz =1l m m n n x l y +x y +x y =0l m x l z +x m z +nx n z =0l m y l z +y m z +ny n z =0
2
2
2
2
2
2
2
2
2
(14) (15) (16) (17) (18)
(19)
这12个方程中总共含有15个未知数, 即ρ, x
ρ, ρ, σ、m 、n 、l 、l 、y z 1、σ2、σ3、l x x x y 、m y 、n y z m 。其中主应力σz 和n z 1、σ2、σ3的取值范围是
σ∈[0, f c ]
(20)
式中, f c 是所用混凝土的抗压强度。
今要求根据以上12个方程求得最小总配筋率, 即
m i n ρt o t a l =x +ρy +z
(21)
文献[9]通过研究几何方程的特性, 尽可能缩小了各方向余弦的取值范围, 并采用t r i a l -a n d -e r r o r 方法(试错法) 得了到一系列的可行解及
其对应的总配筋率。比较这些可行解的总配筋率, 将最小的一个作为这一优化问题的最优解输出, 优化问题就得到了求解。如果试算得到的可行解数量足够多的话, 用这一方法得到的解是可以接受的。
但是, 这类试错法存在的问题在于:①收敛性无法保证;②在目标函数值较差的地方盲目试错会浪费绝大部分试错机会;③如果试错次数太少, 可能得不到足够精确的解。
3. 2 优化策略
本文采用前述的改进遗传算法对这一问题进行。取n z , 它
3 算 例
3. 1 数学模型
文献[9]提出了一种基于三维应力分析确定
钢筋混凝土配筋方案的方法。对于钢筋混凝土内任
们给定的一组取值就是遗传优化问题的一个个体。对于任意个体(l , 先将其代入几何x 0 my 0 nz 0) 方程中, 求解出其余的6个方向余弦值m x 0、n x 0、
l y 0、n y 0、l z 0和m z 0。然后将全部的方向余弦值代入平衡方程, 使之退化为只含有6个未知数(ρx , ρy , ρ, σ的线性方程组。从这一线性方程组z 1、σ2和σ3) 中解出ρρρl x 0, y 0, z 0, 则对应于个体(x 0 m y 0 n 的适应度是z 0)
g l 1(x 0, m y 0, n z 01
+1ρx 0+ρy 0+ρz 0
(22)
这四个独立的区域内独立同步地进行遗传优化, 这样就实现了种群隔离机制。
3. 3 算法流程
上述求解过程的遗传算法程序流程如下:
1) 将搜索空间划分为四个大小相同的子域, 下面的步骤是在每个子域中独立同步进行的;
2) 初始化算法中涉及到的所有变量; 3) 随机选取l 、m组值作为初始种群; x y 和n z 的多4) 随机选择种群中的一半个体进行算术杂交; 5) 用选择算子对杂交生成的子代和父代进行选择, 保留其中一半的优良个体, 与未参与杂交的另一半父代共同组成中间种群;
6) 在中间种群中随机选择一半个体进行自适应随机变异;
7) 用选择算子对变异生成的子代和父代进行选择, 保留其中一半的优良个体, 与未参与变异的另一半父代共同组成新一代种群;
8) 判断选择得到的种群是否发生了近亲繁殖, 如果满足近亲繁殖条件, 则启动异种机制, 如果不满足, 则直接进入下一步;
9) 计算种群中每个个体的适应度; 如果连续p 代种群中的最优个体保持不变, 则认为算法已经收敛, 满足循环终止条件, 进入第10) 步; 否则, 回到第4) 步。
10) 比较各个子域中得到的最优群体的适应度, 选择各子域中适应度最高的个体组成全局最优群体。
11) 终止程序, 结束遗传优化过程。
内嵌遗传算法的程序流程与上述过程类似, 不再赘述。
3. 4 计算结果及分析
表1给出了12组不同的应力张量。表2是文献[9]、[10]的计算结果和本文计算结果的对比。其中文献[10]的计算结果是通过三向应力摩尔圆分析得到的。
这样, 对每一个个体, 都有一个确定的适应度与之对应。需要指出的是, 对给定的个体(l , 由于几何方程是非线性方程组, x 0 my 0 nz 0) 会得到多组不同的方向余弦解。实际求解过程中, 将这些方向余弦解分别代入平衡方程, 计算其适应度, 取满足全部约束条件, 且适应度最高的一组作为对应于个体(l 的可行解, 并将其适x 0 my 0 nz 0) 应度作为个体(l 的适应度输出。x 0 my 0 nz 0)
找到了适应度的计算方法, 就可以用遗传算法程序对上面的优化问题进行求解了。但是, 将个体(l 的取值代入几何方程求解时, 由于x 0 my 0 nz 0)
几何方程是一个非线性方程组, 求解存在一定困难。为解决这一问题, 本文在优化问题的大循环中嵌入一个专门用于求解几何方程的嵌套遗传算法循环。内嵌遗传算法的适应度函数依照(2) 式构造
g l , n ) (23) 2(x , m y z
f (l , m )+1x y , n z 当g l , m ) 取得最大值1时, 所得到的最2(x y , n z
优解是优化问题的可行解。当g l ) 取不2(x , m y , n z 到最大值1时, 几何方程无解。此时可令当前个体对应的适应度g l 取一个很小的正数, 1(x 0, m y 0, n z 0) 比如10
-6
, 表示其适应度极低, 在遗传操作时不
予考虑。
此外, 根据方程(14) 、(15) 和(16) 可知, 设计变量l 、m 1, 1]x y 和n z 的取值范围都在[-区间内。将求解空间分成大小相同的四个区域, 在
表1 12组应力张量
T a b l e 1 St r e s s t e n s o r s o f t h e 12e x a m p l e s
1
σx
σy σz τx y τx z 17
15162
2
[***********]
4-315162
[1**********]0
5-315-42
[1**********]0
6-35-42
[1**********]0
7-310-42
[1**********]0
8-3-5-42
[1**********]0
[***********][**************]
02500
011-22-5-6
[***********][1**********]0
2000
k P a 12
0003000
[1**********]000-6000
[***********][***********]
表2 几种计算方法的对比T a b l e 2 Co m p a r i s o n b e t w e e nt h e m e t h o d s
%
ρz 1. 6371. 2680. 0042. 3951. 4491. 5211. 4411. 6000. 49802. 0310. 886
ρt o t a l 5. 2242. 8880. 7035. 4554. 4182. 7773. 2134. 9512. 7372. 2395. 3901. 860
ρ差异t o t a l -0. 45-0. 77-0. 26-0. 55-0. 99-0. 80-0. 11-0. 12-0. 45-0. 45-3. 27-1. 25
编号[**************]
ρx 1. 8590. 0040. 0031. 0201. 3371. 2771. 3441. 1651. 3741. 3742. 3020. 942
文献[9-10]方法1)
ρρy z
1. 6121. 6640. 70102. 0651. 6660. 0000. 4172. 1910. 8740. 8740. 9700
1. 7771. 2510. 0002. 3991. 4581. 8551. 4551. 6010. 50002. 3010. 942
本文方法
ρt o t a l 5. 2482. 9100. 7055. 4854. 4622. 7993. 2164. 9572. 7492. 2495. 5731. 884
ρx 2. 0940. 0090. 0021. 0151. 3361. 2551. 3561. 1581. 3681. 3682. 4690. 974
ρy 1. 4941. 6110. 6982. 0451. 6330. 0000. 4162. 1940. 8710. 8710. 8900. 000
1) 1-10为文献[9]方法, 11-12为文献[10]方法
从表2可以看出, 本文提出的改进遗传算法不仅能够求解非线性方程组, 而且能够求解以非线性方程为等式约束的最优化问题。本文方法得出的结果较文献[9-10]为好, 是因为采用了最优保持策略的改进遗传算法能以概率收敛到优化问题的最优解, 而文献[9-10]所用的方法不具备这种收敛性。
为了考察异种机制的有效性, 本文用含有异种机制和剔除异种机制的遗传算法分别对以上12组
算例进行了计算。计算结果表明, 含有异种机制的遗传算法平均运行12. 6个循环就会收敛; 而剔除了异种机制的遗传算法平均运行22. 8个循环才收敛。从最优解来看, 含有异种机制的遗传算法得到的解均优于剔除了异种机制的遗传算法。这说明异种机制在提高算法收敛速度的同时, 还增强了算法的局部搜索能力。
参考文献:
[1] 陈子仪, 康立山, 胡欣. 遗传算法在方程求根中的应用
[J ]. 武汉大学学报, 1998, 4(5) :577-580.
[2] HO L L A N DJ H .A d a p t a t i o ni nn a t u r a l a n da r t i f i c i a l s y s -t e m s [M ]. A n nA r b o r , M i c h i g a n :U n i v e r s i t y o f M i c h i g a n P r e s s , 1975.
[3] WHI T E L YLD . D e c e p t i o n , d o m i n a n c ea n di m p l i c i t p a r -a l l e l i s mi ng e n e t i cs e a r c h[M].A n n a l so f M a t h e m a t i c s a n dA r t i f i c i a l I n t e l l i g e n c e , 1992.
[4] GO L D B E R GDE . G e n e t i c a l g o r i t h mi n s e a r c h , o p t i m i z a -t i o n a n dm a c h i n e l e a r n i n g [M].M A :Ad d i s o n -We s l e y P u b l i s h i n g C o m p a n y , 1989.
[5] 罗亚中, 周黎妮, 唐国金. 遗传算法求解非线性方程组
的应用研究[J ]. 华南理工大学学报, 2003, 31(7) :140-142.
[6] 胡小兵, 吴树范, 江驹. 一种基于遗传算法的求代数方
程组数值解的新方法[J ]. 控制理论与应用, 2002, 19(4) :567-570.
[7] 燕乐纬, 蹇开林, 黄晓刚. 基于广义遗传算法的结构动
力响应优化[J ]. 工程力学, 2008, 25(7) :57-65. [8] 蹇开林, 燕乐纬, 朱学旺. 基于遗传算法的结构支撑位
置优化[J ]. 应用力学学报, 2007, 24(1) :306-309. [9] LA W CW, C H E N GYM, S URKL . A p p r o a c h f o r r e i n -f o r c e m e n t d e s i g ni nr e i n f o r c e dc o n c r e t es t r u c t u r e s b a s e d o n 3-d i m e n s i o n a l s t r e s s f i e l d[J ].T h eH o n gK o n gI n -s t i t u t i o no f E n g i n e e r sT r a n s a c t i o n s , 2007, 14(2) :1-18.
[10] FO S T E RS J , M A R T I P , M O J S I L O V I CN . D e s i g n o f r e -i n f o r c e dc o n c r e t es o l i d s u s i n gs t r e s s a n a l y s i s [J ].A C I , 100-4 结 论
本文采用种群隔离机制、最优保持策略、算术杂交、自适应随机变异和异种机制对实数编码遗传算法进行了改进, 在保持遗传算法仅需目标函数值信息即可求解这一优点的基础上, 增强了算法的局部搜索能力。将这一改进的遗传算法应用于非线性方程组的求解。数值算例表明, 该方法不仅能够求解复杂的非线性方程组, 而且能够求解以非线性方程为等式约束的最优化问题。此外, 异种机制的引入加快了遗传算法的收敛效率, 有效提高了遗传算