遗传算法的MATLAB程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环:从1到最大代数
选择、交叉、变异生成新群体
调用select,cross,mutation
计算新群体适应度及其最小最大和平均值
调用decode,fitcalculation
记录当前最佳适应度及对应变量值
输出计算结果、打印图形
2、程序设计中几个难点说明 在PDF文稿点评主程序、各子程序及设计要点。
以齿数为例说明:15≤ x1≤ 40, 由上式L=5,但有6个多余码。 定L=5,调整上界为: XU=46
1 x1 8.75 所以,边界 15 x2 46 条件更改为: 8 x3 20.7
0.2 x4 0.9
1 x1 10
原来:15 x2 40
8 x3 20
子程序 2)code:编码。随机生成染色体。 X=0 1 1 1 1 0 1 1
3)decode:解码。将二进制数转换成十进制数。 X=0 1 1 1 1 0 1 1 x1 x2 x3
x1=(0 1)2=0*21+1*20=1 x2=(1 1)2=1*21+1*20=3 x3=(1 0 1 1)2=1*23+0*22 +1*21 +1*20 =11
2L XU XL 1

对模数, 表示精度δ =0.25,取L=5,调整上界为 XU=8.75 ; 对齿数, 表示精度δ =1.00,取L=5,调整上界为 XU=46 ; 对螺旋角,表示精度δ =0.1,取L=7,调整上界为 XU=20.7; 齿宽系数,表示精度δ =0.1,取L=3,调整上界为 XU=0.9;
X
,
r),
if if
Cmin ( X , r) 0 Cmin ( X , r) 0
主程序 SGAmain2 主程序是一个命令型M文件,将所有调用命令集中起来。
主程序框图
基本参数赋值
计算染色体长度
调用calcbits
生成初始群体、计算适应度及其最小最大和平均值
调用code,decode,fitcalculation
第三段: ZV[80 100 150]:
YF 0.0007 ZV 2.2828
5)优化结果 考虑一单级斜齿圆柱齿轮传动的优化问题:
已知输入功率P=20KW,小齿轮转n1=1000rpm,传动比i=3,载荷 K=1。
人工选择齿轮材料和热处理: 小齿40Cr调质(硬度260HB)[σ H1]=798MPa,[σ F1]=456MPa 大齿45 调质(硬度240HB)[σ H2]=690MPa,[σ F2]=349MPa
i
1
23
4
5
6
7
8
9
10 11 12
GDθi 0
30 60 90 120 150 180 210 240 270 300 330
2、再现给定运动轨迹的平面连杆机构
优化设计的遗传算法实现
一、分析: (1)平面连杆机构、连杆曲线
平面绞链四杆机构是平面连杆机构中最简单的一种。
连杆曲线
连杆
Y
α
θ0
y
β
x
X
设计变量 X=[x, y, L1, L2, L3, L4, L5,α ,β ,θ 0]
其中θ 0为曲柄L1与机架 L4的起始夹角 。
ai xi bi s.t.g j ( X ) 0
hk ( X ) 0
(i 1,2,...,n) ( j 1,2,...,q) (k 1,2,...,m)
通常,圆柱齿轮传动的优化问题: 设计变量---模数、齿数、螺旋角、齿宽系数 目标函数---体积和最小 约束条件---边界条件约束、强度约束
max. s.t
i 1,2,...,n j 1,2,...m
max .
m
n
(X ,r) f (X ) r(
h
2 j
(
X
)

{max[ 0, gi ( X )]}2 )
j 1
i1
F
(
X
)

Cm
in
( 0,
(3)最佳逼近
给定的运动轨迹
Min.误差= (给定的轨迹-实际的轨迹)
实际的运动轨迹
二、建立数学模型(建模) 优化设计可写成下列通用形式:
? X (x1, x2 ,...xn ) min f ( X )
s.t.agi
j
xi (X)

bi 0
hk ( X ) 0
(i 1,2,...,n) ( j 1,2,...,q) (k 1,2,...,m)
具体为: 设计变量:
X [x1, x2 , x3 , x4 ] [mn , z1 , , d ]
目标函数:
F(X)
4
(d12

d
2 2
)

b

4
(1

i
2
)(
mn z1 cos
)
3

d

8
(1

i
2
)(1

i)(
x1 x2 cos x3
)
3
x4
约束条件 边界条件约束: 1 x1 10 15 x2 40 8 x3 20 0.2 x4 1.0
4) select 5)cross 6)mutation 7)fitcalculation:
子程序 1) calcbits: 计算二进制代码的位数。
2l (U max U min ) / 1
例如:有三个设计变量x1、x2,x3。 其下上界分别为:[0 3]、[2 5]、[3 6]; 三个变量的精度分别为[1 1 0.5]; 则输为:(2 2 4) 故染色体为X=0 1 1 1 1 0 1 1
3.2.2 算例
例1:求下列简单函数的最小化问题: (1) min. y=x2, x:[0,10] (2) min. y=10*sin(4x)+cos(5x), x:[0,9] (3) min. y= x12 + x22
运行参数:Pc=0.7, Pm=0.03, M=30, Gen=100 打开MATLAB,运行SGAmain2,并观察运行参数对运算 结果的影响。
1.0
0.6
体积和/mm3 4488527 1614700
多次运行程序,得到几个优化解,其体积十分接近但设计变 量不同。这说明,目标函数是一个多峰函数,有多组解存在。
将模数=2.5,小齿齿数=22固定,观察螺旋角和齿宽系数 变化对体积的影响,如图下左。
将螺旋角=8.1°,齿宽系数=0.6固定,观察模数和小齿齿 数变化对体积的影响,如图下右。
3.2 遗传算法的MATLAB程序设计
3.2.1 程序设计 1)主程序设计 2) 程序设计中几个难点说明
3.2.2 算例:求简单函数的最小化问题 3.2.3 利用遗传算法解决工程优化问题
1)基于遗传算法的齿轮传动优化 2)再现给定运动轨迹的平面连杆机构优化
设计的遗传算法实现
3.2 遗传算法的MATLAB程序设计
Y (GDx1,GDy1)
α
θ0
y
x
(SJx1,SJy1)
β
X
(1)设计变量 X=[x, y, L1, L2, L3, L4, L5,α ,β , θ 0]
(2)目标函数 通常要求连杆曲线通过给定的M个点(以表格形式给出) 其中M个点的坐标(GDxi,GDyi)及对应的夹角(θ i)之
间的关系已给定: [GDxi,GDyi]=f(θ i),(i=1,2,…M) θ i= θ 0+ GDθ i
(2)再现给定运动轨迹
一是在连杆机构各杆长度给定时连杆曲线的求解,该过 程称连杆机构的分析;
二是给出连杆曲线,求连杆机构各杆长度,这个过程称 为连杆机构的综合。
在实际工作中,往往要求连杆上某点的运动轨迹能最佳 逼近某一给定的运动轨迹,且机构的参数还要受到其它限制。 对于这种复杂的机构综合问题,必须借助最优化方法加以求解。
因此,编写一套简易的遗传算法程序,让用户逐渐熟悉 MATLAB语言,熟悉算法表达与程序实施之间的差异,以及如 何在程序中添加必要的项目,都是十分必要的。
1、主程序设计 前面已介绍了遗传算法的基本步骤为:编码、初始群体
生成、群体适应度计算、选择、交叉、变异。 显然,每一个基本步骤涉及到一系列的操作过程,因而
3.2.3 利用遗传算法解决工程优化问题 1、基于遗传算法的齿轮传动优化
齿轮传动是机械设计中广泛应用的传动形式,许多学者 已对齿轮传动优化设计作了不少研究。
齿轮传动优化设计是一个含连续/离散混合设计变量的优 化问题。常用的处理方法是:先暂时将所有的设计变量视为连 续变量,采用传统的优化算法求得最优点,然后再对离散设计 变量圆整到许用离散值。由于优化算法通常是基于梯度的算法, 故一般只能得到局部最优解,而圆整后的设计点有可能跑到可 行域之外。
[ F1] 0
g4(X )
F2
[ F 2 ]
0.8KT1YF2 cos2
mn3Z12d (1 i)
[ F2 ] 0
注意到在上述约束条件中,凡是在遗传算法编码时能处理的 约束直接写出其上下界,而通过SUMT法处理的约束写成g(x)形式。
2)设计变量的多余码和不足码的处理 一个L位长的二进制数能表示2L种模式,当实际要表示的模式 M<2L时,出现多余码; M>2L时,出现不足码,只有M=2L时, 问题空间与表达空间的数才存在一对一的关系。 为使M=2L ,本文采用调整上界的办法。 二进制串长的计算公式为:
3.2.1 程序设计
虽然前面给出了遗传算法的现存软件,但在利用遗传算法 结合自己的科研问题进行计算时仍有许多不便。例如,北京师 范大学的遗传算法软件GA platform,只能针对标准格式的优 化问题进行求解。所谓标准格式的优化问题,指目标函数,约 束条件均可表示成设计变量的显式函数的问题,但科研中的许 多优化问题,未免能表示成这种格式,因而应用中颇受限制。
0.2 x4 1.0
3)适应度函数 采用SUMT法将约束问题转换为无约束问题。设r为惩罚因
子,则罚函数为:
4
min P( X ) F ( X ) r {max[ 0, gi ( X )]}2 i 1
将罚函数极大化处理,则适应度函数:
max f (X ) C max P(X )
4)齿形系数 斜齿轮的当量齿数ZV与齿形系数YF可按线性回归求出方程。
将曲线分为三段来逼近。 第一段: ZV[12,…,32]: YF 0.0025 ZV2 0.1532 ZV 4.8852
第二段: ZV[35,…,60]: YF 0.0001 ZV2 0.0197 ZV 2.9804
应该由相应的命令型或函数型M文件来编写,构成相应的子程 序。
然后再编写一个命令型M文件,将所有操作过程连接起来, 形成一个完整的遗传算法软件;同时,完成诸如图形打印, 输出显示等工作。这部分命令型M文件,就是主程序。
主程序 SGAmain2 子程序
1) calcbits 2)code 3)decode
T1=9.55×106×P/n1=191×103(Nmm)
遗传算法参数: 进化代数100,群体规模30, 交叉率PC=0.7,变异率PM=0.05
下面看上述数据在SGAmain2中的处理。
进化过程及运行结果如下:
`


常规设计
3
优化设计 2.5
小齿齿 数
27
22
螺旋 角
12.597 °
8.1°
齿宽系 数
子程序 4) select: 选择。按比例选择法。
5)cross:交叉。单点交叉。
6)mutation:变异。简单变异。
子程序 7)fitcalculation: 适应度计算。 计算目标函数值,约束函数值,将约束问题无约束化
(罚函数法),将无约束问题转换成适合遗传算法的极大化 问题。
可以求极大或极小问题。S=1,求极大; S=-1,求极小。 未采用适应度比例变换(读者可自己加入)
近年来,遗传算法在含连续及离散变量的优化设计领域 显示出良好的应用前景。其主要优点是具有很强的通用优化能 力,不需梯度信息,不需函数连续,优化结果具有全局性。
1)优化数学模型的建立(建模) 考虑一单级斜齿圆柱齿轮传动的优化问题。
优化设计可写成下列通用形式:
? X (x1, x2 ,...xn ) min f ( X )
不根切约束:
g1( X ) 17 cos3 x3 x2 0
接触强度约束:
g2 ( X ) H [ H ] 882
KT1 cos3
id Z13mn3
[ H ] 0
弯曲强度约束:
g3(X )
F1
[ F1]
0.8KT1YF1 cos2
mn3Z12d (1 i)
相关文档
最新文档