- 在线时间
- 481 小时
- 最后登录
- 2026-8-23
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7858 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
起作用集法(Active Set Method)是一种用于求解约束优化问题的有效算法,特别适用于二次规划问题。以下是使用起作用集法解决二次规划问题的基本步骤和概念。
' x p+ a- R( \+ }# d" g
4 V# C- D: W/ X, d8 U! c### 二次规划问题的形式7 Q4 [9 j5 \5 i( Z$ F! I
$ T' x- S3 \. y% X s
二次规划问题通常可以表示为:3 N& h! n' n8 l' l" _% p
h& T U; J; ~: [\[0 j# s. }- y) T: s. l7 H9 C! s
\text{Minimize } f(x) = \frac{1}{2} x^T Q x + c^T x, |; s% `- k0 K/ E
\]
' V( W c5 E' e5 f& H; C4 o* r: P
1 }0 ?- Y% S% E+ u+ A) e约束条件为:* s" l6 E) V' \6 a. ^0 r) _
+ q9 W, M2 M7 }6 N2 E
\[. o6 F& b% Q2 V' v; ^
Ax \leq b; u$ F0 E6 c% ]5 m# h: l
\]& f( _7 e8 s& n$ K: A* Q! s
8 X: p G7 u" z, T3 v9 G& n7 V
\[
' j* d3 i$ H' C; Mx \geq 08 L& f; n, B4 Z( q6 [7 ]) T7 o) ]
\]
7 |& Y K! i" M$ s5 P: M' g" x7 d9 X6 |1 k
其中,\(Q\) 是一个对称正定矩阵,\(c\) 是一个向量,\(A\) 是约束条件的系数矩阵,\(b\) 是约束条件的右侧向量。
& t4 K/ ~, m1 n% F0 T
, `- j' r3 N( G( k7 W/ @### 起作用集法的步骤
% H* g; d2 Q5 s' v% k( C. I4 S Z5 p6 D% o
1. **初始化**:
& O1 g/ j; N. C3 }; k, H - 选择一个初始可行解 \(x_0\)。
! w, n: A! _( A* q6 c/ d9 @! y+ O$ M - 确定初始的起作用集(即当前活动的约束条件)。- f0 ^) U( O$ B' l
4 N& K, p! g* E2. **构造拉格朗日函数**:, K, \" d3 L" B, _: Y% p
- 对于当前的起作用集,构造拉格朗日函数:# ]& I) }) d- U
0 o; S7 w! x! t- d4 D8 B2 {' |- D
\[
% O; O/ o' i8 J0 R: I' n+ F' n. w& O L(x, \lambda) = \frac{1}{2} x^T Q x + c^T x + \lambda^T (b - Ax)
8 k2 C/ E" D: B \]
$ O6 ~. [/ m8 G8 U) r/ U6 X
4 ~! W2 Y& i0 r, Q2 r O3. **求解一阶条件**:
5 F0 B* ~7 K" L) V K( x. L7 D - 对 \(L\) 关于 \(x\) 和 \(\lambda\) 分别求偏导数,并令其等于零,得到一个方程组。
4 X3 z/ q" C9 `; ]$ m, ?; `9 Z6 N# m. @( q
4. **更新解**:* K% Q* g0 Q) ?* b5 M
- 通过求解上述方程组,得到新的解 \(x\)。- a) f D# V% Y, d+ e! _
- 检查新的解是否满足所有约束条件。$ D# Q) f, @8 Z: c8 F6 U
# K: b/ n( F1 H$ ?9 c. \
5. **更新起作用集**:* }9 |( p3 f$ u! e
- 如果新的解违反了某些约束条件,则将这些约束条件加入起作用集。
2 y6 X3 m) |2 i% c! _ - 如果新的解满足所有约束条件,则检查是否可以退出当前的起作用集。
) c" H, X$ b8 s& m3 W G
" R8 Q. q1 [1 k0 y6. **迭代**:
" N! g, [, r; t& q$ J6 G9 g/ @3 N - 重复步骤 2 到 5,直到满足收敛条件(例如,目标函数值的变化小于某个阈值)。" c3 {7 {: c5 A4 N% q" a, Y& h
3 h" m; N8 c/ T; t7. **确定最优解**:
2 G: M7 u& D) {+ D7 g! A - 当达到收敛条件时,当前解即为最优解。+ b4 v. {' a {/ H4 B Q M I$ N6 A+ D
2 W" L; j3 b. |0 c; k+ f' P2 k5 \0 r### 示例
! i, g5 W3 q3 Z) ^! }! [
! N+ R+ i! \& F) M+ R' f假设我们有一个简单的二次规划问题:" c7 y5 _5 K( J: g |5 S
* v& q. Z; P3 i: v# b
\[* B8 ~4 y# a t7 a/ g( r
\text{Minimize } f(x) = x_1^2 + x_2^2
2 W! p4 Q! l+ o, u1 v+ j8 i9 F\]% |3 n' O L5 C+ z
, y$ c6 Q$ j" h约束条件为:' t' A7 I9 s( u. z2 m! J0 l# g0 `
8 Y+ M' a- U2 ~+ ]% z
\[
( O% R* ?3 l0 z6 Yx_1 + x_2 \leq 1
5 k/ J2 _5 I, t" j: y$ {/ d% B\]- n/ q' b9 V& ^
" S. O% [2 M5 u/ p3 T\[* |, h* [* F* t/ y
x_1, x_2 \geq 0) r9 D# A5 [* x
\]
) S) X# r, O; _! x! A8 f/ J3 e+ k b0 N- W5 H" U1 B
**步骤**:
# ?: N: b7 \5 `1 _% n5 _5 o' [
$ ?; j" B, O/ x$ m. a( @, s' l2 x5 g1. **初始化**:7 x, c" s p7 g& J; c- P, U& M
- 选择初始解 \(x_0 = (0, 0)\),起作用集为空。
" ]* m) S, I# t0 w2 s# V4 b2 g
5 T7 T3 U ?: \* f6 o) F* c2. **构造拉格朗日函数**:
+ V9 g, T6 S4 D) Z: a% m - 对于当前的起作用集,构造拉格朗日函数。% d$ M* ?0 F* y# x2 Y
! u) X3 n# t; F/ d
3. **求解一阶条件**:
8 [7 c! r; o; @ - 计算偏导数并求解。
& K/ e% o9 P5 S* n! L
5 m+ L1 s5 [8 x) E/ Q4. **更新解**:: J: B1 x) I* W( p8 n$ i
- 得到新的解 \(x\),检查是否满足约束。
' n4 A1 m/ d" i/ V8 A e; `6 J
9 C7 K# E" p; ?5 f) u5. **更新起作用集**:
% K! {% C7 R7 O5 C - 如果 \(x_1 + x_2 > 1\),则将约束 \(x_1 + x_2 \leq 1\) 加入起作用集。5 z; d) v! {% \8 N) O
; D* M7 x. A! {7 v1 Y& Z1 `6. **迭代**:# R* L) F1 J6 a9 s Z e5 |' [5 {
- 重复上述步骤,直到收敛。0 G4 \4 V! ]- ?4 S* S
7 Z1 {" y& i5 C
7. **确定最优解**:
7 ]6 L$ _. ^6 X5 X' U$ t( ^ - 最终得到的解即为最优解。) e, b: }5 i5 G5 F" Y, P
& j1 a1 p4 w7 M3 k
### 总结
6 j; _' Q: [( B
* ]3 b h; u- H) @起作用集法是一种有效的求解二次规划问题的算法,通过动态调整活动约束集来逐步逼近最优解。它适用于处理具有线性约束的优化问题,尤其在约束条件较多的情况下表现良好。/ d9 b o( g. x' G Y! F
7 N! W, z2 l+ b8 h$ q4 D, E6 m/ G
( A+ T$ e' ~0 V0 `8 C
* r! F A c3 R$ d" i |
zan
|