非线性规划中的自适应协方差矩阵调整演化策略(CMA-ES)基础题
字数 1332 2025-10-29 21:04:19

非线性规划中的自适应协方差矩阵调整演化策略(CMA-ES)基础题

题目描述
考虑一个简单的二维非线性优化问题:最小化函数 f(x₁, x₂) = (x₁ - 3)⁴ + 2(x₂ + 1)²,其中 x₁, x₂ ∈ ℝ。请使用自适应协方差矩阵调整演化策略(CMA-ES)求解该问题,详细解释CMA-ES的核心思想和求解步骤。

解题过程

CMA-ES是一种针对复杂非线性优化问题的随机搜索算法,特别适合处理非凸、多峰、噪声敏感的问题。其核心思想是通过自适应调整多元正态分布的协方差矩阵来引导搜索方向。

第一步:算法初始化

  1. 设置初始解(均值向量):假设初始点 m⁰ = [0, 0]ᵀ
  2. 设置初始步长(标准差):σ⁰ = 1.0
  3. 设置初始协方差矩阵:C⁰ = I(单位矩阵)
  4. 设置种群大小:λ = 10(每代生成10个子代)
  5. 设置权重参数:wᵢ = ln(λ+0.5) - ln(i),i=1,...,μ(用于重组)

第二步:生成新种群(采样)
在第g代时:

  1. 从当前多元正态分布N(mᵍ, (σᵍ)²Cᵍ)中生成λ个候选解:
    xₖᵍ = mᵍ + σᵍ × yₖᵍ,其中 yₖᵍ ~ N(0, Cᵍ)
  2. 具体计算过程:
    • 对协方差矩阵Cᵍ进行Cholesky分解:Cᵍ = Bᵍ(Bᵍ)ᵀ
    • 生成标准正态随机向量:zₖ ~ N(0, I)
    • 计算:yₖᵍ = Bᵍzₖ
    • 得到候选解:xₖᵍ = mᵍ + σᵍyₖᵍ

第三步:评估与选择

  1. 计算所有候选解的目标函数值:f(xₖᵍ)
  2. 按函数值从小到大排序:f(x₁:λᵍ) ≤ f(x₂:λᵍ) ≤ ... ≤ f(xλ:λᵍ)
  3. 选择前μ个最优解(本例设μ=5)进行重组

第四步:更新分布参数

  1. 更新均值向量
    mᵍ⁺¹ = ∑ᵢ₌₁ᵐ wᵢxᵢ:λᵍ
    权重wᵢ确保更好的解有更大影响力

  2. 更新演化路径(记录搜索方向):

    • 各向同性路径:p_σᵍ⁺¹ = (1-cσ)p_σᵍ + √[cσ(2-cσ)μ_eff] × (mᵍ⁺¹ - mᵍ)/σᵍ
    • 各向异性路径:p_cᵍ⁺¹ = (1-cc)p_cᵍ + √[cc(2-cc)μ_eff] × (mᵍ⁺¹ - mᵍ)/σᵍ
      其中cσ, cc为学习率,μ_eff为有效权重和
  3. 更新协方差矩阵
    Cᵍ⁺¹ = (1-c₁-cμ)Cᵍ + c₁(p_cᵍ⁺¹(p_cᵍ⁺¹)ᵀ) + cμ∑ᵢ₌₁ᵐ wᵢyᵢ:λᵍ(yᵢ:λᵍ)ᵀ
    这使算法能学习目标函数的局部形状

  4. 更新步长
    通过比较演化路径长度与随机路径期望长度来调整:
    σᵍ⁺¹ = σᵍ × exp((cσ/dσ)(||p_σᵍ⁺¹||/E||N(0,I)|| - 1))

第五步:迭代与收敛
重复第二步到第四步,直到满足终止条件(如函数值变化小于10⁻⁶或达到最大迭代次数)。

算法特点

  • 自适应学习目标函数的局部几何结构
  • 无需手动调整步长参数
  • 对旋转、缩放等变换具有不变性
  • 特别适合处理非 separable 问题

对于本例f(x₁, x₂) = (x₁ - 3)⁴ + 2(x₂ + 1)²,CMA-ES能有效找到全局最优解[3, -1]ᵀ,尽管目标函数在x₁方向是高度非线性的。

非线性规划中的自适应协方差矩阵调整演化策略(CMA-ES)基础题 题目描述 考虑一个简单的二维非线性优化问题:最小化函数 f(x₁, x₂) = (x₁ - 3)⁴ + 2(x₂ + 1)²,其中 x₁, x₂ ∈ ℝ。请使用自适应协方差矩阵调整演化策略(CMA-ES)求解该问题,详细解释CMA-ES的核心思想和求解步骤。 解题过程 CMA-ES是一种针对复杂非线性优化问题的随机搜索算法,特别适合处理非凸、多峰、噪声敏感的问题。其核心思想是通过自适应调整多元正态分布的协方差矩阵来引导搜索方向。 第一步:算法初始化 设置初始解(均值向量):假设初始点 m⁰ = [ 0, 0 ]ᵀ 设置初始步长(标准差):σ⁰ = 1.0 设置初始协方差矩阵:C⁰ = I(单位矩阵) 设置种群大小:λ = 10(每代生成10个子代) 设置权重参数:wᵢ = ln(λ+0.5) - ln(i),i=1,...,μ(用于重组) 第二步:生成新种群(采样) 在第g代时: 从当前多元正态分布N(mᵍ, (σᵍ)²Cᵍ)中生成λ个候选解: xₖᵍ = mᵍ + σᵍ × yₖᵍ,其中 yₖᵍ ~ N(0, Cᵍ) 具体计算过程: 对协方差矩阵Cᵍ进行Cholesky分解:Cᵍ = Bᵍ(Bᵍ)ᵀ 生成标准正态随机向量:zₖ ~ N(0, I) 计算:yₖᵍ = Bᵍzₖ 得到候选解:xₖᵍ = mᵍ + σᵍyₖᵍ 第三步:评估与选择 计算所有候选解的目标函数值:f(xₖᵍ) 按函数值从小到大排序:f(x₁:λᵍ) ≤ f(x₂:λᵍ) ≤ ... ≤ f(xλ:λᵍ) 选择前μ个最优解(本例设μ=5)进行重组 第四步:更新分布参数 更新均值向量 : mᵍ⁺¹ = ∑ᵢ₌₁ᵐ wᵢxᵢ:λᵍ 权重wᵢ确保更好的解有更大影响力 更新演化路径 (记录搜索方向): 各向同性路径:p_ σᵍ⁺¹ = (1-cσ)p_ σᵍ + √[ cσ(2-cσ)μ_ eff ] × (mᵍ⁺¹ - mᵍ)/σᵍ 各向异性路径:p_ cᵍ⁺¹ = (1-cc)p_ cᵍ + √[ cc(2-cc)μ_ eff ] × (mᵍ⁺¹ - mᵍ)/σᵍ 其中cσ, cc为学习率,μ_ eff为有效权重和 更新协方差矩阵 : Cᵍ⁺¹ = (1-c₁-cμ)Cᵍ + c₁(p_ cᵍ⁺¹(p_ cᵍ⁺¹)ᵀ) + cμ∑ᵢ₌₁ᵐ wᵢyᵢ:λᵍ(yᵢ:λᵍ)ᵀ 这使算法能学习目标函数的局部形状 更新步长 : 通过比较演化路径长度与随机路径期望长度来调整: σᵍ⁺¹ = σᵍ × exp((cσ/dσ)(||p_ σᵍ⁺¹||/E||N(0,I)|| - 1)) 第五步:迭代与收敛 重复第二步到第四步,直到满足终止条件(如函数值变化小于10⁻⁶或达到最大迭代次数)。 算法特点 自适应学习目标函数的局部几何结构 无需手动调整步长参数 对旋转、缩放等变换具有不变性 特别适合处理非 separable 问题 对于本例f(x₁, x₂) = (x₁ - 3)⁴ + 2(x₂ + 1)²,CMA-ES能有效找到全局最优解[ 3, -1 ]ᵀ,尽管目标函数在x₁方向是高度非线性的。