用实数编码遗传算法解非线性方程组
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
( i) =
1 2
1+
tanh
i- ! ∀
,
1# i# N
Pj 和 P k 是从交配池中取的两个父代染色体, ZL和 ZL+ 1 是通过杂交过程产生的子代染色体, 是 杂交权数, !是 [ 1, N ] 中的随机数, ∀ 为 [ 1, N / 3]
内的随机数。
( ( )变异算子: 为了防止早熟现象, 引入变异 算子, 使参数发生 偶尔变动来维 持种群的多样性。
综上面所述, 本文用实数编码遗传算法解非线
性方程组算法如下:
( 1) 随机产生初始种群, 并计算适应度;
( 2) 根据选择算子复制个体;
( 3) 对种群作用算术杂交算子;
( 4) 对种群作用变异算子;
( 5) 留最佳个体, 并判断是否使用灭绝与移民 算子, 以既定规模产生下一次种群。
算法流程框图见图 1:
为遗传算法的执行结果, 这个结果可以表示问题的 一个解。
在将遗传算法应用于实际问题时, 通常需要将
优化问题的解进行编码, 以形成染色体。常用的编
码方法有二进制编码, 实数编码 ( 或称浮点数编码 )
和树编码等。对于连续变量情况, 由 Gutow sk i提出
的基于实数编码的遗传算法, 可以很好地提高计算 效率, 同时也能满足计 算精度的要求 [ 3 6] 。具体的
( 1. 西安卫星测控中心, 陕西 西安 710043; 2. 四川大学 数学学院, 四川 成都 610062)
摘 要: 将非线性方程组的求解问题转化为求最大值问题, 设计出选择算子, 杂交算子, 变异算子,
加速收敛的最佳个体保留策略和预防早熟的灭绝与移民算子, 利用实数编码遗传算法求出了非线
性方程组的解, 数值例子表明了该方法的有效性。
技术在 [ 4]中有详细阐述。
( ∀ )初始种群: 用 双曲正切函数随机产生 N p 个染色体, 公式如下:
Pj ( i) =
+
1 2
(
-
) 1 + tanh i - ! , ∀
1 # i # N, 1 # j # Np Pj ( i) 是第 j个染色体上 xi值, , 为两个任意
数, !是区间 [N / 4, 3N /4] 中的一个随机数, ∀是区
N
R (X ) =
r
2 i
( 4)
i= 1
收稿日期: 2006- 12- 20 作者简介: 作者简介: 彭灵 翔 ( 1974- ), 男, 湖南双峰人, 西安卫星测控中心工程师 , 硕士。
16
延安大学学报 (自然科学版 )
第 26卷
则求解方程组 ( 1) 等价于求解下面问题:
find: X = [ x 1, x 2, , xN ], X !
变异过程采用正态性变异, 公式如下:
Z
m j
=
Zj ( i) +
dM ( i),
M ( i)
=
exp
-
( i - !) 2 2∀2
,
1 # i # N, 1 # j # Np
Zj 指通过杂交后的第
j个子代染色体,
Z
m j
指通
过变异后的第 j个子代染色体, M 是变异高斯函数,
d 是 [ - - , - ] 中的随机数。
一般遗传算法的主要步骤如下:
( 1) 随机产生一个由确定长度的特征字符串组
成的初始群体;
( 2) 对该字符串群体迭代执行下面的步 ( a) 和
( b), 直到满足停止标准: ( a) 计算群体中每个个体
字符串的适应值; ( b) 应用复制、交叉和变异等遗传
算子产生下一代群体。
( 3) 把在后代中出现的最好的个体字符串指定
Pn
=
N keep
- n+ i N k eep
i
1 ,
其中 n是染色体的适应度排序的序号。
( ∋ ) 杂交算子: 杂交操作的目的是组合染色体
中的数值信息, 同时增大种群的离散程度, 以产生
新的搜索空间。杂交过程采用算术杂交如下:
ZL ( i) = ( i )Pj ( i) + ( 1 - ( i) )Pk ( i), ZL+ 1 ( i) = ( 1 - ( i ) )Pj ( i) + ( i)Pk ( i),
问题 1:
3x1 - cos( x2 x3 ) -
1 2
=
0
x21 - 81(x 2 + 0 1) 2 + sinx3 + 1 06 = 0
e- x 1x2
+
20x3
+
10# 3
3=
0
表 1 用牛顿法和 RCGA 求问题 1的解
x1
牛顿法
0. 5
x2
x3
0
- 0. 5335
RCGA
0. 499999 0. 0000000 - 0. 5235
第 26卷 第 2期 2007年 6月
延安 大学学报 (自然科学版 ) Journal of Y anan U niv ers ity ( N atura l Sc ience Edition)
V o.l 26 N o. 2 June 2007
用实数编码遗传算法解非线性方程组
彭灵翔 1, 2, 李于锋 2
图 1 算法流程框图
3 数值模拟
用实数编 码遗传 算法 ( RCGA ) 解非线 性方程 组, 算法输入的相关参数有: 种群的大小 N p = 100; 选择概率 X ra te = 0. 5; 杂交概率 P c = 0. 5; 变异概率 Pm = 0. 5; 方程 ( 6) 中的 t = 0. 01; 移民门槛值和相 应的代数: 当最佳个体的适应值在 200代内变化小 于 0. 01; 终止准则迭代次数 > 1000 次, 或者最佳个 体适应度 ∗ 0. 9999。下面用实数编码遗传算法分别 解 4个非线性方程组:
间 [ 1, N / 3] 的一个随机数。
( ∃ ) 适应度计算: 用等式 ( 6) 作为适应度函数
计算出初始种群中各个染色体的适应度。并从大到
小进行适应度排序。
( % ) 选择 算子: 选用 确定性 采样选 择 ( D eter m in istic se lection) , 计算出要保留的染色体个数 N keep = N p & X rate , 剩下的染色体 N p - N keep将按下面计算 公式计算概率, 进行赌轮选择复制:
绝与移民过程一般分为两部分, 开始将最佳染色体 之外的染色体全部灭绝; 然后移民产生 N p 1个新的 染色体。移民过程是: 从第 2 个到 N p /2个染色体用 产生初始种群的方法产生父辈染色体; 其余染色体
百度文库 第 2期
彭 灵翔, 李于锋: 用实数编码遗传算法解非线性方程组
17
用最佳适应度的染色体通过变异产生:
x1 x2 + x2 x3 + x3x1 + 7. 5 = 1. 90577 e- 0. 7
x1 2 + x2 2 + x3 2 - 15. 25 = 4. 435708 e- 0. 7
- 5 < x < 5。
x1 2 + x2 2 + x3 2 - 15 25 = 0 用实数编码遗传算法解得:
x1 = - 2 28947363434181 x2 = - 0 35422346790061 x3 = 3 14369792696639 代入问题 4中有:
x1 + x2 + x3 - 0. 5 = 8. 247239718e - 0. 7
1 问题描述
非线性方程组指的是有 N 个变量 (为了简化讨 论, 这里只讨论有 N 个实变量 X = [ x1, x2 , xN ] 和 N 个方程, 且有解 )的方程组, 其一般形式为:
f1 ( x1, x2 , xN ) = 0 f2 ( x1, x2 , xN ) = 0
( 1) fN (x1, x2 , xN ) = 0 把方程组的各项改写为: x1 = g1 (x 1, x2, , xN )
(x1 - 5x2 ) 2 + 40sin2 ( 10x3 ) = 5. 60 e- 8
(x2 - 2x3 ) 2 + 40sin2 ( 10x1 ) = 3. 494 e- 7 ( 3x1 + x3 ) 2 + 40sin2 ( 10x2 ) = 2. 90 e- 7 问题 4:
x1 + x2 + x3 - 0. 5 = 0 x1 x2 + x2 x3 + x3x1 + 7. 5 = 0,
关键词: 非线性方程组; 最大值; 实数编码遗传算法
中图分类号: TP301. 6
文献标识码: A
文章编号: 1004 602X( 2007) 02 0015- 04
随着现代自然科学和技术的发展, 以及新学科、 新领域的出现, 非线性科学在工农业、金融经济、科 学研究和工程应用方面逐渐占有极其重要的位置。 在理论研究和应用实践中, 几乎绝大多数的问题都 最终能化为方程或方程组, 或者说, 都离不开方程和 方程组的求解。因此, 在非线性问题中尤以非线性 方程和非线性方程组的求解最为基本和重要。传统 的解决方法, 如简单迭 代法、牛顿 法、割线 法、延拓 法、搜索法、梯度法, 无论从算法的选择还是算法本 身的构造都与所要解决的问题的特性 有很大的关 系 [ 1] 。很多情况下, 算法中算子的构造及其有效性 成为我们解决问题的巨大障碍。而遗传算法作为一 种非线性全局优化搜索算法具有较强的搜索能力, 被广泛地应用于许多领 域 [ 2] 。本文将 非线性方程 组的求解问题转化为一个求最大值问题, 利用实数 编码遗传算法, 分别设计各个遗传算子, 将非线性方 程组的解求出。数值例子表明, 本算法对方程的可 微性、连续性、完备性等均没有要求, 只要一次性编 好各个算子程序, 不同的非线性方程组的求解只是 适应度函数不一样而已, 求解过程是标准化的计算 机程序, 不要进行其他算子的修改, 方法简单, 具有 很强的适应性。
( ) )终止准则: 迭代次数 > 1000 次, 或者最佳 适应度 ∗ 0. 9999
另外, 还设计最佳个体保留算子和灭绝与移民
算子。最佳个体保留算子是把有最好适应度的染色
体群作为种子传到下一代。灭绝与移民算子在当交
配池中的染色体几乎是一样时, 或者最佳个体的适
应度在一定代数内的增幅小于门槛值时起作用。灭
Pj ( i) =
+
1 2
(
-
)
1 + tanh
i- ! ∀
,
2 # j # Np /2
Pj ( i) = P ( 1) + dM ( i),
Np 2
+
1#
j # Np
Pj是第 j 个应用了移民算子的父代染色体, P ( 1) 是最佳适应度的染色体, M 是变异高斯函数,
d 是 [ - - , - ] 中的随机数。
(x1 - 5x2 ) 2 + 40sin2 ( 10x3 ) = 0
(x2 - 2x3 ) 2 + 40sin2 ( 10x1 ) = 0
( 3x1 + x3 ) 2 + 40sin2 ( 10x2 ) = 0 用实数编码遗传算法解得:
x1 = - 0. 93473022898965 e- 5
x2 = - 0. 85039451272299 e- 5 x3 = - 0. 37054479005660 e- 5 代入问题 3中有:
而遗传算法作为一种非线性全局优化搜索算法, 具
有较强的搜索能力, 它对所解决的问题要求的条件
较弱, 无论目标函数是单峰还是多峰, 只要所求的问
题是可计算的, 都能较好地求出最优解。因此对非线
性方程组 ( 1) 转化为 ( 6) 时, 求 ( 6) 的最大值, 就可
以用遗传算法来求解。
2 实数编码遗传算法
x2 = g2 (x 1, x2, , xN )
x i = gi ( x1, x2, , xN ) ( i = 1, 2, N )
( 2)
xN = gN ( x1, x2, , xN ) 定义残差:
ri = xi - gi (x1, x2, , xN ), i = 1, 2, N
( 3)
再定义全局残差如下式:
N
m in: R (X ) =
(x i - g ( x1, xN ) ) 2
( 5)
i= 1
式 ( 5) 中 为方程组解的区间, 当 R 取最小值 0时,
所对应 X = [ x1, x2, , xN ] 的为方程组的解。
再作变换:
F=
t t+ R
( 6)
t为很小的值, 则求非线性方程组的解就可转换
为求 F 最大值的问题 (当 t = 0时, F取得最大值 1)。
问题 2: x3 + y3 - 6x + 3 = 0
x3 - y3 - 6y + 2 = 0 用实数编码遗传算法解得:
x = 0. 53237045807909
y = 0. 35125745107025 代入问题 2中有:
x3 + y3 - 6x + 3 = - 4. 40308894 e- 7 x3 - y3 - 6y + 2 = 5. 0746284 e- 8 问题 3: