1. 引言
         全局优化是数学优化领域中非常有意义的研究方向,近年来,随着科学技术的发展,科学和技术领域中需要解决的问题越来越追求全局最优解,特别是在图像处理、金融规划、工程设计等领域中遇到的很多现实问题,都可以将其转化为数学的全局优化问题进行求解。
         从算法的结构来看,全局优化算法可以分为确定性算法和随机性算法,其中确定性算法利用目标函数的一些局部特性,并根据某种确定性策略搜索得到局部极小点,并试图跳出已获得的局部极小点而达到全局极小点。填充函数算法是求解全局优化问题的一种确定性算法,这一概念最初是由西安交通大学的葛人溥教授提出的[1]。
         考虑如下的无约束优化问题:
         
           
         其中,
           为
           上的二阶连续可微函数,且满足假设[1]:1) 目标函数
           满足强制性条件,当
           时,
           ;2) 
           含有有限个局部极小值。该假设说明存在有界闭集
           包含
           的所有全局极小点和函数值较小的局部极小点,且可认为目标函数在X边界上的函数值大于在其内部的函数值。
         填充函数法的基本思想如下:首先运用已有的局部极小化算法对目标函数进行运算,得到一个局部极小点
           ,在
           处构造填充函数,并对填充函数进行极小化运算,这样就能使填充函数的局部极小点
           跳出原目标函数局部极小点
           所在的谷域,接着以
           作为新的初始点,再次对目标函数进行极小化运算,就能进入目标函数值更小的区域进行搜索,从而逐步逼近全局极小点。不断重复迭代,直到满足终止条件,即可以当前局部极小点作为全局极小点输出。
         在文献[1]中,葛人溥教授提出一个填充函数为:
         
           
         后续学者针对上述函数中参数选取困难和指数项会导致出现假的平稳点等不足之处,对填充函数理论进行了一系列的研究和改进,提出了许多不含指数项的、单参数或是无参数的填充函数[2]-[14],填充函数的理论得到不断发展。杨永建教授等在文献[4]中提出了一种新的填充函数定义。
         定义1 
           是函数
           的当前局部极小点,函数
           称为函数
           在局部极小点
           处的填充函数,如果满足:
         1) 
           是
           的一个严格局部极大点;
         2) 
           在
           上没有平稳点;
         3) 如果
           不是全局极小点,那么
           和
           在
           上有相同平稳点。
         定义1修改了文献[1]定义中峰和盆谷的概念,使得填充函数的定义更加清晰,在该定义下,当
           非全局极小点,则极小化填充函数
           所得的下一个局部极小点只会出现在函数值比
           小的区域中,且填充函数与目标函数有相同的局部极小点,于是在算法运行过程中可以通过极小化填充函数而不用极小化原函数得到局部极小点,提高了算法的运行效率。本文在该定义的基础上,提出了一个新的无参数填充函数,并设计了相应填充函数算法,证明了其有效性。
         2. 一个新的无参数填充函数
         令
           表示目标函数
           的所有局部极小点的集合,给出在定义1下的如下填充函数:
         
           (1.1)
         其中
         
           
         下证函数
           是满足定义2的填充函数。
         定理1 假设
           是函数
           的一个局部极小点,则
           是
           的一个严格局部极大点。
         证明:因为
           是函数
           的一个局部极小点,那么,存在
           ,使得对任意
           且
           时,有
           ,所以有
           ,由此得到
         
           
         从而
           是
           的一个严格局部极大点,定理得证。 □
         定理2 
           在
           上没有平稳点。
         证明:任意
           ,有
         
           
         又因为
           ,由此
         
           
         故对任意的
           ,
           ,定理得证。 □
         注1:当
           时,由定理2可知
           是
           在
           处的下降方向,即
           。
         定理3 假设函数
           连续可微,则
           和
           在
           上有相同平稳点。
         证明:对任意
           ,
           ,
           ,则
         
           ,那么
           。则当
           时,
           ,反之亦然。定理得证。 □
         综上,说明式(1.1)定义的函数
           是满足定义2的填充函数。
         性质1 若对任意
           ,满足
           和
           ,则
           的充要条件是
           。
         证明:充分性:因为
           ,
           ,由定义,得到
         
           
         因
           ,故
           ,又由定理2知
           ,因此
           。
         反之,必要性显然,若
           ,则有
           ,由
         此可得
           ,定理得证。 □
         注2:性质1说明在
           中,填充函数
           的值离
           当前局部极小点
           越远就越小,从而保证算法运行中,能有效地跳出当前局部极小点所在的区域,避免出现重复往返搜索的现象,得到一个函数值更小的局部极小点。
         性质2 对任意
           ,若
           ,则
           。
         证明:因为
           ,由填充函数的定义,得到
         
           
         因
           ,
           ,则
           ,定理得证。 □
         性质3 对
           的任一个局部极小点
           ,其中
           ,有
           。
         证明:根据定理2,
           在
           上没有平稳点,则
           的任一局部极小点
           都在
           中,而根据
           的定义,立即得到
           。 □
         3. 算法与数值实验
         根据上述填充函数的性质,极小化该填充函数
           得到的局部极小点同时也是目标函数
           的一个更好的局部极小点,于是在计算过程中就不用再对目标函数进行极小化,相比传统的填充函数算法减少了一个循环,减少了计算量。在此基础上提出了一个新的无参数填充函数算法,称为NPFF算法,具体算法如下:
         步骤0:选取
           ,作为该算法的容许误差;选取方向
           ,
           ,
           ,其中n是变量的个数;令
           ,表示迭代次数,记迭代次数上界为K,可取
           ;选取初始点
           。
         步骤1:以
           为初始点,利用局部极小化算法得到目标函数
           的一个局部极小点
           。
         步骤2:在局部极小点
           处构造填充函数
         
           
         步骤3:如果
           ,则以
           作为初始点,应用局部极小化算法得到
           的局部极小点
           ;否则,我们认为使用初始点
           已经找不到更好地局部极小点,终止算法,将当前极小点
           和
           作为近似全局极小点和近似全局极小值输出。
         步骤4:如果
           不在
           中,则令
           ,转步骤3;否则,转步骤5。
         步骤5:如果
           ,则令
           ,
           ,转步骤2;否则,令
           ,转步骤3。
         NPFF算法相比当前大部分填充函数算法,只需对填充函数进行极小化计算,而不需要对原函数进行极小化计算,减小了相当一部分计算量,同时NPFF算法不含有参数,省略了调整参数的步骤,使得算法的运行速度变得更快。
         对上述算法,使用Python3.9软件进行编程,并通过以下数值实验对NPFF算法的有效性进行验证。以下是符号说明:
         
           :目标函数局部极小化时的初始点;
         k:外循环目标函数局部极小化迭代次数;
         
           :目标函数的第k个局部极小点;
         
           :目标函数第k个局部极小点处的局部极小值;
         T:算法运行时间。
         例1 (Six-hump back camel function)
         
           
         选取若干不同初始点得到的算法运行结果如下表1所示:
         Table 1. Result of Example 1
         表1. 算例1结果
 
         
          
          
            
            
                 |  
            k  |  
            
                 |  
            
                 |  
            T  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            −1.0316  |  
            0.7248 s  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            −0.2154  |  
             |  
           
 
            
             |  
            2  |  
            
                 |  
            −1.0316  |  
            0.7554 s  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            2.1042  |  
             |  
           
 
            
             |  
            2  |  
            
                 |  
            −1.0316  |  
            0.7262 s  |  
           
 
          
         
          
         通过选取三个不同初始点,得到全局最优解为
           和
           ,全局极小值为
           。
         例2 (Two-dimensional Rastrigin function)
         
           
         选取若干不同初始点得到的算法运行结果如下表2所示:
         Table 2. Result of Example 2
         表2. 算例2结果
 
         
          
          
            
            
                 |  
            k  |  
            
                 |  
            
                 |  
            T  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            0.1791  |  
             |  
           
 
            
             |  
            2  |  
            
                 |  
            −0.9101  |  
             |  
           
 
            
             |  
            3  |  
            
                 |  
            −2.0  |  
            0.0986 s  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            3.4493  |  
             |  
           
 
            
             |  
            2  |  
            
                 |  
            2.3594  |  
             |  
           
 
            
             |  
            3  |  
            
                 |  
            −0.9101  |  
             |  
           
 
            
             |  
            4  |  
            
                 |  
            −2.0  |  
            0.0871 s  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            0.1791  |  
             |  
           
 
            
             |  
            2  |  
            
                 |  
            −1.5156  |  
             |  
           
 
            
             |  
            3  |  
            
                 |  
            −2.0  |  
            0.0935 s  |  
           
 
          
         
          
         通过选取三个不同初始点,均算得该问题的全局极小值为
           。
         例3 (Three-hump back camel function)
         
           
         选取若干不同初始点得到的算法运行结果如下表3所示:
         Table 3. Result of Example 3
         表3. 算例3结果
 
         
          
          
            
            
                 |  
            k  |  
            
                 |  
            
                 |  
            T  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            
                 |  
            0.2773 s  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            0.2986  |  
             |  
           
 
            
             |  
            2  |  
            
                 |  
            
                 |  
            0.4381 s  |  
           
 
            
            
                 |  
            1  |  
            
                 |  
            0.2986  |  
             |  
           
 
            
             |  
            2  |  
            
                 |  
            
                 |  
            0.3742 s  |  
           
 
          
         
          
         通过选取三个不同初始点,均算得该问题的全局极小值为
           。
         例4 (n-dimensional function)
         
           
         其中
           。选取不同n的值得到的算法运行结果如下表4所示:
         Table 4. Result of Example 4
         表4. 算例4结果
 
         
          
          
            
            n  |  
            
                 |  
            
                 |  
            
                 |  
            T  |  
           
 
            
            3  |  
            
                 |  
            
                 |  
            
                 |  
            0.62 s  |  
           
 
            
            5  |  
            
                 |  
            
                 |  
            
                 |  
            0.77 s  |  
           
 
            
            8  |  
            
                 |  
            
                 |  
            
                 |  
            1.24 s  |  
           
 
          
         
          
         通过选取
           三个维度的初始点,均能算得该问题全局极小值为
           。
         4. 结语
         本文提出的填充函数与原目标函数有相同的局部极小点,省去了以往填充函数算法中需要重新计算目标函数局部极小点的过程,并且不含参数,省去了参数调节的过程,所构造的填充函数算法形式简单,便于计算。数值算例的结果表明该算法是有效可行的,在此基础上,可以将其与机器学习算法结合,进行进一步的理论探讨与应用研究。
         NOTES
         *通讯作者。