算法中的最优化方法和实现 (第7课 有约束的非线性规划)

一、学习目标

根据约束条件的类型,将问题分为4类:线性等式、非线性等式、线性不等式、非线性不等式。学习对于不同的问题,使用不同的方法进行求解。统一的思想都是消解法,即消去约束条件,将有约束的问题转化为无约束的问题,再进行求解
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第1张图片
注意:我们说的非线性规划,说的是目标函数是非线性的,而上面讲的线性和非线性,指的是约束函数。

二、线性等式约束的非线性规划

对于等式约束,我们可以通过映射法将约束条件约去。原理就是原本的x处于随机数据空间,先将其限制在Ax=b的超平面中,随机数据空间变为超平面空间中,既然在超平面空间中,就不会背离原来的约束。
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第2张图片
具体方法就是用奇异值分解,(奇异值分解原本用于求非方阵的逆,显然,我们的A不一定是方阵)具体矩阵的计算见下面的例子:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第3张图片

三、非线性等式约束的非线性规划

算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第4张图片
实际上,对于非等式约束问题,我们并没有更专的算法,只有使用拉格朗日算子法消去约束函数,而之后,除了梯度下降法外,我们还是可以使用上一节课的方法来求解。

四、线性不等式约束的非线性规划

算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第5张图片
与线性等式约束的问题一样,也可以使用映射去解决约束问题,但是并不像前者是“从体到面”的映射,是“从体到体”的映射,并不好寻找这样的映射函数。于是类似于单纯形法和有效集法,前人提出了梯度投影法:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第6张图片
如果最优点在约束条件外,我们的计算过程就如下图:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第7张图片
或许有人会好奇,如果最优解在约束内,就没必要投影了啊。确实,但做投影并不影响找到最优解。实际上,我们每一步迭代时,我们都找到下降方向,然后将这个方向向某条边界进行投影,实际上还是会导致函数值下降。显然,做投影的唯一作用就是不让迭代点跑到约束条件外。

五、非线性不等式约束的非线性规划

对于这类问题,我们主要使用外点法(罚函数法 pentalty function)和内点法(栅栏函数法 Barrier function)来解决。而这两个方法都起源于可行性函数法(feasibility function)。这三类方法都可以统称为惩罚法。
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第8张图片
而由于可行性函数是不平滑的,于是才提出外点法和内点法。其中外点法(罚函数法)如下定义:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第9张图片
注意:罚函数是人为设计的函数,与原问题无关。有以下几种罚函数:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第10张图片
同理,内点法(栅栏函数法)的定义与例子为:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第11张图片

将三种方法作用到统一条函数中,可以明显发现其区别:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第12张图片
而罚函数法之所以叫外点法,是因为合成后的函数的最优解出现在约束区域外,不断向约束区域内收敛;而栅栏函数法之所以叫内点法,是因为合成后的函数的最优解出现在约束区域内,最后也会往最优解收敛。

2.除了以上方法外,前人还提出了序列二次性优化(SQP,Sequential Quadratic Programming),其思想总体上而言,就是使用拉格朗日算子法消去约束条件,再根据梯度下降法,迭代收敛到最优解:
(a)首先拉格朗日算子法:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第13张图片
(b)然后求梯度下降方向:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第14张图片
(c)再然后,进行迭代:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第15张图片
整体算法就是:
算法中的最优化方法和实现 (第7课 有约束的非线性规划)_第16张图片

六、本章小结

1.了解非线性规划问题拥有不同约束条件的情况。
2.认识到主要的思想是消去约束条件,再使用各种办法去求解问题。

你可能感兴趣的:(算法中的最优化方法与实现,算法)