前言
本文介绍了约束最优化问题中常用的两种算法,乘子法和 Frank-Wolfe 算法。
最后通过matlab编程实现了以上两种算法,并对实际问题进行求解。
- 符号定义
假设约束最优化问题
min f ( x ) , 其 中 ( x ∈ R n ) \min f(x), 其中(x \in R^n) minf(x),其中(x∈Rn),
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,(i∈I={ 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,(j∈E={ m1+1,m1+2,⋯,m}))
记函数f(x)的一阶导数为 ∇ f ( x ) \nabla f(x) ∇f(x),二阶导数为 ∇ 2 f ( x ) \nabla^2 f(x) ∇2f(x).
一、乘子法
-
简介
乘子法(multiplier method)是一种约束极小化的算法,通过引入Lagrange函数来求解得到最优解的。 -
适用范围:无约束最优化问题
-
算法步骤
步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)