外罚函数法

求解约束最优化问题,一种途径是在可行域内寻找目标函数值下降得迭代点列(可行方向法),这种方法对于带非线性约束的最优化问题求解效果一般都不太理想。(这也就是为什么可行方向法中约束条件一般是线性约束的原因)。

本文学习求解有约束最优化的另一种方法,称为罚函数法。它的基本思想是用原问题的目标函数和约束函数构造新的目标函数——罚函数,从而将约束最优化问题转化为无约束最优化问题来求解。

外罚函数法:

本文我们先介绍外罚函数法。

考虑约束非线性最优化问题

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

其中 f(x) ,g_i(x)h_j(x) 都是定义在 R^n 上的实值连续函数,可行域为 S 。

罚函数是指利用目标函数 f(x) 和约束函数 g_i(x)h_j(x) 构造的,具有”惩罚性质“的辅助函数:

F(x)=F(f(x),g_i(x),h_j(x))

当 x\in S 时,当且仅当 F(x)=f(x),

当 x\notin S 时,F(x)> f(x),并且 F(x)-f(x) 随着 x 到 S 的距离增大而增大。

1,等式约束优化问题:

\left\{\begin{matrix} min & f(x) & \\s.t. & h_j(x)=0 & j=1,2,...,l \end{matrix}\right.

定义罚函数为:F_1(x,\sigma )=f(x)+\sigma \sum_{j=1}^{l}h_{j}^{2}(x),其中参数 \sigma 为罚因子(通常为一个大的正数)。

2,不等式约束优化问题:

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

定义罚函数为:F_2(x,\sigma )=f(x)+\sigma \sum_{i=1}^{m}[max\left \{ 0,-g_i(x) \right \}]^2,其中参数 \sigma 为罚因子(通常为一个大的正数)。

3,一般约束优化问题:

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

定义罚函数为:F_3(x,\sigma )=f(x)+\sigma P(x),其中参数 \sigma 为罚因子(通常为一个大的正数)。

P(x)=\sum_{i=1}^{m}\varphi [g_i(x)]+\sum_{j=1}^{l}\Psi [h_j(x)]

其中:

\begin{cases} \varphi (y)=0 & \text{ if } y\geq 0 \\ \varphi (y)> 0 & \text{ if } y> 0 \end{cases}, \begin{cases} \Psi (y)=0 & \text{ if } y= 0 \\ \Psi (y)> 0 & \text{ if } y\neq 0 \end{cases}

典型取法:\varphi(y)=[max(0,-y)]^\alpha ,\Psi (y)=\left | y \right |^\beta,其中 \alpha ,\beta \geq 1 通常取 1 或 2

定理1:设对于某个给定的 \sigma > 0 ,无约束优化问题 \min_{x\in R^n}F(x,\sigma )=f(x)+\sigma P(x) 的最优解为 \hat{x_\sigma },S 是原问题的可行域,那么:

(1)若 \hat{x_\sigma }\in S,则 \hat{x_\sigma } 必为原问题的最优解;

(2)\forall \sigma _1>\sigma,无约束问题\min_{x\in R^n}F(x,\sigma _1),存在最优解 \hat{x_\sigma } ,并且若 \hat{x_\sigma }\in S,则 \hat{x_{\sigma1}}\in S,即 \hat{x_{\sigma1} } 也是原问题的最优解。

引理:设 0<\sigma _k<\sigma _{k+1}x_k 和 x_{k+1} 分别是取罚因子 \sigma _k 和 \sigma _{k+1} 时无约束优化问题 \min_{x\in R^n}F(x,\sigma )=f(x)+\sigma P(x) 的最优解,则下列各式成立:

(1)F(x_k,\sigma _k)\leq F(x_{k+1},\sigma _{k+1}) ———— F 是单调增数列

(2)P(x_k)\geq P(x_{k+1}) ————P 是单调减数列

(3)f(x_k)\leq f(x_{k+1}) ————f 是单调增数列

证明:

(1)\because x_k 是 min F(x,\sigma ) 取罚因子 \sigma _k 时的最优解

\therefore F(x_k,\sigma _k)\leq F(x,\sigma _{k}),\forall x \in S

x_k 为 x_{k+1},有:

F(x_k,\sigma _k)\leq F(x_{k+1},\sigma _{k})=f(x_{k+1})+\sigma _kP(x_{k+1})\leq f(x_{k+1})+\sigma _{k+1}P(x_{k+1})=F(x_{k+1},\sigma _{k+1})

\therefore F(x_k,\sigma _k) 是单调增数列。

(2)\because x_k 和 x_{k+1} 分别是 \min_{x\in R^n}F(x,\sigma )=f(x)+\sigma P(x) 取罚因子 \sigma _k 和 \sigma _{k+1} 时的最优解

\therefore f(x_{k})+\sigma _kP(x_{k})\leq f(x_{k+1})+\sigma _{k}P(x_{k+1})

f(x_{k+1})+\sigma _{k+1}P(x_{k+1})\leq f(x_{k})+\sigma _{k+1}P(x_{k})

将上面两式分别相加,消去相同的项,得:

(\sigma _{k+1}-\sigma _{k})[P(x_k)-P(x_{k+1})]\geq 0

\because \sigma _{k+1}-\sigma _{k}> 0

\therefore P(x_k)\geq P(x_{k+1})

\therefore P(x_{k}) 是单调减数列

(3)\because f(x_{k})+\sigma _kP(x_{k})\leq f(x_{k+1})+\sigma _{k}P(x_{k+1})

\Rightarrow f(x_{k})- f(x_{k+1})\leq \sigma _k[P(x_{k+1})-P(x_{k})]

\because \sigma _k> 0,P(x_{k+1})-P(x_k)\leq 0

\therefore f(x_k)- f(x_{k+1})\leq0

\therefore f(x_k) 是单调增数列

算法步骤:

步骤1:选取初始点 x_0 ,初始罚因子 \sigma _1> 0 ,放大系数 \alpha >1,允许误差 \varepsilon >0,令 k =1;

步骤2:以 x_{k-1} 为初始点,求解 \min_{x\in R^n}F(x,\sigma _k),求得最优解 x_{k} ;

步骤3:若 \sigma _kP(x_k)< \varepsilon,停止,输出 x_k ;否则,令 \sigma _{k+1}=\alpha \sigma _{k},k=k+1,返回步骤2。 

例题解析:

例题:用外罚函数法求解约束优化问题:

\left\{\begin{matrix} min & f(x)=\frac{1}{2}x_{1}^{2}+\frac{1}{6}x_{2}^{2} \\s.t. & x_1+x_2=1 \end{matrix}\right.,\alpha =2,\sigma _1=0.05,\varepsilon =10^{-5}

解:定义罚函数:

F(x,\sigma _k)=\frac{1}{2}x_{1}^{2}+\frac{1}{6}x_{2}^{2} +\sigma _1(x_1+x_2-1)^2

对应的无约束优化问题是:\min_{x\in R^n}F(x,\sigma _k)

\bigtriangledown F(x,\sigma _k)=0 得最优解

\left\{\begin{matrix} \frac{\partial F}{\partial x_1}=x_1+2\sigma _1(x_1+x_2-1)=0\\ \frac{\partial F}{\partial x_2}=\frac{x_2}{3}+2\sigma _1(x_1+x_2-1)=0 \end{matrix}\right.

\Rightarrow x_{k(\sigma )}=(\frac{2\sigma _k}{1+8\sigma _k},\frac{6\sigma _k}{1+8\sigma _k})^T,\sigma _kP(x_k)=\frac{\sigma _k}{(1+8\sigma _k)^2}

依次对 k=1,2,...,计算得到要使 \sigma _kP(x_k)< 10^{-5}

x_{16}=(0.2499,0.7499)^T

x_1^k+x_2^k=\frac{8\sigma _k}{1+8\sigma _k}< 1

总结:

优点:(1)对初始点无要求;(2)既可用于求解等式约束,也可用于求解不等式约束。

缺点:(1)求出的最优解不一定是可行解;(2)罚函数在可行域边界上往往不可导。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

背对人潮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值