增广拉格朗日函数法

article/2025/9/19 23:59:56

增广拉格朗日函数法

在二次罚函数法中,为了保证可行性,罚因子必须趋于正无穷。此时,子问题因条件数爆炸而难以求解。那么,是否可以通过对二次罚函数进行某种修正,使得对有限的罚因子,得到的毕竟最优解也是可行的?增广拉格朗日函数法就是这样的一个方法。

一、等式约束优化问题的增广拉格朗日函数法

  1. 增广拉格朗日函数法的构造
    增广拉格朗日函数法的每一步构造一个增广拉格朗日函数,而该函数的构造依赖于拉格朗日函数和约束的二次罚函数。具体地,对于等式约束优化问题,
    min ⁡ x f ( x ) s . t . c i ( x ) = 0 , i ∈ E (1) \begin{aligned} &\min_{x}f(x) \\ &s.t.\quad c_i(x)=0, i\in\mathcal{E} \end{aligned}\tag{1} xminf(x)s.t.ci(x)=0,iE(1)
    其增广拉格朗日函数定义为
    L σ ( x , λ ) = f ( x ) + ∑ i ∈ E λ i c i ( x ) + 1 2 ∑ i ∈ E c i 2 ( x ) , (2) L_{\sigma}(x,\lambda)=f(x)+\sum_{i\in\mathcal{E}}\lambda_ic_i(x)+\frac{1}{2}\sum_{i\in\mathcal{E}}c_i^2(x),\tag{2} Lσ(x,λ)=f(x)+iEλici(x)+21iEci2(x),(2)
    即在拉格朗日函数的基础上,添加约束的二次罚函数。在第k步迭代,给定罚因子 σ k \sigma_k σk和橙子 λ k \lambda^k λk,增广拉格朗日函数 L σ k ( x , λ k ) L_{\sigma_k}(x,\lambda^k) Lσk(x,λk)的最小值点 x k + 1 x^{k+1} xk+1满足
    ∇ x L σ k ( x k 1 , λ k ) = ∇ f ( x k + 1 ) + ∑ i ∈ E ( λ i k + σ k c i ( x k + 1 ) ) ∇ c i ( x k + 1 ) = 0 (3) \nabla_xL_{\sigma_k}(x^{k_1},\lambda^k)=\nabla f(x^{k+1})+\sum_{i\in\mathcal{E}}(\lambda_i^k+\sigma_kc_i(x^{k+1}))\nabla c_i(x^{k+1})=0\tag{3} xLσk(xk1,λk)=f(xk+1)+iE(λik+σkci(xk+1))ci(xk+1)=0(3)
    对于优化问题(1),其最优解 x ∗ x^* x以及相应的乘子 λ ∗ \lambda^* λ需要满足
    ∇ f ( x ∗ ) + ∑ i ∈ E λ i ∗ ∇ c i ( x ∗ ) = 0 (4) \nabla f(x^*)+\sum_{i\in\mathcal{E}}\lambda_i^*\nabla c_i(x^*)=0\tag{4} f(x)+iEλici(x)=0(4)
    为使增广拉格朗日函数法产生的迭代点列收敛到 x ∗ x^* x,需要保证等式(3)(4)在最优解处的一致性。因此,对于充分大的 k k k
    λ i ∗ ≈ λ i k + σ k c i ( x k + 1 ) , ∀ i ∈ E \lambda_i^*\approx\lambda_i^k+\sigma_kc_i(x^{k+1}),\forall i\in\mathcal{E} λiλik+σkci(xk+1),iE
    上式等价于
    c i ( x k + 1 ) ≈ 1 σ k ( λ i ∗ − λ i k ) (5) c_i(x^{k+1})\approx\frac{1}{\sigma_k}(\lambda_i^*-\lambda_i^k)\tag{5} ci(xk+1)σk1(λiλik)(5)
    所以,当 λ i k \lambda_i^k λik足够接近 λ i ∗ \lambda_i^* λi时,点 x k + 1 x^{k+1} xk+1处的约束违反度将会远小于 1 σ k \frac{1}{\sigma_k} σk1。注意,在(1)式中约束违反度式正比于 1 σ k \frac{1}{\sigma_k} σk1的。即增广拉格朗日函数法可以通过有效地更新乘子来降低约束违反度,(5)式表明,橙子的一个有效的更新格式为
    λ i k + 1 = λ i k + σ k c i ( x k + 1 ) , ∀ i ∈ E \lambda_i^{k+1}=\lambda_i^k+\sigma_kc_i(x^{k+1}),\forall i\in\mathcal{E} λik+1=λik+σkci(xk+1),iE
    那么,我们得到问题(1)的增广拉格朗日函数法,见算法1,其中 c ( x ) = [ c i ( x ) ] i ∈ E c(x)=[c_i(x)]_{i\in\mathcal{E}} c(x)=[ci(x)]iE,并且 ∇ c ( x ) = [ ∇ c i ( x ) ] i ∈ E \nabla c(x)=[\nabla c_i(x)]_{i\in\mathcal{E}} c(x)=[ci(x)]iE

算法1:增广拉格朗日函数法

  1. 选取初始点 x 0 x^0 x0,乘子 λ 0 \lambda^0 λ0,罚因子更新常数 ρ > 0 \rho>0 ρ>0,约束违反度常数 ϵ > 0 \epsilon>0 ϵ>0和精度要求 η k > 0 \eta_k>0 ηk>0。并令 k = 0 k=0 k=0.
  2. for k=0,1,2, ⋯ \cdots do
  3. \quad x k x^k xk为初始点,求解 min ⁡ x L σ k ( x , λ k ) \min_x\quad L_{\sigma_k}(x,\lambda_k) minxLσk(x,λk),得到满足精度条件 ∣ ∣ ∇ x L σ k ( x , λ k ) ∣ ∣ ≤ η k ||\nabla_xL_{\sigma_k}(x,\lambda^k)||\le\eta_k ∣∣xLσk(x,λk)∣∣ηk的解 x k + 1 x^{k+1} xk+1
  4. \quad if ∣ ∣ c ( x k + 1 ) ∣ ∣ ≤ ϵ ||c(x^{k+1})||\le\epsilon ∣∣c(xk+1)∣∣ϵ then
  5. \qquad 返回近似解 x k + 1 , λ k x^{k+1},\lambda^k xk+1,λk,终止迭代
  6. \quad end if
  7. \quad 更新乘子: λ k + 1 = λ k + σ k c ( x k + 1 ) \lambda^{k+1}=\lambda^k+\sigma_kc(x^{k+1}) λk+1=λk+σkc(xk+1)
  8. \quad 更新罚因子: σ k + 1 = ρ σ k \sigma_{k+1}=\rho\sigma_k σk+1=ρσk
  9. end for

二、一般约束优化问题的增广拉格朗日函数法
对于一般约束优化问题
min ⁡ f ( x ) s . t c i ( x ) = 0 , i ∈ E c i ( x ) ≤ 0 , i ∈ I (6) \begin{aligned} \min\quad&f(x)\\ s.t\quad &c_i(x)=0,i\in\mathcal{E}\\ &c_i(x)\le 0, i\in\mathcal{I} \end{aligned}\tag{6} mins.tf(x)ci(x)=0,iEci(x)0,iI(6)
也可以定义其增广拉个蓝i函数以及涉及相应的增广拉格朗日函数法。在拉格朗日函数的定义中,往往倾向于将简单的约束保留,对复杂的约束引入乘子。这里,对于带不等式约束的优化问题,我们先通过引入松弛变量将不等式约束转化为等式约束和简单的非负约束,再对保留非负约束形式的拉格朗日函数添加等式约束的二次罚函数来构造拉格朗日函数。

  1. 增广拉格朗日函数
    对于问题(6),引入松弛变量可以得到如下等价形式
    min ⁡ x , s f ( x ) , s . t c i ( x ) = 0 , i ∈ E , c i ( x ) + s i = 0 , i ∈ I , s i ≥ 0 , i ∈ I (7) \begin{aligned} \min_{x,s}\quad &f(x),\\ s.t\quad & c_i(x)=0,i\in\mathcal{E},\\ &c_i(x)+s_i=0,i\in\mathcal{I},\\ &s_i\ge 0,i\in\mathcal{I} \end{aligned}\tag{7} x,smins.tf(x),ci(x)=0,iE,ci(x)+si=0,iI,si0,iI(7)
    保留非负约束,可以构造拉格朗日函数
    L ( x , s , λ , μ ) = f ( x ) + ∑ i ∈ E λ i c i ( x ) + ∑ i ∈ I μ i ( c i ( x ) + s i ) , s i ≥ 0 , i ∈ I L(x,s,\lambda,\mu)=f(x)+\sum_{i\in\mathcal{E}}\lambda_ic_i(x)+\sum_{i\in\mathcal{I}}\mu_i(c_i(x)+s_i),s_i\ge0,i\in\mathcal{I} L(x,s,λ,μ)=f(x)+iEλici(x)+iIμi(ci(x)+si),si0,iI
    记问题(7)中等式约束的二次罚函数为 p ( x , s ) p(x,s) p(x,s),则
    p ( x , s ) = ∑ i ∈ E c i 2 ( x ) + ∑ i ∈ I ( c i ( x ) + s i ) 2 . p(x,s)=\sum_{i\in\mathcal{E}}c_i^2(x)+\sum_{i\in\mathcal{I}}(c_i(x)+s_i)^2. p(x,s)=iEci2(x)+iI(ci(x)+si)2.
    我们构造拉格朗日函数如下:
    L ( x , s , λ , μ ) = f ( x ) + ∑ i ∈ E λ i c i ( x ) + ∑ i ∈ I μ i ( c i ( x ) + s i ) + σ 2 p ( x , s ) , s i ≥ 0 , i ∈ I L(x,s,\lambda,\mu)=f(x)+\sum_{i\in\mathcal{E}}\lambda_ic_i(x)+\sum_{i\in\mathcal{I}}\mu_i(c_i(x)+s_i)+\frac{\sigma}{2}p(x,s),s_i\ge0,i\in\mathcal{I} L(x,s,λ,μ)=f(x)+iEλici(x)+iIμi(ci(x)+si)+2σp(x,s),si0,iI
    其中 σ \sigma σ为罚因子

  2. 增广拉格朗日函数法
    在第 k k k步迭代中,给定乘子 λ k , μ k \lambda_k,\mu_k λk,μk和罚因子 σ k \sigma_k σk,我们需要求解如下问题:
    min ⁡ x , s L σ k ( x , s , λ k , μ k ) , s . t s ≥ 0 (8) \min_{x,s} L_{\sigma_k}(x,s,\lambda_k,\mu_k),s.t s\ge 0\tag{8} x,sminLσk(x,s,λk,μk),s.ts0(8)
    以得到 x k + 1 , s k + 1 x^{k+1},s^{k+1} xk+1,sk+1。求解问题(8)的一个有效的方法是投影梯度法。另外一种方法是消去 s s s,求解只关于 x x x的优化问题。具体地,固定 x x x,关于 s s s的子问题可以表示为
    min ⁡ s ≥ 0 ∑ i ∈ I μ i ( c i ( x ) + s i ) + σ k 2 ∑ i ∈ I ( c i ( x ) + s i ) 2 \min_{s\ge 0}\sum_{i\in\mathcal{I}}\mu_i(c_i(x)+s_i)+\frac{\sigma_k}{2}\sum_{i\in\mathcal{I}}(c_i(x)+s_i)^2 s0miniIμi(ci(x)+si)+2σkiI(ci(x)+si)2
    根据凸优化问题的最优性理论, s s s为以上为题的一个全局最优解,当且仅当
    s i = max ⁡ { − μ i σ k − c i ( x ) , 0 } , i ∈ I (9) s_i=\max\{-\frac{\mu_i}{\sigma_k}-c_i(x),0\},\quad i\in\mathcal{I}\tag{9} si=max{σkμici(x),0},iI(9)
    s i s_i si的表达式代入 L σ k L_{\sigma_k} Lσk我们有
    L σ k ( x , λ k , s i m g a k ) = f ( x ) + ∑ i ∈ I λ i c i ( x ) + σ k 2 ∑ i ∈ E c i 2 + σ k 2 ∑ i ∈ I ( max ⁡ { μ i σ k + c i ( x ) , 0 } 2 − m u i 2 σ k 2 ) (10) L_{\sigma_k}(x,\lambda_k,simga_k)=f(x)+\sum_{i\in\mathcal{I}}\lambda_ic_i(x)+\frac{\sigma_k}{2}\sum_{i\in\mathcal{E}}c_i^2+\frac{\sigma_k}{2}\sum_{i\in\mathcal{I}}(\max\{\frac{\mu_i}{\sigma_k}+c_i(x), 0\}^2-\frac{mu_i^2}{\sigma_k^2}) \tag{10} Lσk(x,λk,simgak)=f(x)+iIλici(x)+2σkiEci2+2σkiI(max{σkμi+ci(x),0}2σk2mui2)(10)
    其为关于 x x x的连续可微函数。因此问题(8)等价于
    min ⁡ x ∈ R n L σ k ( x , λ k , μ k ) , \min_{x\in\mathcal{R^n}}\quad L_{\sigma_k}(x,\lambda_k,\mu_k), xRnminLσk(x,λk,μk),
    并可以利用梯度法求解。这样做的一个好处是,我们小区了变量 s s s,从而在低维空间 R n R^n Rn中求解极小点。
    对于问题(7),其最优解 x ∗ , s ∗ x^*,s^* x,s和乘子 λ ∗ , μ ∗ \lambda^*,\mu^* λ,μ满足KKT条件:
    0 = ∇ f ( x ∗ ) + ∑ i ∈ E λ i ∗ ∇ c i ( x ∗ ) + ∑ i ∈ I m u i ∗ ∇ c i ( x ∗ ) , μ i ∗ ≥ 0 , i ∈ I , s i ∗ ≥ 0 , i ∈ I . \begin{aligned} 0&=\nabla f(x^*)+\sum_{i\in\mathcal{E}}\lambda_i^*\nabla c_i(x^*)+\sum_{i\in\mathcal{I}}mu_i^*\nabla c_i(x^*),\\ \mu_i^*&\ge 0,i\in\mathcal{I},\\ s_i^*&\ge 0,i\in\mathcal{I}. \end{aligned} 0μisi=f(x)+iEλici(x)+iImuici(x),0,iI,0,iI.
    问题(8)的最优解 x k + 1 , s k + 1 x^{k+1},s^{k+1} xk+1,sk+1满足
    0 = ∇ f ( x k + 1 ) + ∑ i ∈ E ( λ i k + σ k c i ( x k + 1 ) ) ∇ c i ( x k + 1 ) + ∑ i ∈ i ( μ i k + σ k ( c i ( x k + 1 ) + s i k + 1 ) ) ∇ c i ( x k + 1 ) , s i k + 1 = m a x { − m u i k σ k − c i ( x k + 1 ) , 0 } , i ∈ I . \begin{aligned} 0&=\nabla f(x^{k+1})+\sum_{i\in\mathcal{E}}(\lambda_i^k+\sigma_kc_i(x^{k+1}))\nabla c_i(x^{k+1})+\sum_{i\in\mathcal{i}}(\mu_i^k+\sigma_k(c_i(x^{k+1})+s_i^{k+1}))\nabla c_i(x^{k+1}),\\ s_i^{k+1}&=max\{-\frac{mu_i^k}{\sigma_k}-c_i(x^{k+1}), 0\},i\in\mathcal{I}. \end{aligned} 0sik+1=f(xk+1)+iE(λik+σkci(xk+1))ci(xk+1)+ii(μik+σk(ci(xk+1)+sik+1))ci(xk+1),=max{σkmuikci(xk+1),0},iI.
    对比问题(7)和问题(8)的KKT条件,易知乘子的更新格式为
    λ i k + 1 = λ i k + σ k c i ( x k + 1 ) , i ∈ E μ i k + 1 = m a x { m u i k + σ k c i ( x k + 1 ) , 0 } , i ∈ I \begin{aligned} \lambda_i^{k+1}&=\lambda_i^k+\sigma_kc_i(x^{k+1}),i\in\mathcal{E}\\ \mu_i^{k+1}&=max\{mu_i^k+\sigma_kc_i(x^{k+1}), 0\},i\in\mathcal{I} \end{aligned} λik+1μik+1=λik+σkci(xk+1),iE=max{muik+σkci(xk+1),0},iI
    对于等式约束,约束违反度定义为
    v k ( x k + 1 ) = ∑ i ∈ E c i 2 ( x k + 1 ) + ∑ i ∈ I ( c i ( x k + 1 ) + s i k + 1 ) 2 v_k(x^{k+1})=\sqrt{\sum_{i\in\mathcal{E}}c_i^2(x^{k+1})+\sum_{i\in\mathcal{I}}(c_i(x^{k+1})+s_i^{k+1})^2} vk(xk+1)=iEci2(xk+1)+iI(ci(xk+1)+sik+1)2
    根据(9)式消去 s s s,约束违反度为
    v k ( x k + 1 ) = ∑ i ∈ E c i 2 ( x k + 1 ) + ∑ i ∈ I m a x { c i ( x k + 1 ) , − μ i k σ k } v_k(x^{k+1})=\sqrt{\sum_{i\in\mathcal{E}}c_i^2(x^{k+1})+\sum_{i\in\mathcal{I}}max\{c_i(x^{k+1}),-\frac{\mu_i^k}{\sigma_k}\}} vk(xk+1)=iEci2(xk+1)+iImax{ci(xk+1),σkμik}
    综上,我们给出优化问题(8)的增广拉格朗日函数法,见算法2,该算法与算法1结构相似,但它给出了算法参数的一种具体更新方式。每次计算出子问题的近似解 x k + 1 x^{k+1} xk+1后,算法需要判断约束违反度 v k k + 1 v_k^{k+1} vkk+1是否满足精度。若满足,则进行乘子更新,并提高子问题求解精度,此时罚因子不变;若不满足,则不进行乘子的更新,并适当增大罚因子以便得到约束违反度更小的解。


算法2:一般约束优化问题的增广拉格朗日函数法

  1. 选取初始点 x 0 x^0 x0,乘子 λ 0 , μ 0 \lambda^0,\mu^0 λ0,μ0,罚因子 σ 0 > 0 \sigma_0>0 σ0>0,约束违反度常数 ϵ > 0 \epsilon>0 ϵ>0,精度常数 η > 0 \eta>0 η>0,以及常数 0 < α ≤ β ≤ 1 0\lt\alpha\le\beta\le 1 0<αβ1 ρ > 1 \rho>1 ρ>1。令 η 0 = 1 σ 0 , ϵ 0 = 1 σ 0 α \eta_0=\frac{1}{\sigma_0},\epsilon_0=\frac{1}{\sigma_0^\alpha} η0=σ01,ϵ0=σ0α1以及 k = 0 k=0 k=0.
  2. for k=0,1,2, ⋯ \cdots do
  3. \quad x k x^k xk为初始点,求解 min ⁡ x L σ k ( x , λ k , m u k ) \min_x L_{\sigma_k}(x,\lambda_k,mu_k) minxLσk(x,λk,muk)得到满足精度条件 ∣ ∣ min ⁡ x L σ k ( x , λ k , m u k ) ∣ ∣ 2 ≤ η k ||\min_x L_{\sigma_k}(x,\lambda_k,mu_k)||_2\le\eta_k ∣∣minxLσk(x,λk,muk)2ηk的解 x k + 1 x^{k+1} xk+1
  4. \quad if v k ( x k + 1 ) ≤ ϵ k v_k(x^{k+1})\le\epsilon_k vk(xk+1)ϵk then
  5. \qquad if v k ( x k + 1 ) ≤ ϵ v_k(x^{k+1})\le\epsilon vk(xk+1)ϵ ∣ ∣ min ⁡ x L σ k ( x , λ k , m u k ) ∣ ∣ 2 ≤ η ||\min_x L_{\sigma_k}(x,\lambda_k,mu_k)||_2\le\eta ∣∣minxLσk(x,λk,muk)2η then
  6. \qquad \quad 得到逼近解 x k + 1 , λ k , μ k x^{k+1},\lambda^k,\mu^k xk+1,λk,μk,终止迭代。
  7. \qquad end if
  8. \qquad 更新乘子:
    λ i k + 1 = λ i k + σ k c i ( x k + 1 ) , i ∈ E , μ i k + 1 = m a x { m u i k + σ k c i ( x k + 1 ) , 0 } , i ∈ I \begin{aligned} \lambda_i^{k+1} &= \lambda_i^k+\sigma_kc_i(x^{k+1}),i\in\mathcal{E},\\ \mu_i^{k+1} &= max\{mu_i^k+\sigma_kc_i(x^{k+1}), 0\}, i\in\mathcal{I} \end{aligned} λik+1μik+1=λik+σkci(xk+1),iE,=max{muik+σkci(xk+1),0},iI
  9. \qquad 罚因子不变: σ k + 1 = σ k \sigma_{k+1}=\sigma_k σk+1=σk
  10. \qquad 减小子问题求解误差和约束违反度: η k + 1 = η k σ k + 1 , ϵ k + 1 = ϵ k σ k + 1 β \eta_{k+1}=\frac{\eta_k}{\sigma_{k+1}},\epsilon_{k+1}=\frac{\epsilon_k}{\sigma_{k+1}^\beta} ηk+1=σk+1ηk,ϵk+1=σk+1βϵk
  11. \quad else
  12. \qquad 乘子不变: λ k + 1 = λ k \lambda_{k+1}=\lambda_k λk+1=λk.
  13. \qquad 更新罚因子: σ k + 1 = ρ σ k \sigma_{k+1}=\rho\sigma_k σk+1=ρσk.
  14. \qquad 调整子问题求解误差和约束违反度: η k + 1 = 1 σ k + 1 , ϵ k + 1 = 1 σ k + 1 β \eta_{k+1}=\frac{1}{\sigma_{k+1}},\epsilon_{k+1}=\frac{1}{\sigma_{k+1}^\beta} ηk+1=σk+11,ϵk+1=σk+1β1
  15. \quad end if
  16. end for

三、凸优化问题的增广拉格朗日函数法
考虑凸优化问题:
min ⁡ x ∈ R n f ( x ) , s . t c i ( x ) ≤ 0 , i = 1 , 2 , ⋯ , m , (11) \begin{aligned} \min_{x\in R^n}\quad &f(x),\\ s.t\quad &c_i(x)\le 0, i=1,2,\cdots,m, \end{aligned}\tag{11} xRnmins.tf(x),ci(x)0,i=1,2,,m,(11)
其中 f : R n → R , c i : R n → R , i = 1 , 2 , ⋯ , m f:R^n\rightarrow R,c_i:R^n\rightarrow R,i=1,2,\cdots,m f:RnR,ci:RnR,i=1,2,,m为闭凸函数。为了叙述的方便,这里考虑不等式形式的凸优化问题。定义可行域为 χ = { x ∣ c i ( x ) ≤ 0 , i = 1 , 2 , ⋯ , m } \chi=\{x|c_i(x)\le 0, i=1,2,\cdots,m\} χ={xci(x)0,i=1,2,,m}.
对于问题(11),根据上街介绍的不等式约束的增广拉格朗日函数表达式,其增广拉格朗日函数为:
L σ ( x , λ ) = f ( x ) + σ 2 ∑ i = 1 m ( m a x { λ i σ + c i ( x ) , 0 } − λ i 2 σ 2 ) L_{\sigma}(x,\lambda)=f(x)+\frac{\sigma}{2}\sum_{i=1}^{m}(max\{\frac{\lambda_i}{\sigma}+c_i(x), 0\}-\frac{\lambda_i^2}{\sigma^2}) Lσ(x,λ)=f(x)+2σi=1m(max{σλi+ci(x),0}σ2λi2)
其中 λ \lambda λ σ \sigma σ分别为乘子以及罚因子。
给定一系列单调递增的乘子 σ k ↑ σ ∞ \sigma_k\uparrow\sigma_{\infty} σkσ以及初始乘子 λ 0 \lambda_0 λ0,问题(11)的增广拉格朗日函数法为
x k + 1 ≈ a r g min ⁡ x ∈ R n L σ k ( x , λ k ) , λ k + 1 = λ k + σ k ∇ λ L σ k ( x k + 1 , λ k ) = max ⁡ { 0 , λ k + σ k c ( x k + 1 ) } (12) \begin{aligned} &x^{k+1}\approx arg\min_{x\in R^n}L_{\sigma_k}(x,\lambda_k),\\ &\lambda^{k+1}=\lambda^k+\sigma_k\nabla_{\lambda}L_{\sigma_k}(x^{k+1},\lambda_k)=\max\{0,\lambda_k+\sigma_kc(x^{k+1})\} \end{aligned}\tag{12} xk+1argxRnminLσk(x,λk),λk+1=λk+σkλLσk(xk+1,λk)=max{0,λk+σkc(xk+1)}(12)
为了方便叙述,一下定义 ϕ k ( x ) = L σ k ( x , λ k ) \phi_k(x)=L_{\sigma_k}(x,\lambda_k) ϕk(x)=Lσk(x,λk).由于 ϕ k ( x ) \phi_k(x) ϕk(x)的最小值点的显示表达式通常式未知的,我们往往调用迭代算法求其一个近似解。为了保证收敛性,我们要求该近似解至少满足如下非精确条件之一:
ϕ k ( x k + 1 ) − i n f ϕ k ≤ ϵ k 2 2 σ k , ϵ k ≥ 0 , ∑ k = 1 ∞ ϵ k < + ∞ (13) \phi_k(x^{k+1})-inf\phi_k\le\frac{\epsilon_k^2}{2\sigma_k},\epsilon_k\ge 0,\sum_{k=1}^{\infty}\epsilon_k\lt+\infty \tag{13} ϕk(xk+1)infϕk2σkϵk2,ϵk0,k=1ϵk<+(13)
ϕ k ( x k + 1 ) − i n f ϕ k ≤ δ k 2 2 σ k ∣ ∣ λ k + 1 − λ k ∣ ∣ 2 2 , δ k > 0 , ∑ k = 1 ∞ δ k < + ∞ (14) \phi_k(x^{k+1})-inf\phi_k\le\frac{\delta_k^2}{2\sigma_k}||\lambda_{k+1}-\lambda_k||_2^2,\delta_k\gt 0,\sum_{k=1}^{\infty}\delta_k\lt+\infty \tag{14} ϕk(xk+1)infϕk2σkδk2∣∣λk+1λk22,δk>0,k=1δk<+(14)
d i s t ( 0 , ∂ ϕ k ( x k + 1 ) ) ≤ δ k ′ δ k ∣ ∣ λ k + 1 − λ k ∣ ∣ 2 , 0 ≤ δ k ′ → 0 , (15) dist(0,\partial\phi_k(x^{k+1}))\le\frac{\delta_k^{'}}{\delta_k}||\lambda_{k+1}-\lambda_k||_2,0\le\delta_k^{'}\rightarrow 0,\tag{15} dist(0,ϕk(xk+1))δkδk∣∣λk+1λk2,0δk0,(15)
其中 ϵ k , δ k , δ k ′ \epsilon_k,\delta_k,\delta_k^{'} ϵk,δk,δk是认为设定的参数, d i s t ( 0 , ∂ ϕ k ( x k + 1 ) ) dist(0,\partial\phi_k(x^{k+1})) dist(0,ϕk(xk+1))表示0到集合 ∂ ϕ k ( x k + 1 ) \partial\phi_k(x^{k+1}) ϕk(xk+1)的欧几里得距离,根据 λ k + 1 \lambda_{k+1} λk+1的更新格式(12)容易得知
∣ ∣ λ k + 1 − λ k ∣ ∣ 2 = ∣ ∣ m a x { 0 , λ k + σ k c ( x k + 1 ) } − λ k ∣ ∣ 2 = ∣ ∣ m a x { − λ k , σ k c ( x k + 1 ) } ∣ ∣ 2 \begin{aligned} ||\lambda_{k+1}-\lambda_k||_2 &=||max\{0,\lambda_k+\sigma_kc(x^{k+1})\}-\lambda_k||_2 \\ &=||max\{-\lambda_k,\sigma_kc(x^{k+1})\}||_2 \end{aligned} ∣∣λk+1λk2=∣∣max{0,λk+σkc(xk+1)}λk2=∣∣max{λk,σkc(xk+1)}2
由于 inf ⁡ ϕ k \inf\phi_k infϕk是位置的,直接验证上述不精确条件是数值上不可行的。但是,如果 ϕ k \phi_k ϕk α − \alpha- α强凸函数,那么
ϕ k ( x ) − inf ⁡ ϕ k ≤ 1 2 α d i s t 2 ( 0 , ∂ ϕ k ( x ) ) (16) \phi_k(x)-\inf\phi_k\le\frac{1}{2\alpha}dist^2(0,\partial\phi_k(x))\tag{16} ϕk(x)infϕk2α1dist2(0,ϕk(x))(16)
根据(16)式,可以进一步构造如下数值可验证的不精确条件:
d i s t ( 0 , ∂ ϕ k ( x k + 1 ) ) ≤ α σ k ϵ k , ϵ k ≥ 0 , ∑ k = 1 ∞ ϵ k < + ∞ d i s t ( 0 , ∂ ϕ k ( x k + 1 ) ) ≤ α σ k δ k ∣ ∣ λ k + 1 − λ k ∣ ∣ 2 , δ k ≥ 0 , ∑ k = 1 ∞ δ k < + ∞ d i s t ( 0 , ∂ ϕ k ( x k + 1 ) ) ≤ δ k ′ σ k ∣ ∣ λ k + 1 − λ k ∣ ∣ 2 , 0 ≤ δ k ′ → 0. \begin{aligned} &dist(0,\partial\phi_k(x^{k+1}))\le\sqrt{\frac{\alpha}{\sigma_k}}\epsilon_k,\epsilon_k\ge 0,\sum_{k=1}^{\infty}\epsilon_k\lt+\infty \\ &dist(0,\partial\phi_k(x^{k+1}))\le\sqrt{\frac{\alpha}{\sigma_k}}\delta_k||\lambda_{k+1}-\lambda_k||_2,\delta_k\ge 0,\sum_{k=1}^{\infty}\delta_k\lt+\infty \\ &dist(0,\partial\phi_k(x^{k+1}))\le\frac{\delta_k^{'}}{\sigma_k}||\lambda_{k+1}-\lambda_k||_2,0\le\delta_k^{'}\rightarrow 0. \end{aligned} dist(0,ϕk(xk+1))σkα ϵk,ϵk0,k=1ϵk<+dist(0,ϕk(xk+1))σkα δk∣∣λk+1λk2,δk0,k=1δk<+dist(0,ϕk(xk+1))σkδk∣∣λk+1λk2,0δk0.

不精确条件下的增广拉格朗日函数法的收敛性证明这里省略。

四、基追踪问题的增广拉格朗日函数法
本小节以基追踪(BP)问题为例讨论增广拉格朗日函数法。我们见看到针对一些凸问题,增广拉格朗日函数法会有比较特殊的性质,比如固定罚因子也能保证算法的收敛性甚至有限终止性等。
A ∈ R m × n , b ∈ R m , x ∈ R n A\in R^{m\times n},b\in R^m,x\in R^n ARm×n,bRm,xRn,BP问题为
min ⁡ x ∈ R n ∣ ∣ x ∣ ∣ 1 , s . t . A x = b . (17) \min_{x\in R^n}\quad ||x||_1,\quad s.t.\quad Ax=b.\tag{17} xRnmin∣∣x1,s.t.Ax=b.(17)
引入拉格朗日乘子 y ∈ R m y\in R^m yRm,BP问题的拉格朗日函数为
L ( x , y ) = ∣ ∣ x ∣ ∣ 1 + y T ( A x − b ) L(x,y)=||x||_1+y^T(Ax-b) L(x,y)=∣∣x1+yT(Axb)
那么对偶函数
KaTeX parse error: Unknown column alignment: - at position 43: … \begin{array} -̲b^Ty, &||A^Ty||…
因此我们得到如下对偶问题:
min ⁡ y ∈ R m b T y , s . t . ∣ ∣ A T y ∣ ∣ ∞ ≤ 1 (18) \min_{y\in R^m} b^Ty,\quad s.t. ||A^Ty||_{\infty}\le 1\tag{18} yRmminbTy,s.t.∣∣ATy1(18)
通过引入变量 s s s,上述问题可以等价地携程
min ⁡ y ∈ R m , s ∈ R n b T y , s . t . A T y − s = 0 , ∣ ∣ s ∣ ∣ ∞ ≤ 1 (19) \min_{y\in R^m, s\in R^n} b^Ty,\quad s.t.\quad A^Ty-s=0,||s||_{\infty}\le 1 \tag{19} yRm,sRnminbTy,s.t.ATys=0,∣∣s1(19)
下面讨论如何对原始问题和对偶问题应用拉格朗日函数法。

  1. 原始问题的增广拉格朗日函数法
    引入罚因子 σ \sigma σ和乘子 λ \lambda λ,问题(17)的增广拉格朗日函数为
    L σ ( x , λ ) = ∣ ∣ x ∣ ∣ 1 + λ T ( A x − b ) + σ 2 ∣ ∣ A x − b ∣ ∣ 2 2 (20) L_{\sigma}(x,\lambda)=||x||_1+\lambda^T(Ax-b)+\frac{\sigma}{2}||Ax-b||_2^2 \tag{20} Lσ(x,λ)=∣∣x1+λT(Axb)+2σ∣∣Axb22(20)
    在增广拉格朗日函数法的一般理论中,需要罚因子 σ \sigma σ足够大来保证迭代收敛。对于BP问题,可以证明,对于固定的非负罚因子也能够保证收敛性(尽管在实际中动态调整罚因子可能会使算法更快收敛)。现在考虑固定罚因子 σ \sigma σ情形的增广拉格朗日函数法。在第 k k k步迭代,更新格式为
    { x k + 1 = a r g min ⁡ x ∈ R n L σ ( x , λ k ) = a r g min ⁡ x ∈ R n { ∣ ∣ x ∣ ∣ 1 + σ 2 ∣ ∣ A x − b + λ k σ ∣ ∣ 2 2 } λ k + 1 = λ k + σ ( A x k + 1 − b ) . (21) \left\{ \begin{array}{rcl} &x^{k+1}&=arg\min_{x\in R^n}L_{\sigma}(x,\lambda_k)=arg\min_{x\in R^n}\{||x||_1+\frac{\sigma}{2}||Ax-b+\frac{\lambda_k}{\sigma}||_2^2\} \\ &\lambda_{k+1}&=\lambda_k+\sigma(Ax^{k+1}-b). \end{array} \right.\tag{21} {xk+1λk+1=argminxRnLσ(x,λk)=argminxRn{∣∣x1+2σ∣∣Axb+σλk22}=λk+σ(Axk+1b).(21)
    设迭代的初始点为 x 0 = λ 0 = 0 x^0=\lambda^0=0 x0=λ0=0。考虑迭代格式(21)中的第一步,假设 x k + 1 x^{k+1} xk+1 L σ ( x , λ k ) L_{\sigma}(x,\lambda^k) Lσ(x,λk)的一个全局极小解,那么
    0 ∈ ∂ ∣ ∣ x k + 1 ∣ ∣ 1 + σ A T ( A x k + 1 − b + λ k σ ) 0\in\partial||x^{k+1}||_1+\sigma A^T(Ax^{k+1}-b+\frac{\lambda_k}{\sigma}) 0∣∣xk+11+σAT(Axk+1b+σλk)
    因此
    − A T λ k + 1 ∈ ∂ ∣ ∣ x k + 1 ∣ ∣ 1 (22) -A^T\lambda_{k+1}\in\partial||x^{k+1}||_1\tag{22} ATλk+1∣∣xk+11(22)
    满足上式的 x k + 1 x^{k+1} xk+1往往是不能显式得到的,因此需要采用迭代算法来进行求解,比如次梯度法或者近似点梯度法等等。
    这里我们沿用之前的A和b的生成方式,选取不同的稀疏度 r = 0.1 r=0.1 r=0.1 r = 0.2 r=0.2 r=0.2。我们固定罚因子 σ \sigma σ,并采用近似点梯度法作为求解器,不精确地求解关于 x x x的子问题得到 x k + 1 x^{k+1} xk+1。具体地,设置求解精度 η k = 1 0 − k \eta_k=10^{-k} ηk=10k,并且使用BB步长作为线搜索的初始步长,下图展示了算法产生的迭代点与最优点的举例变化以及约束违反度的走势。从图中可以看出:对于BP问题,固定的 σ \sigma σ也可以保证增广拉格朗日函数法的收敛性
%% 基追踪问题的增广拉格朗日函数法%% 初始化和迭代准备
% 输入信息: 初始迭代点 $x^0$ 和数据 $A$, $b$,以及停机准则参数结构体 |opts|%
% 输出信息: 迭代得到的解 $x$ 和包含算法求解中的相关迭代信息结构体 |out|%
% * |out.feavec| :每一步外层迭代的约束违反度 $\|Ax-b\|_2$
% * |out.inn_itr| :总的内层迭代的步数(即近似点梯度法的迭代步数)
% * |out.tt| :程序运行时间
% * |out.fval| :迭代结束时的目标函数值
% * |out.itr| :外层迭代步数
% * |out.itervec| :迭代点列 $x$function [x, out] = BP_ALM(x0, A, b, opts)
%%%
% 从输入的结构体 |opts| 中读取参数或采取默认参数。
%
% * |opts.itr| :外层迭代的最大迭代步数
% * |opts.itr_inn| :内层迭代的最大迭代步数
% * |opts.sigma| :罚因子
% * |opts.tol0| :初始的收敛精度
% * |opts.gamma| :线搜索参数
% * |opts.verbose| :表示输出的详细程度, |>1| 时每一步输出, |=1| 时每一次外层循环输出, |=0| 时不输出
if ~isfield(opts, 'itr'); opts.itr = 20; end
if ~isfield(opts, 'itr_inn'); opts.itr_inn = 2500; end
if ~isfield(opts, 'sigma'); opts.sigma = 1; end
if ~isfield(opts, 'tol0'); opts.tol0 = 1e-1; end
if ~isfield(opts, 'gamma'); opts.gamma = 1; end
if ~isfield(opts, 'verbose'); opts.verbose = 2; end
sigma = opts.sigma;
gamma = opts.gamma;%%%
% 迭代准备。
k = 0;
tt = tic;
out = struct();%%%
% 计算并记录初始时刻的约束违反度。
out.feavec = norm(A*x0 - b);
x = x0;
lambda = zeros(size(b));
out.itr_inn = 0;%%%
% 记录迭代过程的优化变量 $x$ 的值。
itervec = zeros(length(x0),opts.itr);%%%
% $\sigma A^\top A$ 的最大特征值,用于估计步长。
L = sigma*eigs(A'*A,1);%% 迭代主循环
%|opts.itr| 为最大迭代次数。
while k < opts.itr  Axb = A*x - b;c = Axb + lambda/sigma;g = sigma*(A'*c);tmp = .5*sigma*norm(c,2)^2;f = norm(x,1) + tmp;nrmG = norm(x - prox(x - g,1),2);tol_t = opts.tol0*10^(-k);t = 1/L;Cval = tmp; Q = 1;k1 = 0;%%%% 内层循环,当最优性条件违反度小于阈值,或者超过最大内层迭代次数限制时,退出内层循环。while k1 < opts.itr_inn && nrmG > tol_t%%%% 记录上一步的结果。gp = g;xp = x;x = prox(xp - t*gp, t);nls = 1;while 1tmp = 0.5 *sigma*norm(A*x - b + lambda/sigma, 2)^2;if tmp <= Cval + g'*(x-xp) + .5*sigma/t*norm(x-xp,2)^2 || nls == 5break;end%%%% 如果没有达到线搜索标准,衰减步长,重新试探。t = 0.2*t;nls = nls + 1;x = prox(xp - t * g, t);end%%%% 退出线搜索后,更新各量的值。f = tmp + norm(x,1);nrmG = norm(x - xp,2)/t;Axb = A*x - b;c = Axb + lambda/sigma;g = sigma*(A' * c);dx = x - xp;dg = g - gp;dxg = abs(dx'*dg);if dxg > 0if mod(k,2) == 0t = norm(dx,2)^2/dxg;elset = dxg/norm(dg,2)^2;endend%%%% 取步长为上述 BB 步长和 $1/L$中的较大者,并限制在 $10^{12}$ 范围内。t = min(max(t,1/L),1e12);%%%% 计算 (Zhang & Hager) 线搜索准则中的递推常数,其满足 $C_0=f(x^0),\ C_{k+1}=(\gamma% Q_kC_k+f(x^{k+1}))/Q_{k+1}$,序列 $Q_k$ 满足 $Q_0=1,\ Q_{k+1}=\gamma% Q_{k}+1$。Qp = Q; Q = gamma*Qp + 1; Cval = (gamma*Qp*Cval + tmp)/Q;%%%% 当需要详细输出时,输出每一步的结果,利用 |k1| 记录内层迭代的迭代步数。k1 = k1 + 1;if opts.verbose > 1fprintf('itr_inn: %d\tfval: %e\t nrmG: %e\n', k1, f,nrmG);endend%%%% 每一次内层迭代结束输出当前的结果。if opts.verbosefprintf('itr_inn: %d\tfval: %e\t nrmG: %e\n', k1, f,nrmG);end%% 更新拉格朗日乘子% 在通过近似点梯度法对 $x$ 进行更新之后,对拉格朗日乘子 $\lambda$ 进行更新,迭代格式为% $\lambda^{k+1}=\lambda^k+\sigma(Ax^{k+1}-b)$。lambda = lambda + sigma*Axb;%%%% 迭代步数加 1,依次记录外层迭代后的约束违反度、每一步迭代的 $x$ 的值,更新内层迭代的总次数。k = k + 1;out.feavec = [out.feavec; norm(Axb)];itervec(:,k) = x;out.itr_inn = out.itr_inn + k1;
end%%%
% 外层迭代结束,记录输出。
out.tt = toc(tt);
out.fval = f;
out.itr = k;
out.itervec = itervec;
end%% 辅助函数
function y = prox(x,mu)
y = max(abs(x) - mu, 0);
y = sign(x) .* y;
end

主函数

%% 构造基追踪问题
% 设定随机种子。
clear;
seed = 97006855;
ss = RandStream('mt19937ar','Seed',seed);
RandStream.setGlobalStream(ss);
%%%
% 构造基追踪问题, $u$ 为问题的真实解(其稀疏度为 $0.1$),使得 $b=Au$, $x^0$ 为随机的迭代初始点。
m = 512;
n = 1024;
A = randn(m, n);
u = sprandn(n, 1, 0.1);
b = A * u;
x0 = randn(n, 1);
%%%
% 参数设定。
opts.verbose = 0;
opts.gamma = 0.85;
opts.itr = 7;
%% 求解基追踪问题
% 调用算法 |BP_ALM| 求解 BP 问题。
[x, out] = bp_alm(x0, A, b, opts);figure
stem(u)
hold on
stem(x, 'rx')
axis tight
legend('u', 'x')

求解结果如下
在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/y34VXxQG.shtml

相关文章

增广拉格朗日函数法(ALM)

增广拉格朗日函数法&#xff08; Augmented Lagrangian method&#xff09; 一、等式约束 考虑问题&#xff1a; min ⁡ x f ( x ) s . t . c i ( x ) 0 , i 1 , ⋯ , m . \begin{array}{ll} \min_x &f(x)\\ s.t. &c_i(x) 0, \quad i1,\cdots,m. \end{array} min…

广义拉格朗日函数的理解

1、拉格朗日函数&#xff1a; 求极值 求函数f(x,y,z)在条件φ(x,y,z)0下的极值 方法&#xff08;步骤&#xff09;是&#xff1a; 1.做拉格朗日函数Lf(x,y,z)λφ(x,y,z),λ称拉格朗日乘数 2.求L分别对x,y,z,λ求偏导,得方程组,求出驻点P(x,y,z) 如果这个实际问题的最大或…

各种拉格朗日函数

目录 一&#xff0c;拉格朗日函数 二&#xff0c;部分拉格朗日函数 三&#xff0c;增广拉格朗日函数 一&#xff0c;拉格朗日函数 以三元函数为例&#xff1a; 求f(x,y,z)的极值&#xff0c;s.t.g(x,y,z)0 拉格朗日函数L(x,y,z,a) f(x,y,z) a * g(x,y,z) 在极值点处一…

拉格朗日函数相关推导

优化问题&#xff08;即高数中的求极值&#xff09;可分为三类&#xff1a;无约束、等式约束、不等式约束。 对于无约束的优化问题&#xff1a;求导&#xff0c;令导数为零即可求解。 等式约束优化&#xff1a;&#xff08;拉格朗日乘子法最开始就是求解等式约束优化的方法&…

HJ-浇花

链接&#xff1a;https://ac.nowcoder.com/acm/contest/322/M 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld 题目描述 HJ养了很多花&#xff08;9999999…

单片机——自动浇花系统

目录 1、图片 2、代码 1、图片 2、代码 #include <reg51.h> //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535#include <intrins.h>sbi…

基于ESP32的开源定时浇花系统

基于ESP32的开源定时浇花系统 文章目录 基于ESP32的开源定时浇花系统前言一、软硬件环境二、模块连接图1.浇花功能说明2.Web界面展示 总结 前言 养了些许花花草草&#xff0c;需要按时浇灌&#xff0c;奈何总是要出差&#xff08;总想出去玩&#xff09;&#xff0c;又怕没人浇…

RISC-V MCU 自动浇花装置设计

第一部分 设计概述 1.设计目的 在家里养养盆花可以陶冶情操&#xff0c;丰富生活&#xff0c;因此&#xff0c;家庭盆栽如今被许多人喜爱。花草生长问题80%以上是由花儿浇灌问题引起的;好不容易种植几个月的花草&#xff0c;因为浇水不及时而缺水死亡。虽然市场上有卖盆花自…

【Proteus仿真】【51单片机】自动浇花灌溉系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602液晶、按键、DS18B20、PCF8591 ADC、土壤湿度传感器、水位传感器、蜂鸣器模块等。 系统运行后&#xff0c;LCD1602显示传感器检测的温度、…

自动浇花系统的电路分析

目录 ​​​电源电路 复位电路和晶振 UCB转TTL ​​​电源电路 首先是电源电路&#xff0c;我们来看电源电路的原理图。 首先忽略D、D-&#xff0c;我们先来看电源本身&#xff0c;除了两头的接地和VCC&#xff08;这是USB接口的特性&#xff09;&#xff0c;我们观察到右…

51单片机wifi物联网的浇花控制系统设计

硬件设计 浇花控制系统采用51单片机与LCD液晶显示屏来实现&#xff0c;利用温度、湿度传感器及相应的显示、驱动执行机构、报警装置等实现温室作物生长环境控制器的设计。 硬件电路主要由51单片机最小系统lcd1602显示屏蜂鸣器报警模块设置按键微型水泵adc0832模数转换模…

毕业设计 远程智能浇花灌溉系统 - stm32 单片机 嵌入式 物联网

文章目录 0 前言1 简介2 主要器件3 实现效果4 设计原理5 部分关键代码5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学…

基于51单片机的智能浇花系统(可做毕设)

基于51单片机的智能浇花系统&#xff08;可做毕设&#xff09; 一、系统介绍二、仿真展示三、实物展示四、仿真过程五、代码1、ADC08322、LCD16023、按键4、水泵5、温湿度6、定时器7、main.c 五、完整工程 对LCD1602原理和操作掌握不好的可以看这篇&#xff1a; 快速掌握——LC…

毕设--自动浇花系统的设计

目录 毕设--自动浇花系统的设计1、作品实物图2、PCB原理图3、元器件清单4、土壤温湿度采集与显示5、硬件电路设计6、程序源码7、资料获取 毕设–自动浇花系统的设计 注&#xff1a;本毕设资源可在微信公众号&#xff1a;“Kevin的学习站” 中获取&#xff01; 1、作品实物图 2、…

单片机毕业设计 自动浇花灌溉系统设计

文章目录 1 简介2 主要器件3 实现效果4 设计原理5 关键代码 1 简介 Hi&#xff0c;大家好&#xff0c;今天向大家介绍一个学长做的单片机项目 基于单片机的自动浇花灌溉系统设计 大家可用于 课程设计 或 毕业设计 选题指导&#xff0c;项目分享&#xff1a; https://gitee…

基于android智能浇花装置,一种基于WiFi通讯远程控制的智能浇花装置的制作方法...

本实用新型涉及自动浇水装置技术领域&#xff0c;具体涉及一种基于WiFi 通讯远程控制的智能浇花装置。 背景技术&#xff1a; 花卉作为一种极具观赏性的植物&#xff0c;在室内和室外广泛种植。上班族工作紧张&#xff0c;空闲时间较少&#xff0c;长期不在家时需要花草被照料。…

基于51单片机的自动浇花系统

目录 一、项目需求 二、仿真 三、程序 四、资料清单 资料下载地址&#xff1a;基于51单片机的自动浇花系统 一、项目需求 1、自动检测土壤湿度、温度、光照强度&#xff1b; 2、土壤湿度过低驱动水泵进行浇花&#xff1b; 3、LCD1602显示当前土壤湿度、温度、光照强度…

【IoT开发】基于机智云物联网的智能浇花教程

摘要:随着近年来物联网技术的发展,相关的技术已经广泛应用于人们的生产和生活中。文章针对长期无人在家时花卉植物的浇水问题,设计了一套基于物联网的智能浇花系统。系统采用STM32与51增强型单片机作为控制器,esp8266物联网模块作为通信设备,底层采用MQTT协议,连接到物联网云平…

条件概率的链式法则

条件概率 条件概率是指事件A在事件B发生的条件下发生的概率。条件概率表示为&#xff1a;P&#xff08;A|B&#xff09;&#xff0c;读作“A在B发生的条件下发生的概率”。若只有两个事件A&#xff0c;B&#xff0c;那么&#xff0c; xx 事件发生时 yy 事件发生的概率: P(yy|x…

链式法则总结

链式法则&#xff08;chain rule&#xff09;微积分中求导法则&#xff0c;用于求复合函数的导数&#xff1b; 链式法则应用广泛&#xff0c;比如神经网络中的反向传播算法就是已链式法则为基础演变的&#xff1b;接下来先说说链式法则的概念然后通过链式法则的两种形式学习链式…