山东大学软件学院最优化方法考试复习笔记

课程为山东大学软件学院人工智能专业2020年大二下学期的“最优化方法”课程

一.介绍

  1. 背景:2020年5月22日的考试由于疫情影响,与往年不同,所有考试题目都为计算题,共8道。
  2. 考试范围:
    (1)线性规划的图解法
    (2)基本单纯形法
    (3)两阶段单纯形法
    (4)给线性规划,写其对偶规划
    (5)对偶单纯形法
    (6)背包问题的动态规划算法
    (7)最速下降法
    (8)牛顿法
    (9)阻尼牛顿法
    (10)用K-T条件解约束优化问题
    (11)外点罚函数法
    (12)内点罚函数法
    (1)~ (6)为组合优化内容,(7)~(12)为连续优化内容。
  3. 本笔记内容:算法的标准计算过程、计算实例和部分相应练习题(书为《最优化理论与算法》陈宝林编著 第二版)

二.算法

1.线性规划的图解法

图解法在考试中一般只涉及两个变量x1和x2即二维空间,只需将x1作为x轴,x2作为y轴,根据不等式约束和非负约束做图并确定范围。接着,画出目标函数并根据变量的正负值确定移动方向。最后确定相应顶点或线段则为最优解,若没有则无解。
在这里插入图片描述
在这里插入图片描述
第二章 习题 1

2.基本单纯形法

笔算时采用表格化的单纯形算法
(1)找一个初始可行基B
(2)求出典式和检验数向量
(3)令k = arg max{ ξ j \xi_{j} ξj| j = 1, 2, …, n}
(4)如果 ξ k \xi_{k} ξk <= 0则当前bfs就是最优解,停止
(5)如果 A k A_{k} Ak <= 0,则问题无界,停止
(6)令r = arg min{ b i / a i k b_{i}/a_{ik} bi/aik | a i k > 0 a_{ik} > 0 aik>0, i = 1, 2, …, n}
(7)以 A k A_{k} Ak替代B中的第r列(即,B® <- k),得到一个新的基B,转第2步
注:按照老师的方法,检验数放在第0行,那么最优解根据单纯性表的最右侧按照基变量的顺序写,最优值为表中右上角的值;选取进基变量和出基变量时可以采取Bland反循环法则(用于退化的情况),进基变量选择大于0的且编号最小的那一个,出基变量如果有多个达到最小选择编号最小的那一个,也可以按照算法中采用最大检验数规则+最小下标原则(两个检验数都为最大,去下标小的那个),但我这里及之后的例子都采用Bland法则;过程中进基变量最好圈出,一目了然;该算法适用于比较容易找到初始可行基的情况,或考试中明确指定“基本单纯形法”;如果是max,将目标函数z取反成min -z,最后将最优值取反即可(因为我们最小化的是-z),最优解不变。
我的另一篇博文“输出包含过程的单纯形算法C++程序”:https://altli.blog.csdn.net/article/details/106105526
在这里插入图片描述
第三章 习题 1

3.两阶段单纯形法

(1)原问题化为标准型。通过行变换,使b >= 0
(2)添加人工变量,得到辅助问题
(3)使用人工变量作为初始的基,构造辅助问题的初始单纯形表。在该表中同时也包含原问题的检验数行
(4)(第一阶段)使用单纯形表算法求解辅助问题
(5)若求得辅助问题最优值g* > 0,则原文题无解,结束
(6)(否则g* = 0)若某些人工变量为基变量,则调整,直到没有人工变量为基变量
(7)去掉当前单纯形表上的辅助问题的检验数行和人工变量对应的列,得到原问题的单纯形表。此时已有一个初始的基可行解
(8)(第二阶段)运行单纯形算法,解原问题。最后或判断得原问题无界,或求到最优解
注:标准型中有几个等式约束就添加几个人工变量;第一阶段的单纯形算法两行检验数都要参与旋转变换,其实只要辅助问题的检验数行参与运算即可最后进行改动,但一起变换至少从思维程度上简单一些;第(6)步调整时,在A中找一个非零元进行调整即可;适用于初始可行基不好找的情况。
在这里插入图片描述在这里插入图片描述
第三章 习题 2

4.给线性规划,写其对偶规划

有助于记忆的口诀:不等式约束对应于限制变量,等式约束对应于无限制变量
下面的三个实例考虑到了所有情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第四章 习题 1

5.对偶单纯形法

(1)找一个原始LP的基本解(但不可行)和对偶LP的一个可行解( ξ \xi ξ <= 0),组成初始单纯形表
(2)r = arg min{ b i b_{i} bi | i = 1, 2, …, n}
(3)若 b r b_{r} br >= 0,则当前解就是原始LP的最优解,停止
(4)若 ∀ 1 ≤ j ≤ n , a r j ≥ 0 \forall1\leq j\leq n, a_{rj}\geq0 1jn,arj0,则原始问题无可行解,停止
(5)k = arg min{ ξ j / a r j \xi_{j}/a_{rj} ξj/arj | a r j a_{rj} arj < 0, j = 1, 2, …, n}
(6)以 a r k a_{rk} ark转轴元做一次旋转变换(以 A k A_{k} Ak替代 B r B_{r} Br(即 A B ( r ) A_{B(r)} AB(r))得到一个新的基B),转第2步
注:检验数行全部小于等于0,右端项即b至少有一个小于0,存在一个基矩阵,此时可以运算;简单来说,出基变量从b中选择值最小的那个,进基变量用检验数除以b中出基变量所在行的每一个值(要求为负数),从中选择最小的那个;最后发现右端项b都大于等于0,那么此时就是原始LP的最优解;检验数行都小于等于0表明现在处于对偶可行状态,右端项都大于等于0表明现在处于原始可行状态,因此结束时就是这种情况;如果当前的单纯形表原始不可行且对偶不可行,那么引入人工变量采用两阶段单纯形法,自然会得到无解。
在这里插入图片描述
第四章 习题 7

6.背包问题的动态规划算法

这个与我的“算法设计与分析学习笔记”中的“十. 动态规划”是一样的。
在这里插入图片描述
其中 i 是编号,j 是背包现有容量, v i v_{i} vi是物品的价值, w i w_{i} wi是物品的重量
例:W = 5
在这里插入图片描述
下面的动态规划表,列 i 是0 ~ n,行 j 是0 ~ m
在这里插入图片描述
该算法的代码和如何通过回溯确定放置的物品。都在前面提到的“算法设计与分析学习笔记”中,这里就不再重复了。

7.最速下降法

最速下降法的基本思想是:当当前点 x k x_{k} xk处的梯度不为 0 0 0时(或不满足精度要求时),从当前点 x k x_{k} xk出发,沿负梯度方向
− ▽ f ( x k ) -\bigtriangledown f(x_{k}) f(xk)前进到下一个点 x k + 1 x_{k+1} xk+1
输入:函数 f : R n − > R f: R^{n} - > R f:Rn>R,具有一阶连续偏导数,初始点 x ( 0 ) x^{(0)} x(0),允许误差 ϵ \epsilon ϵ
输出:满足精度要求的点 x ‾ \overline{x} x
在这里插入图片描述
在算法第4步,若使用精确线性搜索,则找到的 α k \alpha_{k} αk应满足 f ( x ( k ) + α k d ( k ) ) = m i n α > 0 f ( x ( k ) + α d ( k ) ) f(x^{(k)}+\alpha_{k} d^{(k)}) = min_{\alpha > 0}f(x^{(k)}+\alpha d^{(k)}) f(x(k)+αkd(k))=minα>0f(x(k)+αd(k))
注:求步长因子时,对得到的结果求一阶导并令等于0进行求解,而不是求根公式,那是大错特错的。
在这里插入图片描述

第十章 习题 1、3

8.牛顿法

牛顿法的基本思想:在极小点附近用简单的函数——二阶Taylor多项式近似目标函数 f ( x ) f(x) f(x),进而求出极小点的估计值。
输入:函数 f : R n − > R f: R^{n} - > R f:Rn>R,具有二阶导数,初始点 x ( 0 ) x^{(0)} x(0),允许误差 ϵ \epsilon ϵ
输出:满足精度要求的点 x ‾ \overline{x} x
注:一元优化问题和多元优化问题的牛顿法都是相同的,这里选择更通用的多元优化问题的牛顿法;二次凸函数
f ( x ) = 1 2 x T A x + b T x + c f(x) = \frac {1} {2}x^{T}Ax+b^{T}x+c f(x)=21xTAx+bTx+c,用牛顿法求解,经过1次迭代即达到极小点。
在这里插入图片描述
在这里插入图片描述
第十章 习题 2

9.阻尼牛顿法

注:个人感觉阻尼牛顿法就是最速下降法和牛顿法的结合
在这里插入图片描述
在这里插入图片描述

10.用K-T条件解约束优化问题

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(1)写出约束优化问题的形式
(2)写出Lagrange函数
(3)计算Lagrange函数的梯度,并写出K-T条件
(4)根据约束条件写出 x 1 、 x 2 、 x . . . 、 x n x_1、x_2、x...、x_n x1x2x...xn等的范围即可行性条件
(5)采用观察法根据互补松紧条件和其他条件合理推断
在这里插入图片描述
在这里插入图片描述

11.外点罚函数法

“外点罚函数法”又叫做“罚函数法”(等式约束和不等式约束都可以)
一定要注意原形式
m i n f ( x ) min f(x) minf(x)
s . t . g i ( x ) ⩾ 0 ,   i ∈ G s.t. g_{i}(x) \geqslant 0,\,i\in G s.t.gi(x)0,iG
h j ( x ) = 0 ,   j ∈ H h_j(x) = 0, \,j \in H hj(x)=0,jH
(1)构造罚函数: F ( x , σ ) = f ( x ) + σ ∑ i ( m a x { 0 , − g i ( x ) } ) 2 + σ ∑ j h j 2 ( x ) F(x, \sigma) = f(x) + \sigma\sum_i(max \left \{0, -g_i(x) \right\})^2 + \sigma\sum_jh_j^2(x) F(x,σ)=f(x)+σi(max{0,gi(x)})2+σjhj2(x)
(2)用解析法求解:令导数或偏导等于0,求解 x i x_i xi
(3) σ → + ∞ \sigma \rightarrow +\infty σ+时的结果,即为最优解
在这里插入图片描述

12.内点罚函数法

“内点罚函数法”又叫做“障碍罚函数法”(只适用于不等式约束)
一定要注意原形式
m i n f ( x ) min f(x) minf(x)
s . t .   g i ( x ) ⩾ 0 ,   i ∈ G s.t. \, g_{i}(x) \geqslant 0, \,i \in G s.t.gi(x)0,iG
(1)构造障碍函数: G ( x , μ ) = f ( x ) + μ B ( x ) G(x, \mu) = f(x) + \mu B(x) G(x,μ)=f(x)+μB(x)(其中 B ( x ) = ∑ i 1 g i ( x ) B(x) = \sum_i \frac {1} {g_{i} (x)} B(x)=igi(x)1
(2)用解析法求解:令导数或偏导等于0,求解 x i x_i xi
(3) μ → 0 \mu \rightarrow 0 μ0时的结果,即为最优解
在这里插入图片描述

三. 感受

张老师讲的非常非常好,课程准备非常非常用心,讲义做的非常非常好,很幸运也很感谢能够遇上这么优秀的老师。虽然由于疫情此次考试只考计算题,但最优化中的其他内容也都是和谐与美好的,值得钻研。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值