非线性规划中的Frank-Wolfe条件梯度法基础题
字数 1853 2025-11-11 20:40:33

非线性规划中的Frank-Wolfe条件梯度法基础题

题目描述
考虑有约束非线性规划问题:
minimize f(x) = (x₁ - 3)² + (x₂ - 4)²
subject to x₁ + x₂ ≤ 5, x₁ ≥ 0, x₂ ≥ 0
其中目标函数f(x)是凸二次函数,约束为线性不等式。要求使用Frank-Wolfe条件梯度法求解该问题,从初始点x⁽⁰⁾ = (0, 0)开始,进行两次迭代,并分析每次迭代的搜索方向、步长选择和收敛性。

解题过程
Frank-Wolfe法适用于线性约束的凸优化问题。其核心思想是:在每次迭代中,将目标函数在当前点处线性化,通过求解线性规划子问题确定搜索方向,再沿该方向进行一维搜索。

1. 算法原理回顾

  • 步骤1:在当前点x⁽ᵏ⁾计算梯度∇f(x⁽ᵏ⁾)
  • 步骤2:求解线性规划子问题得到可行点s⁽ᵏ⁾:
    minimize ⟨∇f(x⁽ᵏ⁾), s⟩
    subject to s ∈ 可行域
  • 步骤3:计算搜索方向d⁽ᵏ⁾ = s⁽ᵏ⁾ - x⁽ᵏ⁾
  • 步骤4:通过一维搜索确定步长αₖ ∈ [0,1]:
    minimize f(x⁽ᵏ⁾ + αd⁽ᵏ⁾)
  • 步骤5:更新迭代点x⁽ᵏ⁺¹⁾ = x⁽ᵏ⁾ + αₖd⁽ᵏ⁾

2. 第一次迭代(k=0)

  • 初始点:x⁽⁰⁾ = (0, 0)
  • 梯度计算
    ∇f(x) = [2(x₁ - 3), 2(x₂ - 4)]
    ∇f(x⁽⁰⁾) = [-6, -8]
  • 线性规划子问题
    目标:minimize -6s₁ - 8s₂
    约束:s₁ + s₂ ≤ 5, s₁ ≥ 0, s₂ ≥ 0
    分析梯度方向:由于梯度分量为负,目标函数值在s₁和s₂增大时减小。但需满足s₁ + s₂ ≤ 5。通过枚举顶点:
    • 顶点(0,0):目标值=0
    • 顶点(5,0):目标值=-30
    • 顶点(0,5):目标值=-40
      最优解s⁽⁰⁾ = (0, 5)(目标值最小)
  • 搜索方向:d⁽⁰⁾ = s⁽⁰⁾ - x⁽⁰⁾ = (0, 5) - (0, 0) = (0, 5)
  • 一维搜索
    令φ(α) = f(x⁽⁰⁾ + αd⁽⁰⁾) = f(0, 5α)
    = (0 - 3)² + (5α - 4)² = 9 + (5α - 4)²
    求导φ'(α) = 2(5α - 4)×5 = 50α - 40
    令导数为0得α₀ = 0.8(在[0,1]范围内)
  • 更新点:x⁽¹⁾ = (0, 0) + 0.8×(0, 5) = (0, 4)
    此时目标函数值f(x⁽¹⁾) = (0-3)² + (4-4)² = 9

3. 第二次迭代(k=1)

  • 当前点:x⁽¹⁾ = (0, 4)
  • 梯度计算:∇f(x⁽¹⁾) = [2(0-3), 2(4-4)] = [-6, 0]
  • 线性规划子问题
    目标:minimize -6s₁ + 0·s₂
    约束:s₁ + s₂ ≤ 5, s₁ ≥ 0, s₂ ≥ 0
    分析:目标函数仅与s₁有关,且系数为负。为使目标最小化,应取s₁尽可能大。
    考虑约束s₁ + s₂ ≤ 5,最大s₁=5(此时s₂=0)
    最优解s⁽¹⁾ = (5, 0)
  • 搜索方向:d⁽¹⁾ = (5, 0) - (0, 4) = (5, -4)
  • 一维搜索
    令φ(α) = f(x⁽¹⁾ + αd⁽¹⁾) = f(5α, 4 - 4α)
    = (5α - 3)² + (4 - 4α - 4)² = (5α - 3)² + (-4α)²
    = 25α² - 30α + 9 + 16α² = 41α² - 30α + 9
    求导φ'(α) = 82α - 30,令其为0得α₁ = 30/82 ≈ 0.3659
  • 更新点:x⁽²⁾ = (0, 4) + 0.3659×(5, -4) ≈ (1.829, 2.536)
    目标函数值f(x⁽²⁾) ≈ (1.829-3)² + (2.536-4)² ≈ 4.92

4. 收敛性分析

  • 问题的最优解为x* = (3, 2)(无约束最优解(3,4)投影到可行域),f(x*) = 0。
  • 经过两次迭代,点x⁽²⁾从(0,0)移动到(1.829,2.536),目标值从25降至4.92,说明算法向最优解靠近。
  • Frank-Wolfe法的收敛速度通常为线性,因为搜索方向可能趋近正交于梯度("锯齿现象")。本例中第二次迭代的方向(5,-4)与梯度(-6,0)不完全对齐,体现了这一特性。
非线性规划中的Frank-Wolfe条件梯度法基础题 题目描述 考虑有约束非线性规划问题: minimize f(x) = (x₁ - 3)² + (x₂ - 4)² subject to x₁ + x₂ ≤ 5, x₁ ≥ 0, x₂ ≥ 0 其中目标函数f(x)是凸二次函数,约束为线性不等式。要求使用Frank-Wolfe条件梯度法求解该问题,从初始点x⁽⁰⁾ = (0, 0)开始,进行两次迭代,并分析每次迭代的搜索方向、步长选择和收敛性。 解题过程 Frank-Wolfe法适用于线性约束的凸优化问题。其核心思想是:在每次迭代中,将目标函数在当前点处线性化,通过求解线性规划子问题确定搜索方向,再沿该方向进行一维搜索。 1. 算法原理回顾 步骤1 :在当前点x⁽ᵏ⁾计算梯度∇f(x⁽ᵏ⁾) 步骤2 :求解线性规划子问题得到可行点s⁽ᵏ⁾: minimize ⟨∇f(x⁽ᵏ⁾), s⟩ subject to s ∈ 可行域 步骤3 :计算搜索方向d⁽ᵏ⁾ = s⁽ᵏ⁾ - x⁽ᵏ⁾ 步骤4 :通过一维搜索确定步长αₖ ∈ [ 0,1 ]: minimize f(x⁽ᵏ⁾ + αd⁽ᵏ⁾) 步骤5 :更新迭代点x⁽ᵏ⁺¹⁾ = x⁽ᵏ⁾ + αₖd⁽ᵏ⁾ 2. 第一次迭代(k=0) 初始点 :x⁽⁰⁾ = (0, 0) 梯度计算 : ∇f(x) = [ 2(x₁ - 3), 2(x₂ - 4) ] ∇f(x⁽⁰⁾) = [ -6, -8 ] 线性规划子问题 : 目标:minimize -6s₁ - 8s₂ 约束:s₁ + s₂ ≤ 5, s₁ ≥ 0, s₂ ≥ 0 分析梯度方向:由于梯度分量为负,目标函数值在s₁和s₂增大时减小。但需满足s₁ + s₂ ≤ 5。通过枚举顶点: 顶点(0,0):目标值=0 顶点(5,0):目标值=-30 顶点(0,5):目标值=-40 最优解s⁽⁰⁾ = (0, 5)(目标值最小) 搜索方向 :d⁽⁰⁾ = s⁽⁰⁾ - x⁽⁰⁾ = (0, 5) - (0, 0) = (0, 5) 一维搜索 : 令φ(α) = f(x⁽⁰⁾ + αd⁽⁰⁾) = f(0, 5α) = (0 - 3)² + (5α - 4)² = 9 + (5α - 4)² 求导φ'(α) = 2(5α - 4)×5 = 50α - 40 令导数为0得α₀ = 0.8(在[ 0,1 ]范围内) 更新点 :x⁽¹⁾ = (0, 0) + 0.8×(0, 5) = (0, 4) 此时目标函数值f(x⁽¹⁾) = (0-3)² + (4-4)² = 9 3. 第二次迭代(k=1) 当前点 :x⁽¹⁾ = (0, 4) 梯度计算 :∇f(x⁽¹⁾) = [ 2(0-3), 2(4-4)] = [ -6, 0 ] 线性规划子问题 : 目标:minimize -6s₁ + 0·s₂ 约束:s₁ + s₂ ≤ 5, s₁ ≥ 0, s₂ ≥ 0 分析:目标函数仅与s₁有关,且系数为负。为使目标最小化,应取s₁尽可能大。 考虑约束s₁ + s₂ ≤ 5,最大s₁=5(此时s₂=0) 最优解s⁽¹⁾ = (5, 0) 搜索方向 :d⁽¹⁾ = (5, 0) - (0, 4) = (5, -4) 一维搜索 : 令φ(α) = f(x⁽¹⁾ + αd⁽¹⁾) = f(5α, 4 - 4α) = (5α - 3)² + (4 - 4α - 4)² = (5α - 3)² + (-4α)² = 25α² - 30α + 9 + 16α² = 41α² - 30α + 9 求导φ'(α) = 82α - 30,令其为0得α₁ = 30/82 ≈ 0.3659 更新点 :x⁽²⁾ = (0, 4) + 0.3659×(5, -4) ≈ (1.829, 2.536) 目标函数值f(x⁽²⁾) ≈ (1.829-3)² + (2.536-4)² ≈ 4.92 4. 收敛性分析 问题的最优解为x* = (3, 2)(无约束最优解(3,4)投影到可行域),f(x* ) = 0。 经过两次迭代,点x⁽²⁾从(0,0)移动到(1.829,2.536),目标值从25降至4.92,说明算法向最优解靠近。 Frank-Wolfe法的收敛速度通常为线性,因为搜索方向可能趋近正交于梯度("锯齿现象")。本例中第二次迭代的方向(5,-4)与梯度(-6,0)不完全对齐,体现了这一特性。