system: [SYSTEM]

user: 2. 算法设计 本文采用非精确的一阶信息，即在每一次迭代中，对 ∀ x ∈ X ，分别产生函数 f ， c 满足以下条件的近似函数值和次梯度： { f ( x ) ≥ f x ≥ f ( x ) − ε f x ，         g ˜ f x ∈ ∂ ε f x f ( x ) ， c ( x ) ≥ c x ≥ c ( x ) − ε c x ，         g ˜ c x ∈ ∂ ε c x c ( x ) ， (3) 其中， f x ， c x ， g ˜ f x 和 g ˜ c x 分别表示函数 f ， c 在点x的近似函数值和近似次梯度，误差 ε f x ， ε c x ≥ 0 ， δ -次微分 ∂ δ f ( x ) 定义如下： ∂ δ f ( x ) = { g ∈ R n : f ( y ) ≥ f ( x ) + 〈 g ， y − x 〉 − δ ， ∀ y ∈ X } . 根据(3)可得 f ( ⋅ ) ≥ f ( x ) + 〈 g ˜ f x ， ⋅ − x 〉 − ε f x ，     c ( ⋅ ) ≥ c ( x ) + 〈 g ˜ c x ， ⋅ − x 〉 − ε c x . 假设每一个估计的误差都是有界的，即存在常数 η f ， η c ≥ 0 使得 ε f x ≤ η f ，     ε c x ≤ η c ，     ∀ x ∈ X . 为简便，分别用 g ˜ f k ， g ˜ c k 表示函数 f ， c 在 x k 处的近似次梯度， ε f k ， ε c k 表示相应的误差。定义邻近函数： φ ( x ; x ^ ) : = ω ( x ) − ω ( x ^ ) − 〈 ∇ ω ( x ^ ) ， x − x ^ 〉 ， 其中，函数 ω : R n → R 是集合X上系数为 σ ω > 0 可微强凸函数，即 ω ( y ) ≥ ω ( x ) + 〈 ∇ ω ( x ) ， y − x 〉 + σ ω 2 ‖ y − x ‖ 2 ，   ∀ x ， y ∈ X . 易知， φ ( x ; x ^ ) ≥ 0 ， φ ( x ^ ; x ^ ) = 0 及 〈 ∇ ω ( x ) − ∇ ω ( z ) ， x − z 〉 ≥ σ ω ‖ x − z ‖ 2 ，         ∀ x ， z ∈ X . 在实际计算中，可根据X的特殊结构选择适当的 ω ( x ) ，以提高计算效率。 记集合X对应于函数 ω ( x ) 的直径为： D ω ， X 2 : = max { ω ( x ) − [ ω ( z ) + 〈 ∇ ω ( z ) ， x − z 〉 ] ， ∀ x ， z ∈ X } . (4) 因此，可以得到 ‖ x − z ‖ 2 ≤ 2 σ ω D ω ， X 2 = : Ω ω ， X ，       ∀ x ， z ∈ X . (5) 根据函数的非精确信息，定义近似线性化函数： { l f k ( ⋅ ) : = f x k + 〈 g ˜ f k ， ⋅ − x k 〉 ， l c k ( ⋅ ) : = c x k + 〈 g ˜ c k ， ⋅ − x k 〉 . 由函数的凸性可得 l f k ( ⋅ ) ≤ f ( ⋅ ) ， l c k ( ⋅ ) ≤ c ( ⋅ ) ，并且在点 x k 处有 l f k ( x k ) = f x k ， l c k ( x k ) = c x k 成立。定义函数 f ( x ) ， c ( x ) 在第k次迭代的多面体模型： f ^ k ( x ) : = max j ∈ J f k l f j ( x ) ，                 c ^ k ( x ) : = max j ∈ J c k l c j ( x ) ， 其中，   J f k ， J c k ⊆ { 1 ， ⋯ ， k } 分别是线性化函数 l f j ( x ) ， l c j ( x ) 对应的某些迭代指标构成的集合。根据多面体模型的定义可以得到： (6) 设 f low k ( ≤ f * ) 是问题最优值的一个下界，定义非精确改进函数如下： h ˜ ( x ; f low k ) = max { f x − f low k ， c x } . (7) 用以上函数作为近似最优性判别函数，并采用如下方式记录改进函数当前的最小值和相应的迭代点： h rec k : = { h ˜ ( x 0 ; f low 0 ) ，                                                                                                                                                                                           k = 0 ，   min { min j ∈ J f k ∩ J c k h ˜ ( x j ; f low k ) ， h rec k − 1 }   ，                                   k > 0 ， (8) x rec k ∈ { x j } j ≤ k           s .t .           h ˜ ( x rec k ; f low j ) = h rec k ， (9) 由(8)和(9)易知 { h rec k } 是单调不增的序列。 设 f lev k 为当前水平值，采用上述邻近函数代替欧氏距离，本文算法每次迭代求解如下子问题： x k + 1 : = arg min x ∈ X k φ ( x ; x ^ k ) ， (10) 其中， x ^ k 为当前稳定中心，水平集 X k 定义如下： X k : = { x ∈ X : f ^ k ( x ) ≤ f lev k ， c ^ k ( x ) ≤ 0 } . (11) 以下引理启发了下界 f low k 的一个更新规则：当 X k 是空集时，可用当前的水平值 f lev k 来更新下界，即令 f low k = f lev k 。 引理1 [ 5 ] ：如果水平集 X k 是空集，则水平值 f lev k 是问题(1)的最优值的下界。 下面将给出子问题(10)的最优解的一些重要性质，其证明是文献 [ 5 ] 命题1的推广。 命题1：假设约束规格 X k ∩ r i X ≠ ∅ 成立，则 x k + 1 为子问题(10)最优解的充要条件是 x k + 1 ∈ X ， f ^ k ( x k + 1 ) ≤ f lev k ， c ^ k ( x k + 1 ) ≤ 0 ，并且存在向量 s k ∈ N X ( x k + 1 ) ， g ^ f k ∈ ∂ f ^ k ( x k + 1 ) ， g ^ c k ∈ ∂ c ^ k ( x k + 1 )   和   μ f k ， μ c k ≥ 0 使得 ∇ φ ( x k + 1 ; x ^ k ) + s k + μ f k g ^ f k + μ c k g ^ c k = 0 ，             μ f k ( f ^ k ( x k + 1 ) − f lev k ) = 0 ，           μ c k c ^ k ( x k + 1 ) = 0. (12) 此外，聚集线性化 f ¯ a k ( x ) : = f ^ k ( x k + 1 ) + 〈 g ^ f k ， x − x k + 1 〉 满足 f ¯ a k ( x ) ≤ f ^ k ( x ) ≤ f ( x ) ，           ∀ x ∈ X ， (13) c ¯ a k ( x ) : = c ^ k ( x k + 1 ) + 〈 g ^ c k ， x − x k + 1 〉 满足 c ¯ a k ( x ) ≤ c ^ k ( x ) ≤ c ( x ) ，           ∀ x ∈ X . (14) 同时，有 arg min x ∈ X k φ ( x ; x ^ k ) = arg min x ∈ X a k φ ( x ; x ^ k ) (15) 成立。其中，聚集水平集 X a k 定义为 X a k : = { x ∈ X : f ¯ a k ( x ) ≤ f lev k ， c ¯ a k ( x ) ≤ 0 } 。 下面给出本文算法的具体步骤： 算法1： 步骤0 (初始化)：选取初始点 x 0 ∈ X ，参数 γ ∈ ( 0 ， 1 ) ，终止参数 δ Tol ≥ 0 ，束的最大容量 nb ≥ 2 。选取初始下界 f low 0 ≤ f * ，计算初始近似函数值和近似次梯度 ( f x 0 ， g ˜ f 0 ) ， ( c x 0 ， g ˜ c 0 ) 。令 x ^ 0 = x 0 ， k = 0 ， l = 0 ， k ( l ) = 0 ， J f 0 = { 0 } ， J c 0 = { 0 } 。 步骤1 (更新记录值)：分别通过(8)和(9)更新 h rec k 和 x rec k 。 步骤2 (终止测试)：如果 h rec k ≤ δ Tol ，则算法终止并输出 x rec k 。 步骤3 (下降测试)：如果 h rec k ≤ ( 1 − γ ) h rec k ( l ) ，则令 l : = l + 1 ， k ( l ) : = k ，并选取 x ^ k ∈ { x j : j ∈ J f k ∩ J c k } 。 步骤4 (更新水平集)：令 f lev k : = f low k + γ h rec k ，更新水平集 X k 。 步骤5 (可行性检测)：如果 X k 为非空集，则转到步骤6；否则，转步骤7。 步骤6 (子问题求解)：求解(10)产生新迭代点 x k + 1 ，并计算相应的近似函数值和近似次梯度 ( f x k + 1 ， g ˜ f k + 1 ) ， ( c x k + 1 ， g ˜ c k + 1 ) 。令 f low k + 1 : = f low k ， x ^ k + 1 : = x ^ k 。 步骤7 (更新下界)：令 l : = l + 1 ， k ( l ) : = k ， f low k : = f lev k ，选择 x ^ k ∈ { x j : j ∈ J f k ∩ J c k } ，返回步骤1。 步骤8 (束管理)：如果 | J f k | < nb ，则 J f k + 1 = J f k ∪ { k + 1 } ；否则选择指标集 I f ⊆ J f k ， | I f | ≥ 2 ，更新束 J f k + 1 = J f k \ I f ∪ { k + 1 ， a k } 。如果 | J c k | < nb ，则 J c k + 1 = J c k ∪ { k + 1 } ；否则选择指标集 I c ⊆ J c k ， | I c | ≥ 2 ，更新束 J c k + 1 = J c k \ I c ∪ { k + 1 ， a k } 。 步骤9 (循环)：令 k : = k + 1 ，返回步骤1。 注1：令 K l 为第l个循环的指标集，由算法可知对任意的 k ∈ K l ，稳定中心 x ^ k 和下界 f low k 不变。因此，对每一个固定的l，序列 { f lev j } j ∈ K l 是非增的。 下面我们分别讨论误差固定不变和随着迭代趋近于零两种情况，即 情形I： ε f k ≡ ε f ≥ 0 ， ε c k ≡ ε c ≥ 0 ， ∀ k ； 情形II： ε f k → 0 ， ε c k → 0 ， k → ∞ 。 引理2：假设 lim k → ∞ h rec k ≤ 0 ，则 a) 对于情形I，序列 { x rec k } 的任意聚点都是问题(1)的 ε 最优解，其中 ε : = max { ε f ， ε c } ； b) 对于情形II，序列 { x rec k } 的任意聚点都是问题(1)的最优解。 特别地，如果对某个k，有 h rec k ≤ 0 ，则对于情形I， x rec k 是问题(1)的一个 ε 最优解；对于情形II， x rec k 是问题(1)的一个 ε j k 最优解，其中 ε j k : = max { ε f j k ， ε c j k } ， j k ( ≤ k ) 是使得 h rec k = h ˜ ( x rec k ; f low j k ) 成立的某个指标。 证明：由 h rec k 的定义(8)和(9)以及X有界，可以得到序列 { h rec k } 单调有界，因此必有极限。故不失一般性，可设序列 { f x rec k } ， { c x rec k } 有极限。由假设 lim k → ∞ h rec k ≤ 0 ，可得 0 ≥ lim k ( f x rec k − f low j k ) ≥ lim k ( f ( x rec k ) − ε f j k − f low j k ) ≥ lim k ( f ( x rec k ) − ε f j k − f * ) ， 0 ≥ lim k c x rec k ≥ lim k ( c ( x rec k ) − ε c j k ) . 设 x ¯ 是序列 { x rec k } 的一个聚点，对于情形I，由以上两个不等式可以得到 f ( x ¯ ) ≤ f * + ε f 和 c ( x ¯ ) ≤ ε c ，因此 x ¯ 是问题(1)的 ε 最优解。对于情形II，再次利用以上两个不等式可得 f ( x ¯ ) ≤ f * 和 c ( x ¯ ) ≤ 0 ，故 x ¯ 是问题(1)的最优解。 特别地，如果对某个k， h rec k ≤ 0 成立，类似以上分析可知，对于情形I有： f ( x rec k ) ≤ f * + ε f 和 c ( x rec k ) ≤ ε c ，故 x rec k 是问题(1)的 ε 最优解；对于情形II，有 f ( x rec k ) ≤ f * + ε f j k 和 c ( x rec k ) ≤ ε c j k ，从而 x rec k 是问题(1)的一个 ε j k 最优解。 □