- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
起作用集法(Active Set Method)是一种用于求解约束优化问题的有效算法,特别适用于二次规划问题。以下是使用起作用集法解决二次规划问题的基本步骤和概念。
; {6 K5 q! k f$ V( _3 r: e
: y) D' \$ L$ x### 二次规划问题的形式
! }- G+ Q" G0 N/ F! T9 ~7 y; _1 K/ L% w& f4 |! ?5 z7 t
二次规划问题通常可以表示为:# U! N, K1 J/ T
* r8 ]( y& {' k. I- q) T\[6 Y B% D4 v( m5 i( O* W
\text{Minimize } f(x) = \frac{1}{2} x^T Q x + c^T x) |+ U6 ?6 h) w( |
\]
" ^2 J6 F9 U. `$ Y5 C4 J; O
, ?8 w) \0 a4 @( v" j6 d约束条件为:4 W4 K: d g0 A( `% f4 S
9 ]7 ]/ P6 ?" U; p* T& f. m1 K\[
( ]3 Z4 P4 e* f) T! m$ FAx \leq b/ A# X" f {3 S: S% P( w0 F! V
\]+ T) A& B* Y: G6 ^" g
/ r/ Q+ o- W3 N- G% G( g) x\[: }6 B; E+ `! ]; j
x \geq 04 Y2 J- i O; q2 M, n( h3 ^
\]4 K6 z, V8 y, i1 N9 i( g4 D
4 i5 u% l* K, a u: Y0 H4 B其中,\(Q\) 是一个对称正定矩阵,\(c\) 是一个向量,\(A\) 是约束条件的系数矩阵,\(b\) 是约束条件的右侧向量。
0 N' Y1 p9 ]- a4 N! l- t" O1 F0 l3 _% H
### 起作用集法的步骤6 k7 j# |0 k, B8 y2 h7 q- k
6 G( v! F: R; s6 B1. **初始化**:( c/ N6 y, e, R% `+ Q8 b
- 选择一个初始可行解 \(x_0\)。
" Q$ e2 L1 O: @9 o2 A - 确定初始的起作用集(即当前活动的约束条件)。+ D: \4 v3 T: z0 ^- }* m% Z- E
. q& s$ w, M2 r* _3 s. n7 O& [2. **构造拉格朗日函数**:; F- {) z; T; L# }: W0 C3 d) s
- 对于当前的起作用集,构造拉格朗日函数:2 p2 M" r6 c5 d
( _+ c9 T$ W# [' O \[- C2 i7 E0 d- a- z; _& N0 M
L(x, \lambda) = \frac{1}{2} x^T Q x + c^T x + \lambda^T (b - Ax)
. Z8 w, o0 w8 k' O9 D* { \]
. B, a; O8 U( a. n4 x- s' v- X. F0 o1 w5 d3 w6 [/ N/ i+ j
3. **求解一阶条件**:
% G& q( \1 A% @* y - 对 \(L\) 关于 \(x\) 和 \(\lambda\) 分别求偏导数,并令其等于零,得到一个方程组。% L( V/ T8 B; B
. T+ m( K/ h5 a& j9 z; N8 n, f4. **更新解**: Z' B. _( L7 _
- 通过求解上述方程组,得到新的解 \(x\)。
) x9 S/ {7 R! N" ], W X - 检查新的解是否满足所有约束条件。
# z, g" b9 n6 d ~# V* y" _* j$ g! X1 M* }2 j' C F
5. **更新起作用集**:
* m; J) u) e# Q3 |; I0 j* e - 如果新的解违反了某些约束条件,则将这些约束条件加入起作用集。
1 R; P) y( W4 i: Q7 t; f7 j( H - 如果新的解满足所有约束条件,则检查是否可以退出当前的起作用集。" l! L% ^% `3 t! q, {) Q7 u/ |
9 k/ L: B. _" H4 A3 L
6. **迭代**:% X+ A& O& |) [. a; y: J; t
- 重复步骤 2 到 5,直到满足收敛条件(例如,目标函数值的变化小于某个阈值)。! T' o. b+ f: C
% F1 T! `3 L' q- i4 @; a
7. **确定最优解**:
5 h- `& M" g; c9 n - 当达到收敛条件时,当前解即为最优解。0 o5 e* [9 t U! ~
; B. R/ K6 G, K$ E w" M### 示例5 q1 d; s; `! b& F0 f
4 n& B! z. g# J假设我们有一个简单的二次规划问题:5 w; ` ^8 f# o: A7 Y
% z! I2 D8 Q3 }! f9 z# k\[
2 l {1 f" U5 A, _\text{Minimize } f(x) = x_1^2 + x_2^2
" u9 F; ?1 H; ?& E0 E9 \8 u2 [\]$ D0 D; Q* Z+ W. B
) g+ b' F& i# C$ j0 `2 H
约束条件为:
# m+ {3 Q7 P& W' |, b: O- ~
8 ^ e% h* E( Y" K9 x\[; s: j! I V k! M! K0 v
x_1 + x_2 \leq 1
T! d$ D: r3 a' w1 ~\]" C( L6 O# h6 j7 M9 s" n
; u. h/ @$ a2 p
\[
7 q5 k- U6 J. tx_1, x_2 \geq 01 U6 Q! W" `2 N( P5 A- _. Z8 W5 e8 R3 K
\]
2 U p# y0 a6 s0 h
" a0 O" V- D% j7 x2 {! U. G# A**步骤**:4 Z/ y; b) A$ S0 _1 K) Q
4 P, Y; p% q8 {( u1. **初始化**:
* Z, k! b" W h; g - 选择初始解 \(x_0 = (0, 0)\),起作用集为空。
0 ?. d6 H2 O+ W) Z
3 {8 q3 t6 |" C: G3 y9 r2. **构造拉格朗日函数**: v" J* u% g& j3 ~" n/ B
- 对于当前的起作用集,构造拉格朗日函数。
( ^# U) r+ v6 _" S5 J/ w" u% A/ u- ?4 K0 }7 j) |( @
3. **求解一阶条件**:+ i s; n1 e- C7 _# q/ a
- 计算偏导数并求解。
! D+ E& T7 M/ a, M6 Z% V7 N8 V+ N# l4 x# S& O2 m8 f5 k
4. **更新解**:
# c& I, Z$ C6 s' v* T - 得到新的解 \(x\),检查是否满足约束。& b4 |1 A% w( d9 d+ V- b3 D0 T3 z
8 Z# F8 \# k* l$ x$ u; P. g
5. **更新起作用集**:
5 L" C7 ^% {1 [3 Q+ i5 e) _ - 如果 \(x_1 + x_2 > 1\),则将约束 \(x_1 + x_2 \leq 1\) 加入起作用集。; ]5 F+ H$ n+ c0 y; D* V) d
) b% L8 Z( x: S1 q2 x- m
6. **迭代**:+ w: i9 F% V* y$ ]
- 重复上述步骤,直到收敛。
9 t& H9 h b! U
& `0 O9 d/ S6 A7. **确定最优解**:
$ {& V! r ^+ {3 {/ B) ?9 g7 C% e P - 最终得到的解即为最优解。$ S+ J" @. ^0 L- S
: S0 L$ Q0 w, N7 `3 x3 F' V2 h
### 总结
" C) L. Q \* |, I7 ]( z
5 J% m$ P* F( @3 j0 ^4 m. h起作用集法是一种有效的求解二次规划问题的算法,通过动态调整活动约束集来逐步逼近最优解。它适用于处理具有线性约束的优化问题,尤其在约束条件较多的情况下表现良好。
1 w F: X! e5 D. ~- d1 P/ [/ p; n K' c6 Q$ a4 q, ^0 L
$ T" U( ]8 |2 V5 ~
5 z: D' Q4 l; v( ~ |
zan
|