- 在线时间
- 479 小时
- 最后登录
- 2026-4-17
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7790 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2923
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
起作用集法(Active Set Method)是一种用于求解约束优化问题的有效算法,特别适用于二次规划问题。以下是使用起作用集法解决二次规划问题的基本步骤和概念。1 J1 S# L8 p" c; u
# V* T7 E. G( ?+ n
### 二次规划问题的形式
+ t4 J4 _( H" O" D
( g- b: r$ J. b6 d* E+ J+ Q# D二次规划问题通常可以表示为:( j% U* M8 c( z& @- Z5 d& u
- }" Z7 v+ w6 A\[, d7 Z! w6 M: b5 [# ]9 H
\text{Minimize } f(x) = \frac{1}{2} x^T Q x + c^T x6 o1 c! u& \8 b6 s" n2 {; m. `
\], z! a- j$ k6 M
+ z( B, C: n$ n6 j2 S约束条件为:' y. z) O* a- G
3 w0 b& u) I' i$ Q. w\[( s; J$ k3 w% n6 B( z
Ax \leq b# b) Z3 e- g3 t) v
\]
, _4 t/ ], c& p0 v x
6 U' z4 `, \* D4 N# m7 J. ~\[
6 p7 k3 b7 N8 `* S# Q1 ~x \geq 0
/ c1 n2 x* G: @# ^% t, h\]
1 U$ ]( H7 A" X5 r" _8 k4 y) n! O
其中,\(Q\) 是一个对称正定矩阵,\(c\) 是一个向量,\(A\) 是约束条件的系数矩阵,\(b\) 是约束条件的右侧向量。9 e* O K/ P4 i# r& A/ F; A& r
$ y2 j% [' K; n8 M0 X" E& y; L
### 起作用集法的步骤
/ ]& X9 r/ y. c0 ~8 a& T1 q8 i% G) K; k/ ~' {
1. **初始化**:! y( h' q: g" n/ f1 b# {+ A
- 选择一个初始可行解 \(x_0\)。
8 v) T5 n# T/ f# w - 确定初始的起作用集(即当前活动的约束条件)。; d4 w9 G! e* {: ^: p' ]3 V2 `
2 `2 U3 C4 {2 ^& c4 g# A4 g/ F6 I
2. **构造拉格朗日函数**:- e$ }2 g) J) B5 |2 @% [
- 对于当前的起作用集,构造拉格朗日函数:* u( W+ g0 y9 b$ x! h8 _
: ]1 y7 K: h$ Z( m6 x; ^
\[
( z3 l+ y( f5 a! c L(x, \lambda) = \frac{1}{2} x^T Q x + c^T x + \lambda^T (b - Ax)
- i6 i; i \, B- l# v. A" b" C \]0 r) @0 W o3 d! q
( u$ |. {8 C. O$ @+ c
3. **求解一阶条件**:* L2 V" u% o3 |: a/ j! |
- 对 \(L\) 关于 \(x\) 和 \(\lambda\) 分别求偏导数,并令其等于零,得到一个方程组。9 D1 N8 i# P( p- C, q
$ r3 m- k* H. b9 K) s
4. **更新解**:! o( l( W- B, g' B; E2 ]& I
- 通过求解上述方程组,得到新的解 \(x\)。
R: r- m, B9 y! d9 k' t - 检查新的解是否满足所有约束条件。# m ]5 B7 `4 ]. g, W
# O: W7 c' P4 U6 X2 k5. **更新起作用集**:/ \7 w& O, c w0 o2 t
- 如果新的解违反了某些约束条件,则将这些约束条件加入起作用集。3 a6 T5 Y: \2 z7 @% D( ?
- 如果新的解满足所有约束条件,则检查是否可以退出当前的起作用集。) {4 v @* D9 ?. V% D
+ v( [6 z) s9 a) ^6. **迭代**:
1 o1 c! g* D6 q) w3 L# a$ A - 重复步骤 2 到 5,直到满足收敛条件(例如,目标函数值的变化小于某个阈值)。# l5 i8 r K2 K6 Y0 _, n7 y
- x& s+ U1 n2 }+ P+ X7. **确定最优解**:
- u, a6 |6 T: f' a4 P - 当达到收敛条件时,当前解即为最优解。
- Z, y( e+ b0 ]; N8 a& C) n8 ~& N; [
### 示例
2 D1 I& r' |' e* v0 j2 ?* Y+ n0 j
6 P- _! ?/ G! [/ I/ R假设我们有一个简单的二次规划问题:: F ?" w2 T' G+ _) A; ~
8 w% ~0 u/ J* G$ J' z, ~. t
\[0 L& M m j5 y
\text{Minimize } f(x) = x_1^2 + x_2^2
" E* n8 e; B# i( n1 o# y% T\]1 ^4 v: ]1 G* [0 ^% T
5 t9 N# T4 Y8 v0 S- u+ }9 f7 p
约束条件为:
9 ?" c6 L6 o) i# `" P9 s* n6 w" P( g" N: g, S0 t
\[# r/ l0 N. `) w9 a" N3 y; ]
x_1 + x_2 \leq 1' U5 Z7 \% |4 d& x
\]6 H- K5 m, u1 V
9 c% |- q4 K4 V- k" @2 S
\[
+ [( T3 a3 @5 c6 ax_1, x_2 \geq 0
8 S6 U8 b' ^# d0 P4 e* [\]1 ]5 {5 U; s0 b* u% \# a
( |" a9 b" O( o: l# g
**步骤**:4 b$ [- o- I& d* g N6 u
5 L# A7 D7 E# s0 L7 l- u
1. **初始化**:$ b8 T6 G- Y" c9 S( c
- 选择初始解 \(x_0 = (0, 0)\),起作用集为空。2 L: W) ~5 a8 F! G
* K* `) e A0 D) U2. **构造拉格朗日函数**:6 o' i: l# D+ V" R% W
- 对于当前的起作用集,构造拉格朗日函数。
. f& S2 Y2 h! G I! T' ^
. Y2 k- L$ r+ m4 X) Y$ O: d( s3. **求解一阶条件**:6 m4 W6 K3 L* e7 \( Q
- 计算偏导数并求解。: w; e. f5 y g) C( T+ ]; ]
" d5 r0 z* ]) C0 y% M
4. **更新解**:( Z+ c& Q) b/ s( g
- 得到新的解 \(x\),检查是否满足约束。
6 v; e1 C2 f9 d" o: L. c. o6 b9 g! s% h6 w- O; E
5. **更新起作用集**:( M- C+ F) @" }2 Y& v0 P( ?
- 如果 \(x_1 + x_2 > 1\),则将约束 \(x_1 + x_2 \leq 1\) 加入起作用集。- I& @9 }) x/ M' k( ^: y' G
Y8 C9 K0 S' F t# _, y6. **迭代**:
" \1 i2 u7 {: b( R3 N* z, t# R - 重复上述步骤,直到收敛。( a* x% F; |! i5 y" D: ~
* o( F3 I/ h0 F# q' Q6 L& `
7. **确定最优解**:
- n [& K4 w* R - 最终得到的解即为最优解。$ X" Y$ h* J# X* e* @3 R
6 w) K; E9 O$ k4 Z8 T9 c! `
### 总结2 W5 t0 X2 w) e$ f6 z9 B' c- }+ {. K
9 ^# D `8 Q. G* p0 g起作用集法是一种有效的求解二次规划问题的算法,通过动态调整活动约束集来逐步逼近最优解。它适用于处理具有线性约束的优化问题,尤其在约束条件较多的情况下表现良好。
% k6 L7 T+ ^; Y' _, D
5 }! I% g8 f& U1 A
2 N9 L8 f0 w& q9 p" I f! Z
/ n+ S! g) Q+ \# k3 x" l |
zan
|