罚函数法
罚函数法
求解约束优化问题:
\begin{align*}
\mathop{min}\limits_{x} & \quad f(x)\\
s.t. & \quad x \in S
\end{align*}
其中,$f$是连续函数。
可以采用罚函数法将约束优化问题转变为无约束优化问题,具体方法是对目标函数加上惩罚项:
$$q(c_k,x)=f(x)+c_kP(x)$$
其中:1)数列$\{c_k\}\subset \mathbb{R}$,且$c_k \uparrow,c_k\rightarrow +\infty$。2)$P$连续,$P \geq 0$,且$P(x)=0 \iff x \in S$。
对任意的$k$,求解$ min_{x} q(c_k,x)$得到的解记为$x_k$。
引理
$$q(c_k,x_k)\leq q(c_{k+1},x_{k+1})$$
proof:
\begin{align*}
q(c_k,x_k)=&f(x_k)+c_kP(x_k)\\
\leq & f(x_{k+1})+c_kP(x_{k+1})\\
\leq & f(x_{k+1})+c_{k+1}P(x_{k+1})=q(c_{k+1},x_{k+1})
\end{align*}
假设$x^*$为原问题的解点,则有$$f(x^*)\geq q(x_k,x_k)\geq f(x_k)$$
proof:
\begin{align*}
f(x^*)=&f(x^*)+c_kP(x^*)\\
\geq& f(x_k)+c_kP(x_k)\\
\geq &f(x_k)
\end{align*}
收敛性
假设$\{x_k\}$是由罚函数法生成的序列,则其任意极限点都是原问题的解点。
proof:\quad
取$\{x_k\}$的一个极限点为$\mathop{x}\limits^{-}$,为了书写方便记收敛子列依然为$\{x_k\}$。
由于函数$f$的连续性,有$$\lim\limits_{k\rightarrow +\infty}f(x_k)=f(\mathop{x}\limits^{-})$$
由上述两个引理得到$q(c_k,x_k)$关于$k$单增,且以$f^*$为上界,于是得到:
$$\lim\limits_{k\rightarrow +\infty}q(c_k,x_k)=q^*\leq f^*$$
于是有$$\lim\limits_{k\rightarrow +\infty}q(c_k,x_k)-f(x_k)=\lim\limits_{k\rightarrow +\infty}=c_kP(x_k)\leq q^*-f(\mathop{x}\limits^{-})$$
再根据$c_k \rightarrow +\infty $,于是有$P(x_k)\rightarrow 0$,根据$P$的连续性得到:
$$\lim\limits_{k\rightarrow +\infty}P(x_k)=P(\mathop{x}\limits^{-})=0$$
于是极限点$\mathop{x}\limits^{-} \in S$。
由根据第二个引理得到:$$f(\mathop{x}\limits^{-})=\lim\limits_{k\rightarrow +\infty}f(x_k)\leq f^*$$
则$\mathop{x}\limits^{-}$是解点。
****************
本文来自博客园,作者:来者可追2019,转载请注明原文链接:https://www.cnblogs.com/wjma2719/p/18173526