工程优化部分概念

矩阵行列式计算

二阶行列式计算

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

三阶行列式计算

[det left ( egin{matrix} a_{11} & a_{12} & a_{13} \ a_{21} & a_{22} & a_{23} \ a_{31} & a_{32} & a_{33} end{matrix} ight) = 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( egin{matrix} 1 & 2 \ -1 & -3 end{matrix} ight)),令所要求解的逆矩阵为(A^{-1} = left( egin{matrix} a & b \ c & d end{matrix} ight))。则有(A*A^{-1} = I),可得到方程组

[egin{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( egin{matrix} 3 & 2 \ -1 & -1 end{matrix} ight) ]

2. 初等变换求逆矩阵

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

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

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

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

常用的梯度公式

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

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

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

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

Taylor展开公式

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

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

二阶Taylor展开式为

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

凸集

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

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

(A,Bsubseteq R^n)是凸集,则(Aigcap B, A + B, A - B)也是凸集。其中(A + B := {a+b:ain A, bin B}), (A-B:={a-b:ain A, b in B}),注意(A igcup B)不一定是凸集。

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

凸函数判定定理
(D subseteq R^n)为非空开凸集,函数(f:D ightarrow R)(D)上二次可微,则
(i) (f)(D)上为凸函数 (Longleftrightarrow forall xin D, abla^2f(x))半正定
(ii) 若(forall x in D, abla^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 abla f(overline{x}) ge 0) ]

精确一维搜索

成功失败法

步骤1:选取初始点(xin 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准则,如下:

[egin{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})

插值法

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

步骤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:若(|| abla f(x^k)|| leq epsilon),得到近似驻点(x^k),否则转步骤3
步骤3:令(d^k = - abla 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:如果(|| abla f(x^k)|| leq epsilon),停止,得到近似驻点(x^k),否则转步骤3
步骤3:计算搜索方向(d^k = -( abla ^2f(x^k))^{-1} abla 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,且最大的一个。选择离基变量时,选择( heta)大于0且最小的一个。当值相等时,离基变量选择下标最大的,进基变量选择下表最小的。

(M)

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

对偶规划

对偶单纯形法

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

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

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

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

[egin{matrix} abla f(overline{x}) - sum_{i=1}^{m}w_i abla g_i(overline{x})-sum_{j=1}^l v_j abla 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)逐渐趋于无穷

优化函数为

[egin{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}(minlbrace g_i(x),0 brace )^2+sum_{j=1}^l h_j^2(x)),可用(x)来表示(M),然后让(M)趋于无穷,以此求得(x)

内点罚函数法

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

[egin{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:给定初始可行点(x^0),令(k=0)
步骤2:在点(x^k)处将(A)(b)分解成( A=left( egin{matrix} A_1 \ A_2 end{matrix} ight) )(b=left( egin{matrix} b_1 \ b_2 end{matrix} ight) ),使得(A_1x^k, A_2x^kgt b_2),计算( abla f(x^k))
步骤3:求解线性规划( egin{matrix} min( abla f(x^k))^Td \ s.t. A_1d geq 0 \ Cd = 0\ |d_j| leq 1, forall j end{matrix} )得到最优解(d^k)
步骤4:若(( abla f(x^k))^Td^k = 0),则算法结束,(x^k)是K-T点,否则转步骤5
步骤5:利用(*)式计算(lambda_{max}),求解一维搜索问题

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

得到极小点(lambda _k),令(x^{k+1}=x^k+lambda _kd^k,k=k+1),转步骤2.
( lambda _{max}=left lbrace egin{matrix} minlbrace frac{overline{b_i}}{overline{d_i}}| overline{d_i} lt 0 brace if existoverline{d_i} lt 0 \ +infty if overline{d} geq 0 end{matrix} ight. ) (*)

原文地址:https://www.cnblogs.com/zhhfan/p/12078458.html