工程优化学习笔记

矩阵行列式计算

二阶行列式计算

\[det \left( \begin{matrix} a & b \\ c & d \end{matrix} \right ) = ad - bc \]

三阶行列式计算

\[det \left ( \begin{matrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{matrix} \right) = a_{11}a_{22}a_{33} + a_{12}a_{23}a_{31} + a_{13}a_{21}a_{32} - a_{13}a_{22}a_{31}-a_{12}a_{21}a_{33}-a_{11}a_{23}a_{32} \]

形式化表述为:(红线为加数,蓝线为减数)

矩阵的逆的计算

1. 待定系数法

令矩阵 \(A = \left( \begin{matrix} 1 & 2 \\ -1 & -3 \end{matrix}\right)\),令所要求解的逆矩阵为\(A^{-1} = \left( \begin{matrix} a & b \\ c & d \end{matrix}\right)\)。则有\(A*A^{-1} = I\),可得到方程组

\[\begin{matrix} a + 2c = 1 \\ b + 2d = 0 \\ -a - 3c = 0 \\ -b - 3d = 1 \end{matrix} \]

从而解的\(a = 3, b = 2, c = -1, d = -1\),即

\[A^{-1} = \left( \begin{matrix} 3 & 2 \\ -1 & -1 \end{matrix} \right) \]

2. 初等变换求逆矩阵

同样,令矩阵 \(A = \left( \begin{matrix} 1 & 2 \\ -1 & -3 \end{matrix}\right)\),写出它的增广矩阵 \(A|E\),即矩阵\(A\)右侧放置一个同阶的单位矩阵,得到一个新矩阵。

\[A|E = \left( \begin{matrix} 1 & 2 & 1 & 0 \\ -1 & -3 & 0 & 1 \end{matrix} \right) \]

对其进行初等变换,使原来\(A\)处的矩阵变换成为单位矩阵,则原单位矩阵处就变换成了\(A^{-1}\),变换后的矩阵为:

\[\left( \begin{matrix} 1 & 0 & 3 & 2 \\ 0 & 1 & -1 & -1 \end{matrix} \right) \]

常用的梯度公式

\[(1)\ f(x) = C(常数), \nabla f(x) = 0, 即\nabla C = 0 \]

\[(2)\ f(x) = b^{T}x, \nabla f(x) = b \]

\[(3)\ f(x) = x^{T}x, \nabla f(x) = 2x \]

\[(4)\ f(x) = x^{T}Qx (Q^T=Q), \nabla f(x) = 2Qx \]

Taylor展开公式

\(f:R^n \rightarrow R\)二阶可导,在\(x^*\)的领域内
一阶Taylor展开式为

\[f(x) = f(x^*)+(\nabla f(x^*))^T(x-x^*) + o(||x-x^*||) \]

二阶Taylor展开式为

\[f(x) = f(x^*)+(\nabla f(x^*))^T(x-x^*) + \frac{1}{2}(x-x^*)^T\nabla ^2f(x^*)(x-x^*) + o(||x-x^*||) \]

凸集

若集合\(D\)中任意两点的连线段都属于\(D\),则称\(D\)为凸集。

两点\(x^1, x^2\)连线段上任一点可表示为\(x=ax^1+(1-a)x^2,a\in[0,1]\)

\(A,B\subseteq R^n\)是凸集,则\(A\bigcap B, A + B, A - B\)也是凸集。其中\(A + B := {a+b:a\in A, b\in B}\), \(A-B:={a-b:a\in A, b \in B}\),注意\(A \bigcup B\)不一定是凸集。

\(D\)是凸集\(\Longleftrightarrow D\)中任意有限多个点的凸组合也属于\(D\)

凸函数
定义:设集合\(D \subseteq R^n\)为凸集,函数\(f:D \rightarrow R\),若\(\forall x^1,x^2 \in D, \alpha \in (0,1)\),均有:

\[f(\alpha x^1 + (1 - \alpha)x^2) \leq \alpha f(x^1) + (1-\alpha)f(x^2) \]

则称\(f\)为凸集\(D\)上的凸函数。

假设\(f(x),g(x)\)均为凸函数,证明\(max\lbrace f(x), g(x)\rbrace\)也是凸函数。

证明:
\(f(tx_1 + (1-t)x_2) \leq tf(x_1) + (1-t)f(x_2), g(tx_1 + (1-t)x_2) \leq tg(x_1) + (1-t)g(x_2)\)
\(max \lbrace f(tx_1+(1-t)x_2), g(tx_1, (1-t)x_2) \rbrace \leq max\lbrace tf(x_1) + (1-t)f(x_2), tg(x_1) + (1-t)g(x_2) \rbrace \leq t max\lbrace f(x_1), g(x_1) \rbrace + (1-t) max\lbrace f(x_2), g(x_2) \rbrace\)

凸函数判定定理
\(D \subseteq R^n\)为非空开凸集,函数\(f:D\rightarrow R\)\(D\)上二次可微,则
(i) \(f\)\(D\)上为凸函数 \(\Longleftrightarrow \forall x\in D, \nabla^2f(x)\)半正定
(ii) 若\(\forall x \in D, \nabla^2 f(x)\)正定,则\(f\)\(D\)上为严格凸函数

对于凸规划
\( min\ f(x) \)
\( s.t.\ g_i(x) \leq 0, i=1,2,L,m \)

\(\overline{x} \in D, f \in C^1\),则\(\overline{x}\)为上式的最优解的充要条件为\(\forall x \in D\),有

\[(x-\overline{x})^T \nabla f(\overline{x}) \ge 0 \]

精确一维搜索

成功失败法

步骤1:选取初始点\(x\in R\),初始步长\(h \gt 0\)及精度\(\epsilon \gt 0\)\(\varphi_1 = f(x)\)
步骤2:计算 \(\varphi_2 = f(x+h)\)
步骤3:若\(\varphi_2 < \varphi_1\),搜索成功, 转步骤4;否则,搜索失败,转步骤5。
步骤4:令\(x:= x + h\), \(\varphi_1 := \varphi_2, h := 2h\),转步骤2。
步骤5:判断\(|h| < \epsilon\)?,若\(|h| < \epsilon\)停止迭代,\(x^*=x\);否则令\(h = \frac{-h}{4}\)转步骤2。

0.618法

使用四个点来依次缩短区间,当区间长度充分小时,可将区间中点取做极小点的近似点。所选取的四个点分别为\(a,b,x_1,x_2\),其中,\(a,b\)分别为区间的下界和上界。\(x_1,x_2\)的计算符合0.618准则,如下:

\[\begin{matrix} x_1 = a+0.382(b–a) \\ x_2 = a+0.618(b–a) \end{matrix} \]

二分法

因为我们假定函数在所给区间为凸函数,因此区间范围内必存在一点使得其导数为0,该点即为极小点。所以可以每次计算区间中点的导数值,以此来缩小区间,当区间足够小时,使区间的中点为局部极小点。

步骤1:计算 \(x_0 = \frac{a+b}{2}\)
步骤2:若\(f^{'}(x_0) \lt 0\),令\(a = x_0\),转步骤3;
\(f^{'}(x_0) \gt 0\),令\(b = x_0\),转步骤3;
\(f^{'}(x_0) = 0\),停止,\(x^* = x_0\)
步骤3:若\(|b-a| \lt \epsilon\),则\(x^* = \frac{a+b}{2}\),停止,否则,转步骤1.

牛顿法

步骤1:给定初始点\(x_1,\epsilon \gt 0\),令\(k=1\)
步骤2:计算\(x_{k+1} = x_{k} - \frac{f^{'}(x_k)}{f^{''}(x_k)}\)
步骤3:若\(|f^{'}(x_{k+1})| \lt \epsilon\),停止,\(x^* \approx x_{k+1}\)

拟Newton法
需要构造\(H_k\)\(H_k\)需要满足的几个原则有:

  1. 拟牛顿性质

$\Delta x_k = H_{k+1}\nabla g_k \(,其中\)H_{k+1}$不唯一,该式表现了拟牛顿性质,称为条件或者方程。

  1. 二次收敛性

\(f(x)=\frac{1}{2}x^TAx+b^Tx+c, A对称正定\)
把算法用于\(n\)元正定二次函数时,至多\(n\)次达到极小点。

  1. 稳定性

在算法的迭代点\(x^k\)处可选择步长,使得下个迭代点\(x^{k+1}处的函数值下降,则称此算法是稳定的。\)

插值法

使用成功失败法寻找“高,低,高”三点,分别作为区间和区间内的一点,然后通过这三个点构造二(三、四)次方程,得到该方法的极值点作为第四个点,然后通过这四个点的函数值来进一步缩短区间。

步骤1:(用成功失败法) 寻找“高-低-高”三点:即三点满足

\[x_1 \lt x_2 \lt x_3,\ f(x_1) \gt f(x_2) \lt f(x_3) \]

步骤2:确定二次插值多项式\(P(x) =a_0+a_1 x + a_2 x^2\),求出\(P\)的极小点\(\overline{x}\)(因\(P(x_1) \gt P(x_2) \lt P(x_3)\)),故\(a_2 \gt 0\)\(\overline{x} \in [x_1, x_3]\)
步骤3:若\(|x_2 - \overline{x}| \lt \epsilon\),则迭代结束,取\(x^* = \overline{x}\),否则在点\(x_1,x_2,x_3,\overline{x}\)中,选取使\(f\)最小的点作为新的\(x_2\),并使新的\(x_1,x_3\)各是新的\(x_2\)近旁的左右两点,转步骤2,继续迭代,直到满足终止条件。

最速下降法

步骤1:选定初始点\(x,\epsilon \gt 0\),并令\(k=1\)
步骤2:若\(||\nabla f(x^k)|| \leq \epsilon\),得到近似驻点\(x^k\),否则转步骤3
步骤3:令\(d^k = - \nabla f(x^k)\)
步骤4:由精确一维搜索确定最佳步长\(\lambda_k=arg\ min\ f(x^k+\lambda d^k)\)。令\(x^{k+1}=x^k+\lambda _kd^k, k:=k+1\),转步骤2

Newton法

求函数\(f\)的极小点,给定误差极限\(\epsilon\).
步骤1:选定初始点\(x^1\),计算\(f_1 = f(x^1),k=1\)
步骤2:如果\(||\nabla f(x^k)|| \leq \epsilon\),停止,得到近似驻点\(x^k\),否则转步骤3
步骤3:计算搜索方向\(d^k = -(\nabla ^2f(x^k))^{-1}\nabla f(x^k)\)
步骤4:令\(x^{k+1} = x^k+d^k, k=k+1\),转步骤2

阻尼Newton法
将Newton法中的迭代公式进行替换,加入精确一维搜索\(min f(x^k + \lambda d^k)\),求得最佳步长\(\lambda_k\),得到下一个迭代点\(x^{k+1} = x^k+\lambda_k d^k\)

利用阻尼Newton法求n元正定二次函数的极小点,从任意初始点出发,一步迭代即可达到极小点。

FR共轭梯度法

步骤1:选定初始点\(x^1\)
步骤2:如果\(||g_1|| \leq \epsilon\),停止,得到近似驻点\(x^1\),否则转步骤3
步骤3:取\(p^1=-g_1,k=1\)
步骤4:精确一维搜索找最佳步长\(\lambda_k\),令\(x^{k+1} = x^k + \lambda_kp^k\)
步骤5:如果\(||g_{k+1}|| \leq \epsilon\),停止,得到近似驻点\(x^{k+1}\),否则转步骤6
步骤6:如果\(k=n\),令\(x^1=x^{k+1},p^1=-g_{k+1},k=1\),转步骤4;否则转步骤7
步骤7:计算\(a_k=\frac{||g_{k+1}||^2}{||g_k||^2},p^{k+1}=-g_{k+1}+a_kp^k,k=k+1\),转步骤4

变尺度法--DFP算法

步骤1:选定初始点\(x^1\),初始矩阵\(H_1=I_n\),\(\epsilon \gt 0\)
步骤2:如果\(||g_1|| \leq \epsilon\),停止,得到近似驻点\(x^1\),否则转步骤3
步骤3:取\(p ^1=-H_1g_1,k=1\)
步骤4:精确一维搜索找最佳步长\(\lambda _k\),令\(x^{k+1} = x^k + \lambda_k p^k\)
步骤5:如果\(||g_{k+1}|| \leq \epsilon\),停止,得到近似驻点\(x^{k+1}\),否则转步骤6
步骤6:如果\(k=n\),令\(x^1=x^{k+1},p^1=-g_{k+1},k=1\),转步骤4,否则转步骤7
步骤7:令\(\Delta x_k = x^{k+1} - x^k, \Delta g_k = g_{k+1} - g_k, r_k=H_k \Delta g_k\),计算:

\[H_{k+1} = H_k + \frac{\Delta x_k (\Delta x_k)^T}{(\Delta x_k)^T \Delta g_k} - \frac{r_k (r_k)^T}{(\Delta g_k)^T H_k \Delta g_k} \]

\(p^{k+1}=-H_{k+1}g_{k+1}\),令\(k = k+1\),转步骤4

两阶段法首先需要向原变量等式中引入人工变量,且人工变量均大于等于0,然后使用单纯形方法求解使得人工变量之和最小的条件,之后将修改单纯形表,将人工变量删去,继续使用单纯形方法得到目标函数的最优解。值得注意的是,在选择进基变量时,选择检验数,即\(\sigma_j\)大于0,且最大的一个。选择离基变量时,选择\(\theta\)大于0且最小的一个。当值相等时,离基变量选择下标最大的,进基变量选择下表最小的。

\(M\)

在约束中引入人工变量\(x_a\),同时修改目标函数,在原目标中加上惩罚项\(Me^Tx_a\),其中\(M\)为充分大的正数。

对偶规划

对偶单纯形法

对偶单纯形法的基本思想: 从(P)的一个对偶可行的基本解出发,在保证对偶可行的条件下,逐步使原问题基本解的不可
行性消失(即x非负),直到获得原问题的一个基本可行解为止,而这个基本可行解就是原问题的最优解.

对偶单纯形方法与原单纯形方法主要的区别就是,先计算\(\overline{b}\),找出其中小于0,且最小的一个作为离基变量,然后用\(\sigma_j\)除以对应的行,得到参考值,选择参考值中大于0,且最小的一个作为进基变量。目标是使\(\overline{b}\)值均大于等于0.

K-T点计算,一阶最优性条件

\[\begin{matrix} \nabla f(\overline{x}) - \sum_{i \in I(\overline{x})}w_i\nabla g_i(\overline{x}) - \sum_{j=1}^{l} v_j \nabla h_j(\overline{x}) = 0 \\ w_i \geq 0,i \in I(\overline{x}) \end{matrix} \]

\[\begin{matrix} \nabla f(\overline{x}) - \sum_{i=1}^{m}w_i\nabla g_i(\overline{x})-\sum_{j=1}^l v_j \nabla h_j(\overline{x}) = 0 \\ w_i \geq 0, i=1,...,m \\ w_i g_i(\overline{x}) = 0,i=1,...,m \end{matrix} \]

满足以上两个条件中的任意一个即为K-T点。若要求K-T点,用下式,若要验证,用上式。其中,\(g_i\)为大于约束,\(h_i\)为等式约束。

外点罚函数法

构造罚函数:\(min F(x,M_k)=f(x)+M_k p(x)\)
其中\(M_k\)逐渐趋于无穷

优化函数为

\[\begin{matrix} min\ f(x) \\ s.t.\ g_i(x) \geq 0, i=1,...,m \\ h_j(x) = 0,j=1,...,m \end{matrix} \]

\(p(x) = \sum_{i=1}^{m}(min\lbrace g_i(x),0 \rbrace )^2+\sum_{j=1}^l h_j^2(x)\),可用\(x\)来表示\(M\),然后让\(M\)趋于无穷,以此求得\(x\)

外点罚函数法性质

  1. \(F(x^{k+1}, M_{k+1}) \geq F(x^k, M_k)\)
  2. \(p(x^{k+1}) \leq p(x^k)\)
  3. \(f(x^{k+1}) \geq f(x^k)\)

外点罚函数法不等式证明

  1. \(F(x^{k+1}, M_{k+1}) \geq F(x^k, M_k)\)

对于由外点法产生的点列\(\lbrace x^k \rbrace\)\(k \geq 1\),总有:
\( F(x^{k+1}, M_{k+1}) = f(x^{k+1}) + M_{k+1}p(x^{k+1}) \geq f(x^{k+1}) + M_kp(x^{k+1}) \)
=\( F(x^{k+1}, M_k) \)
\( \geq F(x^k,M_k) \)

  1. \(p(x^{k+1}) \leq p(x^k)\)

\( f(x^{k+1}) + M_kp(x^{k+1}) = F(x^{k+1}, M_k) \geq F(x^k, M_k) = f(x^k)+M_kp(x^k) \)
\( f(x^{k+1}) - f(x^k) \geq M_k[p(x^k)-p(x^{k+1})] \)
\( f(x^k)+M_{k+1}p(x^k)=F(x^k, M_{k+1})\geq F(x^{k+1}, M_{k+1})=f(x^{k+1})+M_{k+1}p(x^{k+1}) \)
\( f(x^k)-f(x^{k+1}) \geq M_{k+1}[p(x^{k+1})-p(x^k)] \)
\( 0 \geq (M_{k+1}-M_k)[p(x^{k+1})-p(x^k)] 已知M_{k+1}\geq M_k \)
\( p(x^{k+1}) \leq p(x^k) \)

  1. \(f(x^{k+1}) \geq f(x^k)\)

\(f(x^{k+1}) + M_kp(x^{k+1})=F(x^{k+1},M_k)\geq F(x^k,M_k)=f(x^k)+M_kp(x^k)\)
\(已知p(x^{k+1})\leq p(x^k)\)
\(f(x^{k+1})\geq f(x^k)\)

内点罚函数法

构造罚函数:\(F(x,r)=f(x)+rB(x)\),只可用于不等书约束的条件,要求大于等于0

\[\begin{matrix} B(x) = \sum_{i=1}^m \frac{1}{g_i(x)} \\ B(x) = -\sum_{i=1}^m ln(g_i(x)) \end{matrix} \]

内点罚函数法性质

  1. \(F(x^{k+1}, r_{k+1}) \leq F(x^k, r_k)\)
  2. \(B(x^{k+1}) \geq B(x^k)\)
  3. \(f(x^{k+1}) \leq f(x^k)\)

约坦狄克可行方向法

步骤1:给定初始可行点\(x^0\),令\(k=0\)
步骤2:在点\(x^k\)处将\(A\)\(b\)分解成

\[A=\left( \begin{matrix} A_1 \\ A_2 \end{matrix} \right) \]

\[b=\left( \begin{matrix} b_1 \\ b_2 \end{matrix} \right) \]

使得\(A_1x^k=b, A_2x^k\gt b_2\),计算\(\nabla f(x^k)\)
步骤3:求解线性规划\( \begin{matrix} min(\nabla f(x^k))^Td \\ s.t.\ A_1d \geq 0 \\ Cd = 0\\ |d_j| \leq 1, \forall j \end{matrix} \)得到最优解\(d^k\)
步骤4:若\((\nabla f(x^k))^Td^k = 0\),则算法结束,\(x^k\)是K-T点,否则转步骤5
步骤5:利用(*)式计算\(\lambda_{max}\),求解一维搜索问题

\[\begin{matrix} min\ f(x^k+\lambda d^k) \\ s.t.\ 0\leq \lambda \leq \lambda_{max} \end{matrix} \]

得到极小点\(\lambda _k\),令\(x^{k+1}=x^k+\lambda _kd^k,k=k+1\),转步骤2.
\( \lambda _{max}=\left \lbrace \begin{matrix} min\lbrace \frac{\overline{b_i}}{\overline{d_i}}| \overline{d_i} \lt 0\rbrace\ if \exist\overline{d_i} \lt 0 \\ +\infty\ \ if\ \overline{d} \geq 0 \end{matrix} \right. \) (*)
\( \overline d = A_2d^k ,\ \overline b = b_2 - A_2x^k \)

注:单纯形法,\(\sigma_j\)选择大于0且值最大的进基,\(\theta\)选择大于0且值s最小的进基。
对偶单纯形,先找离基再找进基。\(\overline{b}\)选择小于0且最小的一个离基,\(\sigma\)除以对应的行,所得大于0且最小的进基。

posted @ 2019-12-31 10:49  范中豪  阅读(1157)  评论(0编辑  收藏  举报