- 在线时间
- 479 小时
- 最后登录
- 2026-4-13
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7789 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2922
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
起作用集法(Active Set Method)是一种用于求解约束优化问题的有效算法,特别适用于二次规划问题。以下是使用起作用集法解决二次规划问题的基本步骤和概念。
& A: n$ N* s( z* W5 l. Z B& I3 w% T- \2 A
### 二次规划问题的形式
6 H* Y x2 W7 v" w8 F7 Y4 N1 a' V) E6 |) k5 ^ ^1 ]
二次规划问题通常可以表示为:
; J7 k& O) d4 t, X+ N: ^4 ]; s$ ?" m) n3 i) q
\[
_& K1 h1 |+ Y r4 [* j% |9 }\text{Minimize } f(x) = \frac{1}{2} x^T Q x + c^T x8 x' b7 n( w9 g. t
\]
2 f/ `: o* F: m s2 d+ L
. S4 @) s& j& t1 U# a约束条件为:
^$ y* G( v5 E: o
_4 C& M" Y# r; s+ A\[! l' N; ^% Y: K, f7 ~: G# J/ i1 N! C7 c
Ax \leq b
( I! X( m* \, a3 O+ |0 P8 E+ V\]! T% ~0 ^9 h* S# K
- d% i# e: B4 j0 J+ A. ~
\[
5 J& H/ h% W7 m, d2 P0 Z3 Z! Yx \geq 0
1 |: \/ Q, j0 P\]
' O% N: n& I! B
. w' K4 I% x+ ?. l8 y其中,\(Q\) 是一个对称正定矩阵,\(c\) 是一个向量,\(A\) 是约束条件的系数矩阵,\(b\) 是约束条件的右侧向量。: k% |* \' O1 b
4 o: G. Y. G( C m+ x+ E& v### 起作用集法的步骤# ^3 v' P; N8 {) r. Y: {5 |0 m
% |. `, Z7 D1 s" y* s+ I3 ?
1. **初始化**: y5 H+ P( L& D, B
- 选择一个初始可行解 \(x_0\)。* Z' o: X6 x1 H2 T* }. s
- 确定初始的起作用集(即当前活动的约束条件)。
# A& O/ l: f, h
2 b4 g# X* y6 x" A* }0 T2. **构造拉格朗日函数**:& P- W; M% Q, V5 @8 Z; ~/ c1 M
- 对于当前的起作用集,构造拉格朗日函数:0 Y# t/ H7 S+ H" ]5 C! W) J+ u3 S
/ m8 O4 n9 s# B8 L7 g5 t+ C$ z( e
\[
& S* [- x9 B2 z, k d L(x, \lambda) = \frac{1}{2} x^T Q x + c^T x + \lambda^T (b - Ax)
3 o. k" S2 D6 c+ e/ B \]: f/ C. @3 ^0 s9 |3 q5 ]
( C ]% P: P n7 z! e# {0 v
3. **求解一阶条件**:3 e+ [8 b) S( N c
- 对 \(L\) 关于 \(x\) 和 \(\lambda\) 分别求偏导数,并令其等于零,得到一个方程组。9 h% R: @* j0 y( L$ r
; {" \2 n; h# q" L1 y; n( i4. **更新解**:( t+ ~5 V6 h( n+ C5 h8 c& w: }/ ~
- 通过求解上述方程组,得到新的解 \(x\)。
- |3 |5 u w0 t0 [8 { h- { - 检查新的解是否满足所有约束条件。) u9 @. m. L. \$ ]. K# R3 f: Z
9 c! @+ g# q' @8 T$ d- L
5. **更新起作用集**:/ B( H, m u# g2 U8 B
- 如果新的解违反了某些约束条件,则将这些约束条件加入起作用集。
+ r: U7 i' x! r - 如果新的解满足所有约束条件,则检查是否可以退出当前的起作用集。! H& h( L: N U
2 [# Q+ C( K: M r2 q; q( c6. **迭代**:
. |5 T) |- q2 C: ?2 J - 重复步骤 2 到 5,直到满足收敛条件(例如,目标函数值的变化小于某个阈值)。
7 s5 V0 p& A. r) `3 B. R1 h- h+ X9 I, \# G5 j! i! m+ F2 ?
7. **确定最优解**:4 k* y% k+ v) M& G' E5 c
- 当达到收敛条件时,当前解即为最优解。
, |8 v2 L: o1 X, m; K$ H" U/ F! l1 u: f4 I
### 示例4 S* G/ D- W% X" t) v& z/ u
% {7 k( U, J, `$ d2 S: X) C
假设我们有一个简单的二次规划问题:, I: {4 H- ^0 \* U# Q1 s \
0 r4 o7 \% ?* M3 A2 ]2 Q\[
0 j( V+ S3 l! A( `! [1 |. M2 \\text{Minimize } f(x) = x_1^2 + x_2^2
- l6 M8 ~9 x( E\]1 w1 a1 i v; l" i
- L4 y5 F2 j" {. ?, S0 z- b
约束条件为:
5 J! L$ [! B9 j6 C& w+ A0 T' h: e* d3 r, n& K
\[
2 U( ^4 j/ e- kx_1 + x_2 \leq 1
4 y. V) ]7 U S* E3 S5 \+ U\]
+ j8 \4 G3 z4 l1 j0 M# ] h* v1 e6 J) K
\[! i o9 Y0 }( {8 x$ P4 L
x_1, x_2 \geq 0
) f- z- v C( @( L, [, c4 n% p\]* X, O! v4 j4 p2 r/ w4 N& }5 u: w
9 L8 }; Q0 h i
**步骤**:
4 k; d6 x/ q2 w! b; O5 j$ ?2 B+ a4 |; u e' e% b R# O
1. **初始化**:
" T; L/ V: z( _ - 选择初始解 \(x_0 = (0, 0)\),起作用集为空。
8 f7 V: x- {- G1 v. [2 b
, m% h: @ R% R& B0 d2. **构造拉格朗日函数**:
, E$ s( L, G8 e. y- M - 对于当前的起作用集,构造拉格朗日函数。
V; n3 o1 c% z; ^3 [8 C$ b. Z
6 o+ E7 |1 M3 v5 V* H3. **求解一阶条件**:
: x6 ^" T. Z/ [( K* Y - 计算偏导数并求解。8 ~0 C# V; X2 Z2 j7 i' K6 h; ~5 t- ?
" z% j) B* g, `0 g
4. **更新解**:: F$ A9 p: Z: K+ T' R2 `
- 得到新的解 \(x\),检查是否满足约束。$ s# r& Z( R1 u3 c7 h/ D/ r
; Q$ ]/ D' e2 P& N: G
5. **更新起作用集**:0 R A3 B8 M( {9 N4 w" g f5 A
- 如果 \(x_1 + x_2 > 1\),则将约束 \(x_1 + x_2 \leq 1\) 加入起作用集。
5 E* B* }) S$ w. @, l
" }. p* Q0 {$ f' Y$ n# R# h6. **迭代**: b1 s8 D% { {+ ]7 h, Y
- 重复上述步骤,直到收敛。
% c4 e& D9 _& U: y" {
) w2 C+ F! @0 z0 u1 G( g8 S7. **确定最优解**:7 u- [2 Q! b9 z |
- 最终得到的解即为最优解。4 l6 A4 ?5 k% d" @% `6 F4 i
) X. [6 p7 k4 F$ u
### 总结
( E8 j$ u2 R* t: k: R' U/ D% {
- U6 y* X4 y3 \4 `( ^起作用集法是一种有效的求解二次规划问题的算法,通过动态调整活动约束集来逐步逼近最优解。它适用于处理具有线性约束的优化问题,尤其在约束条件较多的情况下表现良好。
% b ~ I. p" n3 {2 j# G, l2 ^/ u, R- b0 g' L3 Z
4 k* h ]$ {4 k# y
/ B: S/ U. J: `" ]
|
zan
|