本文内容一览(快速理解)
-
进化计算是什么? 受生物进化过程启发的优化算法,模拟"物竞天择,适者生存",通过选择、交叉、变异等操作寻找最优解
-
为什么需要进化计算? 不需要梯度信息(适用于不可导函数),可以处理离散和连续优化,有概率跳出局部最优找到全局最优,适用于复杂的多峰值问题
-
基本概念是什么? 个体(问题的潜在解)、染色体(个体的编码表示)、基因(染色体的组成部分)、种群(多个个体组成的集合)、适应度函数(衡量个体好坏的函数)
-
进化过程是什么? 选择(根据适应度选择优秀父代)→ 交叉(父代交换基因生成子代)→ 变异(子代基因随机变化)→ 评估(计算适应度)→ 生存选择(形成新一代种群)
-
遗传算法的五个要素? 编码方案(如何编码解)、初始种群生成(如何生成第一代)、适应度函数(如何评估好坏)、遗传操作(选择/交叉/变异)、参数设置(种群大小/交叉概率/变异概率)
-
交叉操作的作用? 从父母染色体中选择基因生成子代,组合父代的优秀基因,探索新的解空间,保持种群多样性,交叉概率通常0.6-0.9
-
变异操作的作用? 染色体某些基因位置产生突变,防止陷入局部最优,保持种群多样性,探索新的解空间,变异概率通常0.001-0.1
-
遗传算法vs进化策略? 遗传算法用位串编码(二进制),可能找到全局最优,适合离散优化;进化策略用实数串编码,通常找到局部最优,适合连续优化
-
算法优缺点? 优点:不需要梯度信息、处理复杂问题、可能找到全局最优;缺点:编码方案选择困难、适应度函数设计困难、可能找不到全局最优、参数调优困难
-
适用场景? 遗传算法适合离散优化、组合优化、复杂的多峰值问题;进化策略适合连续优化、实值函数优化
学习路线建议
初学者:理解进化计算"物竞天择"的核心思想,掌握个体、染色体、种群、适应度函数等基本概念 | 进阶者:深入理解遗传算法的五个要素和基本流程,掌握交叉和变异操作的作用和参数设置 | 考试复习:重点掌握进化过程、遗传算法流程、交叉和变异操作、遗传算法与进化策略的区别
总结口诀
- 核心思想:物竞天择 → 选择优秀 → 交叉变异 → 多代演化 → 找到最优
- 五个要素:编码方案 → 初始种群 → 适应度函数 → 遗传操作 → 参数设置
- 进化过程:选择 → 交叉 → 变异 → 评估 → 生存选择
- 交叉操作:父母基因重组 → 组合优秀基因 → 探索新解空间(概率0.6-0.9)
- 变异操作:基因随机突变 → 防止局部最优 → 保持多样性(概率0.001-0.1)
- 算法对比:GA(位串编码,全局最优,离散优化)vs ES(实数编码,局部最优,连续优化)
- 参数设置:种群大小20-200,交叉概率0.6-0.9,变异概率0.001-0.1
一、考试范围知识框架
[!NOTE]
📝 关键点总结:考试重点围绕进化计算的基本概念、遗传算法的基本流程和操作、遗传算法与进化策略的区别,需要理解适应度函数设计和进化过程。考查重点:
- 进化计算框架:基本概念(个体、染色体、基因、种群、适应度函数)、进化过程(选择、交叉、变异、评估、生存选择)
- 遗传算法:五个要素(编码方案、初始种群、适应度函数、遗传操作、参数设置)、基本流程、算法步骤
- 遗传操作:交叉操作(单点交叉、两点交叉、均匀交叉)和变异操作(二进制编码变异、实数编码变异)的作用和参数设置
- 遗传算法与进化策略的区别:编码方式(位串编码vs实数串编码)、优化能力(全局最优vs局部最优)、适用问题(离散优化vs连续优化)
可能考查的问题:遗传算法的基本流程和操作、遗传算法与进化策略的区别、适应度函数的设计、交叉和变异操作的作用、参数设置的影响
考试范围
-
进化计算框架
-
遗传算法(Genetic Algorithm)
-
进化策略与进化规划
-
遗传算法基本流程
可能考查的问题
-
遗传算法的基本流程和操作
-
遗传算法与进化策略的区别
-
适应度函数的设计
二、进化计算框架
[!NOTE]
📝 关键点总结:进化计算是受生物进化过程启发的优化算法,通过选择、交叉、变异等操作模拟"物竞天择,适者生存"的过程,经过多代演化找到问题的最优解。核心思想:
- 生物进化启发:模拟"物竞天择,适者生存"的过程
- 基本过程:选择优秀个体 → 交叉生成子代 → 变异引入随机性 → 评估适应度 → 形成新一代种群
- 形象比喻:就像培育新品种植物,选择最好的植株,让它们杂交,偶尔发生变异,经过多代培育得到更好的品种
基本概念:
- 个体和染色体:个体是问题的潜在解,染色体是个体的编码表示(由基因组成的基因串),基因是染色体的组成部分
- 种群:由多个个体组成的集合,一代是当前的所有个体,演化是从一代到下一代的进化过程
- 适应度函数:衡量个体"好坏"的函数,适应度越高个体越优秀,通常就是目标函数(或目标函数的某种变换)
进化过程:
- 选择:根据适应度选择优秀的个体作为父代
- 交叉:父代个体交换基因,生成子代
- 变异:子代个体的某些基因发生随机变化
- 评估:计算新个体的适应度
- 生存选择:从父代和子代中选择个体形成新一代种群
决策标准:适应度越高 → 越可能被选中繁殖;经过多代演化 → 种群中的个体越来越接近最优解
2.1 什么是进化计算?
进化计算(Evolutionary Computation)是一种受生物进化过程启发的优化算法。简单来说,就是模拟"物竞天择,适者生存"的过程来寻找问题的最优解。
核心思想:就像生物进化一样,通过选择、交叉、变异等操作,让"优秀"的个体(解)更可能生存和繁殖,经过多代演化,种群中的个体越来越优秀,最终找到问题的最优解或近似最优解。
生活例子:就像培育新品种的植物:选择最好的植株,让它们杂交,偶尔发生变异,经过多代培育,得到更好的品种。
2.2 进化计算的发展历史
-
20世纪50年代:进化计算研究开始
-
20世纪60年代:Rechenberg提出进化策略(Evolution Strategies, ES),用于优化实值函数;Fogel、Owens和Walsh提出进化规划(Evolution Programming),将问题描述成有限状态机
-
20世纪70年代:Holland提出遗传算法(Genetic Algorithms, GA)
这三种方法构成了进化计算的主要框架。
2.3 基本概念
1. 个体和染色体
-
个体:问题的一个潜在解
-
染色体:个体的编码表示,由一系列基因组成的基因串
-
基因:染色体上的一个位置,表示解的一个组成部分
例子:如果我们要优化一个函数 f ( x 1 , x 2 ) f(x_1, x_2) f(x1,x2)
-
个体: ( x 1 , x 2 ) = ( 3.5 , 2.1 ) (x_1, x_2) = (3.5, 2.1) (x1,x2)=(3.5,2.1)(一个解)
-
染色体:可能是二进制编码
11010101或实数编码[3.5, 2.1] -
基因:染色体上的每一位或每个数值
2. 种群
-
种群:由多个个体组成的集合
-
一代:当前的所有个体
-
演化:从一代到下一代的进化过程
3. 适应度函数
-
适应度函数:衡量个体"好坏"的函数
-
适应度越高,个体越优秀,越可能被选中繁殖
-
通常就是我们要优化的目标函数(或目标函数的某种变换)
例子:优化函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2
-
个体 x = 5 x = 5 x=5 的适应度: f ( 5 ) = 25 f(5) = 25 f(5)=25
-
个体 x = 3 x = 3 x=3 的适应度: f ( 3 ) = 9 f(3) = 9 f(3)=9
-
如果我们要最大化 f ( x ) f(x) f(x),则 x = 5 x = 5 x=5 更优秀
2.4 进化过程
进化计算通过以下步骤完成一代的进化:
-
选择(Selection):根据适应度选择优秀的个体作为父代
-
交叉(Crossover):父代个体交换基因,生成子代
-
变异(Mutation):子代个体的某些基因发生随机变化
-
评估(Evaluation):计算新个体的适应度
-
生存选择(Survival Selection):从父代和子代中选择个体形成新一代种群
形象比喻:选择是挑选优秀的父母;交叉是父母基因重组,生出孩子;变异是孩子发生基因突变;评估是测试孩子的能力;生存选择是让优秀的孩子和父母一起进入下一代。
经过多代演化,种群中的个体越来越适应环境(越来越接近最优解)。
三、遗传算法(Genetic Algorithm)
[!NOTE]
📝 关键点总结:遗传算法是进化计算中最常用的方法,模拟生物遗传和进化过程求解优化问题,需要定义五个要素:编码方案、初始种群、适应度函数、遗传操作、参数设置。核心特点:
- 不需要梯度信息:适用于不可导函数
- 处理能力强:可以处理离散和连续优化问题
- 全局搜索能力:有概率跳出局部最优,找到全局最优
- 适用场景:复杂的、多峰值的优化问题
五个要素:
- 编码方案:如何将问题的解编码成染色体(二进制编码、实数编码、排列编码等)
- 初始种群生成:如何生成第一代个体(通常随机生成,保证多样性)
- 适应度函数:如何评估个体的好坏(通常就是目标函数或目标函数的倒数)
- 遗传操作:选择(如何选择父代)、交叉(如何生成子代)、变异(如何引入随机变化)
- 参数设置:种群大小(通常20-200)、交叉概率(通常0.6-0.9)、变异概率(通常0.001-0.1)、最大迭代次数
基本流程:
- 初始化:随机生成初始种群 P ( 0 ) P(0) P(0), t = 0 t = 0 t=0
- 评估:计算种群 P ( t ) P(t) P(t) 中每个个体的适应度
- 重复:选择 → 交叉 → 变异 → 评估 → 生存选择 → 形成新一代种群 P ( t + 1 ) P(t+1) P(t+1)
- 终止条件:达到最大迭代次数、找到满足要求的解、种群适应度不再提升
决策标准:适应度高的个体 → 更可能被选中作为父代;经过多代演化 → 种群中的个体越来越接近最优解
3.1 什么是遗传算法?
遗传算法(Genetic Algorithm, GA)是进化计算中最常用的方法,模拟生物遗传和进化的过程来求解优化问题。
核心特点:
-
不需要问题的梯度信息(适用于不可导函数)
-
可以处理离散和连续优化问题
-
有概率跳出局部最优,找到全局最优
-
适用于复杂的、多峰值的优化问题
3.2 遗传算法的五个要素
应用遗传算法解决某个具体问题,需要定义或选择五个成分:
1. 编码方案(Chromosome Encoding)
如何将问题的解编码成染色体。常见编码:二进制编码、实数编码、排列编码等。
例子:优化函数 f ( x ) f(x) f(x), x ∈ [ 0 , 10 ] x \in [0, 10] x∈[0,10]
-
二进制编码:用8位二进制表示,如
10110101表示 x = 181 / 255 × 10 ≈ 7.1 x = 181/255 \times 10 \approx 7.1 x=181/255×10≈7.1 -
实数编码:直接使用 x x x 的值,如
[7.1]
2. 初始种群生成
如何生成第一代个体。通常随机生成,保证多样性。
例子:生成10个随机个体
-
二进制编码:随机生成10个8位二进制串
-
实数编码:在 [ 0 , 10 ] [0, 10] [0,10] 范围内随机生成10个值
3. 适应度函数(Fitness Function)
如何评估个体的好坏。通常就是目标函数(最大化问题)或目标函数的倒数(最小化问题)。
例子:最大化 f ( x ) = x 2 f(x) = x^2 f(x)=x2
-
适应度函数: F ( x ) = x 2 F(x) = x^2 F(x)=x2
-
个体 x = 5 x = 5 x=5 的适应度: F ( 5 ) = 25 F(5) = 25 F(5)=25
-
个体 x = 3 x = 3 x=3 的适应度: F ( 3 ) = 9 F(3) = 9 F(3)=9
4. 遗传操作(Genetic Operators)
-
选择(Selection):如何选择父代个体
-
交叉(Crossover):如何生成子代
-
变异(Mutation):如何引入随机变化
5. 参数设置
-
种群大小(通常20-200)
-
交叉概率(通常0.6-0.9)
-
变异概率(通常0.001-0.1)
-
最大迭代次数
3.3 遗传算法的基本流程
算法步骤:
-
初始化:随机生成初始种群 P ( 0 ) P(0) P(0), t = 0 t = 0 t=0
-
评估:计算种群 P ( t ) P(t) P(t) 中每个个体的适应度
-
重复以下过程直到满足终止条件:
-
选择:根据适应度选择父代个体
-
交叉:父代个体交叉,生成子代
-
变异:子代个体发生变异
-
评估:计算子代的适应度
-
生存选择:从父代和子代中选择个体形成新一代种群 P ( t + 1 ) P(t+1) P(t+1)
-
t = t + 1 t = t + 1 t=t+1
-
终止条件:
-
达到最大迭代次数
-
找到满足要求的解
-
种群适应度不再提升
算法流程图:
开始
│
├─→ 初始化种群P(0), t=0
│
├─→ 评估种群P(t)中每个个体的适应度
│
├─→ [判断] 满足终止条件?
│ │
│ ├─→ 是 → 输出最优解 → 结束
│ │
│ └─→ 否 → 选择父代个体
│ │
│ ├─→ 交叉操作生成子代
│ │
│ ├─→ 变异操作
│ │
│ ├─→ 评估子代适应度
│ │
│ ├─→ 生存选择,形成新一代种群P(t+1)
│ │
│ └─→ t = t+1 → 返回判断
例子:优化函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2, x ∈ [ 0 , 10 ] x \in [0, 10] x∈[0,10]
假设使用二进制编码,种群大小为4:
-
初始化:随机生成4个8位二进制串
-
个体1:
01010101→ x 1 ≈ 3.3 x_1 \approx 3.3 x1≈3.3,适应度 f ( x 1 ) ≈ 10.9 f(x_1) \approx 10.9 f(x1)≈10.9 -
个体2:
10101010→ x 2 ≈ 6.7 x_2 \approx 6.7 x2≈6.7,适应度 f ( x 2 ) ≈ 44.9 f(x_2) \approx 44.9 f(x2)≈44.9 -
个体3:
11110000→ x 3 ≈ 9.4 x_3 \approx 9.4 x3≈9.4,适应度 f ( x 3 ) ≈ 88.4 f(x_3) \approx 88.4 f(x3)≈88.4 -
个体4:
00001111→ x 4 ≈ 0.6 x_4 \approx 0.6 x4≈0.6,适应度 f ( x 4 ) ≈ 0.4 f(x_4) \approx 0.4 f(x4)≈0.4
-
-
选择:选择适应度高的个体作为父代(如个体2和个体3)
-
交叉:父代交换部分基因,生成子代
-
变异:子代随机改变某些位
-
评估和选择:计算新个体的适应度,选择优秀的进入下一代
-
重复:经过多代演化,种群中的个体越来越接近最优解 x = 10 x = 10 x=10
四、遗传操作
[!NOTE]
📝 关键点总结:遗传操作包括交叉和变异,交叉操作组合父代的优秀基因探索新解空间,变异操作防止陷入局部最优保持种群多样性,需要平衡利用和探索。交叉操作:
- 核心思想:从父母染色体中选择基因来生成新的子代,就像生物的有性繁殖
- 单点交叉:随机选择一个交叉点,将父母基因链在交叉点切开,交换其后半部分
- 其他方式:两点交叉(选择两个交叉点,交换中间部分)、均匀交叉(每个基因位置随机选择来自哪个父代)
- 交叉概率:通常0.6-0.9,如果交叉不发生,子代直接复制父代
- 作用:组合父代的优秀基因、探索新的解空间、保持种群的多样性
变异操作:
- 核心思想:通过染色体上的某些基因位置产生突变,使得新产生的个体与其他个体有所不同
- 二进制编码变异:随机选择某些基因位,将该位的值取反(0变1,1变0)
- 实数编码变异:随机选择某些基因,在该基因的值附近随机扰动
- 变异概率:通常0.001-0.1,每个基因位独立地决定是否变异
- 作用:防止陷入局部最优(引入随机性,可能跳出局部最优解)、保持种群多样性(避免所有个体都相同)、探索新的解空间(发现父代和交叉无法产生的解)
交叉和变异的关系:
- 互补作用:交叉利用现有信息组合优秀基因(利用),变异引入新信息探索未知区域(探索)
- 平衡:交叉概率太大→种群过早收敛失去多样性,变异概率太大→种群随机游走失去方向性
- 实际应用建议:交叉概率0.6-0.9(主要操作),变异概率0.001-0.1(辅助操作,保持多样性)
决策标准:交叉概率适中 → 平衡利用和探索;变异概率适中 → 防止局部最优保持多样性
4.1 交叉操作(Crossover)
核心思想:从父母染色体中选择基因来生成新的子代,就像生物的有性繁殖。
单点交叉(One-Point Crossover):最简单的方式:随机选择一个交叉点,将父母基因链在交叉点切开,并交换其后半部分。
例子:
假设有两个父代个体(二进制编码):
-
父代1:
1010|1010(交叉点在中间) -
父代2:
0101|0101
交叉后生成两个子代:
-
子代1:
1010|0101(父代1的前半部分 + 父代2的后半部分) -
子代2:
0101|1010(父代2的前半部分 + 父代1的后半部分)
其他交叉方式:
-
两点交叉:选择两个交叉点,交换中间部分
-
均匀交叉:每个基因位置随机选择来自哪个父代
交叉概率:交叉操作以一定概率发生(通常0.6-0.9)。如果交叉不发生,子代直接复制父代。
作用:
-
组合父代的优秀基因
-
探索新的解空间
-
保持种群的多样性
4.2 变异操作(Mutation)
核心思想:通过染色体上的某些基因位置产生突变,使得新产生的个体与其他个体有所不同。
二进制编码的变异:随机选择某些基因位,将该位的值取反(0变1,1变0)。
例子:
假设有一个个体:10101010
随机选择第3位和第6位进行变异:
-
变异前:
10101010 -
变异后:
10001110(第3位和第6位取反)
实数编码的变异:随机选择某些基因,在该基因的值附近随机扰动。
例子:
假设有一个个体:[3.5, 2.1, 7.8]
随机选择第2个基因进行变异(在 [ 2.1 − 0.5 , 2.1 + 0.5 ] [2.1-0.5, 2.1+0.5] [2.1−0.5,2.1+0.5] 范围内随机取值):
-
变异前:
[3.5, 2.1, 7.8] -
变异后:
[3.5, 1.9, 7.8](第2个基因变为1.9)
变异概率:变异操作以一定概率发生(通常0.001-0.1)。每个基因位独立地决定是否变异。
作用:
-
防止陷入局部最优(引入随机性,可能跳出局部最优解)
-
保持种群多样性(避免所有个体都相同)
-
探索新的解空间(发现父代和交叉无法产生的解)
形象比喻:交叉是父母基因重组,生出孩子(组合现有特征);变异是孩子发生基因突变(产生新特征)。
4.3 交叉和变异的关系
互补作用:
-
交叉:利用现有信息,组合优秀基因(利用)
-
变异:引入新信息,探索未知区域(探索)
平衡:
-
交叉概率太大 → 种群过早收敛,失去多样性
-
变异概率太大 → 种群随机游走,失去方向性
需要平衡利用和探索。
实际应用建议:
-
交叉概率:0.6-0.9(主要操作)
-
变异概率:0.001-0.1(辅助操作,保持多样性)
五、遗传算法与进化策略的区别
[!NOTE]
📝 关键点总结:遗传算法使用位串编码(二进制),可能找到全局最优,适合离散优化;进化策略使用实数串编码,通常找到局部最优,适合连续优化。编码方式的区别:
- 遗传算法(GA):通常使用位串编码(二进制编码),如
01101001111001010110(一串0和1),编码简单交叉和变异操作容易实现,但需要编码和解码可能损失精度- 进化策略(ES):使用实数串编码(直接使用实数值),如
[5, 1.2, 8, 3.11, 19, 7, 2, 4.3](直接是数值),不需要编码解码精度高适合连续优化,但交叉和变异操作需要特殊设计优化能力的区别:
- 遗传算法(GA):计算速度相对较慢(需要编码解码),有可能找到全局最优解,适合离散优化、组合优化、复杂的多峰值问题,位串编码和交叉操作有助于跳出局部最优
- 进化策略(ES):计算速度很快(直接操作实数),通常只能找到可行解或局部极值解,适合连续优化、实值函数优化,主要依赖变异容易陷入局部最优
算法对比:
特性 遗传算法(GA) 进化策略(ES) 编码 位串编码(二进制) 实数串编码 速度 较慢 较快 优化能力 可能找到全局最优 通常找到局部最优 适用问题 离散、组合优化 连续优化 操作重点 交叉为主 变异为主 决策标准:离散优化问题 → 使用遗传算法;连续优化问题 → 使用进化策略
5.1 编码方式的区别
遗传算法(GA):
-
编码方式:通常使用位串编码(二进制编码)
-
例子:
01101001111001010110(一串0和1) -
优点:编码简单,交叉和变异操作容易实现
-
缺点:需要编码和解码,可能损失精度
进化策略(ES):
-
编码方式:使用实数串编码(直接使用实数值)
-
例子:
[5, 1.2, 8, 3.11, 19, 7, 2, 4.3](直接是数值) -
优点:不需要编码解码,精度高,适合连续优化
-
缺点:交叉和变异操作需要特殊设计
5.2 优化能力的区别
遗传算法(GA):
-
计算速度:相对较慢(需要编码解码)
-
优化能力:有可能找到全局最优解
-
适用问题:离散优化、组合优化、复杂的多峰值问题
-
原因:位串编码和交叉操作有助于跳出局部最优
进化策略(ES):
-
计算速度:很快(直接操作实数)
-
优化能力:通常只能找到可行解或局部极值解
-
适用问题:连续优化、实值函数优化
-
原因:主要依赖变异,容易陷入局部最优
5.3 实际应用对比
| 特性 | 遗传算法(GA) | 进化策略(ES) |
|---|---|---|
| 编码 | 位串编码(二进制) | 实数串编码 |
| 速度 | 较慢 | 较快 |
| 优化能力 | 可能找到全局最优 | 通常找到局部最优 |
| 适用问题 | 离散、组合优化 | 连续优化 |
| 操作重点 | 交叉为主 | 变异为主 |
例子:
问题1:旅行商问题(TSP)(离散优化)
-
适合:遗传算法
-
编码:城市顺序的排列编码
-
原因:问题是离散的,需要组合优化
问题2:优化函数 f ( x 1 , x 2 ) = x 1 2 + x 2 2 f(x_1, x_2) = x_1^2 + x_2^2 f(x1,x2)=x12+x22(连续优化)
-
适合:进化策略
-
编码:实数编码
[x_1, x_2] -
原因:问题是连续的,直接优化实数值
5.4 共同缺点
[!NOTE]
📝 关键点总结:遗传算法和进化策略都有编码方案选择困难、适应度函数设计困难、可能找不到全局最优解、参数调优困难等缺点,可以通过自适应参数调整、结合局部搜索算法、使用多种群并行演化等方法改进。算法缺点:
- 编码方案选择困难:针对特定问题,选择合适的编码方案需要经验,编码方式直接影响算法性能
- 适应度函数设计困难:需要将问题转化为适应度函数,适应度函数的设计影响搜索方向
- 可能找不到全局最优解:算法是随机的,不保证找到全局最优,可能陷入局部最优或收敛到次优解
- 参数调优困难:种群大小、交叉概率、变异概率等需要调优,不同问题需要不同的参数设置
改进方法:
- 使用自适应参数调整
- 结合局部搜索算法
- 使用多种群并行演化
决策标准:选择合适的编码方案和适应度函数 → 提高算法性能;使用自适应参数和多种群 → 提高找到全局最优的概率
遗传算法和进化策略都有以下缺点:
1. 编码方案选择困难
针对特定问题,选择合适的编码方案需要经验,编码方式直接影响算法性能。
2. 适应度函数设计困难
需要将问题转化为适应度函数,适应度函数的设计影响搜索方向。
3. 可能找不到全局最优解
算法是随机的,不保证找到全局最优,可能陷入局部最优或收敛到次优解。
4. 参数调优困难
种群大小、交叉概率、变异概率等需要调优,不同问题需要不同的参数设置。
改进方法:
-
使用自适应参数调整
-
结合局部搜索算法
-
使用多种群并行演化
5万+

被折叠的 条评论
为什么被折叠?



