内罚函数法

外罚函数法的 \left \{ x_k \right \} 是从可行域 S 的外部逼近最优解 \bar{x} ,这样得到的近似最优解只是近似地满足约束条件。对于一些工程实际问题,这样的解是不可接受的,因为它虽是最优解,但并非可行解。

为了使迭代点总是可行的,本文介绍一种方法——内罚函数法。

内罚函数法:

内罚函数法在迭代过程中总是从可行点出发,并保持在可行域内部进行搜索,因此这种方法仅适用于只有不等式约束的最优化问题。

考虑问题:

\left\{\begin{matrix} min & f(x) & \\s.t. &g_i(x)\geq 0 &i=1,2,...,m \end{matrix}\right.

它的可行域 S 的内部定义为:int S = \left \{ x\in R^n|g_i(x)>0,i=1,2,...,m \right \}

罚函数定义为:G(x,r)=f(x)+rB(x)

其中,参数 r 是很小的正数,B(x) 是定义在 int S 上的非负实值函数,当 x 趋于可行域 S 的边界时,B(x)\rightarrow \infty 。

显然,罚函数 G(x,r) 对企图脱离可行域的点给予惩罚,相当于在可行域的边界上设置了障碍,不让迭代点穿越到可行域之外,因此,也称为障碍函数(Barrier function)。

下面介绍两种常用的障碍函数:

G(x,r)=f(x)+r\sum_{i=1}^{m}\frac{1}{g_i(x)}--------------倒数障碍函数

G(x,r)=f(x)-r\sum_{i=1}^{m}lng_i(x)---------对数障碍函数

由 G(x,r) 定义可知,r 取值越小,

问题\left\{\begin{matrix} min &G(x,r)=f(x)+rB(x) \\ s.t. & x\in S \end{matrix}\right. 的最优解越接近原问题\left\{\begin{matrix} min & f(x) & \\s.t. &g_i(x)\geq 0 &i=1,2,...,m \end{matrix}\right. 的最优解。

初始内点的选取:

在内罚函数中,必须先知道一个初始内点 x_0\in int S ,如果初始内点不能直观找出,必须要有一个求初始内点的算法。下面介绍一个寻找初始内点的迭代算法,它是基于内罚函数的思想而得到的。

算法步骤:

步骤1:给定初始点 x_0\in int S ,初始参数 r_1>0 ,缩小系数 \beta \in (0,1),允许误差\varepsilon >0,令 k=1;

步骤2:求解无约束优化问题\left\{\begin{matrix} min &G(x,r)=f(x)+rB(x) \\ s.t. & x\in S \end{matrix}\right. 得到它的最优解 x_k ;

步骤3:如果 r_kB(x_k)<\varepsilon,迭代停止,x_k 为原问题近似最优解,否则,令r_{k+1}=\beta r_{k},k=k+1,转步骤2。

例题解析:

例题1:利用对数障碍函数求解不等式约束优化问题:

\left\{\begin{matrix} min &f(x)=x_1+2x_2 & \\s.t. &-x_1^2+x_2\geq 0 ,x_1\geq 0 \end{matrix}\right.

要求 r_1=4,\beta =\frac{1}{2}

解:构造罚函数:

G(x,r)=f(x)-r_k(ln(-x_1^2+x_2)+ln(x_1))

\therefore \left\{\begin{matrix} \frac{\partial G }{\partial x_1}=1-r_k[\frac{-2x_1}{-x_1^2+x_2}+\frac{1}{x_1}]=0\\ \frac{\partial G }{\partial x_2}=2-r_k[\frac{1}{-x_1^2+x_2}]=0\end{matrix}\right.

\Rightarrow x_k=(\frac{\sqrt{16r_k+1}-1}{8},\frac{r_k}{2}+\frac{(\sqrt{16r_k+1}-1)^2}{64})

当 k\rightarrow \infty ,r_k\rightarrow 0,x_k\rightarrow \bar{x}=(0,0)^T

最优值为:f(\bar{x})=0

例题2:用倒数障碍法求解:

\left\{\begin{matrix} min &f(x)=\frac{1}{3}(x_1+1)^3+x_2 & \\s.t. &g_1(x)=x_1-1\geq 0 \\ &g_2(x)=x_2\geq 0 \end{matrix}\right.

x_0=(2,3)^T,r_1=9,\beta =\frac{1}{2}

解:构造倒数障碍函数:

G(x,r)=f(x)+r_k(\frac{1}{x_1-1}+\frac{1}{x_2})

\therefore \left\{\begin{matrix} \frac{\partial G }{\partial x_1}=(x_1+1)^2-r_k[\frac{1}{(x_1-1)^2}]=0\\ \frac{\partial G }{\partial x_2}=1-r_k[\frac{1}{x_2^2}]=0\end{matrix}\right.

\Rightarrow x_k=(\sqrt{1+\sqrt{r_k}},\sqrt{r_k})^T

当 k\rightarrow \infty ,r_k\rightarrow 0,x_k\rightarrow \bar{x}=(1,0)^T

最优值为:f(\bar{x})=\frac{8}{3}

总结:

内外罚函数法的比较:

内罚函数法外罚函数法
初始点

必须在可行域内部

可任取
面对对象求解不等式约束问题求解等式约束问题和不等式约束问题
近似解和最优解都在可行域内近似解不属于可行域,最优解有可能落在可行域
罚函数性质障碍函数在可行域内部可微的阶数与约束函数的相同罚函数一般只具有一阶偏导数,二阶偏导数在边界上一般不存在

(行文中若有纰漏,希望大家指正)

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

背对人潮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值