二次规划_2_——起作用集方法

本文深入探讨了起作用集法在解决不等式约束二次规划问题中的应用,详细阐述了算法的适用情形、求解步骤及注意事项,为理解和掌握这一复杂优化算法提供了清晰的路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  这个算法很反人类,迭代过程相当复杂,最优化老师说:“明确地告诉你要考的。”
  起作用集方法适用于消元法Lagrange方法无法处理的不等式约束二次规化问题。其主要思想是:以已知点为可行点,只考虑将该点的起作用约束,最小化 f ( x ) f(x) f(x),得到新的可行点后重复以上做法。

一、起作用集法适用情形

  适用于具有不等式约束的二次规划问题 m i n     f ( x ) = 1 2 x T H x + c T x s . t .     A x ⩾ b min \ \ \ f(x)=\frac{1}{2}x^THx+c^Tx \\ s.t. \ \ \ Ax\geqslant b min   f(x)=21xTHx+cTxs.t.   Axb

二、起作用集法求解步骤

  由于步骤太过繁琐,算法总是跳来跳去,所以在这里我只放上了我自己对于算法的分步与理解。算法可以分为一个初始+三个域,三个域分别为:解 δ \delta δ域、求 α ^ k \widehat\alpha_{k} α k 域、算L乘子 λ \lambda λ域。

(1)初始化:初始可行点 x ( 1 ) x^{(1)} x(1),作用约束集 I ( 1 ) I^{(1)} I(1),置 k = 1 k=1 k=1;
(2)解增量 δ \delta δ:这时构建增量求解问题: m i n     1 2 δ T H δ + ▽ f ( x ( k ) ) T δ s . t .     a i δ = 0 , i ∈ I ( k ) min \ \ \ \frac{1}{2}\delta^TH\delta+\triangledown f(x^{(k)})^T\delta \\ s.t. \ \ \ a^{i}\delta= 0, i \in I^{(k)} min   21δTHδ+f(x(k))Tδs.t.   aiδ=0,iI(k)  得到最优解 δ ( k ) \delta^{(k)} δ(k)。此时进行第一次分流分析

δ ( k ) = 0 \delta^{(k)}=0 δ(k)=0,则说明 x ( k ) x^{(k)} x(k)无法再继续变动,则跳到第4步计算L乘子,判断最优解;
δ ( k ) ≠ 0 \delta^{(k)}\neq 0 δ(k)=0,需要对 x ( k ) x^{(k)} x(k)进行变动,则跳到第3步,求解步长。

(3)求步长 α ^ k \widehat\alpha_{k} α k
  上一步求解出了增量 δ \delta δ,这一步将增量视为移动方向 d d d,即 d ( k ) = δ ( k ) d^{(k)}=\delta^{(k)} d(k)=δ(k)。变动过程为: x ( k + 1 ) = x ( k ) + α ^ k d ( k ) x^{(k+1)}=x^{(k)}+\widehat\alpha_{k}d^{(k)} x(k+1)=x(k)+α kd(k)  步长的选取首先要保证新点是一个可行点,不能违背 x ( k ) x^{(k)} x(k)的非作用下标集中约束,即: a i ( x ( k ) + α ^ k d ( k ) ) ⩾ b i     ,     i ∉ I ( k ) a^i(x^{(k)}+\widehat\alpha_{k}d^{(k)}) \geqslant b_i \ \ \ , \ \ \ i \notin I_{(k)} ai(x(k)+α kd(k))bi   ,   i/I(k)  在特定情况下左侧孤立 α ^ k \widehat\alpha_{k} α k i f     a i d ( k ) < 0    :     α ^ k = b i − a i x ( k ) a i d ( k ) \mathbf{if} \ \ \ a^i d^{(k)}<0\ \ :\ \ \ \widehat\alpha_{k}=\frac{b_i-a^ix^{(k)}}{a^id^{(k)}} if   aid(k)<0  :   α k=aid(k)biaix(k)  考察所有非作用约束集对应的约束式,可以求出多个 α ^ k \widehat\alpha_{k} α k,进而对其求最小。同时还要注意,最终 α ^ k \widehat\alpha_{k} α k的取值还要跟1进行比较: α k = m i n ( 1 , α ^ k ) \alpha_{k}=min{(1,\widehat\alpha_{k})} αk=min(1,α k)  得到步长,此时进行第二次分流分析:(这一步无论结果如何都要更新 x ( k ) x^{(k)} x(k),只是一个回去,一个继续)

α k < 1 \alpha_{k}<1 αk<1,原来非作用约束集中有一个约束式变为作用约束,小数步长直接更新 x ( k + 1 ) x^{(k+1)} x(k+1)(算法中唯一更新x的地方),返回步骤2,重新计算增量 δ \delta δ
α k = 1 \alpha_{k}=1 αk=1,此时的变动不会触动任何非作用约束,1步长直接更新 x ( k + 1 ) x^{(k+1)} x(k+1)(算法中唯一更新x的地方),跳到第4步计算L乘子,判断最优解。

(4)计算L乘子 λ \lambda λ
  这一步是算法的出口,通过Lagrange方法最后给出的公式计算乘子 λ \lambda λ λ = R g k = ( A H − 1 A T ) − 1 A H − 1 g k \lambda=Rg_k=(AH^{-1}A^T)^{-1}AH^{-1}g_k λ=Rgk=(AH1AT)1AH1gk  其中 g k = ▽ f ( x ( k ) ) g_k=\triangledown f(x^{(k)}) gk=f(x(k)),是当前迭代点的梯度。
得到每个作用约束对应的乘子之后,进行第三次分流分析

λ < 0 \lambda<0 λ<0,挑选出最小的 λ \lambda λ,在起作用约束集 I I I中去掉下标,返回步骤2计算增量 δ \delta δ
λ ⩾ 0 \lambda\geqslant0 λ0,当前解 x ( k ) x_{(k)} x(k)是最优解。

三、注

  这个方法思想简单,但是每一块的计算都很精密,过程很繁琐。考试的时候一定要把思路写清楚。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值