最优化理论与算法笔记
在老师的指导下,我学习了最优化理论与算法这门课程。
最优化理论与算法是一个重要的数学分支,它所研究的问题是讨论在众多方案中什么样的方案最优以及怎样找出最优方案。
由于生产和科学研究突飞猛进的发展,特别是计算机的广泛应用,使最优化问题的研究不仅成为了一种迫切的需要,而且有了求解的有力工具,因此迅速发展起来形成一个新的学科。
至今已出现了线性规划、整数规划、非线性规划、几何规划、动态规划、随机规划、网络流等许多分支。
整个学习安排如下,首先介绍线性与非线性规划问题,凸集和凸函数等基本知识及线性规划的基本性质;然后再这个基础上学习各种算法,包括单纯形法、两阶段法、大M 法、最速下降法、牛顿法、共轭梯度法等,以及各种算法相关的定理和结论;最后了解各种算法的实际应用。
主要学习的基础知识:
1、一般线性规划问题的标准形式
1min
n
j j
j c x
=∑
1
..,
1,...,,
0,
1,...,.
n
ij
j
i j j s t
a x
b i m x j n ===≥=∑
学会引入松弛变量将一般问题化为标准问题;同时掌握基本可行解的存在问题,通过学习容易发现线性规划问题的求解,可归结为求最优基本可行解的问题。
2、熟练掌握单纯形法、两阶段法和大M 法的概念及其计算步骤。
单纯形法是一种是用方便、行之有效的重要算法,它已成为线性规划的中心内容。
其计算步骤如下:
1)解,B Bx b =求得1B x B b b -==,令0,N x =计算目标函数值B B f c x =;
2)求单纯形乘子ω,解B B c ω= ,得到1B c B ω-=;
3)解k k By p =,若0k y ≤,即k y 的每个分量均非正数,则停止计算,问 题不存在有限最优解,否则,进行步骤(4);
4)确定下标r ,使min{0}r r rk rk rk
b b
y y y =>,得到新的基矩阵B ,返回第一 步。
两阶段法:第一阶段是用单纯形法消去人工变量,即把人工变量都变换成非基变量,求出原来问题的一个基本可行解;第二阶段是从得到的基本可行解出发,用单纯形法求线性规划的最优解。
大M 法:在约束中增加人工变量a x ,同时修改目标函数,加上罚项T a Me x ,其中M 是很大的正数,这样,在极小化目标函数的过程中,由于M 的存在,将迫使人工变量离基。
3、掌握最速下降法的概念及其算法,并且能够讨论最速下降算法的收敛性。
掌握牛顿法,能够熟练运用牛顿迭代公式:(1)
()2()()()()k k k k x
x f x x x +=-∇- ,掌
握共轭梯度法及其相关结论,以及其收敛性的讨论,掌握最小二乘法及其基本步骤。
最速下降法:迭代公式为(1)
()()k k k k x
x d λ+=-。
计算步骤:1)给定点(1)n
x R ∈,允许误差0,ε>臵1k =;
2)计算搜索方向()
()()k k d
f x =-∇;
3)若()
k d
ε≤,则停止计算,否则,从()k x 出发,沿()k d 进行一维搜索,求k λ,使()()()()
()min ()k k k k k f x d f x d λλλ≥+=+;
4)令(1)
()()k k k k x x d λ+=-,臵:1k k =+,转步骤(2)。
共轭梯度法:共轭梯度法是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组供各方向,并沿这组方向进行搜索,求出目标函数的极小点,根据共轭方向的基本性质,这种方法具有二次终止性。
具体求解方法:首先,任意给定一个初始点(1)x ,计算出目标函数()f x 在这点的梯度,若10g =,则停止计算;否则,令(1)(1)1()d f x g =-∇=-,沿方向(1)d 搜索,得到点(2)x 。
计算在(2)x 处的梯度,若20g ≠,则利用2g -和(1)d 构造第二个搜索方向(2)d ,再沿(2)d 搜索;若已知点()k x 的搜索方向()k d ,得到
(1)()(k k k k x x d λ+=+,再从(1)k x +出发,沿方向(1)k d +搜索。
结论:由共轭梯度法产生的方向(1)d ,(2)
d ,…,()
m d
是A 共轭的,经有限
步必达到极小值。
注:初始方向比为(1)
d
=-(1)()f x ∇。
牛顿修正法:对于原始牛顿法和阻尼牛顿法都有共同缺点,一是可能出现
Hesse 矩阵奇异的情形,因此不能确定后继点;二是即使 2
()f x ∇非奇异,也未
必正定,因而牛顿方向不一定是下降方向,这就可能导致算法失效。
牛顿修正法的策略,记()
()k k d
x x =-,得到2()()()()()k k k f x d f x ∇=-∇,阻
尼牛顿法所用搜索方向是上述方程的解:()
2()1()()()k k k d
f x f x -=-∇∇,这里假设
逆矩阵2()1()k f x -∇存在。
解决Hesse 矩阵2()
()k f x ∇非正定问题的基本思想是,修正2()()k f x ∇,构造一个对称矩阵k G ,得到方程k G ()
k d ()()k f x =-∇,解此方
程,得到在点()
k x
处的下降方向()
1k k d
G -=-()()k f x ∇,再沿此方向作一维搜索。
最小二乘法:(1)线性最小二乘问题 21()()()()m
T i i F x f x Ax b Ax b ==
=--∑,求()F x 平稳点,令()F x ∇=220T T A Ax A b -=,则()F x 的平稳点满足
T T A Ax A b =,所以()F x 的平稳点为1()T T x A A A b -=,由于()F x 为凸函数,所以
x 比为全局最小点。
(2)非线性最小二乘 基本思想是通过解一系列线性最小二乘问题求非线性
问题的解。
基本步骤如下:
1)给定初点(1)x ,允许误差0ε>,臵1k =;
2)计算函数值()()(1,2,...,)k i f x i m =,得到向量()1()2()
()()........()k k k k m f x f x f f x ⎡⎤⎢⎥⎢⎥
=⎢⎥⎢⎥
⎢⎥⎣⎦
,再计算一
阶偏导数()()
,
1,...,;1,...,,k i ij i
f x a i m j n x ∂===∂得到矩阵()k ij m n A a ⨯=。
3)解方程组()
T T k k k k
A A d A f =-,求得Gauss-Newton 方向()k d 。
4)从()k x 出发,沿()k d 作一维搜索,求步长k λ,使得
()()()()()min ()k k k k k F x d F x d λ
λλ+=+.
令(1)()())k k k k x x d λ+=+.
5)若(1)
()k k x
x ε+-≤,则停止计算,得解(1)k x x +=,否则臵:1k k =+,返回步骤二。
在整个学习过程中,我们学习的侧重点都是以应用为主,尤其是对各种相应的算法。
而这个内容的学习除了可以解决很多实际问题外,对学习数值计算这门课程的帮助也是非常大的,其中所讨论的各种算法,对数值计算中求解线性方程组的解也能适用,这就将两门课程有机的结合在一起。
当然在学习过程中,有很多问题也是我没人理解透彻的,需要今后继续努力改进的。
比如像各种算法的收敛性的讨论,以及在计算机中的编程实现等都将是我以后长期的课题。