目录
用遗传算法求解问题需要解决以下五个问题:
- 编码:A genetic representation
- 群体初始化:an initial population
- 个体评价:An evaluation function ,fitness
- 遗传算子:Genetic operators (selection, crossover, mutation)
- 参数选择:Parameter values (population size, probabilities of applying genetic operators, etc.)
1.编码(染色体的表示)
表现型空间与基因型空间
编码注意可行性和合法性
编码的评价
-
不冗余:码空间到解空间是1对1影射.
-
合法性:对编码的任意排列对应一个解.
-
完备性:任意一个解都对应一个编码
编码方式(分类)
1、二进制编码
二进制编码方式是最基础的编码方式,优点是编码简单,缺点是对于复杂问题编码时,会编码过长。比如解的精度为小数点后6位,那么问题可能解的二进制编码的长度为3000。
二进制编码存在汉明悬崖问题
表现型空间中距离很小的个体在基因型空间的Hamming距离可能很大
如7和8,7=0111,8=1000,它们的汉明距离为4,若7为当前解,8为最优解,要搜索到8,需改变很多比特位。
即:为了翻越这个悬崖,个体的所有位都需要改变,而实际算子交叉和变异翻越悬崖的可能性却较小。
2、浮点数编码方法(Float Point Representation)
3、序列编码
旅行商问题(TSP):一个商人欲从自己所在的城市出发,遍历所有城市后回到出发城市。
问:如何选择一条周游路线,使得商人经过每个城市一次且仅一次后回到起点,且使他所走过的路径最短?
TSP问题中注意非法解和完备性
若编码为:3 2 1 4 5
3→2 →1 →4 →5 →3
若编码为: 2 3 5 2 1,则属于非法解
若编码为: 3 2 1 4 5 与14532,则它们为同一条路径,不具备完备性
2. 种群初始化
通常有两种:
-
一种是完全随机的方法产生的,它适合于对问题的解无任何先验知识的情况;
-
另一种是根据某些先验知识转变为必须满足的一组要求,然后在满足这些要求的解中再随机地选取样本。
种群规模设定
-
从群体多样性方面考虑,群体规模越大越好,避免陷入局部最优。
-
从计算效率,群体规模应小。群体越大,其适应度评估次数增加,计算量增加。
应该针对不同的实际问题,确定不同的种群规模。 Goldberg证明了在二进制编码的前提下,若个体长度为L,则种群规模的最优值为 2 L / 2 2^{L/2} 2L/2
3.适应度函数(Fitness Function)
在搜索中仅以适应度函数为依据,利用种群每个个体的适应度来指导搜索。
适应度函数的选取直接影响到遗传算法的收敛速度以及能否找到最优解
设计适应函数时,通常应遵守以下原则:
- 最优解与具有最大适应值的个体相对应.
- 适应值能够反映个体质量的差异.
- 计算量应尽可能的少
注意:
在实际问题中:
适应度函数与问题的目标函数是不完全一致的,
有的问题的目标是要求的最小值(费用问题),而有的问题的目标是要求得最大值(利润函数)。
适应度函数的构造
目标函数映射成适应度函数
- 对于最小化问题,适应度函数构造如下:
C
m
a
x
C_{max}
Cmax可以是目标函数的一个上界,当
C
m
a
x
C_{max}
Cmax未知时,可以是当前所有代或最近K代中的g(x)的最大值,此时
C
m
a
x
C_{max}
Cmax随着代数会发生变化
- 对于最大化问题,适应度函数构造如下:
C
m
i
n
C_{min}
Cmin可以是目标函数的一个下界,也可以是当前所有代或最近K代中的g(x)的最小值。
适应度函数存在问题
存在超级染色体,具有绝对的优势控制整个选择过程;
- 避免个体之间的差距过大,限制竞争
在算法的晚期(大部分个体已经收敛)个体之间的适应度差别不大,呈现随机搜索行为。
- 维持个体之间的合理差距,加速竞争
适应度变换机制可以解决这些问题。
适应度变换:
4.遗传算子
交叉算子Crossover
TSP交叉操作算子
p1=2 4 3 |1 8 6 7| 5 9,
p2=2 1 3 |4 5 6 7| 8 9
移走p1中已在p2中的城市4、5、6和7后,得到2—3—1—8—9
该序列顺次放在o1中:o1=(2 3 1 | 4 5 6 7 | 8 9)
类似地,可以得到另一个后代:o2=(2 3 4 |1 8 6 7| 5 9)
变异算子mutation
变异的结果并非越好就越理想,有时往差方向变异,反而更接近最优解
在生物的遗传和进化过程当中,生物的某些基因偶尔会发生变异,从而产生出新的个体。虽然其概率比较小,但对新物种的产生也是一个不可忽视的因素。
遗传算法模仿这种变异现象,引入变异算子。变异发生在单个个体的某个基因上,并且变异概率Pm一般取值很小,以保证种群发展的稳定性。
在一次迭代过程中,必须有选择和交叉操作,但不一定要有变异操作。
- 随机变异(Random Mutation)
按照变异概率Pm选定个体进行变异
- 均匀变异(适用于浮点数编码)
- 针对TSP问题:
选择算子
- 选择的作用:
选择压力:最佳个体选中的概率与平均选中概率的比值。
- 合适的选择压力很重要
太大:容易早熟,降低种群的多样性
太小:进化缓慢.
进化初期:小的选择压力,可以增加种群的多样性,对搜索区域进行探索(wide exploration)
进化后期:大的选择压力,可以开发优秀个体周围的区域(exploit the most promising regions)
选择的方式——轮盘赌
-
模拟博彩游戏中的轮盘赌是遗传算法中使用最多的选择策略之一。
-
一个轮盘被划分为N个扇形,每个扇形表示种群中的一个个体,而每个扇形的面积与该个体的适应值成正比。
-
设想有一个指针指向轮盘,转动轮盘,当轮盘停止后,指针所指向的个体被选择
因此,如果个体的适应值越大,表示该个体的扇形面积就越大,因此它被选择的可能性也就越大。
- 算法中如何实现轮盘赌?
- 终止条件:
- 注意:这里个体被选择到的概率是一个累积概率。
5.参数设置
群体规模N
- 影响算法的搜索能力和运行效率。
- 若N设置较大,可以保证群体的多样性,但增加算法的计算量,降低了算法的运行效率。
- N的设置一般为20~100。
染色体长度L
- 影响算法的计算量和交叉变异操作的效果。
- 对于二进制编码方法,染色体的长度L根据解的取值范围和规定精度要求选择大小。
基因取值范围R
- R视采用的染色体编码方案而定。
- 对于二进制编码方法,R ={0,1}
- 对于浮点数编码方法,R与每一维变量的取值范围相同。
交叉概率Pc
- 决定了进化过程种群参加交叉的染色体平均数目。
- 取值一般为0.4至0.99。
- 也可采用自适应方法调整。
变异概率Pm
- Pm的值不宜过大。因为变异对已找到的较优解具有一定的破坏作用。
- Pm的取值一般为0.001至0.1之间。
- 也可采用自适应方法调整。
适应值评价
- 适应度函数的设置同优化问题的求解目标有关。
- 为了更好地提高选择的效能,可以对适应度函数做出一定的修正。
终止条件
- 可以使算法在达到最大进化代数时停止,最大进化代数一般可设置为100~1000,根据具体问题可对该建议值作相应的修改。
- 也可以通过考察找到的当前最优解是否达到误差要求来控制算法的停止。
- 或者是算法在持续很长的一段进化时间内所找到的最优解没有得到改善时,算法可以停止。
6.遗传算法的性能评估
三种基本的算法度量标准:成功率,有效性和效率。
- 成功率:在给定的时间内,算法终止时找到所需质量解的运行次数与运行总次数之比
- 有效性:在给定的运行时间或运行代数内算法的求解质量
平均最好适应值;
历史最好(Best-ever)适应值;
历史最差(Worst-ever)适应值 - 效率: 算法得到满意解时所花费的计算量或计算时间来度量。用计算时间度量效率时,依赖所用的计算机的类型、操作系统和编译软件等。
7.总结
遗传算法有以下特点:
- 遗传算法是对决策变量的编码进行遗传操作
- 遗传算法是从许多点开始并行操作,因而可以有效地防止搜索过程收敛于局部最优解。
- 遗传算法不需要其他推导和附加信息,对问题的依赖性小。
- 遗传算法在解空间进行高效启发式搜索,而非盲目地穷举或完全随机搜索。
- 遗传算法对于待寻优的函数基本无限制,因而应用范围较广。
- 遗传算法具有并行计算的特点,因而可通过大规模并行计算来提高计算速度。
- 遗传算法更适合大规模复杂问题的优化。
- 遗传算法计算简单,功能强。
8.补充
- 模式
指编码的某些位置具有相似结构的染色体集合
如:模式111可以代表4个个体:01110、01111、11110、11111
模式由三值字符集(0,1,*)中的元素组成的一个编码串
模式的阶:指模式中具有确定取值的基因个数
模式的定义长度:指模式中第一个具有确定取值的基因到最后一个具有确定取值的基因的距离
- 模式定理:
在遗传算子选择、杂交和变异的作用下,具有低阶、短长度以及平均适应值高于群体平均适应值的模式在子代中将得以指数级增长。
- 收敛的定义