【最优化期末复习】Z容许方向法

该方法用于求解带有线性约束的优化问题,通过迭代寻找最小化目标函数的步骤。首先计算当前点的梯度,确定作用的不等式约束。接着对矩阵A和向量b进行分解,然后用线性规划找到下降的容许方向。如果梯度与容许方向的内积为零,则找到最优点,否则计算步长并更新迭代点。
摘要由CSDN通过智能技术生成

Zoutendijk线性约束的容许方向法

求解带线性约束问题: m i n f ( x ⃗ ) {\rm min}f(\vec{x}) minf(x ) s . t . { A x ⃗ ≥ b ⃗ C x ⃗ = d ⃗ s.t.\left\{ \begin{array}{c} A\vec{x}\geq \vec{b} \\ C\vec{x}=\vec{d} \\ \end{array} \right. s.t.{Ax b Cx =d 设已经迭代到第 k 步,得到 x ⃗ k \vec{x}_k x k

Step 1:得到准备条件

x ⃗ k \vec{x}_k x k 得到梯度 g ⃗ k = ∇ f ( x ⃗ ) \vec{g}_k=\nabla f(\vec{x}) g k=f(x ),以及起作用的不等式约束序号集 I k I_k Ik

Step 2:分解矩阵 A A A 和向量 b ⃗ \vec{b} b

根据集合 I I I,将 A A A 分解为: A = [ A k ′ A k ′ ′ ] A=\begin{bmatrix} A_k^\prime \\\\ A_k^{\prime\prime} \end{bmatrix} A= AkAk′′ ,将 b ⃗ \vec{b} b 分解为: b ⃗ = [ b ⃗ k ′ b ⃗ k ′ ′ ] \vec{b}=\begin{bmatrix} \vec{b}_k^\prime \\\\ \vec{b}_k^{\prime\prime} \end{bmatrix} b = b kb k′′ ,使得满足 { A k ′ x ⃗ k = b ⃗ k ′ A k ′ ′ x ⃗ k > b ⃗ k ′ ′ \left\{ \begin{array}{c} A_k^\prime\vec{x}_k=\vec{b}_k^\prime \\ \\ A_k^{\prime\prime}\vec{x}_k>\vec{b}_k^{\prime\prime} \\ \end{array} \right. Akx k=b kAk′′x k>b k′′

Step 3:求解迭代方向

使用线性规划的方法求解: m i n g ⃗ k T p ⃗ k {\rm min}\vec{g}_k^{\rm T}\vec{p}_k ming kTp k s . t . { A k ′ p ⃗ k ≥ 0 ⃗ C p ⃗ k = 0 ⃗ − 1 ≤ p i ≤ 1 s.t.\left\{ \begin{array}{c} A_k^\prime\vec{p}_k\geq \vec{0} \\ \\ C\vec{p}_k=\vec{0} \\ \\ -1\leq p_i\leq1 \end{array} \right. s.t. Akp k0 Cp k=0 1pi1得到下降容许方向 p ⃗ k \vec{p}_k p k

Step 4:判定最优性

如果 g ⃗ k T p ⃗ k = 0 \vec{g}_k^{\rm T}\vec{p}_k=0 g kTp k=0,说明当前已经得到最优点 x ⃗ k \vec{x}_k x k,迭代结束

如果 g ⃗ k T p ⃗ k ≠ 0 \vec{g}_k^{\rm T}\vec{p}_k\neq 0 g kTp k=0,说明当前迭代点 x ⃗ k \vec{x}_k x k 不是最优点,需要继续迭代。如果不是最优点,则继续执行以下步骤:

Step5:获取步长搜索范围

u ⃗ k = A k ′ ′ x ⃗ k − b ⃗ k \vec{u}_k=A^{\prime\prime}_k\vec{x}_k-\vec{b}_k u k=Ak′′x kb k v ⃗ k = A k ′ ′ p ⃗ k \vec{v}_k=A^{\prime\prime}_k\vec{p}_k v k=Ak′′p k t ˉ = m i n { − u i v i ∣ v i < 0 } \bar{t}={\rm min}\left\{-\frac{u_i}{v_i}\mid v_i<0\right\} tˉ=min{viuivi<0}

Step6:求解最优步长并得到下一个迭代点

m i n ( t )   ϕ ( t ) = f ( x ⃗ k + t p ⃗ k ) {\rm min(t)\space}\phi(t)=f(\vec{x}_k+t\vec{p}_k) min(t) ϕ(t)=f(x k+tp k) s . t . 0 ≤ t ≤ t ˉ s.t. 0\leq t\leq\bar{t} s.t.0ttˉ于是: x ⃗ k + 1 = x ⃗ k + t ∗ p ⃗ k \vec{x}_{k+1}=\vec{x}_k+t^*\vec{p}_k x k+1=x k+tp k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值