图6.11 反射
由于单纯形法的运动方向始终远离最坏的结果,我们将朝着有利的方向移动。如果目标函数不具有陡峭的波峰,反射过程中的重复应用会导致在大致方向上的曲折路线最少,如图6.12所示。在数学上,给出了反射点X
X =(1+ )X - X (6.48)
其中X 是与最大函数值相对应的顶点:
f(X )= f(X ), (6.49)
X 是X 中(除i=h外)所有点的重心
X = (6.50)图6.12 反射过程的演变
同时 >0被反射系数定义为
= (6.51)
因此X 位于加入的线X 和X 之间,远侧X 和X 满足 = 。如果f(X )位于f(X ) 和f(X )之间,其中X 是与最小函数值相对应的顶点:
f(X )= f(X ) (6.52)
X 被X 取代,并且一个新的单纯形法形成了。
如果我们仅仅通过从反射过程中寻找最低点,在某种情况下可能会遇到一定的困难。例,如果单形之一(二维空间中的三角形)越过波峰,如图6.13所示,若反射点X 恰好有一个目标函数值等于反射点X 中的函数值,我们将进入一个封闭循环的操作。因此,如果X 是已定义的单纯形顶点X ,X ,X 中的最差点,那么反射过程就会给出新的单纯形法中的顶点X ,X 和X 。此外,由于X 具有顶点X ,X 和X 中的最高函数值,我们从使用反射过程中获得旧的单纯形法。因此,优化过程在波峰上陷入困境,并且我们没有办法走向最佳点,通过制定一个刚刚离开且无法返回的点的规则,我们可以克服这个问题。
图6.13 反射过程没有形成一个新的单形
每当遇到这种情况,我们拒绝与第二个最差值相关的顶点,而不是与最差函数值相关的顶点。这种方法,在一般情况下导致进程继续朝着所需要的最小值范围行进。然而,最终的单纯形法可能再次越过最小值,或者可能位于其自身最小尺寸距离之内。在这种情况下,它可能无法获得一个新的单纯形法,这个新的单纯形与以前的相比更接近顶点的最小值,同时该模式可能会导致一个循环过程,如图6.14所示。在这个例子中,形成了从单一的123到连续单形234,245,456,,467,348,234,245,…由此形成一个循环过程。每当观察到这类循环,我们可以采取在每一个单形中出现的(如图6.14中的点4)顶点来逼近最佳点。如果需要更准确,同最近表明的一样,单纯形必须在大小上收缩或者是减小。
已经形成的单形456,467和234通过反射最差的第二点来避免先前提到的困难。
6.9.2 扩张
如果一个反射过程给出点X 对于任何f(X )< f(X ),(即若反射产生一个新的最低点),人们普遍期望通过沿X 到X 所指示的方向运动来进一步减小函数值。因此,我们扩大X 到X 的使用关系
X = X +(1- ) X (6.53)