- 在线时间
- 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)是一种用于求解约束优化问题的有效算法,特别适用于二次规划问题。以下是使用起作用集法解决二次规划问题的基本步骤和概念。
4 m% y5 M7 e8 q& J. d. f6 {
. x+ u1 Z' _* }! t( p2 w o### 二次规划问题的形式$ ?, k2 H9 T* V' C5 W
# n: e" F k' s" t7 T5 Z0 \1 ]二次规划问题通常可以表示为:+ {3 q4 W; E0 h) j1 G D6 w5 N! o
# [1 b" J6 s9 F# I0 r0 O% l: [. N4 S\[
7 |, y4 F& u5 S\text{Minimize } f(x) = \frac{1}{2} x^T Q x + c^T x
6 J$ t C& Q8 @- b; G% Q6 a7 W+ q\]. l ?4 g+ F L- e( f ^
: p+ r/ F: h0 M$ b$ _
约束条件为:6 M' \+ s3 E3 w! I8 |
9 K% G5 u K( X7 r0 f4 \\[
0 ~6 [- n ~, E5 j) Z8 JAx \leq b
% L8 M4 I9 G4 f6 x$ k! B\]3 C( L! i$ a& S$ H* b2 ^1 L4 h: b
2 n7 X9 q; E \" z) m$ J8 C# j* m\[0 w, O' \% o3 F5 ?5 |' n) j4 w
x \geq 0
% J; n' W: \; d! M\]
& |2 U4 Y) ?. |
5 P; T8 ^9 p; ]$ Z; H其中,\(Q\) 是一个对称正定矩阵,\(c\) 是一个向量,\(A\) 是约束条件的系数矩阵,\(b\) 是约束条件的右侧向量。
/ @6 u: ^0 j( H0 \( R9 P! H' |' w# k: L% V. |- `
### 起作用集法的步骤
" w; a! ^* v7 t( a: B, [% h
0 |5 J1 d1 Z1 y- j1 Z+ a8 l \1. **初始化**:
5 d2 y& t' c4 W* d* T' k1 }4 Y - 选择一个初始可行解 \(x_0\)。
. l# I# v$ y( T: o - 确定初始的起作用集(即当前活动的约束条件)。) n' ?! `; K4 F/ v- o" L5 T3 i
' W$ K% u2 q# C& d2. **构造拉格朗日函数**:
$ p( i7 |: Y9 c8 v/ @0 Y - 对于当前的起作用集,构造拉格朗日函数:
2 L# n; o- n+ Y4 W& H) Y
4 |2 T/ p: Q1 `9 l \[
1 S; z2 {3 }0 _ L(x, \lambda) = \frac{1}{2} x^T Q x + c^T x + \lambda^T (b - Ax)/ g6 I/ S6 x' H8 s( e
\]2 J2 q2 x. u I/ [# H
7 A7 p" E8 Z5 M+ [2 k; f
3. **求解一阶条件**:3 e! a8 q/ _/ q Y
- 对 \(L\) 关于 \(x\) 和 \(\lambda\) 分别求偏导数,并令其等于零,得到一个方程组。3 R/ Y* F# u/ I3 X
3 _7 W5 s7 \* ~. q. i4. **更新解**:& {: \8 @) q7 c( X' c! U
- 通过求解上述方程组,得到新的解 \(x\)。5 B7 X; I) A, R1 k. P3 b' d( m
- 检查新的解是否满足所有约束条件。
7 P1 W! E, [$ r/ ^; p
4 s- H2 x- i0 i5. **更新起作用集**:5 k7 Q( |7 k+ v [' a6 ], K
- 如果新的解违反了某些约束条件,则将这些约束条件加入起作用集。
9 o2 y* ]& e/ h) C - 如果新的解满足所有约束条件,则检查是否可以退出当前的起作用集。$ J: t9 Z, X# d( I' T; o+ N
" E4 m0 Y- Q- o, R, s# K2 e- d/ o% T
6. **迭代**:3 X1 S8 @! P0 L/ g
- 重复步骤 2 到 5,直到满足收敛条件(例如,目标函数值的变化小于某个阈值)。
3 x% i9 [1 Z7 U% P6 U, G% D) C8 d( S! M
7. **确定最优解**:
) E+ P4 W4 n! O0 \# ~- Z& F - 当达到收敛条件时,当前解即为最优解。
" {6 i) u; J- G9 \: `: {% i' N& Z; Y: _" a1 @ ^1 [/ Y7 X
### 示例! v$ c2 L6 {* M7 q* [1 c5 Z/ k$ [# Z
, v: @2 n1 C1 S+ M2 a; b- K假设我们有一个简单的二次规划问题:+ O# W! E ~" X8 G
1 U2 `+ }$ h4 K' t
\[
+ ]8 s3 J$ I2 v\text{Minimize } f(x) = x_1^2 + x_2^2, k- N5 R, ~9 z& {
\]0 e- R4 k4 A! a( G% a+ v) N9 w# q9 T
$ x; M" h6 M/ ?- n' s: Z
约束条件为:' ^* ]& Y+ I8 V0 }( I
- ^7 u j/ F) X
\[
5 A% \7 z+ @% ?5 D/ b9 u2 Y6 Lx_1 + x_2 \leq 1
# O" j7 X, f4 B N8 e* m7 c, A2 w\]
0 X$ I0 ~0 X7 V! a& V
) A( D# x4 m+ b5 x3 i% j, a$ w* `+ a9 C9 J* T\[
5 v! k* U' Y) [% U( h/ cx_1, x_2 \geq 0
" t* `: s6 o% J0 x+ |\]
0 x0 `6 K4 M$ C# n: E* h: P9 }, e, d. f, F; M
**步骤**:
) b. N5 E7 F4 W1 h' \; i/ Z! d" G$ S/ G2 a
1. **初始化**:% S+ i* X3 ]& G: Z* Z. A
- 选择初始解 \(x_0 = (0, 0)\),起作用集为空。
8 u/ |: [5 Z e
$ K1 W7 O/ Z" h1 V2. **构造拉格朗日函数**:4 Y0 M4 O& h2 h$ q
- 对于当前的起作用集,构造拉格朗日函数。
- X7 X6 {$ H' X% s( D& i" S/ G1 ^& q3 X! H0 Q
3. **求解一阶条件**:
, s6 y9 e9 y+ V, _0 Q - 计算偏导数并求解。5 f: V, x( C2 u2 Z" z3 c1 V6 N' S9 q
4 H; y2 J% J* l; Y4. **更新解**:
0 X* p( j, d3 V7 D2 v - 得到新的解 \(x\),检查是否满足约束。' W& s6 W3 k9 b; w% T) ^, W
- K2 v, @( g/ Z0 ?
5. **更新起作用集**:/ e0 Q8 x7 u5 b: ~$ A! b- |
- 如果 \(x_1 + x_2 > 1\),则将约束 \(x_1 + x_2 \leq 1\) 加入起作用集。
9 Z1 K/ l& X5 `$ A8 c. }
6 C# Y, ^) j* g# ]6. **迭代**:& w1 U) ^' K$ H# s9 K
- 重复上述步骤,直到收敛。
9 l8 m1 ]; Y9 a
+ n! b. d! C( G7 U% g* w" V7. **确定最优解**:3 G/ v2 _8 n- x( \
- 最终得到的解即为最优解。) j6 A( d' ~& u# F) S
8 K$ [- F2 E/ g+ c1 s' T4 g### 总结
& d/ d. A" `5 k Y6 ^; I! n2 Q+ Q/ F/ }# d, H
起作用集法是一种有效的求解二次规划问题的算法,通过动态调整活动约束集来逐步逼近最优解。它适用于处理具有线性约束的优化问题,尤其在约束条件较多的情况下表现良好。
0 |' a, N9 l) O* E0 T3 a0 ~# i: R9 U& a. L1 }
# X$ j, N6 J( \5 {% K. c A/ Q
$ H( c7 W% }# U. k0 {
|
zan
|