教材
十种算法
- GA(genetic algorithm)
- SVM(support vector machine)
- ACO(ant colony optimization)
- PSO(partical swarm optimization)
- SA(simulated annealing)
- TS(tubu search)
- AFSA(articial fish swarm annealing)
- ABC(articial bee colony)
- Local Search
- Hill Climbing
遗传算法
遗传算法是模拟生物界的遗传与进化过程而形成的一种自适应全局优化概率搜索算法。
GA特点
- 群体搜索策略
- 变换求解域
- 搜索不依赖于目标函数的梯度信息
- 搜索不依赖于初始点
- 智能性
- 本质并行性
- 进化过程具有有向随机性
- 使用了概率搜索技术
- 简单通用
SGA流程图
TSP问题
一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。从图论的角度来看,该问题实质是在一个带权完全无向图中,找一个权值最小的哈密尔顿回路。
NFL定理
原文
正如Standford大学的Wolpert和Macready教授在1997年提出的 No Free Lunch(简称NFL)定理,即“无免费午餐”定理中所描述的万能算法是不存在的。
根据NFL定理,一个算法“优化”,仅仅是该算法对某一类问题具有较好的算法性能,对于其他问题,其性能必然下降。进一步地说,如果算法对某一类问题具有好的特性,这只说明该算法的搜索机理适合这类问题的结构,对于其他结构的问题则不适合。
这个定理对特定的优化问题设计有效的算法具有指导实践的重要意义。
NFL讲的是在不考虑具体问题的情况下,没有任何一个算法比另一个算法更优,甚至没有胡乱猜测更好。
不存在一个与具体应用无关的,普遍适用的“最优分类器”
学习算法必须要作出一个与问题领域有关的“假设”,分类器必须与问题域相适应。
但是,NFL定理的前提是,所有问题出现的机会相等、或所有问题都是同等重要。但是现实中,我们往往会得到特定的数据,特定的分布,解决特定的问题,所以我们只需要解决自己关注的问题,而不需要考虑这个模型是否很好的解决其他的问题。只有对于特定的问题,我们比较不同模型的才有意义。
丑小鸭定理
世界上不存在分类的客观标准,一切分类的标准都是主观的。渡边慧举了一个鲸鱼的例子说明这个定理: 按照生物学的分类方法,鲸鱼属于哺乳类的偶蹄目,和牛是一类;但是在产业界,捕鲸与捕鱼都要行船出海,鲸和鱼同属于水产业,而不属于包括牛的畜牧业。分类 结果取决于选择什么特征作为分类标准,而特征的选择又依存于人的目的。
模式定理
在遗传算子选择、交叉和变异的作用下,具有低阶、短定义距以及平均适应度高于种群平均适应度的模式在子代中呈指数增长。它保证了较优的模式(遗传算法的较优解)的数目呈指数增长,为解释遗传算法机理提供了数学基础。
积木块假设
低阶、短定义距以及适应度高的模式在遗传算子作用下能够生成阶数高、长定义距,适应度高的的模式,可最终生成全局最优解。
编码
-
编码原则一(有意义积木块编码原则):应使用能易于产生与所求问题相关的且 具有低阶、短定义长度模式的编码方案。
-
编码原则二(最小字符集编码原则):应使用能使问题得到自然表示或描述的具有最小编码字符集的编码方案。
适应度函数
度量个体适应度的函数称为适应度函数,也称为评价函数。
适应度尺度变换原因
- 在遗传算法运行的初期阶段
群体中可能会有少数几个个体的适应度相对其他个体来说非常高。若按照常用的比例选择算子来确定个体的遗传数量时,则这几个相对较好的个体将在下一代群体中占有很高的比例,在极端情况下或当群体现模较小时,新的群体甚至完全由这样的少数几个个体所组成。这时产生新个体作用较大的交叉算子就起不了什么作用,因为相同的两个个体不论在何处进行交叉操作都永远不会产生出新的个体,这样就会使群体的多样性降低,容易导致遗传算法发生早熟现象(或称早期收敛),使遗传算法所求到的解停留在某一局部最优点上。因此,希望在遗传算法运行的初期阶段,算法能够对一些适应度较高的个体进行控制,降低其适应度与其他个体适应度之间的差异程度,从而限制其复制数量,以维护群体的多样性。
- 在遗传算法运行的后期阶段
群体中所有个体的平均适应度可能会接近于群体中最佳个体的适应度。即大部分个体的适应度和最佳个体的适应度差异不大,它们之间无竞力,都会有以相接近的概率被遗传到下一代的可能性,从而使得进化过程无竞争性可言,只是一种随机的选择过程。这将导致无法对某些重点区域进行重点搜索,从而影响遗传算法的运行效率。因此,希望在遗传算法运行的后期阶段,算法能够对个体的适应度进行适当的放大,扩大最佳个体适应度与其他个体适应度之间的差异程度,以提高个体之间的竞争性。
适应度尺度变换
-
线性尺度变换
F a v g ′ = F a v g F m a x ′ = C F a v g F_{avg}^{'}=F_{avg} \\F^{'}_{max}=CF_{avg} Favg′=FavgFmax′=CFavg -
乘幂尺度变换
-
指数尺度变换
约束条件处理方法
-
搜索空间限定法
对遗传算法的搜索空间的大小加以限制,使得搜索空间中表示一个个体的点与解空间中表示一个可行解的点有一一对应的关系。 -
罚函数法
对在解空间中无对应可行解的个体,计算其适应度时,增加一个罚函数,从而降低该个体适应度,使该个体被遗传到下一代群体中的机会减少。 -
可行解变换法
在由个体基因型到个体表现型的变换中,增加使其满足约束条件的处理过程。即寻找出一种个体基因型和个体表现型之间的多对一的变换关系,使进化过程中所产生的个体总能够通过这个变换而转化成解空间中满足约束条件的一个可行解。
选择算子
- 比例选择
- 分级选择(q,d)
- 竞技选择(k,M)
- 精英保留策略
- 确定式采样选择(整数.小数)
- u+namuda选择(u,namuda,u+numuda,u)
- 截断选择 这种方法只从种群中选择一定比例的最好个体作为父体,然后均匀随 机的对这些父体进行交叉配对直至子代个体个数等于种群大小。
交叉算子
- 如何确定交叉点的位置?
- 如何进行部分基因交换?
- 单点交叉
- 多点交叉
- 均匀交叉(0101)
- 算术交叉
- 平坦交叉([])
- 线性交叉(3->2)
变异算子
交叉算子与变异算子的相互配合,共同完成对搜索空间的全局搜索和局部搜索,从而使得遗传算法能够以良好的搜索性能完成最优化问题的寻优过程。
在遗传算法中使用变异算子主要目的:
- 改善遗传算法的局部搜索能力;
- 维持群体的多样性,防止出现早熟现象。
在遗传算法中使用变异算子主要目的:
- 改善遗传算法的局部搜索能力;
- 维持群体的多样性,防止出现早熟现象。
- 均匀变异
- 非均匀变异(扰动)
- 边界变异
- 高斯变异
- 多项式变异