本章讨论优化问题:
其中,
只含等式的约束优化问题
我们定义可行集为所有可行点组成的集合:
我们定义正则点为满足以下形式的点:满足约束 的点 , 梯度向量 是线性无关的。
我们定义切线空间: 曲面 中点 处的切线空间为集合 可以看出,切线空间 是矩阵 的零空间:
我们定义法线空间:曲面 中点 处的法线空间 即:
我们定义拉格朗日函数:
拉格朗日条件
一阶必要条件
二阶必要条件
对于所有 都有:
其中 , 是 在 处的 矩阵; 是 在 处的 矩阵。即:
二阶充分条件
函数 , 如果存在点 和 , 使得
- 对于所有 , , 都有 那么, 是 在约束条件 下的严格局部极小点。
注:若 满足拉格朗日条件, 且 在 上正定, 则 是严格局部极小点。反之, 当 在 上负定时, 是一个严格局部极大点。
含不等式约束优化问题
问题描述&相关定义
本章考虑的一般形式的优化问题:
其中, 。
对于一个不等式约束 , 如果在 处 , 那么称该不等式约束是 处的起作用的约束; 如果在 处 , 那么称该约束是 处的不起作用的约束。等式约束 当作总是起作用的约束。
我们定义可行集下的正则点: 设 满足 , 设 为起作用不等式约束的下标集:
如果向量
是线性无关的,则称 是一个正则点。
定义如下矩阵为高阶拉格朗日函数:
其中, 是 在点 处的黑塞矩阵, 与之前一样, 表示
类似地, 表示
其中, 是 在 处的黑塞矩阵:
在接下来的定理中, 用
代表由起作用约束所定义曲面的切线空间。
KKT条件
条件是满足极小点的必要条件。满足:
- 原始可行性:;
- 对偶可行性;
- 原始最优性;
- 互补松弛条件;
主要思想就是引入了KKT算子,提出了 。下面分情况讨论推导过程。
- 此时 不起约束,转换成仅含等式约束的问题,使用拉格朗日乘数法解决即可。
- 也是转换成仅含等式约束问题,使用拉格朗日乘数法解决即可。
- 此时 不满足约束,忽略。 所以仅需考虑条件 (1), (2) 即可 (1). 若 ,引入乘子 , 并且规定 1 (2). 若 ,规定 。 综合起来就是
注意,这里讨论的KKT条件是针对开头对应约束优化问题。倘若改为极大化条件或者不等式约束不等号方向相反,而需要对原函数或者不等式约束条件进行变号处理。然后用新的问题写KKT条件。
二阶必要条件
- ;
- 对于所有 , 都有 成立。
二阶充分条件
- ;
- 对于所有 , 都有 。 其中: 定义为:
其中, 。注意 是 的子集, 成立。这意味着, 是 的子集。
投影法
- 考虑优化问题:
如果使用无约束的常见迭代格式 可能不满足条件。
- 定义 (投影) : 设 是非空闭凸集。任意 在 上的投影为
也就是 中最接近 的点。
-
投影性质:
- 若 是非空闭凸集,投影存在且唯一
- 是 在 上的投影, 是任意 。等号成立当且仅当 是仿射流形。
-
投影方法:
- 无约束线搜索:
- 投影方法:
- 投影梯度方法:

仿射约束上的投影方法
考虑优化问题:
其中, 对于约束集是 ,可以使用正交投影算子作为 。定义为如下的正交投影算子矩阵 :
设 , 那么当且仅当 时, , 即 此外, 当且仅当 , 有 , 即 。
无约束优化: 是局部极小点的一阶必要条件是 。
仅含等式约束 的优化, 是局部极小点的一阶 必要条件是 。
约束集 的投影梯度法迭代公式:
迭代点 满足
对于任意初始点,只要步长足够大,梯度投影算法一步即可德奥最优解。
拉格朗日法
拉格朗日法-等式约束
-
利用梯度法更新决策变量和朗格朗日乘子向量。
-
等式约束优化的拉格朗日法: 其中, 拉格朗日函数为: 拉格朗日法迭代公式:
的更新是拉格朗日函数关于 极小化的梯度算法; 的更新是拉格朗日函数关于 极大化的梯度算法。
拉格朗日法更新 和 的过程中, 产生的向量对 是一个不动点 满足拉格朗日条件。
拉格朗日法-不等式约束
考虑问题:
其中
拉格朗日函数为:
拉格朗日法迭代公式:
其中,
的更新是拉格朗日函数关于 极小化的梯度算法; 的更新是拉格朗日函数关于 极大化的投影梯度算法。
拉格朗日法更新 和 的过程中, 产生的向量对 是一个不动点 满足KKT条件。 当 和 足够小时, 存在 的一个邻域, 如果 属 于该邻域,那么, 拉格朗日算法: (1) 不起作用约束条件的乘子在有限的时间内减小到零, 此后一直保持为零; (2) 算法至少以线性速度收敛到
罚函数法
- 将约束优化问题近似处理成无约束优化问题 约束优化: 等价于约束优化: 其中 是指示函数:
等价于: 其中, 是大于零的常数(惩罚因子)。 是给定函数(罚函数、罚项)
- 是连续的;
- 对所有 成立;
- , 当且仅当 是可行点 (即 ) 无约束优化与约束优化的逼近程度,取决于 、 。 越大,逼近越好。当 时,罚函数法可得到约束问题的真解。
约束优化的罚函数法:
其中
- 精确罚函数: 其中,
- 二次罚函数: 注:精确罚函数, 不可微。二次罚(库朗罚函数),一般可微。
- 推广罚函数:
演示实例
例: 一元函数 和 可行域定义为 构造绝对值罚函数:
例:用二次罚函数法求优化问题的解
解:二次罚函数为
求解上述含参的无约束优化问题 (即求稳定点) 另外, 对 (*)式写最优性条件, 对比原优化问题的KKT条件, 可得对 偶问题的解
对数与倒数罚函数法
约束优化(仅有不等式约束或约束集有内点): 其中
- 对数罚函数:
- 倒数罚函数:
增广Lagrange函数法
把Lagrange函数与罚函数法结合,解决罚参数过大问题。 其中 增广Lagrange 函数
迭代格式:
约束优化的对偶问题
约束优化问题的对偶问题是一种用来求解约束优化问题的数学方法。在这种方法中,原始问题被转化为一个新问题,称为对偶问题,并且可以用来求解原始问题。约束优化问题是一种常见的数学问题,通常表示为最大化或最小化一个目标函数,同时需要满足一组约束条件。
求解约束优化问题的对偶问题通常使用一种称为对偶算法的数学方法。该算法包括以下步骤:
-
将原始问题转化为对偶问题。这通常需要对目标函数和约束条件进行一些变换,以便将问题转化为一个新问题。
-
求解对偶问题。通常使用一些标准的数学方法来求解对偶问题,例如单纯形法或者拉格朗日乘子法。
-
将对偶问题的解转换为原始问题的解。这一步通常也需要进行一些变换,以便将对偶问题的解转化为原始问题的解。
对偶算法的一个优点是它可以在计算上比较高效。例如,如果原始问题中的约束条件比较多,那么使用对偶算法可以将这些约束条件转化为一个较少的数量,因此在求解问题时可能会更加高效。此外,对偶问题的求解过程可能会提供有关原始问题的更多信息,从而帮助我们更好地理解问题。
假设我们要求解以下约束优化问题:
最小化:x + y
约束条件:
- x ≥ 0
- y ≥ 0
- x + y = 1
在这个例子中,我们的目标是最小化目标函数x + y,并且需要满足三个约束条件。要求解这个问题,我们首先要将它转化为对偶问题。这一步需要进行如下变换:
- 将目标函数的最小化转化为最大化。
- 将原始问题的约束条件转化为对偶问题的目标函数。
- 将原始问题的目标函数转化为对偶问题的约束条件。
在这个例子中,我们首先将目标函数x + y的最小化转化为最大化。这样,我们就得到了新的对偶问题:
最大化:x + y
接下来,我们要将原始问题的约束条件转化为对偶问题的目标函数。根据第二个步骤,我们需要将约束条件x + y = 1转化为一个新的目标函数。我们可以将这个约束条件表示为:
x + y = 1
将这个约束条件与原始问题的目标函数x + y相乘,得到:
(x + y) * (x + y) = 1
然后,我们可以用拉格朗日乘子法来求解对偶问题。我们可以用拉格朗日函数来表示对偶问题:
L(x,y,λ) = x + y + λ * (x + y - 1)
然后,我们可以计算拉格朗日函数的偏导数,并求解方程组:
∂L/∂x = 1 + λ = 0 ∂L/∂y = 1 + λ = 0 ∂L/∂λ = x + y - 1 = 0
解这个方程组,得到:
x = 1/2 y = 1/2 λ = -1/2
由于对偶问题的解满足对偶问题的约束条件,所以我们可以将对偶问题的解转换为原始问题的解。根据第三个步骤,我们需要将对偶问题的解转换为原始问题的目标函数。因此,我们得到:
x + y = 1/2 + 1/2 = 1
这就是原始问题的解。由于我们求得的解满足原始问题的约束条件,因此这就是原始问题的最优解。
Lagrange对偶
记不等式约束组成的向量值函数为 , 等式约束组成的向量值函数记为
Lagrange函数为

- 对偶间隙:原规划与对偶问题的最优值之间的差;
- 完全对偶:对偶间隙为零;
- 强对偶:对偶间隙为零,原问题和对偶问题都存在最优解;
对偶问题的例题
