最优化方法复习题
一、选择题
(1)(多选)在最优化算法中,考虑无约束优化问题 \(\min\text{\ }f\left( x \right) ,x\in R^n\),迭代点序列为\(\left\{ x_k \right\} ,\varepsilon >0\) , 以下可作为迭代停止条件的是__________
A. $||x_{k+1}-x_k||\le \varepsilon $
B. $||\nabla f\left( x_k \right) ||\le \varepsilon $
C. $\frac{|f\left( x_{k+1} \right) -f\left( x_k \right) |}{|f\left( x_k \right) |}\le \varepsilon $
答案:ABC
当考虑无约束优化问题时,我们通常使用迭代算法来逐步接近最优解。在这个问题中,我们需要选择合适的迭代停止条件。让我们逐个解释选项ABC的含义和作用:
A. \(||x_{k+1}-x_k||\le \varepsilon\)
这个条件是基于迭代点序列的相邻两个点之间的距离。如果当前点与前一个点之间的距离小于等于给定的精度\(\varepsilon\),我们可以认为迭代已经足够接近最优解,从而停止迭代。
B. \(||\nabla f\left( x_k \right) ||\le \varepsilon\)
这个条件是基于函数梯度的范数。函数梯度表示了函数在某一点的变化率和方向。如果当前点的梯度范数小于等于给定的精度\(\varepsilon\),则说明函数在该点的变化足够小,可能已经接近最优解。
C. \(\frac{|f\left( x_{k+1} \right) -f\left( x_k \right) |}{|f\left( x_k \right) |}\le \varepsilon\)
这个条件是基于函数值的相对变化。如果函数在相邻两个迭代点之间的变化相对于当前函数值的比例小于等于给定的精度\(\varepsilon\),我们可以认为函数的变化足够小,可能已经接近最优解。
综上所述,选项ABC分别考虑了迭代点序列的距离、函数梯度以及函数值的变化作为迭代停止的条件。这些条件是常用的迭代停止准则,因为当这些条件满足时,我们可以合理地认为迭代已经接近最优解。在实际应用中,我们可以选择其中一个或多个条件作为停止准则,具体选择取决于问题的性质和要求。
在最优化算法中,常用的停止条件包括但不限于以下几种:
-
收敛准则:通过检查连续迭代点之间的距离或函数值的变化情况来判断算法是否收敛。例如,可以设置一个小的阈值\(\varepsilon\),当迭代点之间的距离小于等于\(\varepsilon\)或函数值的变化小于等于\(\varepsilon\)时停止迭代。
-
梯度准则:通过检查函数梯度的大小来判断算法是否接近最优解。例如,可以设置一个小的阈值\(\varepsilon\),当函数梯度的范数小于等于\(\varepsilon\)时停止迭代。
-
目标函数值准则:通过检查目标函数值的变化情况来判断算法是否接近最优解。例如,可以设置一个小的阈值\(\varepsilon\),当函数值的相对变化小于等于\(\varepsilon\)时停止迭代。
-
最大迭代次数:设置一个预定的最大迭代次数,当达到最大迭代次数时停止迭代,无论是否达到收敛条件。
这些停止条件可以单独或结合使用,具体选择取决于具体的最优化问题和算法。在实际应用中,通常需要根据问题的特点和计算资源的限制来确定合适的停止条件。
(2)(单选)设约束条件\(c_1\left( x \right) =x_2-\sqrt{2}x_1^2\ge 0,c_2\left( x \right) =x_1\ge 0\)。令\(\bar{x}=\left( \frac{\sqrt{2}}{2},\frac{\sqrt{2}}{2} \right) ^T\),则点\(\bar{x}\) 的有效约束集为_______________。
A. \(\{1, 2 \}\)
B. \(\{1\}\)
C. \(\{2\}\)
在这个题目中,我们需要确定点\(\bar{x}=\left( \frac{\sqrt{2}}{2},\frac{\sqrt{2}}{2} \right) ^T\)的有效约束集。有效约束集是指满足约束条件的集合索引。
给定的约束条件是:
\(c_1\left( x \right) =x_2-\sqrt{2}x_1^2\ge 0\)
\(c_2\left( x \right) =x_1\ge 0\)
我们将点\(\bar{x}\)带入约束条件进行验证:
\(c_1\left( \bar{x} \right) = \frac{\sqrt{2}}{2} - \sqrt{2} \left(\frac{\sqrt{2}}{2}\right)^2 = \frac{\sqrt{2}}{2} - \frac{\sqrt{2}}{2} = 0\)
\(c_2\left( \bar{x} \right) = \frac{\sqrt{2}}{2} \ge 0\)
从上面的计算可以看出,点\(\bar{x}\)同时满足约束条件\(c_1\left( x \right) \ge 0\)和\(c_2\left( x \right) \ge 0\),即\(x_1\ge 0\)和\(x_2-\sqrt{2}x_1^2\ge 0\)。
有效约束集是指在满足约束条件的情况下,对应于非零的约束不等式的索引集合。根据题目中给定的约束条件,我们可以看到只有约束条件\(c_2\left( x \right) = x_1\ge 0\)是非零约束。因此,点\(\bar{x}\)的有效约束集只包含索引1,即\(\{1\}\)。
因此,正确的答案是B,即有效约束集为\(\{1\}\)。
(3)(单选)求解无约束最优化问题\(min f(x),x \in R^n\),设\(x^k\) 是不满足最优性条件的第\(k\)步迭代点,则用共轭梯度法求解时,搜索方向\(d_k\)为______。
A. $-\nabla f\left( x^k \right) $
B. $-\left[ \nabla ^2f\left( x^k \right) \right] ^{-1}\nabla f\left( x^k \right) $
C. \(-\nabla f\left( x^k \right) +\beta _{k-1}d_{k-1}\)
在使用共轭梯度法求解无约束最优化问题时,我们需要确定每一步的搜索方向\(d_k\)。共轭梯度法利用了特定的搜索方向序列,使得每个搜索方向与前一个搜索方向共轭(正交),从而加速收敛。
在这个题目中,给定了不满足最优性条件的第\(k\)步迭代点\(x^k\)。我们需要确定搜索方向\(d_k\)。让我们逐个解释选项ABC的含义:
A. \(-\nabla f\left( x^k \right)\)
这个选项表示直接使用负梯度作为搜索方向。负梯度方向指向了函数在当前点下降最快的方向,但在共轭梯度法中,我们需要利用前一步的信息来构造共轭方向。
B. \(-\left[ \nabla ^2f\left( x^k \right) \right] ^{-1}\nabla f\left( x^k \right)\)
这个选项表示使用牛顿法的搜索方向。它利用了函数的Hessian矩阵(二阶导数矩阵)来指导搜索方向。然而,共轭梯度法不直接使用牛顿法的搜索方向。
C. \(-\nabla f\left( x^k \right) +\beta _{k-1}d_{k-1}\)
这个选项表示共轭梯度法中的搜索方向计算公式。其中,\(-\nabla f\left( x^k \right)\)表示当前点的负梯度方向,\(\beta _{k-1}d_{k-1}\)表示前一步搜索方向的调整项。调整项\(\beta _{k-1}d_{k-1}\)确保了当前搜索方向与前一步的搜索方向共轭。
共轭梯度法利用了前一步的信息来构造当前的搜索方向,以加速收敛。这种方法在求解二次函数最优化问题时特别有效。因此,正确的答案是C,即搜索方向\(d_k\)由\(-\nabla f\left( x^k \right) +\beta _{k-1}d_{k-1}\)给出。
当使用共轭梯度法求解无约束最优化问题时,我们希望找到一个搜索方向\(d_k\),使得沿着这个方向进行搜索可以快速接近最优解。共轭梯度法利用了函数的梯度信息以及前一步的搜索方向,以生成新的搜索方向。
在共轭梯度法中,搜索方向的计算使用了以下公式:
\(d_k = -\nabla f(x^k) + \beta_{k-1}d_{k-1}\)
其中,\(x^k\)表示第\(k\)步迭代的点,\(-\nabla f(x^k)\)表示当前点的梯度的负方向,即函数在当前点下降最快的方向。
而\(\beta_{k-1}\)是一个系数,用来调整前一步搜索方向\(d_{k-1}\)在新的搜索方向中的影响。它的计算方式如下:
\(\beta_{k-1} = \frac{{\nabla f(x^k)^T \nabla f(x^k)}}{{\nabla f(x^{k-1})^T \nabla f(x^{k-1})}}\)
其中,\(\nabla f(x^k)^T\)表示当前点的梯度的转置,\(\nabla f(x^{k-1})^T\)表示前一步的梯度的转置。
这个调整项\(\beta_{k-1}d_{k-1}\)的作用是确保新的搜索方向\(d_k\)与前一步的搜索方向\(d_{k-1}\)共轭。通过选择共轭的搜索方向,可以加速最优解的收敛过程。
综上所述,选项C中的\(-\nabla f(x^k) + \beta_{k-1}d_{k-1}\)表示共轭梯度法中的搜索方向计算公式,利用当前点的负梯度方向和前一步搜索方向的调整项来确定下一步的搜索方向。这种选择可以帮助共轭梯度法更快地接近最优解。
(4)(单选)设 \(f\) 连续可微且 ,若向量\(d\)满足___,则它是\(f\)在\(x\)处的一个下降方向。
A.\(\nabla f\left( x \right) ^Td<0\)
B. \(\nabla f\left( x \right) ^Td>0\)
C. \(\nabla f\left( x \right) ^Td=0\)
在这道题目中,我们需要判断向量\(d\)是否是函数\(f\)在点\(x\)处的一个下降方向。
首先,我们需要了解什么是下降方向。在最优化问题中,下降方向是指在给定点处函数值减少的方向。
对于连续可微的函数\(f\),梯度\(\nabla f(x)\)表示函数\(f\)在点\(x\)处的方向导数。方向导数表示函数在某个给定方向上的变化率。
现在让我们逐个解释选项ABC的含义:
A. \(\nabla f(x)^Td<0\)
这个选项表示梯度\(\nabla f(x)\)与向量\(d\)的内积小于0。如果这个条件成立,意味着向量\(d\)与梯度\(\nabla f(x)\)的方向相反,即向量\(d\)指向了函数\(f\)在点\(x\)处的下降方向。因此,选项A表示向量\(d\)是\(f\)在\(x\)处的一个下降方向。
B. \(\nabla f(x)^Td>0\)
这个选项表示梯度\(\nabla f(x)\)与向量\(d\)的内积大于0。如果这个条件成立,意味着向量\(d\)与梯度\(\nabla f(x)\)的方向相同,即向量\(d\)指向了函数\(f\)在点\(x\)处的上升方向。因此,选项B表示向量\(d\)不是\(f\)在\(x\)处的一个下降方向。
C. \(\nabla f(x)^Td=0\)
这个选项表示梯度\(\nabla f(x)\)与向量\(d\)的内积等于0。如果这个条件成立,意味着向量\(d\)与梯度\(\nabla f(x)\)正交,即向量\(d\)不指向函数\(f\)在点\(x\)处的任何方向。因此,选项C表示向量\(d\)不是\(f\)在\(x\)处的一个下降方向。
综上所述,根据下降方向的定义和选项ABC的含义,我们可以得出正确答案是A,即\(\nabla f(x)^Td<0\)。这表示向量\(d\)是函数\(f\)在点\(x\)处的一个下降方向。
(5)(单选)求解无约束最优化问题\(min f(x),x \in R^n\),设\(x^k\) 是不满足最优性条件的第\(k\)步迭代点,则用牛顿法求解时,搜索方向\(d_k\)为______。
A. $-\nabla f\left( x^k \right) $
B. $-\left[ \nabla ^2f\left( x^k \right) \right] ^{-1}\nabla f\left( x^k \right) $
C. \(-\nabla f\left( x^k \right) +\beta _{k-1}d_{k-1}\)
答案选B,详细请看第三题。
二、填空题
(1)若
,则梯度$\nabla f\left( x \right) $=() ,Hesse 矩阵=()。
首先,计算梯度\(\nabla f(x)\),根据题目中给出的函数\(f(x)\),我们有:
计算梯度\(\nabla f(x)\),即函数\(f(x)\)对变量\(x\)的偏导数向量:
对于每个变量\(x_i\),我们求偏导数:
因此,梯度\(\nabla f(x) = \begin{pmatrix} 2x_1 + x_2 + 1 \\ x_1 + 2x_2 + 3 \end{pmatrix}\)。
接下来,计算Hesse矩阵。Hesse矩阵是函数的二阶偏导数构成的矩阵。
我们计算每个二阶偏
导数:
因此,Hesse矩阵\(H = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}\)。
(2)设\(f\)连续可微且\(\nabla f\left( x \right) \ne 0\),若向量\(d\)满足\(\nabla f\left( x \right) ^Td\)___\(0\),则它是\(f\)在\(x\)处的一个下降方向。(大于,小于,不等于)
当向量\(d\)满足\(\nabla f(x)^Td < 0\)时,我们可以说\(d\)是函数\(f\)在点\(x\)处的一个下降方向。
解释如下:
- 梯度向量\(\nabla f(x)\)表示函数\(f\)在点\(x\)处的变化率和方向。它指向函数值增加最快的方向。
- 如果向量\(d\)与梯度向量\(\nabla f(x)\)的夹角小于90度(即它们的内积为负),那么在沿着\(d\)的方向移动时,函数\(f\)的值会减小,即\(f(x+td) < f(x)\),其中\(t\)为一个足够小的正数。
- 因此,当\(\nabla f(x)^Td < 0\)时,向量\(d\)被称为函数\(f\)在点\(x\)处的一个下降方向,因为沿着\(d\)的方向移动会导致函数值的减小。
所以,填空的内容是"小于"。
(3)若
,则梯度\(\nabla f\left( x \right) =\) ___,海森矩阵\(\nabla ^2f\left( x \right) =\)___
对于给定的函数\(f(x)\),我们需要计算梯度\(\nabla f(x)\)和海森矩阵\(\nabla^2 f(x)\)。
首先,计算梯度\(\nabla f(x)\)。根据题目中给出的函数\(f(x)\),我们有:
计算梯度\(\nabla f(x)\),即函数\(f(x)\)对变量\(x\)的偏导数向量:
对于每个变量\(x_i\),我们求偏导数:
因此,梯度\(\nabla f(x) = \begin{pmatrix} 2x_1 + x_2 + 3 \\ x_1 + 4x_2 + 2 \end{pmatrix}\)。
接下来,计算海森矩阵\(\nabla^2 f(x)\)。海森矩阵是函数的二阶偏导数构成的矩阵。
计算每个元素:
因此,海森矩阵\(\nabla^2 f(x) = \begin{pmatrix} 2 & 1 \\ 1 & 4 \end{pmatrix}\)。
请注意,这些计算是基于给定的函数\(f(x)\)进行的。如果需要具体的\(x\)值,可以将\(x_1\)和\(x_2\)替换为具体的数值进行计算。
三、简答题
(1)黄金分割法进行精确线搜索时,记搜索区间为\(\left[ a_k,\ b_k \right]\),请给出试探点\(\lambda _k\),\(\mu _k\)的计算公式, 并计算初始区间\(\left[ a_0,\ b_0 \right] =\left[ 1,\ 2 \right]\)时的两个初始试探点\(\lambda _0\),\(\mu _0\).
在黄金分割法中,我们通过迭代的方式逐步缩小搜索区间,同时选择试探点\(\lambda_k\)和\(\mu_k\)来确定新的子区间。
计算试探点的公式如下:
- 计算子区间长度:\(L_k = b_k - a_k\)
- 计算黄金分割比例:\(\phi = \frac{\sqrt{5} - 1}{2} \approx 0.618\)
- 计算试探点\(\lambda_k\):\(\lambda_k = a_k + (1 - \phi)L_k\)
- 计算试探点\(\mu_k\):\(\mu_k = a_k + \phi L_k\)
对于初始区间\(\left[ a_0,\ b_0 \right] = \left[ 1,\ 2 \right]\),我们可以进行如下计算:
- 计算子区间长度:\(L_0 = b_0 - a_0 = 2 - 1 = 1\)
- 计算黄金分割比例:\(\phi \approx 0.618\)
- 计算试探点\(\lambda_0\):\(\lambda_0 = a_0 + (1 - \phi)L_0 = 1 + (1 - 0.618) \times 1 = 1 + 0.382 = 1.382\)
- 计算试探点\(\mu_0\):\(\mu_0 = a_0 + \phi L_0 = 1 + 0.618 \times 1 = 1 + 0.618 = 1.618\)
因此,初始区间\(\left[ a_0,\ b_0 \right] = \left[ 1,\ 2 \right]\)时的初始试探点为\(\lambda_0 = 1.382\)和\(\mu_0 = 1.618\)。
(2)写出凸集的定义
凸集的定义:设集合\(D\in R^n\),如果对任意\(x,y \in D\)和任意\(\lambda \in [0,1]\)有\(\lambda x + (1- \lambda)y \in D\)则称集合\(D\)为凸集
凸集是指在欧几里德空间中的一个集合,满足以下性质:
对于集合中的任意两个点\(x\)和\(y\),以及任意实数\(\lambda\),满足\(0 \leq \lambda \leq 1\),都有\(\lambda x + (1 - \lambda) y\)也属于该集合。
换句话说,对于凸集中的任意两个点,连接它们的线段上的任意一点也属于该集合。这意味着凸集中的任意两点之间的线段上的所有点都包含在凸集内部。
简单来说,凸集就是任意两点之间的连线上的所有点都在该集合内部的集合。
凸集具有许多重要的性质,例如在凸集上的任意两点之间的连线都在该集合内部,凸集的交集仍然是凸集等等。
(3)用黄金分割法求函数\(f\left( x \right) =x^2-x+2\)的极小点时,若初始区间\(\left[ a_0,\ b_0 \right] =\left[ 0,\ 2 \right]\),请给出初始的两个试点\(\lambda _0\),\(\mu _0\)及新的搜索区间\([a_1, b_1]\).
使用黄金分割法求函数\(f(x) = x^2 - x + 2\)的极小点时,可以按照以下步骤进行:
-
初始区间:给定初始区间\([a_0, b_0] = [0, 2]\)。
-
计算子区间长度:\(L_0 = b_0 - a_0 = 2 - 0 = 2\)。
-
计算黄金分割比例:\(\phi = \frac{\sqrt{5} - 1}{2} \approx 0.618\)。
-
计算试探点\(\lambda_0\):\(\lambda_0 = a_0 + (1 - \phi)L_0 = 0 + (1 - 0.618) \times 2 = 0 + 0.382 \times 2 = 0.764\)。
-
计算试探点\(\mu_0\):\(\mu_0 = a_0 + \phi L_0 = 0 + 0.618 \times 2 = 0.618 \times 2 = 1.236\)。
-
更新搜索区间:根据试探点\(\lambda_0\)和\(\mu_0\)的比较结果,确定新的搜索区间\([a_1, b_1]\)。如果\(f(\lambda_0) < f(\mu_0)\),则新的搜索区间为\([a_0, \mu_0]\);否则,新的搜索区间为\([\lambda_0, b_0]\)。在这种情况下,由于\(f(\lambda_0) < f(\mu_0)\),所以新的搜索区间为\([a_1, b_1] = [0, 1.236]\)。
综上所述,初始的两个试点为\(\lambda_0 = 0.764\),\(\mu_0 = 1.236\),新的搜索区间为\([a_1, b_1] = [0, 1.236]\)。
(4)写出牛顿法迭代步骤
牛顿法是一种常用的优化算法,用于求解无约束优化问题。下面是牛顿法的迭代步骤:
-
初始化:选择初始点\(x_0\)作为迭代的起点。
-
迭代计算:对于第\(k\)次迭代,计算当前点\(x_k\)的梯度向量\(\nabla f(x_k)\)和Hessian矩阵\(\nabla^2 f(x_k)\)。
-
计算搜索方向:求解线性方程组\(\nabla^2 f(x_k) \Delta x = -\nabla f(x_k)\),其中\(\Delta x\)为搜索方向。
-
更新迭代点:计算下一迭代点\(x_{k+1} = x_k + \Delta x\)。
-
判断终止条件:判断是否满足终止条件,例如梯度的范数小于某个预设的阈值,或者迭代次数达到预设的最大次数。
-
如果终止条件满足,则算法结束,返回当前迭代点\(x_k\)作为近似的极小点;否则,返回第2步继续迭代。
牛顿法的核心思想是使用二阶导数信息(Hessian矩阵)来指导搜索方向,从而更快地逼近极小点。但需要注意的是,牛顿法可能受到Hessian矩阵的正定性或计算复杂性等因素的影响,在某些情况下可能会导致算法不稳定或收敛速度较慢。
(5)写出约束最优化问题的 KKT 定理。
考虑以下约束最优化问题:
最小化: \(f(x)\)
在约束条件下:
\[g_i(x) ≤ 0, i = 1, 2, ..., m \]\[h_j(x) = 0, j = 1, 2, ..., p \]
其中,\(f(x)\)是目标函数,\(g_i(x)\)是不等式约束,\(h_j(x)\)是等式约束。
假设\(x^*\)是问题的一个可行解,并且满足一定的正则性条件。那么,如果 \(x^*\) 是最优解,那么存在拉格朗日乘子 \(λ^* = (λ_1^*, λ_2^*, ..., λ_m^*)\) 和 \(μ* = (μ_1*, μ_2*, ..., μ_p*)\),满足以下KKT条件:
-
约束条件的可行性条件:
- \(g_i(x^*) ≤ 0, i = 1, 2, ..., m\)
- \(h_j(x^*) = 0, j = 1, 2, ..., p\)
-
梯度条件:
- \(∇f(x^*) + ∑λ_i^*∇g_i(x^*) + ∑μ_j^*∇h_j(x^*) = 0\)
-
KKT互补条件:
- \(λ_i^* g_i(x^*) = 0, i = 1, 2, ..., m\)
-
松弛非负性条件:
- \(λ_i^* ≥ 0, i = 1, 2, ..., m\)
KKT定理表明,如果一个点同时满足约束条件的可行性、梯度条件、KKT互补条件以及松弛非负性条件,那么这个点有可能是最优解。
需要注意的是,KKT定理并不保证所有满足KKT条件的点都是最优解,因为存在非凸问题和局部最优解的问题。但是在许多凸优化问题中,满足KKT条件的点往往是最优解。