在前面的章节中,我们讨论了如何使用微积分找到单变量函数 的最优解,方法是找到所有满足 的点。但是,如果我们给定一个二元函数,例如 ?更重要的是,如果我们给定了需要遵循的约束呢?单变量模型根本无法扩展。
考虑优化问题 ,给定一个约束 。
首先将约束写成等于 0 的形式 - 因此 。然后,系统的拉格朗日函数定义为 。我们需要优化两个变量 - 和 。然后找到关于变量的导数
将它们设为 0。然后,最优集 是 和 的解。
|
编辑说明 一些作者只会正式对变量求偏导数,并将约束直接设为 0;这完全没问题,也很容易证明这两种方法是等效的。 这很重要,因为在使用 KKT 条件进行不等式约束的约束优化时(在本节中没有涵盖),对约束求偏导数会将问题转换为拉格朗日等式问题,这不是同一个问题。很容易将两者混淆。
|
示例。 在约束条件 的情况下,求解优化问题 .
那么拉格朗日系统为 。分别对它们求导
将第二个导数设为零 - 我们得到 。将其代入第一个:我们得到 ,即 。将其代入第二个:我们得到 。在这种情况下,最佳的最小值是集合 (这是我们想要的),而最佳的最大值是集合 .
重要的是要意识到拉格朗日并不保证特定解是极小值 - 我们需要自己测试解 - 正如在一个例子中,解实际上是极大值。
实际上,这是一个非常糟糕的例子,正如你可能已经看到的那样 - 在这种情况下,简单地用约束条件给出的两个有效值来测试优化问题完全是合适的!当我们有多个变量和约束条件需要考虑时,它会更有用。
考虑在约束条件 的情况下,求解优化问题 .
拉格朗日系统几乎与上面讨论的单变量情况相同,只是我们需要考虑三个偏导数(两个变量+一个约束):。现在分别求偏导数
(第一个变量x)
(第二个变量y)
(约束条件)
将它们设为 0 - 最优三元组 是该方程组的解。
例子. 求解优化问题 ,给定约束条件 。
我们必须使用拉格朗日乘数法吗?实际上,不是。这个问题可以通过将约束中的一个变量写成另一个变量的函数来简化为单变量形式:,然后将它代入优化问题
并使用单变量微积分技术来解决问题!但是,当有 **三个** 变量时,你能做到吗?不行,因为你很可能只能将问题简化为两个变量。
在本节中,考虑大小为 *n* 的向量 **x**:.
定义。 (拉格朗日函数)
考虑优化问题 ,给定一个包含 *m* 个约束的向量 .
该系统的拉格朗日函数定义为 .
然后对向量 **x** 和 **λ** 求偏导数:求 和 .
注意,该系统有 *m* + *n* 个变量,你需要对它们求 *m* + *n* 个偏导数。这可能会变得相当混乱。解决方法是使用 矩阵微积分.
这可能会让你感到害怕,但你不必担心。平均的微积分 3 课程只会考虑 2 到 3 个变量。
本节需要线性代数知识;因此,平均的微积分 3 课程不太可能涉及这方面内容。
在考虑拉格朗日 FONC(一阶必要条件)时,正则性条件适用
记住,这是一个 **必要** 条件。这意味着
- 仅仅因为一个点满足拉格朗日 FONC,并不意味着它是一个最小化点或最大化点。
- 不满足拉格朗日 FONC 的点不可能是最小值或最大值。
定义。 (正则性条件)给定一个约束向量 ,正则性条件表示每个约束在特定点的梯度必须线性无关。
如果该条件不满足,拉格朗日 FONC 不适用于该点。只有一个约束时,此条件无关紧要,因为根据定义,单个向量是线性无关的。
示例。
设 定义为 。判断这些向量在点 (0,0) 处是否正则。
解决方案。
求梯度
代入点 (0,0)
现在问题简化为检查向量 和 是否线性无关。为此,回顾线性无关要求给定两个常数 和 , 的解必须仅在 时出现。
这显然不是这种情况:一个简单的例子是设置 和 。因此,拉格朗日 FONC 不适用于该点的问题。