七、约束优化算法

本文介绍了约束优化问题,特别是等式约束和不等式约束优化问题的解决方法。通过对目标函数添加罚项,将约束问题转化为无约束问题求解。等式约束的二次罚函数法中,通过增加罚因子使解趋向于可行域。不等式约束则使用带有最大值函数的二次罚函数,只惩罚超出限制的部分。文章还讨论了算法的收敛性和实施细节,以及罚因子选取的影响。
摘要由CSDN通过智能技术生成

大量的数学问题需要解决 OvO

这一节考虑约束优化问题:

min ⁡ f ( x ) s . t . x ∈ X ( 7.0.1 ) \min\quad f(x)\quad\quad\quad\quad\quad\quad\quad\\s.t. \quad x\in\mathcal{X}\quad\quad\quad\quad(7.0.1) minf(x)s.t.xX(7.0.1)

这里 x ⊂ R n x\subset\mathbb{R}^n xRn为问题的可行域.与无约束问题不同,约束优化问题中自变量 x x x不能任意取值,这导致许多无约束优化算法不能使用.例如梯度法中沿着负梯度方向下降所得的点未必是可行点,要寻找的最优解处目标函数的梯度也不是零向量.这使得约束优化问题比无约束优化问题要复杂许多.这一节会介绍一些罚函数法,它们将约束作为惩罚项加到目标函数中,从而转化为熟悉的无约束优化问题求解.此外我们还针对线性规划这一特殊的约束优化问题介绍内点法,它的思想可以被应用到很多一般问题的求解.

1. 罚函数法

1.1 等式约束的二次罚函数法

考虑一种简单的情况,假设问题约束中仅含等式约束,即考虑问题:

min ⁡ f ( x ) s . t . c i ( x ) = 0 , i ∈ ε ( 7.1.1 ) \min\quad f(x)\quad\quad\quad\quad\quad\quad\quad\\s.t. \quad c_i(x)=0,\quad i\in\varepsilon\quad\quad\quad\quad(7.1.1) minf(x)s.t.ci(x)=0,iε(7.1.1)

其中变量 x ∈ R n x\in\mathbb{R}^n xRn ε \varepsilon ε为等式约束的指标集, c i ( x ) ci(x) ci(x)为连续函数.在某些特殊场合下,可以通过直接求解(非线性)方程组 c i ( x ) = 0 ci(x) = 0 ci(x)=0消去部分变量,将其转化为无约束问题.但对一般的函数 c i ( x ) ci(x) ci(x)来说,变量消去这一操作是不可实现的,我们必须采用其他方法来处理这种问题.

罚函数法的思想是将约束优化问题 (7.1.1) 转化为无约束优化问题来进行求解.为了保证解的逼近质量,无约束优化问题的目标函数为原约束优化问题的目标函数加上与约束函数有关的惩罚项.对于可行域外的点,惩罚项为正,即对该点进行惩罚;对于可行域内的点,惩罚项为 0,即不做任何惩罚.因此,惩罚项会促使无约束优化问题的解落在可行域内.

对于等式约束问题,惩罚项的选取方式有很多,结构最简单的是二次函数.这里给出二次罚函数的定义.

定义7.1 (等式约束的二次罚函数)

对等式约束最优化问题 (7.1.1),定义二次罚函数:

P E ( x , σ ) = f ( x ) + 1 2 σ ∑ i ∈ ε c i 2 ( x ) ( 7.1.2 ) P_E(x,\sigma)=f(x)+\frac{1}{2}\sigma\sum\limits_{i\in\varepsilon}c_i^2(x)\quad\quad\quad\quad(7.1.2) PE(x,σ)=f(x)+21σiεci2(x)(7.1.2)

其中等式右端第二项称为惩罚项, σ > 0 σ > 0 σ>0称为罚因子.

由于这种罚函数对不满足约束的点进行惩罚,在迭代过程中点列一般处于可行域之外,因此它也被称为外点罚函数.二次罚函数的特点如下:对于非可行点而言,当 σ 变大时,惩罚项在罚函数中的权重加大,对罚函数求极小,相当于迫使其极小点向可行域靠近;在可行域中, P E ( x , σ ) P_E(x,σ) PE(x,σ) 的全局极小点与约束最优化问题 (7.1.1) 的最优解相同.

为了直观理解罚函数的作用,给出一个例子.

例7.1 考虑优化问题

min ⁡ x + 3 y s . t . x 2 + y 2 = 1 \min\quad x+\sqrt{3}y\\s.t. \quad x^2+y^2=1 minx+3 ys.t.x2+y2=1

容易求出该问题最优解为 ( − 1 2 , − 3 2 ) T (-\frac{1}{2},-\frac{\sqrt{3}}{2})^T (21,23 )T,考虑二次罚函数:

P E ( x , y , σ ) = x + 3 y + σ 2 ( x 2 + y 2 − 1 ) 2 P_E(x,y,\sigma)=x+\sqrt{3}y+\frac{\sigma}{2}(x^2+y^2-1)^2 PE(x,y,σ)=x+3 y+2σ(x2+y21)2

并在图7.1中绘制出 σ = 1 \sigma=1 σ=1 σ = 10 \sigma=10 σ=10对应的罚函数的等高线(怎么获取函数的等高线,以及怎么从函数的等高线获取信息?)。可以看出,随着 σ σ σ增大,二次罚函数 P E ( x , y , σ ) P_E(x,y,σ) PE(x,y,σ) 的最小值和原问题最小值越来越接近,但最优点附近的等高线越来越趋于扁平,这导致求解无约束优化问题的难度变大(为什么等高线扁平会使得求解问题变难?).此外,当 σ = 10 时函数出现了一个极大值,罚函数图形在 ( − 1 2 , − 3 2 ) T (-\frac{1}{2},-\frac{\sqrt{3}}{2})^T (21,23 )T附近出现了一个鞍点.

在这里插入图片描述

从以上例子知道,给定罚因子 σ,我们可通过求解 P E ( x , σ ) P_E(x,σ) PE(x,σ) 的最小值点作为原问题的近似解.但实际情况并不总是这样,下面这个例子表明,当 σ选取过小时罚函数可能无下界.

例7.2 考虑优化问题:

min ⁡ − x 2 + 2 y 2 s . t . x = 1 \min\quad -x^2+2y^2\\s.t. \quad x=1 minx2+2y2s.t.x=1

通过消去变量容易得知最优解就是 ( 1 , 0 ) T (1, 0)^T (1,0)T.但考虑罚函数:

P E ( x , y , σ ) = − x 2 + 2 y 2 + σ 2 ( x − 1 ) 2 P_E(x,y,\sigma)=-x^2+2y^2+\frac{\sigma}{2}(x-1)^2 PE(x,y,σ)=x2+2y2+2σ(x1)2

对任意的 σ ≤ 2 \sigma\le2 σ2,该罚函数是无界(函数是否有界怎么判断)的。

出现以上现象的原因是当罚因子过小时,不可行点处的函数下降抵消了罚函数对约束违反的惩罚.实际上所有外点罚函数法均存在这个问题,因此 σ 的初值选取不应该太小.

我们先在算法7.1中给出等式约束的二次罚函数法,之后对每一步进行具体解释:

在这里插入图片描述
算法7.1的执行过程比较直观:即先选取一系列指数增长的罚因子 σ k σ_k σk,然后针对每个罚因子求解二次罚函数 P E ( x , σ k ) P_E(x,σ_k) PE(x,σk) 的最小值点(或局部极小值点).这种逐步增加罚因子的做法在实际中被广泛使用,例如在 LASSO 问题求解中这一策略被称为连续化(Continuation).算法第三行中 argmin 的含义是如下情况之一:

  1. x k + 1 x^{k+1} xk+1是罚函数 P E ( x , σ k ) P_E(x,σ_k) PE(x,σk) 的全局极小解
  2. x k + 1 x^{k+1} xk+1是罚函数 P E ( x , σ k ) P_E(x,σ_k) PE(x,σk) 的局部极小解
  3. x k + 1 x^{k+1} xk+1不是罚函数 P E ( x , σ k ) P_E(x,σ_k) PE(x,σk) 的严格的极小解,但近似满足一阶最优性条件 ∇ x P E ( x k + 1 , σ k ) ≈ 0 \nabla_xP_E(x^{k+1},\sigma_k)\approx0 xPE(xk+1,σk)0

根据前面的叙述,在算法7.1中需要注意如下三点:第一,对参数 σk 的选取需要非常小心,若 σk 增长太快,则子问题不易求解(具体分析见下一小节末尾对算法数值困难的讨论).若增长太慢,则算法需要的外迭代数(算法中的 while 循环)会增多.一个比较合理的取法是根据当前 PE(x,σk) 的求解难度来确定 σk 的增幅,若当前子问题收敛很快,可以在下一步选取较大的σk+1,否则就不宜过分增大 σk.第二,在前面的例子中我们提到了PE(x,σ)在 σ 较小时可能无界,此时迭代就会发散.当求解子问题时,一旦检测到迭代点发散就应该立即终止迭代并增大罚因子.第三,子问题求解的精度必须足够精确,为保证收敛,子问题求解误差需要趋于零.

1.2 收敛性分析

这部分讨论等式约束的二次罚函数法的收敛性。为了讨论方便,我们假设对每个 σ k σ_k σk P E ( x , σ k ) P_E(x,σ_k) PE(x,σk) 的最小值点都是存在的.注意这个假设对某些优化问题是不对的,其本质原因是因为二次罚函数的惩罚力度不够,因此我们不会使用二次罚函数法去求解不满足此假设的优化问题.

定理7.1(二次罚函数法的收敛性)

x k + 1 x^{k+1} xk+1 P E ( x , σ k ) P_E(x,σ_k) PE(x,σk) 的全局极小解, σ k σ_k σk 单调上升趋于无穷,则 { x k } \{x^k\} {xk} 的每个极限点 x ∗ x^∗ x 都是原问题的全局极小解.

证明:设 x ‾ \overline{x} x是原问题(7.1.1)的全局极小解,即:

f ( x ‾ ) ≤ f ( x ) , ∀ x 满 足 c i ( x ) = 0 , i ∈ ε f(\overline{x})\le f(x),\quad\forall x满足c_i(x)=0,i\in\varepsilon f(x)f(x),xci(x)=0,iε

由定理条件, x k + 1 x^{k+1} xk+1 P E ( x , σ k ) P_E(x,\sigma_k) PE(x,σk)的全局极小值,我们有 P E ( x k + 1 , σ k ) ≤ P E ( x ‾ , σ k ) P_E(x^{k+1},\sigma_k)\le P_E(\overline{x},\sigma_k) PE(xk+1,σk)PE(x,σk),即:

f ( x k + 1 ) + σ k 2 ∑ i ∈ ε c i 2 ( x k + 1 ) ≤ f ( x ‾ ) + σ k 2 ∑ i ∈ ε c i 2 ( x ‾ ) = f ( x ‾ ) ( 7.1.3 ) f(x^{k+1})+\frac{\sigma_k}{2}\sum\limits_{i\in\varepsilon}c_i^2(x^{k+1})\le f(\overline{x})+\frac{\sigma_k}{2}\sum\limits_{i\in\varepsilon}c_i^2(\overline{x})=f(\overline{x})\quad(7.1.3) f(xk+1)+2σkiεci2(xk+1)f(x)+2σkiεci2(x)=f(x)(7.1.3)

整理可得:

$$$$
在这里插入图片描述

1.3 一般约束问题的二次罚函数法

不等式约束优化问题有如下形式:

min ⁡ f ( x ) s . t . c i ( x ) ≤ 0 , i ∈ I ( 7.1.12 ) \min\quad f(x)\quad\quad\quad\quad\quad\quad\quad\\s.t. \quad c_i(x)\le0,\quad i\in\mathcal{I}\quad\quad\quad\quad(7.1.12) minf(x)s.t.ci(x)0,iI(7.1.12)

它和等式约束优化问题最大的不同就是允许 c i ( x ) < 0 c_i(x) < 0 ci(x)<0 发生,而若采用原来的方式定义罚函数为 ∥ c ( x ) ∥ 2 \Vert c(x)\Vert^2 c(x)2,它也会惩罚 c i ( x ) < 0 c_i(x) < 0 ci(x)<0 的可行点,这显然不是我们需要的。针对问题(7.1.12),我们必须对原有二次罚函数进行改造来得到新的二次罚函数,它应该具有如下特点:仅仅惩罚 c i ( x ) > 0 c_i(x) > 0 ci(x)>0 的那些点,而对可行点不作惩罚.

定义7.2 (不等式约束的二次罚函数)

对不等式约束最优化问题 (7.1.12),定义二次罚函数:

P I ( x , σ ) = f ( x ) + 1 2 σ ∑ i ∈ I c i ~ 2 ( x ) ( 7.1.13 ) P_I(x,\sigma)=f(x)+\frac{1}{2}\sigma\sum\limits_{i\in\mathcal{I}}\tilde{c_i}^2(x)\quad\quad\quad\quad\quad(7.1.13) PI(x,σ)=f(x)+21σiIci~2(x)(7.1.13)

其中等式右端第二项称为惩罚项, c i ~ ( x ) \tilde{c_i}(x) ci~(x)的定义为:

c i ~ ( x ) = max ⁡ { c i ( x ) , 0 } ( 7.1.14 ) \tilde{c_i}(x)=\max\{c_i(x),0\}\quad\quad\quad\quad\quad(7.1.14) ci~(x)=max{ci(x),0}(7.1.14)

常数 σ > 0 \sigma>0 σ>0称为罚因子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值