1. 引言
考虑如下存零约束优化问题
(1.1)
其中
都是连续可微的。
为目标函数,
称为一般约束条件,
(1.2)
称为存零约束条件。记问题(1.1)的可行域为
我们称这样的问题(1.1)为存零约束优化问题(Mathematical Program with Switching Constraints),简称MPSC。
2019年,Mehlitz [1]首次引入MPSC,该问题与互补约束优化问题[2] [3] (简称MPCC)、消失约束优化问题[4] [5] (简称MPVC)、析取约束优化问题(简称MPDC) [6] [7]等密切相关。MPSC具有特殊结构,它不满足一些常见的约束规范,故需要建立适用于MPSC的稳定点概念和约束规范。因此,Mehlitz [1]引入一些适用于MPSC的稳定点概念(例如弱稳定点、Mordukhovich-稳定点(简称M-稳定点)和强稳定点等),并给出一些MPSC的约束规范(例如MPSC Mangasarian-Fromovitz约束规范(简称MPSC-MFCQ)、MPSC线性独立约束规范(简称MPSC-LICQ)等)。
Liang等人[6]将MPSC表述为MPDC,结合近年来MPDC的约束规范和最优性条件,将其应用于MPSC,并且推导出MPSC的局部误差界和精确惩罚结果的充分条件。Mehlitz [7]在MPDC的线性无关约束规范成立的情况下,推导MPDC的一阶、二阶最优性条件,并且将其应用于MPSC,得到MPSC的二阶最优性条件。Li等人[8]证明了在MPSC Guignard约束规范(简称MPSC-GCQ)成立时,MPSC的局部极小点是Bouligand-稳定点(简称B-稳定点)。并且Li等人[8]扩展非线性规划中的一些约束规范应用于MPSC。这些约束规范都严格弱于MPSC-MFCQ和MPSC-LICQ,当约束规范成立时,MPSC的局部极小点是M-稳定点。
存零约束条件的存在使得非线性规划的算法不能直接应用于求解MPSC. Kanzow等人[9]引入松弛因子,将几种常用的MPCC松弛方法应用于求解MPSC。Kanzow等人[9]指出,虽然Scholtes的方法、Steffensen和Ulbrich的松弛方法在一定条件下产生的迭代点列收敛到MPSC的弱稳定点,但在合理的假设条件下,Kanzow和Schwartz的松弛方法产生的迭代点列能够收敛到MPSC的M-稳定点。张婷婷等人[10]将存零约束作为罚项加入到目标函数中,提出部分罚函数方法,证明了在MPSC-LICQ成立的情况下,部分罚函数问题的迭代点列的聚点是MPSC的弱稳定点。罗美玲等人[11]针对MPSC,提出Wolfe型对偶模型,在凸性和严格凸性假设下,给出MPSC的Wolfe对偶问题的弱、强、逆、限制逆和严格逆对偶结果。Jinman等人[12]研究含非Lipschitz项的存零约束优化问题,给出了求解非Lipschitz项MPSC的一种近似方法,利用局部Lipschitz函数来近似非Lipschitz项,并证明了该近似方法生成的迭代点列的聚点在MPSC-MFCQ约束规范成立时是MPSC的弱稳定点,在二阶必要条件和MPSC-MFCQ约束规范成立时是MPSC的强稳定点。
本文,我们将罚参数与目标函数、约束函数结合,基于互补约束优化目标罚函数方法,提出存零约束优化问题的目标罚函数方法。本文将在第2节介绍基本概念。第3节讨论原问题与罚函数问题在最优解方面的关系,同时给出目标罚函数算法,分析算法迭代点列的收敛性。第4节给出算法的数值实验结果。最后,第5节对全文进行总结。
2. 基本概念及目标罚函数方法
首先,为了便于符号标注,我们定义了在MPSC任意一个可行点
处的指标集:
其中,
,
,
是
的互不相交的分区。
接下来,我们给出关于MPSC的弱稳定点概念。
定义2.1 [1]设
是问题(1.1)的一个可行点,如果存在乘子
使得
(2.1)
成立,则
是弱稳定点。
由于MPSC问题中的存零约束,使得通常的约束规范不满足。本文考虑将罚参数放入目标函数,先定义函数
(2.2)
,有
。当
,有
。
同时构造目标罚函数
其中M是罚参数,并且
。
,有
。
由此构造如下无约束优化罚问题
(2.3)
本文接下来讨论存零约束优化问题与无约束优化罚问题在最优解方面的关系,同时给出该问题的算法框架,分析目标罚函数方法最优解点列的收敛性。
3. 算法及主要理论结果
我们先考虑问题(1.1)与问题(2.3)之间最优解方面的关系。
定理3.1
是问题(2.3)的局部最优解,M是一个常数,
。如果点
是问题(1.1)的可行点,则
是问题(1.1)的局部最优解。
证明:如果
是问题(1.1)的可行点,我们有
,
,
(3.1)
由
是问题(2.3)的局部最优解,则对任意的
,
(3.2)
此外,存在某常数
,
,由(3.1),(3.2)及
,可得
,
因此,我们有
。
由此可得
,
。
是问题(1.1)的局部最优解。
基于上面的讨论,我们给出一种求解问题(1.1)的局部最优解的算法,我们称之为MPSC的目标罚函数算法,其步骤如下:
算法3.1
步1 任选
和
,
,
。
步2 以
为初始点,求解
。
步3 如果
是问题(1.1)的可行点,且
,则停止。
步4 令
,
,转步2。
注1 本算法中步2出现的最优解是指局部最优解。
注2 为了使算法可行,假设罚函数
有局部最优解。
关于算法3.1的收敛性,我们有如下结果。
定理3.2 假设f,
,
,
在
上连续,且
。
是算法3.1得到的点列。
1) 如果
是有限点列。即算法3.1在第
次迭代终止,则
是问题(1.1)的最优解。
2) 如果
是无限点列,
是有界的,并且满足
,
则
是有界的,
的任意极限点
是问题(1.1)的可行点且是问题(1.1)的弱稳定点。
证 1) 如果算法3.1在第
次迭代终止,则有
是问题(1.1)的可行点,且
。由定理3.1,可得
是问题(1.1)的最优解。
2) 首先,我们注意到
是有界的,又因为
,有
是有界的。不失一般性,假设当
,
,我们有
(3.3)
展开,
其中
。
是无限点列,因为
,且
,
,可得
。由于
是有界的,这意味着存在一个常数
,
,我们有
,从而
因此,
,
。
特别,
,令
我们有
(3.4)
显然,当
,序列
是收敛的。则当
,有
根据
,且
,则当
,
,有
。因此,点
是问题(1.1)的可行点。
考虑
,有
。由于
则当k充分大时,
,
。因此,我们有
,
。又因为
,
,则
,
。
当
,令
现在我们考虑证明
,
存在,有
。同理当
,
存在,有
。
反证法,
,假设
不存在。即假设存在一个正数
和
的子序列(不失一般性,用序列本身代替),当k充分大时,使得
。则
,当
,有
(3.5)
同理,
,假设
不存在。即假设存在一个正数
和
的子序列(不失一般性,用序列本身代替),当k充分大时,使得
。则
,当
,有
(3.6)
由等式(3.4),可得当
,序列
是收敛的,这与上式(3.5),(3.6)矛盾。
因此,有
,
存在,且
。
,
存在,且
成立。
此外,由等式(3.3),当
,存在
,
,
,
,
,
有
同除以
,令
可得
由定义2.1,则点
是问题(1.1)的弱稳定点成立。
4. 数值实验
本文对算法3.1,通过数值计算的角度,检验其数值效果及其可行性。为了使算法可行,在算法3.1中的无约束优化问题求解局部极小点时可以采用BFGS、梯度下降法等无约束算法。我们将用MATLAB R2022b来求解MPSC相关文献的例子,并将算法3.1中的条件
是问题(1.1)的可行点用
代替,取
,求解存零约束优化问题的近似局部最优解。
例1 [10]
(4.1)
考虑目标罚函数
其中约束优化问题(4.1)的最优解为
,最优值为1。
选取初始点
,
,由不同的罚参数
得到的计算结果如表1所示。
Table 1. The calculation results of different penalty parameters M1 in Example 1
表1. 例1不同罚参数M1的计算结果
|
|
|
|
|
k |
−2 |
(1.0e−05*−0.7631, 1.0e−05*−0.3814) |
1.0000 |
−524,288 |
2.9115e−11 |
18 |
−5 |
(1.0e−04*−0.1221, 1.0e−04*−0.0610) |
1.0000 |
−327,680 |
7.4506e−11 |
16 |
−27 |
(1.0e−05*−0.9045, 1.0e−05*−0.4516) |
1.0000 |
−442,368 |
4.0909e−11 |
14 |
−41 |
(1.0e−04*−0.1191, 1.0e−04*−0.0596) |
1.0000 |
−335,872 |
7.0894e−11 |
13 |
−79 |
(1.0e−04*−0.1236, 1.0e−04*−0.0618) |
1.0000 |
−323,584 |
7.6384e−11 |
12 |
−113 |
(1.0e−05*−0.8640, 1.0e−05*−0.4324) |
1.0000 |
−462,848 |
3.7327e−11 |
12 |
选取初始点
,
,由不同的迭代因子N得到的计算结果如表2所示。
Table 2. The calculation results of different iteration factors N in Example 1
表2. 例1不同迭代因子N的计算结果
N |
|
|
|
|
k |
2 |
(1.0e−04*−0.1221, 1.0e−04*−0.0610) |
1.0000 |
−327,680 |
7.4506e−11 |
16 |
3 |
(1.0e−04*−0.1355, 1.0e−04*−0.0677) |
1.0000 |
−295,245 |
9.1782e−11 |
10 |
4 |
(1.0e−04*−0.1220, 1.0e−04*−0.0611) |
1.0000 |
−327,680 |
7.4482e−11 |
8 |
7 |
(1.0e−05*−0.6800, 1.0e−05*−0.3399) |
1.0000 |
−588,245 |
2.3121e−11 |
6 |
11 |
(1.0e−05*−0.4968, 1.0e−05*−0.2482) |
1.0000 |
−805,255 |
1.2343e−11 |
5 |
13 |
(1.0e−05*−0.2154, 1.0e−05*−0.1079) |
1.0000 |
−1,856,465 |
2.3192e−12 |
5 |
选取罚参数
,
,不同初始点x0得到的计算结果如表3所示。
Table 3. The calculation results of different initial points x0 in Example 1
表3. 例1不同初始点x0的计算结果
|
|
|
|
|
k |
(42, 11) |
(1.0e−04*−0.1221, 1.0e−04*−0.0610) |
1.0000 |
−327,680 |
7.4506e−11 |
15 |
(−35, 29) |
(1.0e−04*−0.1221, 1.0e−04*−0.0610) |
1.0000 |
−327,680 |
7.4506e−11 |
13 |
(12, −87) |
(1.0e−04*−0.1221, 1.0e−04*−0.0610) |
1.0000 |
−327,680 |
7.4506e−11 |
11 |
(25, 57) |
(1.0e−04*−0.1221, 1.0e−04*−0.0610) |
1.0000 |
−327,680 |
7.4506e−11 |
11 |
(61, 123) |
(1.0e−04*−0.1221, 1.0e−04*−0.0610) |
1.0000 |
−327,680 |
7.4506e−11 |
10 |
例2 [9]
(4.2)
考虑目标罚函数
其中约束优化问题(4.2)的最优解为
和
,最优值为−1。
选取初始点
,
,由不同的罚参数
得到的计算结果如表4所示。
Table 4. The calculation results of different penalty parameters M1 in Example 2
表4. 例2不同罚参数M1的计算结果
|
|
|
|
|
k |
−2 |
(−0.0000, 1.0000) |
−1.0000 |
−65536 |
5.83e−11 |
15 |
−5 |
(−0.0000, 1.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
−7 |
(−0.0000, 1.0000) |
−1.0000 |
−57344 |
7.61e−11 |
13 |
−13 |
(−0.0000, 1.0000) |
−1.0000 |
−53248 |
8.80e−11 |
12 |
−57 |
(−0.0000, 1.0000) |
−1.0000 |
−58368 |
7.33e−11 |
10 |
−83 |
(−0.0000, 1.0000) |
−1.0000 |
−84992 |
3.46e−11 |
10 |
−117 |
(−0.0000, 1.0000) |
−1.0000 |
−59904 |
6.97e−11 |
9 |
选取初始点
,
,由不同的迭代因子N得到的计算结果如表5所示。
Table 5. The calculation results of different iteration factors N in Example 2
表5. 例2不同迭代因子N的计算结果
N |
|
|
|
|
k |
2 |
(−0.0000, 1.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
3 |
(−0.0000, 1.0000) |
−1.0000 |
−98415 |
2.58e−11 |
9 |
4 |
(−0.0000, 1.0000) |
−1.0000 |
−81920 |
3.72e−11 |
7 |
7 |
(−0.0000, 1.0000) |
−1.0000 |
−84035 |
3.54e−11 |
5 |
11 |
(−0.0000, 1.0000) |
−1.0000 |
−73205 |
4.67e−11 |
4 |
13 |
(0.0000, 1.0000) |
−1.0000 |
−142805 |
1.22e−11 |
4 |
29 |
(−0.0000, 1.0000) |
−1.0000 |
−121945 |
1.68e−11 |
3 |
选取罚参数
,
,不同初始点
得到的计算结果如表6所示。
Table 6. The calculation results of different initial points x0 in Example 2
表6. 例2不同初始点x0的计算结果
|
|
|
|
|
k |
(−12, 57) |
(−0.0000, 1.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
(41, 23) |
(1.0000, −0.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
(37, −81) |
(1.0000, −0.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
(122, 67) |
(1.0000, −0.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
(187, 3) |
(−0.0000, 1.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
(29, 74) |
(−0.0000, 1.0000) |
−1.0000 |
−81920 |
3.72e−11 |
14 |
从以上的数据实验中看出,
越大,
越接近原问题的最优解,
越接近0,
越接近原问题的最优值。在选取
时,发现当
越大时,迭代次数越小,但是
并不会随之越大。从表1、表4中可知,当初始点
和迭代因子N固定时,在[−5, −2]范围内选取的罚参数
,更有可能使最后迭代的
越大。从表2、表5中可知,当初始点
和罚参数
固定时,在[7, 13]范围选取的迭代因子N,更有可能使最后迭代的
越大。从表3、表6中看出,当罚参数
和迭代因子N固定时,初始点
的选取对求解存零约束优化问题影响较小,可以任意选取初始点
。
5. 结论
存零约束优化问题因存零约束的存在,导致现有算法不能直接应用于该优化问题。本文基于互补约束优化目标罚函数方法,构建存零约束优化问题的目标罚函数方法,进一步讨论原问题和目标罚函数问题在最优解方面的关系,以及分析最优解点列的收敛性。最后,本文通过数值结果表明了目标罚函数法的可行性。数据试验表明,目标罚函数算法是求解存零约束优化问题的有效算法,并且初始点的选取对求解存零约束优化问题影响较小。