文章目录
Optimization Algorithms 优化算法
PSO 粒子群算法 Partical Swarm Optimization
参考:
要点
速度 \[ V_{i+1} = w V_i + C_1 (P_{i,\text{best}} - X_i) + C_2 (G_{i,\text{best}} - X_i) \]
注释:
- Pi –> 粒子
- Gi –> 全局
- 权重: w, C1, C2
- i: 第 i 次迭代
- i+1: i+1 次迭代
- 粒子历史最优: Pi,best
- 全局最优:Gi,best
位置 \[ X_{i+1} = X_i + V_{i+1} \] 注释:
- 这里省略了时间 t = 1
适应度函数
- 类似贝叶斯优化中的黑盒函数 –> cost function
- 最大化需要变成 Fitness = - 目标函数 (取负值)
种群规模(粒子数量)
- 20~100 or 1000
- 迭代次数 = 100~ 1000, or 4000(复杂问题)
Vs 贝叶斯
优化速度,没有贝叶斯快速,更容易被困在局部最优,后期优化速度下降
CMA-ES(协方差矩阵自适应进化策略)
ref:
特点
- 出色的全局搜索能力:作为进化算法,它善于逃离局部最优解,找到全局最优解
- 适合高维 > 贝叶斯优化
- 需要样本量 > 贝叶斯优化
RUN 算法
ref:
龙格-库塔优化器(RUN)是一种基于 数学原理 的无隐喻元启发式优化算法
不像 ACOR 连续域蚁群优化算法、遗传优化算法等是仿生学算法,RUN 算法时完全基于数学逻辑设计出来的。类似贝叶斯优化也包含了 Explore 探索 Vs Exploitation 开发机制
ACOR 优化算法
ref:
ACOR(Ant Colony Optimization for Continuous Domains,连续域蚁群优化) 是由 Krzysztof Socha 和 Marco Dorigo 于 2008 年提出的一种元启发式优化算法。它的核心贡献是将最初为离散组合优化问题设计的蚁群优化算法(ACO),成功且自然地扩展到了连续域优化问题中
维护一个优质解的档案,根据解的质量分配权重,通过高斯核等概率模型生成新解
遗传优化算法 Genetic Algorithm
ref:
概念
- 染色体(个体)
- 编码
- 种群
- 适应度(cost function)
选择
轮盘赌选择
- 随机选择
n1个个体保留
- 随机选择
锦标赛
- 随机选择
n2个个体 - 然后通过适应度选出最优的保留,即 cost function, 黑盒函数选择
- 随机选择
精英选择
- 保留当前迭代最优解(个体),避免最优解丢失,数量可以是
n3, 比如 1~2
- 保留当前迭代最优解(个体),避免最优解丢失,数量可以是
交叉(基因重组) –> 对应开采(Exploitation)
- 仿造生物,染色体交叉,基因交换
特点:本身不创建基因(x),比如:
假设参数有X 有三个维度 x0, x1, x2 现在从种群中选择2个优秀个体 个体A: X_A [12, 0.5, 100] 个体 B: X_B [15, 0.8, 80] 交叉: 生成新个体 C: X_C [12, 0.8, 80] 这个过程中没有创建新的 x0, x1, x2, 他们是通过“交叉”, 从 A, B 两个个体中继承的基因
变异 –> 对应探索(Explore)
- 随机创新
- 低概率(1%~5%)对新生个体引入随机扰动,即引入基因变异、新的基因
- 保持种群多样性
- 避免陷入局部最优
整体流程
1. 初始化 2. 选择最优个体 n3 个,直接进入下一轮(不做变异,交叉) 3. 选择 -> 交叉 -> 变异 --> 个体 --> 下一轮 - 选择方法/策略: 锦标赛、轮盘赌等 - 选择的个体 n1 --> 先交叉 --> 2*n1 个个体 --> 变异 - 这是一个循环生成过程,指导生成了足够数量(种群大小)的新个体,然后停止生成 4. 执行,获取每一个点的 fitness (适应度)
一个超参数设置案例
# 目标:定义待优化的问题、解的编码方式以及算法运行的所有超参数
问题定义:
目标函数: fitness_func(individual) -> float # 评估个体优劣,返回值越大越好
编码方式: 例如,二进制字符串、实数向量、排列等
约束条件: 变量的取值范围等
超参数配置:
种群大小: population_size = 50-200
最大迭代代数: max_generations = 100-1000
交叉概率: crossover_probability = 0.7-0.9
变异概率: mutation_probability = 0.01-0.1
选择策略: 如锦标赛选择(tournament)、轮盘赌(roulette)等
精英数量: elitism_count = 1-2 # 每代直接保留的最优个体数
文章作者
上次更新 2026-07-19 (fdfd56f)