遗传算法总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
遗传算法总结
遗传算法是借鉴生物的自然选择和遗传进化机制而开发出的一种全局自适应概率搜索算法。
一、遗传算法流程图
算法开始
原问题参数集
染色体编码,产生初始种群
计算种群中个体的适应值
终止条件判断
N
选择
交叉
Y
变异
新种群
输出结果
算法结束
图1 遗传算法流程图
二、遗传算法的原理和方法
1)染色体编码
把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法就称为编码。
De Jong 曾提出了两条操作性较强的实用编码原则:编码原则一:应使用能易于产生与所求问题相关的且具有低阶、短定义长度模式的编码方案;编码原则二:应使用能使问题得到自然表示或描述的具有最小编码字符集的编码方案。
编码方法主要有以下几种:二进制编码方法、格雷码编码方法、浮点数编码方法、符号编码方法、参数级联编码方法、多参数交叉编码方法。 2) 适应值计算
由解空间中某一点的目标函数值()f x 到搜索空间中对应个体的适应度函数值
(())Fit f x 的转换方法基本上有一下三种:
a . 直接以待解的目标函数值()f x 转化为适应度函数值(())Fit f x ,令
() (())=() f x Fit f x f x ⎧⎨
-⎩目标函数为最大化函数
目标函数为最小化函数
b . 对于最小值的问题,做下列转化max max () ()
(())0 C f x f x C Fit f x -<⎧=⎨⎩
其他,其中max C 是
()f x 的最大输入值。
c . 若目标函数为最小值问题,1
(()), 0, ()01()
Fit f x c c f x c f x =
≥+≥++
若目标函数为最大值问题,1
(()), 0, ()01()
Fit f x c c f x c f x =≥-≥+-
3) 选择、交叉、变异
遗传算法使用选择算子来对群体中的个体进行优胜劣汰操作:根据每个个体的适应度值大小选择。适应度较高的个体被遗传到下一代群体中的概率较大;适应度较低的个体的被遗传到下一代群体中的概率较小。其中选择的方法有:轮盘赌选择、随机竞争选择、最佳保留选择、无回放随机选择、确定式选择等。
遗传算法中的所谓交叉运算,是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。交叉操作主要有单点交叉、两点交叉与多点交叉、均匀交叉和算数交叉四种。
遗传算法中的变异运算,是指将个体染色体编码串中的某些基因座上的基因值用该基因座的其他基因来替换,从而形成一个新的个体。主要有基本位变异、均匀变异、边界变异等几种变异操作方法。 4) 控制参数选择
交叉概率c p 一般取0.4~0.99;变异概率m p 一般取0.0001~0.1;群体规模一般取10~200。
三、算例
⎪⎩
⎪
⎨⎧∈≤≤=+=≤+=-+-=N
10,042),(5),(..)2()3(),( min 121212112
2212112
22121x x x x x x x h x x x x g t s x x x x f , (1)
1)三种不同的遗传方法
方法一:原模型中12x x 、均为决策变量,操作如下。
a. 采用混合整数编码,对1x 进行十进制编码,2x 进行二进制编码;
b. 适应度函数值采用12121
((,))(,)
Fit f x x c f x x =
+计算,其中
112112max{0,(,)5}max{0,|(,)4|}c g x x h x x λμ=⨯-+⨯-,λ=μ=10000;
c. 采用赌轮盘选择、单点交叉和基本位变异;
d. c p =0.8,m p =0.1,遗传代数为200,种群中个体数100;
e. 终止条件为连续十次最优个体保持不变或遗传代数到达200。
方法二:已知等式约束112(,)h x x ,可得21(4)/2x x =-,则原问题可化为
221
112
211111114min ()(3)((
)2)2
4()()52..010N 4010
2x f x x x g x x s t x x x -=-+--⎧=+≤⎪⎪≤≤∈⎨⎪-⎪≤≤⎩
,
(2)
即等式约束简化后的模型为 22
1112
21111
11min ()(3)()2
4()()5..204N
x
f x x x
g x x s t x x =-+-⎧=+≤⎪⎨⎪≤≤∈⎩, (3)
其中a~b 的操作如下,而c~e 的操作同方法一。 a. 对1x 进行十进制编码;
b. 适应度函数值采用12121
((,))(,)
Fit f x x c f x x =
+计算,其中
112max{0,(,)5}c g x x λ=⨯-,λ=10000
方法三:在方法二的基础上,改变1x 的编码方法,对1x 进行二进制编码。由于104x ≤≤,且为自然数,则二进制编码至少为3位,但3位的二进制可以表示0~7的整数,所以存在冗余编码。则通过惩罚来排除冗余编码,即适应度函数值采用
12121
((,))(,)
Fit f x x c f x x =
+计算。
其中1121max{0,(,)5}max{0,()4}c g x x x i λλ=⨯-+⨯-,λ=10000。1()x i 表示个体解码后的1x 。
2)三种方法的计算结果
方法一可得到三个不同的解:
解1:12122,1, ((,))0.4646, () 2.0000x x Fit f x x f x ====,适应度趋势图如下: