笔记:常见的约束问题求解算法——乘子法和Frank-Wolfe算法

本文介绍了约束问题中常用的两种算法——乘子法和 Frank-Wolfe 算法,并通过matlab编程实现了以上两种算法,并对实际问题进行求解。
摘要由CSDN通过智能技术生成

前言
本文介绍了约束最优化问题中常用的两种算法,乘子法和 Frank-Wolfe 算法。
最后通过matlab编程实现了以上两种算法,并对实际问题进行求解。

  1. 符号定义
    假设约束最优化问题
    min ⁡ f ( x ) , 其 中 ( x ∈ R n ) \min f(x), 其中(x \in R^n) minf(x),(xRn)
    s . t .   g i ( x ) ≥ 0 , ( i ∈ I = { 1 , 2 , ⋯   , m 1 } ) s.t.\ g_i(x) \geq 0, (i \in I=\{1,2,\cdots, m_1\}) s.t. gi(x)0,(iI={ 1,2,,m1})
       h j ( x ) = 0 , ( j ∈ E = { m 1 + 1 , m 1 + 2 , ⋯   , m } ) ) h_j(x) = 0, (j \in E = \{m_1+1, m_1+2, \cdots, m\})) hj(x)=0,(jE={ m1+1,m1+2,,m}))
    记函数f(x)的一阶导数为 ∇ f ( x ) \nabla f(x) f(x),二阶导数为 ∇ 2 f ( x ) \nabla^2 f(x) 2f(x).

一、乘子法

  1. 简介
    乘子法(multiplier method)是一种约束极小化的算法,通过引入Lagrange函数来求解得到最优解的。

  2. 适用范围:无约束最优化问题

  3. 算法步骤
    步0:取初始点 x ( 0 ) ∈ R n x^{(0)} \in R^n x(0)Rn,初始乘子向量 λ ( 0 ) \lambda^{(0)} λ(0). 给定罚参数序列 { μ k } \{\mu_k \} { μk},精度 ϵ > 0 \epsilon>0 ϵ>0. 令k=0.
    步1:下式构造增广Lagrange函数 L μ ( x , λ ) L_{\mu} (x, \lambda) Lμ(x,λ).
    L μ ( x , λ ) = f ( x ) + 1 2 μ − 1 ∑ i ∈ I [ m i n 2 { μ g i ( x ) − λ i , 0 } − λ i 2 ] − ∑ j ∈ E λ i h i ( x ) + 1 2 μ ∑ j ∈ E h i 2 ( x ) L_{\mu}(x, \lambda) = f(x) + \frac{1}{2}\mu^{-1}\sum_{i \in I}[min^2 \{\mu g_i(x)-\lambda_i, 0\}-\lambda_i^2] - \sum_{j \in E}\lambda_ih_i(x) + \frac{1}{2}\mu\sum_{j \in E} h_i^2(x)

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Frank-Wolfe算法和ALM算法是两种常用的优化算法。 1. Frank-Wolfe算法(也称为条件梯度算法)是一种用于凸优化问题的迭代算法。它的基本思想是在每次迭代中,通过求解一个线性子问题来找到当前迭代点处的最优解。具体步骤如下: - 初始化一个可行解。 - 计算当前迭代点处的梯度。 - 求解一个线性子问题,找到一个方向,使得在这个方向上的线性组合与当前迭代点处的梯度最接近。 - 更新迭代点,将其移动到线性子问题的最优解处。 - 重复上述步骤,直到满足停止准则。 这个算法的优点是每次迭代只需要求解一个线性子问题,因此在每次迭代中的计算开销相对较小。但是,它可能需要较多的迭代次数才能收敛到最优解。 2. ALM算法(Augmented Lagrangian Method,增广拉格朗日法)是一种用于求解带有约束的优化问题算法。它通过将原始问题转化为一系列无约束的子问题求解。具体步骤如下: - 初始化一个可行解。 - 构造增广拉格朗日函数,将原始问题转化为一个无约束的优化问题。 - 求解约束的优化问题,得到一个新的可行解。 - 更新拉格朗日乘子。 - 重复上述步骤,直到满足停止准则。 这个算法的优点是可以处理带有约束的优化问题,并且在每次迭代中都可以保证目标函数值的下降。但是,它可能需要较多的计算资源和时间来求解每个子问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值