约束规划问题的罚函数解法

本文中我们考虑如下有约束的一般优化问题的求解方法:
minf(x)s. t. ci(x)=0,iE={1,2,,l}ci(x)0,iI={l+1,l+2,,l+m}xRn\begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{l+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} 其中,可行域 DD 记为:
D={xci(x)=0,iE;ci(x)0,iI;xRn}D=\{x | c_{i}(x)=0, i\in E; c_{i}(x)\leq 0, i\in I; x\in\mathbb{R}^{n}\}

求解约束优化问题要比求解无约束优化问题复杂困难得多。一般来说,求解约束优化问题的方法大致分两类:一类是此文中介绍的直接求解法,另一类是本文中即将介绍的罚函数法。

罚函数法是利用目标函数 f(x)f(x) 和约束函数 c(x)c(x),构造具有惩罚性质的函数 P(x)=Pˉ(f(x),c(x))P(x)=\bar{P}(f(x), c(x)) ,使得原约束优化问题转化为求 P(x)P(x) 最优解的无约束优化问题。以下讨论中,我们假设所有函数都是连续的

外罚函数法

外罚函数是一类不可行点的方法,其基本思想是:在求解约束优化的问题时,通过对不可行的迭代点施加惩罚,并随着迭代点的进展,增大惩罚量,迫使迭代点逐步向可行域靠近。

等式约束的优化问题

minf(x),xRns. t. ci(x)=0,i=1,2,,l\begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)=0, i=1,2,\dots,l \end{aligned}P~(x)=i=1lci(x)β,β1\tilde{P}(x)=\sum_{i=1}^{l}|c_{i}(x)|^{\beta},\quad \beta\geq 1定义如下形式的外罚函数P(x,σ)=f(x)+σP~(x)=f(x)+σi=1lci(x)β,β1\begin{aligned} P(x,\sigma) &= f(x)+\sigma \tilde{P}(x) \\ &= f(x)+\sigma\sum_{i=1}^{l}|c_{i}(x)|^{\beta},\quad \beta\geq 1 \end{aligned}其中 σ>0\sigma>0 是一个参数。显然,当 xx 为可行点时,P~(x)=0\tilde{P}(x)=0 ;当 xx 不是可行点时 P~(x)>0\tilde{P}(x)>0 ,于是 P(x,σ)>f(x)P(x,\sigma)>f(x) 。特别的,随着 σ\sigma 增大,P(x)P(x) 也在增大。所以,要使 P(x,σ)P(x,\sigma) 取到极小值, P~(x)\tilde{P}(x) 应充分小,即 P(x,σ)P(x,\sigma) 的极小点应充分逼近可行域。于是,上述等式约束优化问题转化为无约束优化的问题
minx{P(x,σ)=f(x)+σP~(x)}\min_{x}\{P(x,\sigma)=f(x)+\sigma\tilde{P}(x) \}通常取β=2\beta=2

例 1:求解下列约束优化问题min{f(x)=x1+x2}s. t. c(x)=x2x12=0\begin{aligned}\min\{f(x)=x_{1}+x_{2}\}\\\text{s. t. } c(x)=x_{2}-x_{1}^{2} =0 \end{aligned}解:构造外罚函数P(x,σ)=x1+x2+σ(x2x12)2P(x,\sigma)=x_{1}+x_{2}+\sigma(x_{2}-x_{1}^{2})^{2} 利用解析法求解Px1=14σx1(x2x12),Px2=1+2σ(x2x12)\frac{\partial P}{\partial x_{1}}=1-4\sigma x_{1}(x_{2}-x_{1}^{2}), \frac{\partial P}{\partial x_{2}}=1+2\sigma(x_{2}-x_{1}^{2})xP(x,σ)=0\nabla_{x}P(x,\sigma)=0得到x1(σ)=12,x2(σ)=1412σx_{1}(\sigma)=-\frac{1}{2}, x_{2}(\sigma)=\frac{1}{4}-\frac{1}{2\sigma}再令σ+\sigma\to+\inftyx(σ)=(12,14)T=xP(x(σ),σ)=14=f(x)\begin{aligned}x(\sigma)=\left(-\frac{1}{2}, \frac{1}{4} \right)^{T}=x^{*} \\ P(x(\sigma), \sigma)=-\frac{1}{4}=f(x^{*})\end{aligned}

不等式约束的优化问题

我们考虑如下不等式约束的优化问题
minf(x),xRns. t. ci(x)0,i=1,2,,l\begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)\leq 0, i=1,2,\dots,l \end{aligned}P~(x)=i=1l[max(0,ci(x))]α,α1\tilde{P}(x)=\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1定义如下形式的外罚函数
P(x,σ)=f(x)+σi=1l[max(0,ci(x))]αα1P(x,\sigma)=f(x)+\sigma\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha}\quad \alpha\geq 1此时的外罚函数性质与上一节类似,通常取 α=2\alpha=2

一般约束的优化问题

考虑一般的约束优化问题
minf(x)s. t. ci(x)=0,iE={1,2,,l}ci(x)0,iI={L+1,l+2,,l+m}xRn\begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{L+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned}P~(x)=i=1lci(x)β+i=1l[max(0,ci(x))]α,α1,β1\tilde{P}(x)=\sum_{i=1}^{l}|c_{i}(x)|^{\beta}+\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1,\beta\geq 1类似地,定义如下形式的外罚函数P(x,σ)=f(x)+σi=1lci(x)β+i=1l[max(0,ci(x))]α,α1,β1P(x,\sigma)=f(x)+\sigma\sum_{i=1}^{l}|c_{i}(x)|^{\beta}+\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1,\beta\geq 1上述罚函数性质与之前的讨论类似。通常 α=β=2\alpha=\beta =2。可见,外罚函数的最优解在 σ+\sigma\to+\infty的过程中一直在可行域外部取点,直到趋近最优解 xx^{*}。所以之中方法为外罚函数法,简称外点法P(x,σ)P(x,\sigma) 为外罚函数,或叫增广目标函数,σ\sigma为惩罚因子,P~(x)\tilde{P}(x)为惩罚项。

对于比较复杂的约束,通常采用迭代的方法:

  1. 给定初始点 x0x^{0},设ϵ>0,c>1\epsilon >0, c>1 为给定实数,选择序列 {σk}\{\sigma_{k}\},使得σk+\sigma_{k}\to+\infty,令 k=1k=1
  2. xk1x^{k-1} 为初始点,求解无约束优化问题min{P(x,σk)=f(x)+σkP~(x)}\min\{P(x,\sigma_{k})=f(x)+\sigma_{k}\tilde{P}(x) \}得到最优解xkx^{k}
  3. σkP~(xk)<ϵ\sigma_{k}\tilde{P}(x^{k})<\epsilon,则停止迭代,xkx^{k} 作为原问题的最优解;否则,令σk+1=cσk\sigma_{k+1}=c\sigma_{k}k:=k+1k:=k+1,转至步骤2。

对于外罚函数的算法收敛性与外罚函数的病态性质这里不作讨论。 使用外罚函数法时,选取 σ1\sigma_{1}过大,或者 σk\sigma_{k}增长过快可以使算法快速收敛,但很难精确地求解相应的无约束极小问题;反之,可以使求得P(x,σk+1)P(x,\sigma_{k+1})的极小点变得容易,但收敛太慢。通常取 σk=0.1×2k1\sigma_{k}=0.1\times 2^{k-1}

内罚函数法

在外罚函数法中,近似最优解一般只能近似地满足约束条件,对于某些实际问题这样的近似最优解释不可接受的。内罚函数法是一类保持严格可行性的方法。其基本思想是:严格要求迭代点在可行域内移动,当迭代点接近可行域边界时,有无穷大的障碍,迫使迭代点返回可行域的内部。

考虑不等式约束的优化问题,可行域内部记为:D0={xRnci(x)<0,i=1,2,,l}D^{0}=\{x\in\mathbb{R}^{n} | c_{i}(x)<0, i=1,2,\dots,l\}B(x)=i=1lln(ci(x))B(x)=-\sum_{i=1}^{l}\ln(-c_{i}(x)) 定义如下形式的内罚函数:
P(x,r)=f(x)+rB(x)=f(x)ri=1lln(ci(x))\begin{aligned}P(x,r) &=f(x)+rB(x)\\ &=f(x)-r\sum_{i=1}^{l}\ln(-c_{i}(x))\end{aligned}其中 r>0r>0 是一参数。

显然,当 xx 在可行域内部,B(x)B(x)为一正数,当 rr 趋近于 00 时, P(x,r)P(x,r) 的极小点就会趋近于优化问题的极小点。至少有一个 ci(x)c_{i}(x) 趋于 00 时,会导致 B(x)B(x) 剧烈增大,迫使极小点落在可行域的内部。于是,原优化问题就转化为一下形式的优化问题:
minP(x,r),xRns. t. ci(x)<0,i=1,2,,l\begin{aligned} &\min P(x,r), x\in\mathbb{R}^{n}\\ \text{s. t. }& c_{i}(x)<0, i=1,2,\dots, l \end{aligned} 注意使用内罚函数时,可行域由 DD 变成 D0D^{0} 。内罚函数法简称内点法,B(x)B(x) 为对数障碍函数。(这里不介绍倒数障碍函数,因其用得不多性质也不佳)

例 2:用内罚函数法求解约束问题min{f(x)=x12+2x22}s. t. x1+x210\begin{aligned} &\min\{f(x)=x_{1}^{2}+2x_{2}^{2}\} \\ \text{s. t. }& x_{1}+x_{2}-1\geq 0 \end{aligned} 解:构造内罚函数
P(x(r),r)=x12+2x22rln(x1+x21)P(x(r),r)=x_{1}^{2}+2x_{2}^{2}-r\ln(x_{1}+x_{2}-1)利用解析法:
xP(x(r),r)=(2x1rx1+x21,4x2rx1+x21)T=0\nabla_{x}P(x(r),r)=\left( 2x_{1}-\frac{r}{x_{1}+x_{2}-1}, 4x_{2}-\frac{r}{x_{1}+x_{2}-1} \right)^{T}=0
x(r)=(1+1+3r3,1+1+3r6)Tx(r)=\left( \frac{1+\sqrt{1+3r}}{3}, \frac{1+\sqrt{1+3r}}{6} \right)^{T}r0r\to 0 ,则
x(r)x=(23,13)T,P(x(r),r)f(x)=23x(r)\to x^{*}=\left(\frac{2}{3}, \frac{1}{3}\right)^{T}, P(x(r),r)\to f(x^{*})=\frac{2}{3}

下面给出内罚函数法的算法,此处同样不讨论其收敛性和病态性质。

  1. 给定初始点 x0D0x^{0}\in D^{0} ,设 ϵ>0,0<c<1\epsilon>0, 0<c<1为给定实数,选择正值序列 {rk}\{r_{k}\} 使 rk0r_{k}\to0,令 k=1k=1
  2. xk1x^{k-1} 为初始点,求解约束优化问题min{P(x,rk)=f(x)+rkB(x)}s. t. xD0\begin{aligned} &\min \{P(x,r_{k})=f(x)+r_{k}B(x)\} \\ \text{s. t. }& x\in D^{0} \end{aligned}得到最优解 xkx^{k}
  3. rkB(xk)<ϵr_{k}B(x^{k})<\epsilon , 则停止迭代,xkx^{k} 作为原问题的最优解;否则,令 rk+1=crkr_{k+1}=cr_{k} , k:=k+1k:=k+1,转至步骤2。

注意由于可行域发生了变化,D0D^{0}不能为空,因此内罚函数法不能处理等式约束问题

乘子法

内外罚函数法的主要缺点是当罚函数中的 σ+\sigma\to+\infty 或者 r0r\to0 时,其Hesse矩阵出现病态,给无约束问题的数值求解带来很大困难。为克服这一缺点,本节介绍乘子法。乘子法的原理与二阶充分条件与Lagrange函数的性质有关,时间问题这里不做详细推导,仅给出定理。

等式约束问题的乘子法

定理
xx^{*}, λ\lambda^{*} 满足约束问题
minf(x),xRns. t. ci(x)=0,i=1,2,,l\begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)=0, i=1,2,\dots,l \end{aligned}的二阶充分条件,则存在 σ>0\sigma^{*}>0,使当 σσ\sigma\geq \sigma^{*} 时, xx^{*} 是无约束问题
min{ϕ(x,λ,σ)=f(x)+i=1lλici(x)+σ2i=1lci2(x)}\min\{\phi(x,\lambda^{*},\sigma) = f(x)+\sum_{i=1}^{l}\lambda_{i}^{*}c_{i}(x)+\frac{\sigma}{2}\sum_{i=1}^{l}c_{i}^{2}(x) \}的严格局部解。反之,若 xkx^{k}ϕ(x,λ,σk)\phi(x,\lambda^{*},\sigma_{k}) 的极小点,并且 c(xk)=0c(x^{k})=0,则 xkx^{k} 是上述约束问题的最优解。

ϕ()\phi(\cdot) 被称为增广Lagrange函数乘子罚函数λ\lambda^{*} 实际上是最优解 xx^{*} 处的Lagrange乘子。我们可以通过取一个适当大的 σ\sigma ,然后调整 λ\lambda 使它逐渐趋近于 λ\lambda^{*} ,就能得到约束问题的最优解,这是乘子法的基本思想。

下面给出具体迭代算法:

  1. 给定初始点 x0x^{0} ,设初始乘子 λ1\lambda^{1} ,精度要求为 ϵ\epsilon ,放大系数为 cc,选择序列 {σk}\{\sigma_{k}\},使 σk+\sigma_{k}\to+\infty,令 k=1k=1
  2. xk1x^{k-1} 为初始点,求解无约束优化问题 minxϕ(x,λk,σk)\min_{x}\phi(x,\lambda^{k},\sigma_{k})得到最优解 xkx^{k}
  3. [i=1lci2(xk)]12ϵ[\sum_{i=1}^{l}c_{i}^{2}(x_{k})]^{\frac{1}{2}}\leq \epsilon,则停止迭代,得到近似解 xkx^{k};否则,转到步骤4。
  4. λik+1=λik+σkci(xk)\lambda_{i}^{k+1}=\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})k:=k+1k:=k+1,转到步骤2。

只有不等式约束时的乘子法

现在我们考虑只有不等式约束的问题:
minf(x),xRns. t. ci(x)0,i=1,2,,l\begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)\leq 0, i=1,2,\dots,l \end{aligned}利用等式约束的结果,引入松弛变量 ziz_{i},将上述问题转化为等式约束问题
minf(x),xRns. t. ci(x)+zi2=0,i=1,2,,l\begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)+z_{i}^{2}= 0, i=1,2,\dots,l \end{aligned}由于变量增加了,因此问题的维度由 n+ln+l 变成 nˉ+2l\bar{n}+2l 。这使得问题变得复杂。为了克服此问题,我们可以先关于 zz 求极小 zˉ\bar{z},再将其代入原问题。此处同样不讨论具体细节。

下面给出具体算法:

  1. 给定初始点 x0x^{0} ,设初始乘子 λ1\lambda^{1} ,精度要求 ϵ\epsilon ,放大系数为 cc ,选择序列 {σk}\{\sigma_{k}\},使 σk+\sigma_{k}\to+\infty,令 k=1k=1
  2. xk1x^{k-1} 为初始点,求解无约束规划问题:minxϕ(x,λk,σk)\min_{x}\phi(x,\lambda^{k},\sigma_{k})得到最优解 xkx^{k}
  3. {i=1l[max(ci(xk),λikσk)]2}12ϵ\left\{\sum_{i=1}^{l}\left[\max\left(c_{i}(x^{k}), -\frac{\lambda_{i}^{k}}{\sigma_{k}}\right)\right]^{2}\right\}^{\frac{1}{2}}\leq \epsilon,则停止迭代,得近似解 xkx^{k} ;否则,转至步骤4。
  4. λik+1=max{0,λik+σkci(xk)},k:=k+1\lambda_{i}^{k+1}=\max\{0, \lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})\}, k:=k+1,转至步骤2。

一般问题的乘子法求解

对于一般约束优化问题:
minf(x)s. t. ci(x)=0,iE={1,2,,l}ci(x)0,iI={l+1,l+2,,l+m}xRn\begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{l+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} 乘子罚函数为
ϕ(x,λ,σ)=f(x)+i=1lλici(x)+σ2i=1lci2(x)+12σi=l+1l+m{[max(0,λi+σci(x))]2λi2}\phi(x,\lambda,\sigma)=f(x)+\sum_{i=1}^{l}\lambda_{i}c_{i}(x)+\frac{\sigma}{2}\sum_{i=1}^{l}c_{i}^{2}(x)+\frac{1}{2\sigma}\sum_{i=l+1}^{l+m}\{[\max(0, \lambda_{i}+\sigma c_{i}(x))]^{2}-\lambda_{i}^{2}\}其乘子迭代公式为:
λik+1=λik+σkci(xk),i=1,2,,lλik+1=max{0,λik+σkci(xk)},i=l+1,l+2,,l+m\begin{aligned}&\lambda_{i}^{k+1}=\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k}),\quad &i=1,2,\dots,l\\&\lambda_{i}^{k+1}=\max\{0,\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})\},\quad &i=l+1,l+2,\dots,l+m \end{aligned}终止准则为:
{i=1lci2(xk)+i=l+1l+m[max(ci(xk),λikσk)]2}12ϵ\left\{\sum_{i=1}^{l}c_{i}^{2}(x^{k})+\sum_{i=l+1}^{l+m}\left[\max\left(c_{i}(x^{k}), -\frac{\lambda_{i}^{k}}{\sigma_{k}}\right)\right]^{2}\right\}^{\frac{1}{2}}\leq\epsilon

关于Lagrange乘子法更一般的介绍可参考此文

发布了64 篇原创文章 · 获赞 83 · 访问量 17万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章