0%

一种求目标函数最优值的方法(填充函数法

在本科建模学优化的时候,老师说复杂情况下不可能求出目标函数的最优解,用优化解代替就可以了,当时我还信了。直到研究生『工程优化』学了填充函数法,才知道在『多决策变量、单目标函数』的复杂情况下,理论上是可以求出目标函数的最优值的。

而对于『多决策变量、多目标优化』的问题中,还是进化算法等方法较为实用。以遗传算法为例,直接一波种群撒到可行域中,这样会比传统方法便捷一些。

填充函数定义

在难以直接求解$\min f(x)$时,我们可以使用填充函数法。

假设,$f(x)$在$R^n$中连续可微,且在可行域内有有限个极值点,所以每一个极值点都是孤立的。设 $x_k^\ast$ 是目前得到的 $f(x)$ 的一个局部极小点。在此处构造一个新的函数$p(x,x_k^\ast)$,称为填充函数。填充函数应具有的性质如下:

  • $x_k^\ast$是填充函数的一个局部极大点;
  • 目标值大于$f(x_k^\ast)$的区域,填充函数没有驻点;
  • 目标值小于$f(x_k^\ast)$的区域,存在一点是填充函数的极小点;

用数学语言描述:

  • $x_k^\ast$是$p(x,x_k^\ast)$的严格极大点;
  • $\forall x \in \Omega_1,\nabla p(x,x_k^\ast)\neq 0$,$\Omega_1=\{x\in \Omega | f(x) > f(x_k^\ast),x\neq x_k^\ast\}$,$\Omega$为可行域;
  • 若$\Omega_2=\{x\in\Omega|f(x)<f(x_k^\ast),x\in\Omega\}$非空,则存在一点$x_k’\in\Omega_2$,它是$p(x,x_k^\ast)$的局部最小点。

则称$p(x,x_k^\ast)$是$f(x)$在$x_k^\ast$处的一个填充函数。画图如下,蓝色为函数图象,红色为填充函数图象。

算法步骤

  1. 第$k$次迭代:求$f(x)$一个局部极小点$x_k^\ast$;
  2. 构造$x_k^\ast$处的填充函数$P(x,x_k^\ast)$,求填充函数的极小点$x_k’$。根据前述条件,此时该点对$f(x)$而言,是比$x_k^\ast$更好的点,它在$f(x)$一个更深的谷里;
  3. 以$x_k’$为初始点,对$f(x)$求极小点得$x_{k+1}^\ast$,此点比$x_k^\ast$位于$f(x)$更深的谷里。令$k=k+1$,转Step2。

这样逐步迭代,直到函数再也没有局部最小点。如上图第二次迭代后的结果:

Q函数

一种只有一个参数的填充函数是($a$是参数):

\begin{equation}
Q(x,a)=-(f(x)-f(x_k^\ast))\exp\Bigl(x-x_k^\ast\Bigr)^2
\end{equation}

证明:略。

感谢上学期间打赏我的朋友们。赛博乞讨:我,秦始皇,打钱。

欢迎订阅我的文章