基本知识
基础
- 当矩阵的各阶顺序主子式 ∣ a 11 ∣ , ∣ a 11 a 12 a 21 a 22 ∣ , ∣ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ∣ , ⋯ \begin{vmatrix}a_{11}\end{vmatrix},\begin{vmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{vmatrix},\begin{vmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{vmatrix},⋯ a11 , a11a21a12a22 , a11a21a31a12a22a32a13a23a33 ,⋯皆>0时,矩阵正定;若奇数阶顺序主子式为负,偶数阶顺序主子式为正,则负定。
- 凸集:对凸集内的任意n点 x ⃗ i \vec x_i xi,若有 ∑ k i = 1 ∑k_i=1 ∑ki=1,则点 ∑ k i x ⃗ i ∑k_i\vec x_i ∑kixi也在该凸集中
- 凸函数:在非空凸集内,对其中任意两点 x ⃗ 1 , x ⃗ 2 \vec x_1,\vec x_2 x1,x2和任意常数k∈(0,1),都有 f ( k x ⃗ 1 + ( 1 − k ) x ⃗ 2 ) ≥ k f ( x ⃗ 1 ) + ( 1 − k ) f ( x ⃗ 2 ) f(k\vec x_1+(1-k)\vec x_2)≥kf(\vec x_1)+(1-k)f(\vec x_2) f(kx1+(1−k)x2)≥kf(x1)+(1−k)f(x2),则f为上凸函数,反之为下凸。
- 凸规划指在凸集上对由凸函数约束的凸目标函数做规划。若约束函数为凸线性函数,目标函数为凸二次函数,则该规划为凸二次规划。
多元泰勒展开
- 多元函数的梯度(以三元函数为例): ∇ f ( x ⃗ ) = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ∂ f ∂ x 3 ] T ∇f(\vec x)=\begin{bmatrix}\frac{∂f}{∂x_1},\frac{∂f}{∂x_2},\frac{∂f}{∂x_3}\end{bmatrix}^T ∇f(x)=[∂x1∂f,∂x2∂f,∂x3∂f]T
- 多元函数的Hessian矩阵(以三元函数为例): H = ∇ 2 f ( x ⃗ ) = [ ∂ 2 f ∂ x 1 ∂ x 1 ∂ 2 f ∂ x 1 ∂ x 2 ∂ 2 f ∂ x 1 ∂ x 3 ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 ∂ x 2 ∂ 2 f ∂ x 2 ∂ x 3 ∂ 2 f ∂ x 3 ∂ x 1 ∂ 2 f ∂ x 3 ∂ x 2 ∂ 2 f ∂ x 3 ∂ x 3 ] H=∇^2f(\vec x)=\begin{bmatrix}\frac{∂^2f}{∂x_1∂x_1}&\frac{∂^2f}{∂x_1∂x_2}&\frac{∂^2f}{∂x_1∂x_3}\\\frac{∂^2f}{∂x_2∂x_1}&\frac{∂^2f}{∂x_2∂x_2}&\frac{∂^2f}{∂x_2∂x_3}\\\frac{∂^2f}{∂x_3∂x_1}&\frac{∂^2f}{∂x_3∂x_2}&\frac{∂^2f}{∂x_3∂x_3}\end{bmatrix} H=∇2f(x)= ∂x1∂x1∂2f∂x2∂x1∂2f∂x3∂x1∂2f∂x1∂x2∂2f∂x2∂x2∂2f∂x3∂x2∂2f∂x1∂x3∂2f∂x2∂x3∂2f∂x3∂x3∂2f
- 多元函数
f
(
x
⃗
)
f(\vec x)
f(x)在
x
⃗
0
\vec x_0
x0点的二阶泰勒展开式:
f ( x ⃗ ) = f ( x ⃗ 0 ) + [ x ⃗ − x ⃗ 0 ] T ∇ f ( x ⃗ 0 ) + 1 2 ! [ x ⃗ − x ⃗ 0 ] T ∇ 2 f ( x ⃗ 0 ) [ x ⃗ − x ⃗ 0 ] + o ( ∣ ∣ x ⃗ − x ⃗ 0 ∣ ∣ 2 ) f(\vec x)=f(\vec x_0)+[\vec x-\vec x_0]^T∇f(\vec x_0)+\frac1{2!}[\vec x-\vec x_0]^T∇^2f(\vec x_0)[\vec x-\vec x_0]+o(||\vec x-\vec x_0||^2) f(x)=f(x0)+[x−x0]T∇f(x0)+2!1[x−x0]T∇2f(x0)[x−x0]+o(∣∣x−x0∣∣2) - 多元函数的稳定点:使 ∇ f ( x ⃗ 0 ) = 0 ⃗ ∇f(\vec x_0)=\vec0 ∇f(x0)=0的点,也叫驻点,可能是极值点或鞍点
- 多元函数的极值点:由泰勒展式得:极值点必为稳定点,在稳定点处,当H正定时为极小值点,H负定时为极大值点。
- 多元函数的方向导数:
∂ f ( x ⃗ ) ∂ s ⃗ \frac{∂f(\vec x)}{∂\vec s} ∂s∂f(x)
= lim ∣ ∣ Δ s ⃗ ∣ ∣ → 0 f ( x ⃗ + Δ s ⃗ ) − f ( x ⃗ ) ∣ ∣ Δ s ⃗ ∣ ∣ =\lim\limits_{||Δ\vec s||→0}\frac{f(\vec x+Δ\vec s)-f(\vec x)}{||Δ\vec s||} =∣∣Δs∣∣→0lim∣∣Δs∣∣f(x+Δs)−f(x)
= 1 ∣ ∣ Δ s ⃗ ∣ ∣ ( ∂ f ( x ⃗ ) ∂ x 1 Δ x 1 + ∂ f ( x ⃗ ) ∂ x 2 Δ x 2 + ⋯ + ∂ f ( x ⃗ ) ∂ x n Δ x n ) =\frac1{||Δ\vec s||}(\frac{∂f(\vec x)}{∂x_1}Δx_1+\frac{∂f(\vec x)}{∂x_2}Δx_2+⋯+\frac{∂f(\vec x)}{∂x_n}Δx_n) =∣∣Δs∣∣1(∂x1∂f(x)Δx1+∂x2∂f(x)Δx2+⋯+∂xn∂f(x)Δxn)
= ∂ f ( x ⃗ ) ∂ x 1 cos α 1 + ∂ f ( x ⃗ ) ∂ x 2 cos α 2 + ⋯ + ∂ f ( x ⃗ ) ∂ x n cos α n =\frac{∂f(\vec x)}{∂x_1}\cosα_1+\frac{∂f(\vec x)}{∂x_2}\cosα_2+⋯+\frac{∂f(\vec x)}{∂x_n}\cosα_n =∂x1∂f(x)cosα1+∂x2∂f(x)cosα2+⋯+∂xn∂f(x)cosαn
= [ ∇ f ( x ⃗ 0 ) ] T s ⃗ / ∣ ∣ s ⃗ ∣ ∣ =[∇f(\vec x_0)]^T\vec s/||\vec s|| =[∇f(x0)]Ts/∣∣s∣∣
又因为上式 = ∣ ∣ ∇ f ( x ⃗ 0 ) ∣ ∣ cos [ ∇ f ( x ⃗ 0 ) , s ⃗ ] =||∇f(\vec x_0)||\cos[∇f(\vec x_0),\vec s] =∣∣∇f(x0)∣∣cos[∇f(x0),s],所以当 x ⃗ 0 , d ⃗ \vec x_0,\vec d x0,d同向时函数的方向导数最大,即沿梯度方向上升得最快。反之,沿负梯度方向 − ∇ f ( x ⃗ 0 ) -∇f(\vec x_0) −∇f(x0)函数下降得最快。
线性规划(不考)
二次规划
多元二次型可表示为
f
(
x
⃗
)
=
x
⃗
T
A
x
⃗
+
B
T
x
⃗
+
C
f(\vec x)=\vec x^TA\vec x+B^T\vec x+C
f(x)=xTAx+BTx+C,其梯度为
A
x
⃗
+
B
A\vec x+B
Ax+B。
若A正定,则该二次型正定,即
f
(
x
⃗
)
≥
0
f(\vec x)≥0
f(x)≥0,仅当
x
⃗
=
0
⃗
\vec x=\vec 0
x=0时
f
(
x
⃗
)
=
0
f(\vec x)=0
f(x)=0。
同理有负定、半正定、半负定和不定。
无约束优化
优化的直接法不需要求导,间接法要求导。
一维搜索的进退法
- 若确定函数的某个极小值点在某个闭区间上,则称该闭区间为函数的搜索区间。
- 进退法通过确定三个呈“大-小-大”分布的点,可以确定函数的搜索区间。
- 进退法的计算步骤:
- 给定一元函数f、初始步长h、初始点x1。
- 令x2=x1+h。
- 若f(xi+1)≤f(xi),则h=2h,xi+1=xi+h,回到第2步,即“下降则进”。
- 若f(xi+1)>f(xi),则h=-h,xi+1=x1+h,回到第2步,即“上升则退”。
- 若确定了三个使函数值呈“大-小-大”分布的点,则将两个大点作为搜索区间的端点返回。
一维搜索的0.618法
- 进退法能够确定搜索区间,但有些方法还要求函数在搜索区间上是单峰函数,即只有一个极小值点。若只有一个极大值点,则称为单谷函数。
- 0.618法的分形性使其可以节省一些内存,即像二分法一样每步一般只需多计算一个点。
- 0.618法的计算步骤:
- 给定搜索区间[a,b]、在搜索区间上是单峰函数的一元函数f、精度ε。
- 计算该区间0.381点c1=0.618a
+0.381b、0.618点c2=0.381a+0.618b。 - 按以下代码计算端点a、b:
while b-a >= eps:
if f(c1)>f(c2):
a = c1; c1 = c2; c2 = 0.381*a + 0.618*b;
elif f(c1)<f(c2):
b = c2; c2 = c1; c1 = 0.618*a + 0.381*b;
else:
a = c1; b = c2; c1 = 0.618*a + 0.381*b; c2 = a+b-c1;
return a,b
- 0.618法的精度ε和计算次数n的关系为 0.61 8 n ( b − a ) < ε 0.618^n(b-a)<ε 0.618n(b−a)<ε。
一维搜索的最速下降法
先求 ∇ f ( x ⃗ ) ∇f(\vec x) ∇f(x),在每步迭代时求步长αk,使 f ( x ⃗ k + 1 ) = f ( x ⃗ k − α k ∇ f ( x ⃗ k ) ) f(\vec x_{k+1})=f(\vec x_k-α_k∇f(\vec x_k)) f(xk+1)=f(xk−αk∇f(xk))最小。当 ∣ ∣ ∇ f ( x ⃗ ) ∣ ∣ ≤ ε ||∇f(\vec x)||≤ε ∣∣∇f(x)∣∣≤ε时停止迭代。
一维搜索的牛顿法
- 牛顿法的基本思想是在极小值点附近用二阶泰勒多项式近似目标函数,进而求出极小点的估计值。
- 用牛顿迭代法求方程φ(x)=0的根时,有迭代公式 x k + 1 = x k − φ ( x k ) φ ′ ( x k ) x_{k+1}=x_k-\frac{φ(x_k)}{φ'(x_k)} xk+1=xk−φ′(xk)φ(xk)。
- 同理,在极小值点附近,求极小值点等同于求方程φ’(x)=0的根。
- 所以,牛顿法求极小值点的迭代公式为 x k + 1 = x k − φ ′ ( x k ) φ ′ ′ ( x k ) x_{k+1}=x_k-\frac{φ'(x_k)}{φ''(x_k)} xk+1=xk−φ′′(xk)φ′(xk)。
- 当初始点充分接近极小值点时,该方法至少二阶收敛。
- 了解其它一位优化方法:切线法、二次插值法、格点法
多维搜索的牛顿法
- 取函数在迭代点处的二阶近似泰勒展开式,然后用和一维搜索牛顿法类似的公式迭代求 ∇ f ( x ⃗ k ) ∇f(\vec x_k) ∇f(xk)的零点即可。
- 迭代公式为 x ⃗ k + 1 = x ⃗ k − [ ∇ 2 f ( x ⃗ k ) ] − 1 ∇ f ( x ⃗ k ) = x ⃗ k − H − 1 ∇ f ( x ⃗ k ) \vec x_{k+1}=\vec x_k-[∇^2f(\vec x_k)]^{-1}∇f(\vec x_k)=\vec x_k-H^{-1}∇f(\vec x_k) xk+1=xk−[∇2f(xk)]−1∇f(xk)=xk−H−1∇f(xk)。
- 上式中, s ⃗ k = x ⃗ k − H − 1 ∇ f ( x ⃗ k ) \vec s_k=\vec x_k-H^{-1}∇f(\vec x_k) sk=xk−H−1∇f(xk)也被称为牛顿方向。
- 同理,当初始点充分接近极小值点时,该方法具有二阶收敛速率。
多维搜索的共轭梯度法
- 若方向 s ⃗ 1 \vec s_1 s1、 s ⃗ 2 \vec s_2 s2和对称正定矩阵A满足 s ⃗ 1 T A s ⃗ 2 = 0 \vec s_1^TA\vec s_2=0 s1TAs2=0,则称这两个方向关于A共轭。
- 共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。
- 给定函数f和初始点 x ⃗ 0 \vec x_0 x0时,其计算步骤为:
- 第一次搜索时,令搜索方向 s ⃗ 0 = − ∇ f ( x ⃗ 0 ) \vec s_0=-∇f(\vec x_0) s0=−∇f(x0),求出使 x ⃗ 1 = x ⃗ 0 + a 0 s ⃗ 0 \vec x_1=\vec x_0+a_0\vec s_0 x1=x0+a0s0最小的a0和相应的 x ⃗ 1 \vec x_1 x1。
- 第二次搜索时,令 β ⃗ 0 = ∣ ∣ ∇ f ( x ⃗ 1 ) ∣ ∣ 2 ∣ ∣ ∇ f ( x ⃗ 0 ) ∣ ∣ 2 \vec β_0=\frac{||∇f(\vec x_1)||^2}{||∇f(\vec x_0)||^2} β0=∣∣∇f(x0)∣∣2∣∣∇f(x1)∣∣2, s ⃗ 1 = β 0 s ⃗ 0 − ∇ f ( x ⃗ 1 ) \vec s_1=β_0\vec s_0-∇f(\vec x_1) s1=β0s0−∇f(x1),求出使 x ⃗ 2 = x ⃗ 1 + a 1 s ⃗ 1 \vec x_2=\vec x_1+a_1\vec s_1 x2=x1+a1s1的函数值最小的a1和相应的 x ⃗ 2 \vec x_2 x2,循环。
- 了解其它多维优化方法:最速下降法、坐标轮换法、共轭方向法、单纯形法(反射、扩张、压缩)
- 共轭方向法不用算梯度,注意不要混淆。
有约束优化
基础
- 可行域:由若干约束条件 g i ( x ) ≤ 0 g_i(x)≤0 gi(x)≤0所围成的区域。若一个点不在可行域内,就不用往下讨论了。
- 起作用约束:若某点在约束条件的可行域内,且恰好使约束条件 g i ( x ) ≤ 0 g_i(x)≤0 gi(x)≤0变为等号,则gi为该点的起作用约束。若变为小于号,则为不起作用约束。
- K-T条件:又叫库恩-塔克条件、Kuhn-Tucker条件。在极小化规划问题中,若 x ⃗ k \vec x_k xk在各约束的可行域内,且对于各线性无关的起作用约束 g i ( x ⃗ ) ≤ 0 g_i(\vec x)≤0 gi(x)≤0(或 g i ( x ⃗ ) = 0 g_i(\vec x)=0 gi(x)=0),存在各分量皆为非负数的 λ ⃗ \vecλ λ,使 ∇ L = ∇ [ f ⃗ ( x k ) + ∑ λ i g i ( x ⃗ k ) ] = 0 ⃗ , λ i g i ( x ⃗ k ) = 0 ∇L=∇[\vec f(x_k)+∑λ_ig_i(\vec x_k)]=\vec 0,λ_ig_i(\vec x_k)=0 ∇L=∇[f(xk)+∑λigi(xk)]=0,λigi(xk)=0,则 x ⃗ k \vec x_k xk点满足K-T条件,或称其为K-T点。这样的点是在约束条件上的极值点。
- 若凸规划问题中的可行点是K-T点(局部最优解),则其为全局最优解。
有约束优化的直接法
- 随机实验法:随机取 x ⃗ \vec x x并计算 f ( x ⃗ ) f(\vec x) f(x),直到 f ( x ⃗ ) f(\vec x) f(x)几乎不变
- 随机方向法:在某点的某一圆上求f值,Δf增则r增,Δf减则r减小
- 复合型法:将单纯形与可行域相复合
- 可行方向法:不停沿使f递减且在可行域内的方向行进
- 投影法:将点投影到可行域边界上
- 线性逼近法:将非线性的约束和目标函数通过一阶泰勒展开式近似线性化
有约束优化的间接法
- 也叫“消元法”,其思路是将约束塞入目标函数,从而消去约束。分为直接消元法、拉格朗日乘子法、惩罚函数法。
- 设下文中的优化问题为: min f ( x ⃗ ) , x ⃗ ∈ R n s . t . { g i ( x ⃗ ) ≤ 0 h i ( x ⃗ ) = 0 \begin{matrix}\min f(\vec x),\vec x∈\R^n\\s.t.\left\{\begin{matrix}g_i(\vec x)≤0\\h_i(\vec x)=0\end{matrix}\right.\end{matrix} minf(x),x∈Rns.t.{gi(x)≤0hi(x)=0
拉格朗日松弛因子法
- 先向各约束引入拉格朗日乘子,再向各不等式约束gi引入松弛因子wi,然后将原优化问题变为 min L = f ( x ⃗ ) − ∑ λ i [ g i ( x ⃗ ) + w i 2 ] − ∑ λ j h j ( x ⃗ ) \min L=f(\vec x)-∑λ_i[g_i(\vec x)+w_i^2]-∑λ_jh_j(\vec x) minL=f(x)−∑λi[gi(x)+wi2]−∑λjhj(x)
- 令 ∂ L ∂ x i = ∂ L ∂ λ j = ∂ L ∂ w k = 0 \frac{∂L}{∂x_i}=\frac{∂L}{∂λ_j}=\frac{∂L}{∂w_k}=0 ∂xi∂L=∂λj∂L=∂wk∂L=0,借助驻点求出f的最小值。
- 若无不等式约束,则该方法即为高数和考研中的拉格朗日乘数法。
惩罚函数法
- 惩罚函数法的思路是借助惩罚函数把有约束问题转化为无约束问题。
- 内点惩罚函数法迭代时点在可行域内,点靠近可行域边界时,惩罚函数的值→+∞,因此它将边界化为“障碍”。
- 令惩罚函数 F = f ( x ⃗ ) − r k [ ∑ 1 g i ( x ⃗ ) + ∑ 1 h j ( x ⃗ ) ] F=f(\vec x)-r_k[∑\frac1{g_i(\vec x)}+∑\frac1{h_j(\vec x)}] F=f(x)−rk[∑gi(x)1+∑hj(x)1]或易于求导的 F = f ( x ⃗ ) − r k [ ∑ ln ∣ g i ( x ⃗ ) ∣ + ∑ ln ∣ h j ( x ⃗ ) ∣ ] F=f(\vec x)-r_k[∑\ln|{g_i(\vec x)}|+∑\ln|{h_j(\vec x)}|] F=f(x)−rk[∑ln∣gi(x)∣+∑ln∣hj(x)∣],k为迭代次数,rk为第k次迭代时的系数,且rk>0, lim k → + ∞ r k = 0 \lim\limits_{k→+∞}r_k=0 k→+∞limrk=0。
- 之后,令 ∂ F ∂ x i = 0 , r k → 0 \frac{∂F}{∂x_i}=0,r_k→0 ∂xi∂F=0,rk→0,即可解得x*。
- 此外,还有一种“外点法”,但它迭代时点在可行域外。
变分法
-
泛函的定义:若任取函数x(t)及自变量t,J[x(t)]都有一个对应的J,则J[x(t)]是以x(t)为宗量的泛函。特别地,t为x(t)的宗量。常见的泛函形如 J = ∫ a b x ( t ) d t J=∫_a^bx(t)\mathrm dt J=∫abx(t)dt或 J = ∑ i = a b x ( t i ) J=∑_{i=a}^bx(t_i) J=∑i=abx(ti)。
但是, J = ∫ a t x ( t ) d t J=∫_a^tx(t)\mathrm dt J=∫atx(t)dt不是泛函,因为J’(t)=x(t)。 -
拉格朗日问题:(用欧拉方程)求使目标泛函/评价指标 J = ∫ a b L [ x , x ˙ , t ] d t J=∫_a^bL[x,\dot x,t]\mathrm dt J=∫abL[x,x˙,t]dt最小的函数x*(t)
-
常用指标:最小时间控制 J = b − a = ∫ a b 1 d t J=b-a=∫_a^b1\mathrm dt J=b−a=∫ab1dt,最小燃料消耗控制 J = ∫ a b ∣ u ( t ) ∣ d t J=∫_a^b|u(t)|\mathrm dt J=∫ab∣u(t)∣dt,最小能量控制 J = ∫ a b u 2 ( t ) d t J=∫_a^bu^2(t)\mathrm dt J=∫abu2(t)dt。u代表系统的输入量,在数学上可看做一个x
-
欧拉方程: ∂ L ∂ x = d d t ∂ L ∂ x ˙ \frac{∂L}{∂x}=\frac{\mathrm d}{\mathrm dt}\frac{∂L}{∂\dot x} ∂x∂L=dtd∂x˙∂L,若x为向量,则将欧拉方程中的x换成x的任一分量,该方程都成立
无状态约束时的边界条件或横截条件
- x(a)和x(b)固定:x(a)=xa,x(b)=xb
- x(a)固定,x(b)不定:x(a)=xa, ∂ L ∂ x ˙ ∣ t = b = 0 \frac{∂L}{∂\dot x}|_{t=b}=0 ∂x˙∂L∣t=b=0,反之则交换各公式中的a和b,下同
- x(a)和x(b)不定: ∂ L ∂ x ˙ ∣ t = a = ∂ L ∂ x ˙ ∣ t = b = 0 \frac{∂L}{∂\dot x}|_{t=a}=\frac{∂L}{∂\dot x}|_{t=b}=0 ∂x˙∂L∣t=a=∂x˙∂L∣t=b=0
- b不定,x(a)固定,x(b)不定:x(a)=xa, ∂ L ∂ x ˙ ∣ t = b = 0 , L ∣ t = b = 0 \frac{∂L}{∂\dot x}|_{t=b}=0,L|_{t=b}=0 ∂x˙∂L∣t=b=0,L∣t=b=0
- b不定,x(a)固定,x(b)受约束:x(a)=xa,x(b)=φ(b), { [ φ ˙ ( t ) − x ˙ ( t ) ] ∂ L ∂ x ˙ + L } ∣ t = b = 0 \{[\dotφ(t)-\dot x(t)]\frac{∂L}{∂\dot x}+L\}|_{t=b}=0 {[φ˙(t)−x˙(t)]∂x˙∂L+L}∣t=b=0
- a不定,x(a)受约束,x(b)固定:x(b)=xb,x(a)=φ(a), { [ φ ˙ ( t ) − x ˙ ( t ) ] ∂ L ∂ x ˙ + L } ∣ t = a = 0 \{[\dotφ(t)-\dot x(t)]\frac{∂L}{∂\dot x}+L\}|_{t=a}=0 {[φ˙(t)−x˙(t)]∂x˙∂L+L}∣t=a=0
- 无论是何种情况,欧拉方程都成立,也可借助哈密顿函数求解
有状态约束时的解法
-
求使性能指标 J = θ + ∫ a b L d x J=θ+∫_a^bL\mathrm dx J=θ+∫abLdx最小的一组泛函X(用大写代表向量 x ⃗ \vec x x),但可能有一组状态约束 X ˙ = f \dot X=f X˙=f(如 x ˙ 1 = x 2 , x ˙ 2 = u \dot x_1=x_2,\dot x_2=u x˙1=x2,x˙2=u)或终端约束 Φ ( b ) = 0 ⃗ Φ(b)=\vec0 Φ(b)=0
-
哈密顿函数 H = L + λ ⃗ T f H=L+\vecλ^Tf H=L+λTf
-
将f、H、Φ塞入J,可得辅助函数 J 0 = θ + μ ⃗ T Φ + ∫ a b [ L + λ ⃗ T ( f − X ˙ ) ] d x = θ + μ ⃗ T Φ + ∫ a b ( H − λ ⃗ T X ˙ ) d x J_0=θ+\vecμ^TΦ+∫_a^b[L+\vecλ^T(f-\dot X)]\mathrm dx=θ+\vecμ^TΦ+∫_a^b(H-\vecλ^T\dot X)\mathrm dx J0=θ+μTΦ+∫ab[L+λT(f−X˙)]dx=θ+μTΦ+∫ab(H−λTX˙)dx,原问题转化为求使J0最小的泛函X
-
由欧拉方程可得 ∂ ( H − λ ⃗ T X ˙ ) ∂ X = d d t ∂ ( H − λ ⃗ T X ˙ ) ∂ X ˙ \frac{∂(H-\vecλ^T\dot X)}{∂X}=\frac{\mathrm d}{\mathrm dt}\frac{∂(H-\vecλ^T\dot X)}{∂\dot X} ∂X∂(H−λTX˙)=dtd∂X˙∂(H−λTX˙),即 ∂ H ∂ X = − λ ⃗ ′ \frac{∂H}{∂X}=-\vecλ' ∂X∂H=−λ′
-
由欧拉方程可得 ∂ ( H − λ ⃗ T X ˙ ) ∂ u ⃗ = d d t ∂ ( H − λ ⃗ T X ˙ ) ∂ u ⃗ ′ \frac{∂(H-\vecλ^T\dot X)}{∂\vec u}=\frac{\mathrm d}{\mathrm dt}\frac{∂(H-\vecλ^T\dot X)}{∂\vec u'} ∂u∂(H−λTX˙)=dtd∂u′∂(H−λTX˙),即 ∂ H ∂ u ⃗ = 0 ⃗ \frac{∂H}{∂\vec u}=\vec0 ∂u∂H=0
-
由 ∂ J 0 ∂ X = 0 ⃗ , ∂ J 0 ∂ t = 0 ⃗ \frac{∂J_0}{∂X}=\vec0,\frac{∂J_0}{∂t}=\vec0 ∂X∂J0=0,∂t∂J0=0可得通用的横截条件为 [ ∂ θ ∂ X + ( ∂ Φ ∂ X ) T μ ⃗ − λ ⃗ ] t = b = 0 ⃗ [\frac{∂θ}{∂X}+(\frac{∂Φ}{∂X})^T\vecμ-\vecλ]_{t=b}=\vec0 [∂X∂θ+(∂X∂Φ)Tμ−λ]t=b=0和 [ ∂ θ ∂ t + μ ⃗ T ∂ Φ ∂ t + H ] t = b = 0 [\frac{∂θ}{∂t}+\vecμ^T\frac{∂Φ}{∂t}+H]_{t=b}=0 [∂t∂θ+μT∂t∂Φ+H]t=b=0
-
由 ∂ ( H − λ ⃗ T X ˙ ) ∂ λ ⃗ = d d t ∂ ( H − λ ⃗ T X ˙ ) λ ⃗ ′ \frac{∂(H-\vecλ^T\dot X)}{∂\vecλ}=\frac{\mathrm d}{\mathrm dt}\frac{∂(H-\vecλ^T\dot X)}{\vecλ'} ∂λ∂(H−λTX˙)=dtdλ′∂(H−λTX˙)和 ∂ J 0 ∂ μ ⃗ \frac{∂J_0}{∂\vecμ} ∂μ∂J0得出的则是约束本身
例题
已知状态约束
X
˙
=
f
=
[
x
2
u
]
\dot X=f=\begin{bmatrix}x_2\\u\end{bmatrix}
X˙=f=[x2u](即
x
1
′
=
x
2
,
x
2
′
=
u
x_1'=x_2,x'_2=u
x1′=x2,x2′=u),边界条件
x
1
(
0
)
=
0
,
x
2
(
0
)
=
0
x_1(0)=0,x_2(0)=0
x1(0)=0,x2(0)=0和终端约束
Φ
(
t
f
)
=
x
1
+
x
2
−
t
∣
t
=
t
f
=
0
Φ(t_f)=x_1+x_2-t|_{t=t_f}=0
Φ(tf)=x1+x2−t∣t=tf=0。求使性能指标
J
=
∫
0
t
f
1
2
u
2
d
x
J=∫_0^{t_f}\frac12u^2\mathrm dx
J=∫0tf21u2dx最小的X*和u*。
解:
- 首先,哈密顿函数 H = L + λ T f = 1 2 u 2 + λ 1 x 2 + λ 2 u H=L+λ^Tf=\frac12u^2+λ_1x_2+λ_2u H=L+λTf=21u2+λ1x2+λ2u
- 由欧拉方程得 ∂ H ∂ X = − λ ⃗ ′ \frac{∂H}{∂X}=-\vecλ' ∂X∂H=−λ′可得 { 0 = − λ 1 ′ λ 1 = − λ 2 ′ \left\{\begin{matrix}0=-λ_1'\\λ_1=-λ_2'\end{matrix}\right. {0=−λ1′λ1=−λ2′,故 { λ 1 = C 1 λ 2 = − C 1 t + C 2 \left\{\begin{matrix}λ_1=C_1\\λ_2=-C_1t+C_2\end{matrix}\right. {λ1=C1λ2=−C1t+C2
- 由欧拉方程得 ∂ H ∂ u ⃗ = 0 ⃗ \frac{∂H}{∂\vec u}=\vec0 ∂u∂H=0可得 u + λ 2 = 0 , u = − λ 2 = C 1 t − C 2 u+λ_2=0,u=-λ_2=C_1t-C_2 u+λ2=0,u=−λ2=C1t−C2
- 结合边界条件和状态约束可得 x 1 = 1 6 C 1 t 3 − 1 2 C 2 t 2 , x 2 = 1 2 C 1 t 2 − C 2 t x_1=\frac16C_1t^3-\frac12C_2t^2,x_2=\frac12C_1t^2-C_2t x1=61C1t3−21C2t2,x2=21C1t2−C2t
- 由横截条件 [ ∂ θ ∂ X + ( ∂ Φ T ∂ X ) μ ⃗ − λ ⃗ ] t = t f = 0 [\frac{∂θ}{∂X}+(\frac{∂Φ^T}{∂X})\vecμ-\vecλ]_{t=t_f}=0 [∂X∂θ+(∂X∂ΦT)μ−λ]t=tf=0可得 { μ = λ 1 ( t f ) = C 1 μ = λ 2 ( t f ) = C 1 t f + C 2 \left\{\begin{matrix}μ=λ_1(t_f)=C_1\\μ=λ_2(t_f)=C_1t_f+C_2\end{matrix}\right. {μ=λ1(tf)=C1μ=λ2(tf)=C1tf+C2,故 C 1 = C 1 t f + C 2 C_1=C_1t_f+C_2 C1=C1tf+C2, C 2 = C 1 − C 1 t f C_2=C_1-C_1t_f C2=C1−C1tf
- 由终端约束得 x 1 ( t f ) + x 2 ( t f ) = t f x_1(t_f)+x_2(t_f)=t_f x1(tf)+x2(tf)=tf,即 1 6 C 1 t f 3 − 1 2 C 2 t f 2 + 1 2 C 1 t f 2 − C 2 t f = t f \frac16C_1t_f^3-\frac12C_2t_f^2+\frac12C_1t_f^2-C_2t_f=t_f 61C1tf3−21C2tf2+21C1tf2−C2tf=tf,与上式联立可化简为 2 3 C 1 t f 2 + C 1 t f − C 1 = 1 \frac23C_1t_f^2+C_1t_f-C_1=1 32C1tf2+C1tf−C1=1
- 由横截条件
[
∂
θ
∂
t
+
μ
⃗
T
∂
Φ
∂
t
+
H
]
t
=
t
f
=
0
[\frac{∂θ}{∂t}+\vecμ^T\frac{∂Φ}{∂t}+H]_{t=t_f}=0
[∂t∂θ+μT∂t∂Φ+H]t=tf=0可得
[ μ ( x 1 ′ + x 2 ′ − 1 ) + 1 2 u 2 + λ 1 x 2 + λ 2 u ] t = t f = C 1 ( 1 2 C 1 t f 2 − C 2 t f + C 1 t f − C 2 − 1 ) + 1 2 ( C 1 t f − C 2 ) 2 + C 1 ( 1 2 C 1 t f 2 − C 2 t f ) − ( C 1 t f − C 2 ) 2 = C 1 ( 1 2 C 1 t f 2 + C 1 t f 2 + C 1 t f − C 1 − 1 ) + 1 2 ( 2 C 1 t f − C 1 ) 2 + C 1 ( 1 2 C 1 t f 2 + C 1 t f 2 − C 1 t f ) − ( 2 C 1 t f − C 1 ) 2 = C 1 2 t f 2 + 2 C 1 2 t f − 3 2 C 1 2 − C 1 = 0 [μ(x_1'+x_2'-1)+\frac12u^2+λ_1x_2+λ_2u]_{t=t_f}\\=C_1(\frac12C_1t_f^2-C_2t_f+C_1t_f-C_2-1)+\frac12(C_1t_f-C_2)^2+C_1(\frac12C_1t_f^2-C_2t_f)-(C_1t_f-C_2)^2\\=C_1(\frac12C_1t_f^2+C_1t_f^2+C_1t_f-C_1-1)+\frac12(2C_1t_f-C_1)^2+C_1(\frac12C_1t_f^2+C_1t_f^2-C_1t_f)-(2C_1t_f-C_1)^2\\=C_1^2t_f^2+2C_1^2t_f-\frac32C_1^2-C_1=0 [μ(x1′+x2′−1)+21u2+λ1x2+λ2u]t=tf=C1(21C1tf2−C2tf+C1tf−C2−1)+21(C1tf−C2)2+C1(21C1tf2−C2tf)−(C1tf−C2)2=C1(21C1tf2+C1tf2+C1tf−C1−1)+21(2C1tf−C1)2+C1(21C1tf2+C1tf2−C1tf)−(2C1tf−C1)2=C12tf2+2C12tf−23C12−C1=0,即 C 1 t f 2 + 2 C 1 t f − 3 2 C 1 = 1 C_1t_f^2+2C_1t_f-\frac32C_1=1 C1tf2+2C1tf−23C1=1 - 将 C 1 t f 2 + 2 C 1 t f − 3 2 C 1 = 1 C_1t_f^2+2C_1t_f-\frac32C_1=1 C1tf2+2C1tf−23C1=1与 2 3 C 1 t f 2 + C 1 t f − C 1 = 1 \frac23C_1t_f^2+C_1t_f-C_1=1 32C1tf2+C1tf−C1=1相减并约去C1可得 1 3 t f 2 + C 1 t f + 1 2 = 0 \frac13t_f^2+C_1t_f+\frac12=0 31tf2+C1tf+21=0,解得 t f = 15 − 3 2 t_f=\frac{\sqrt{15}-3}2 tf=215−3
- 因此: C 1 = 1 2 3 t f 2 + t f − 1 = − 3 + 15 3 C 2 = C 1 ( 1 − t f ) = − 15 3 u ∗ ( t ) = C 1 t − C 2 = − 3 + 15 3 t + 15 3 x 1 ∗ ( t ) = 1 6 C 1 t 3 − 1 2 C 2 t 2 = − 3 + 15 18 t 3 + 15 6 t 2 x 2 ∗ ( t ) = 1 2 C 1 t 2 − C 2 t = − 3 + 15 6 t 2 + 15 3 t \\C_1=\frac1{\frac23t_f^2+t_f-1}=-\frac{3+\sqrt{15}}3\\C_2=C_1(1-t_f)=-\frac{\sqrt{15}}3\\u^*(t)=C_1t-C_2=-\frac{3+\sqrt{15}}3t+\frac{\sqrt{15}}3\\x_1^*(t)=\frac16C_1t^3-\frac12C_2t^2=-\frac{3+\sqrt{15}}{18}t^3+\frac{\sqrt{15}}6t^2\\x_2^*(t)=\frac12C_1t^2-C_2t=-\frac{3+\sqrt{15}}6t^2+\frac{\sqrt{15}}3t C1=32tf2+tf−11=−33+15C2=C1(1−tf)=−315u∗(t)=C1t−C2=−33+15t+315x1∗(t)=61C1t3−21C2t2=−183+15t3+615t2x2∗(t)=21C1t2−C2t=−63+15t2+315t
A*算法(图搜索算法)
- 图搜索算法分为深度/广度优先搜索等穷举法和A*算法、遗传算法等启发式算法
- 考试时可能要画出深度/广度优先搜索法的搜索顺序
- 在A*(n)算法中有f*(n)=g*(n)+h*(n),即从起点到终点的最优路径=从起点到某点的最优路径+从该点到终点的最优路径。
- 在8数码问题(即三阶华容道)中,g*(n)为移动步数,h*(n)为misplaced(n),即未归位数码的数量
- 该算法按f*(n)=g*(n)+h*(n)和h*(n)尽量小的方向搜索,直到用尽量少的步数解出该问题(如考试要考的8数码问题)
遗传算法
- 用遗传、变异和生存斗争法则来搜索全局最优解。
- 个体=一个向量,基因=向量的编码,环境适应性=目标函数,遗传操作=基因的继承/交换/变异,个体越适应环境越不易变异=目标函数越小,解越容易“存活”
- 考试时使用二进制编码,如向量[5,7,0]可编译为[“010101110000”]
- 给定自变量的取值范围[a,b]和精度ε,则每个维度的编码位数n满足 b − a 2 n − 1 ≤ ε \frac{b-a}{2^n-1}≤ε 2n−1b−a≤ε,解码公式为 y i = b − a 2 n − 1 x i + a y_i=\frac{b-a}{2^n-1}{x_i}+a yi=2n−1b−axi+a
- 需设定的参数为遗传代数G(一般为100~500),种群数量M(一般为20~100),环境适应度(在优化问题中可以是目标函数的倒数,目标函数越小适应度越大),交叉互换概率pc(一般为0.4~0.99)和变异概率pm(一般为0.0001~0.1)。
- 在每次迭代中:
-
- 首先淘汰一些适应度最小的个体,然后繁殖一些适应度最大的个体,使种群数量守恒。
-
- 对每两个个体之间的相应基因片段,依概率pc进行交叉互换。
-
- 对每个个体的每一数位,依概率pm进行变异。